summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--arm9/arm9.lsf77
-rw-r--r--arm9/asm/scrcmd_17.s215
-rw-r--r--arm9/asm/scrcmd_asm.s26
-rw-r--r--arm9/asm/unk_02001B80.s4
-rw-r--r--arm9/asm/unk_02005CFC.s303
-rw-r--r--arm9/asm/unk_02008AA4.s428
-rw-r--r--arm9/asm/unk_02008DEC.s2280
-rw-r--r--arm9/asm/unk_02009EAC.s664
-rw-r--r--arm9/asm/unk_0200CABC.s2866
-rw-r--r--arm9/asm/unk_0200E850.s134
-rw-r--r--arm9/asm/unk_0201137C.s134
-rw-r--r--arm9/asm/unk_02015D14.s238
-rw-r--r--arm9/asm/unk_02021590.s514
-rw-r--r--arm9/asm/unk_02035068.s12
-rw-r--r--arm9/asm/unk_02038C78.s6
-rw-r--r--arm9/asm/unk_02048120.s8
-rw-r--r--arm9/asm/unk_02048904.s12
-rw-r--r--arm9/asm/unk_02050E48.s14
-rw-r--r--arm9/asm/unk_0205CE48.s2
-rw-r--r--arm9/asm/unk_020625EC.s12
-rw-r--r--arm9/asm/unk_020653EC.s16
-rw-r--r--arm9/asm/unk_0206C700.s4
-rw-r--r--arm9/asm/unk_0206F3FC.s18
-rw-r--r--arm9/asm/unk_02072548.s10
-rw-r--r--arm9/asm/unk_02073DA8.s36
-rw-r--r--arm9/asm/unk_0207550C.s14
-rw-r--r--arm9/asm/unk_020772F0.s8
-rw-r--r--arm9/asm/unk_0207D5BC.s2
-rw-r--r--arm9/asm/unk_02080C38.s4
-rw-r--r--arm9/asm/unk_02086414.s6
-rw-r--r--arm9/asm/unk_02089498.s2
-rw-r--r--arm9/asm/unk_02089960.s2
-rw-r--r--arm9/asm/unk_02089D90.s188
-rw-r--r--arm9/asm/unk_02089F24.s362
-rw-r--r--arm9/asm/unk_0208A338.s16
-rw-r--r--arm9/global.inc332
-rw-r--r--arm9/lib/NitroSDK/include/SPI_mic.h14
-rw-r--r--arm9/lib/libnns/include/NNS_g2d.h12
-rw-r--r--arm9/modules/04/asm/arm_04.s21672
-rw-r--r--arm9/modules/04/asm/mod04_021D74E0.s (renamed from arm9/modules/04/asm/thumb_04.s)850
-rw-r--r--arm9/modules/04/asm/mod04_021D868C.s845
-rw-r--r--arm9/modules/04/asm/mod04_021D8D18.s1233
-rw-r--r--arm9/modules/04/asm/mod04_021D9C2C.s549
-rw-r--r--arm9/modules/04/asm/mod04_021DA260.s1689
-rw-r--r--arm9/modules/04/asm/mod04_021DB730.s1512
-rw-r--r--arm9/modules/04/asm/mod04_021DC8A4.s240
-rw-r--r--arm9/modules/04/asm/mod04_021DCCC8.s545
-rw-r--r--arm9/modules/04/asm/mod04_021DD36C.s248
-rw-r--r--arm9/modules/04/asm/mod04_021DD6B0.s145
-rw-r--r--arm9/modules/04/asm/mod04_021DD82C.s145
-rw-r--r--arm9/modules/04/asm/mod04_021DD984.s469
-rw-r--r--arm9/modules/04/asm/mod04_021DDF40.s291
-rw-r--r--arm9/modules/04/asm/mod04_021DE2D0.s482
-rw-r--r--arm9/modules/04/asm/mod04_021DE89C.s236
-rw-r--r--arm9/modules/04/asm/mod04_021DEB90.s2044
-rw-r--r--arm9/modules/04/asm/mod04_021E05FC.s830
-rw-r--r--arm9/modules/04/asm/mod04_021E10F8.s1670
-rw-r--r--arm9/modules/04/asm/mod04_021E26D0.s9238
-rw-r--r--arm9/modules/04/asm/mod04_0220C680_certs.s325
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s6
-rw-r--r--arm9/modules/05/asm/mod05_021E1AD8.s24
-rw-r--r--arm9/modules/05/asm/mod05_021E3340.s10
-rw-r--r--arm9/modules/05/asm/mod05_021E8310.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E8648.s279
-rw-r--r--arm9/modules/05/asm/mod05_021E8860.s77
-rw-r--r--arm9/modules/05/asm/mod05_021E88E8.s7400
-rw-r--r--arm9/modules/05/asm/mod05_021EC458.s2938
-rw-r--r--arm9/modules/05/asm/mod05_021ED9C0.s233
-rw-r--r--arm9/modules/05/asm/mod05_021EDB70.s390
-rw-r--r--arm9/modules/05/asm/mod05_021EDE34.s3816
-rw-r--r--arm9/modules/05/asm/mod05_021EFA9C.s172
-rw-r--r--arm9/modules/05/asm/mod05_021EFBF8.s905
-rw-r--r--arm9/modules/05/asm/mod05_021F0318.s258
-rw-r--r--arm9/modules/05/asm/mod05_021F0514.s4556
-rw-r--r--arm9/modules/05/asm/mod05_021F1B0C.s236
-rw-r--r--arm9/modules/05/asm/mod05_021F1CB8.s306
-rw-r--r--arm9/modules/05/asm/mod05_021F1F04.s3269
-rw-r--r--arm9/modules/05/asm/mod05_021F3780.s127
-rw-r--r--arm9/modules/05/asm/mod05_021F3854.s79
-rw-r--r--arm9/modules/05/asm/mod05_021F38CC.s379
-rw-r--r--arm9/modules/05/asm/mod05_021F3BC0.s132
-rw-r--r--arm9/modules/05/asm/mod05_021F3C98.s447
-rw-r--r--arm9/modules/05/asm/mod05_021F3FE0.s595
-rw-r--r--arm9/modules/05/asm/mod05_021F445C.s199
-rw-r--r--arm9/modules/05/asm/mod05_021F45B4.s173
-rw-r--r--arm9/modules/05/asm/mod05_021F46C8.s356
-rw-r--r--arm9/modules/05/asm/mod05_021F4968.s478
-rw-r--r--arm9/modules/05/asm/mod05_021F4CF8.s756
-rw-r--r--arm9/modules/05/asm/mod05_021F5268.s379
-rw-r--r--arm9/modules/05/asm/mod05_021F5518.s615
-rw-r--r--arm9/modules/05/asm/mod05_021F5990.s309
-rw-r--r--arm9/modules/05/asm/mod05_021F5B9C.s84
-rw-r--r--arm9/modules/05/asm/mod05_021F5C44.s834
-rw-r--r--arm9/modules/05/asm/mod05_021F61DC.s521
-rw-r--r--arm9/modules/05/asm/mod05_021F61F4.s216
-rw-r--r--arm9/modules/05/asm/mod05_021F6360.s103
-rw-r--r--arm9/modules/05/asm/module_05.s31453
-rw-r--r--arm9/modules/06/asm/module_06.s74
-rw-r--r--arm9/modules/08/asm/module_08.s8
-rw-r--r--arm9/modules/09/asm/module_09.s10
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s4
-rw-r--r--arm9/modules/11/asm/module_11_thumb2.s6
-rw-r--r--arm9/modules/12/asm/module_12.s32
-rw-r--r--arm9/modules/14/asm/module_14.s4
-rw-r--r--arm9/modules/15/asm/module_15.s10
-rw-r--r--arm9/modules/16/asm/module_16.s60
-rw-r--r--arm9/modules/17/asm/module_17.s32
-rw-r--r--arm9/modules/18/asm/module_18.s162
-rw-r--r--arm9/modules/20/asm/mod20_02252440.s1245
-rw-r--r--arm9/modules/20/asm/mod20_02252C5C.s1400
-rw-r--r--arm9/modules/20/asm/mod20_022536F4.s682
-rw-r--r--arm9/modules/20/asm/mod20_02253BA4.s808
-rw-r--r--arm9/modules/20/asm/mod20_02254130.s458
-rw-r--r--arm9/modules/20/asm/mod20_02254420.s185
-rw-r--r--arm9/modules/20/asm/module_20.s4748
-rw-r--r--arm9/modules/53/asm/module_53.s16
-rw-r--r--arm9/modules/54/asm/module_54.s10
-rw-r--r--arm9/modules/55/asm/module_55.s18
-rw-r--r--arm9/modules/56/asm/module_56.s62
-rw-r--r--arm9/modules/57/asm/module_57.s4
-rw-r--r--arm9/modules/58/asm/module_58.s14
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s38
-rw-r--r--arm9/modules/60/asm/module_60.s8
-rw-r--r--arm9/modules/61/asm/module_61.s8
-rw-r--r--arm9/modules/62/asm/module_62.s8
-rw-r--r--arm9/modules/63/asm/mod63_021D74E0.s20
-rw-r--r--arm9/modules/63/asm/mod63_021D8890.s12
-rw-r--r--arm9/modules/63/asm/mod63_021DA640.s2
-rw-r--r--arm9/modules/63/asm/mod63_021DAE5C.s2
-rw-r--r--arm9/modules/64/asm/module_64.s10
-rw-r--r--arm9/modules/65/asm/module_65.s14
-rw-r--r--arm9/modules/66/asm/module_66.s4
-rw-r--r--arm9/modules/69/asm/module_69.s5
-rw-r--r--arm9/modules/70/asm/module_70.s8
-rw-r--r--arm9/modules/71/asm/module_71.s24
-rw-r--r--arm9/modules/73/asm/module_73.s14
-rw-r--r--arm9/modules/75/asm/module_75.s68
-rw-r--r--arm9/modules/76/asm/module_76.s2
-rw-r--r--arm9/modules/77/asm/module_77.s18
-rw-r--r--arm9/modules/80/asm/module_80.s116
-rw-r--r--arm9/modules/81/asm/module_81.s12
-rw-r--r--arm9/modules/82/asm/module_82.s20
-rw-r--r--arm9/modules/83/asm/module_83.s78
-rw-r--r--arm9/modules/84/asm/module_84_thumb1.s4
-rw-r--r--arm9/modules/84/asm/module_84_thumb2.s56
-rw-r--r--arm9/modules/85/asm/module_85.s8
-rw-r--r--arm9/src/GX_layers.c2
-rw-r--r--arm9/src/bg_window.c2
-rw-r--r--arm9/src/brightness.c198
-rw-r--r--arm9/src/communication_error.c12
-rw-r--r--arm9/src/error_message_reset.c11
-rw-r--r--arm9/src/font.c38
-rw-r--r--arm9/src/game_init.c2
-rw-r--r--arm9/src/main.c11
-rw-r--r--arm9/src/oam.c169
-rw-r--r--arm9/src/pokemon.c11
-rw-r--r--arm9/src/render_text.c2
-rw-r--r--arm9/src/render_window.c1027
-rw-r--r--arm9/src/rs_migrate_string.c327
-rw-r--r--arm9/src/save.c14
-rw-r--r--arm9/src/save_data_read_error.c185
-rw-r--r--arm9/src/save_data_write_error.c130
-rw-r--r--arm9/src/scrcmd.c54
-rw-r--r--arm9/src/scrcmd_amity_square.c200
-rw-r--r--arm9/src/scrcmd_sound.c17
-rw-r--r--arm9/src/script_buffers.c122
-rw-r--r--arm9/src/sound.c2
-rw-r--r--arm9/src/sound_chatot.c181
-rw-r--r--arm9/src/text.c41
-rw-r--r--arm9/src/text_02054590.c20
-rw-r--r--arm9/src/unk_020040F4.c31
-rw-r--r--arm9/src/unk_020051F4.c6
-rw-r--r--arm9/src/unk_02008AA4.c249
-rw-r--r--arm9/src/unk_02008DEC.c1118
-rw-r--r--arm9/src/unk_0200BB14.c272
-rw-r--r--arm9/src/unk_02021590.c212
-rw-r--r--arm9/src/unk_02021934.c9
-rw-r--r--arm9/src/wfc_user_info_warning.c11
-rw-r--r--include/bg_window.h2
-rw-r--r--include/brightness.h38
-rw-r--r--include/constants/accessories.h105
-rw-r--r--include/font.h15
-rw-r--r--include/main.h2
-rw-r--r--include/oam.h42
-rw-r--r--include/pokemon.h3
-rw-r--r--include/proto.h4
-rw-r--r--include/render_window.h143
-rw-r--r--include/rs_migrate_string.h26
-rw-r--r--include/save_block_2.h2
-rw-r--r--include/save_data_read_error.h7
-rw-r--r--include/save_data_write_error.h6
-rw-r--r--include/scrcmd.h15
-rw-r--r--include/script_buffers.h2
-rw-r--r--include/sound_chatot.h19
-rw-r--r--include/string16.h11
-rw-r--r--include/text_02054590.h2
-rw-r--r--include/unk_020040F4.h27
-rw-r--r--include/unk_02008AA4.h55
-rw-r--r--include/unk_02008DEC.h285
-rw-r--r--include/unk_0200BB14.h106
-rw-r--r--include/unk_02021590.h52
-rw-r--r--tools/.gitignore1
-rw-r--r--tools/nitrobanner/.gitignore1
-rw-r--r--tools/nitrobanner/LICENSE21
-rw-r--r--tools/nitrobanner/Makefile30
-rw-r--r--tools/nitrobanner/banner.cpp276
-rw-r--r--tools/nitrobanner/banner.h61
-rw-r--r--tools/nitrobanner/crc16.cpp22
-rw-r--r--tools/nitrobanner/crc16.h5
-rw-r--r--tools/nitrobanner/main.cpp45
-rw-r--r--tools/nitrobanner/types.h15
212 files changed, 66003 insertions, 68111 deletions
diff --git a/Makefile b/Makefile
index c9be64f8..9cb3187b 100644
--- a/Makefile
+++ b/Makefile
@@ -90,6 +90,7 @@ KNARC = tools/knarc/knarc$(EXE)
MSGENC = tools/msgenc/msgenc$(EXE)
MWLDARM = tools/mwccarm/$(MWCCVERSION)/mwldarm.exe
MWASMARM = tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe
+NITROBANNER = tools/nitrobanner/nitrobanner$(EXE)
SCANINC = tools/scaninc/scaninc$(EXE)
AS = $(WINE) $(MWASMARM)
@@ -119,7 +120,6 @@ JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE)
O2NARC = $(TOOLS_DIR)/o2narc/o2narc$(EXE)
GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx$(EXE)
MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q
-MAKEBANNER = $(WINE) $(TOOLS_DIR)/bin/makebanner.exe
MAKEROM = $(WINE) $(TOOLS_DIR)/bin/makerom.exe
FIXROM = $(TOOLS_DIR)/fixrom/fixrom$(EXE)
NTRCOMP = $(WINE) $(TOOLS_DIR)/bin/ntrcomp.exe
@@ -286,7 +286,7 @@ $(8BPP_COMP10_NOPAD_NCLR_PAL_FILES): GFX_FLAGS = -bitdepth 8 -nopad -comp 10
######################## Misc #######################
$(BNR): $(TARGET).bsf $(ICON_FILE:%.png=%.gbapal) $(ICON_FILE:%.png=%.4bpp)
- $(MAKEBANNER) $< $@
+ $(NITROBANNER) $< $@
symbols.csv: arm9 arm7
(echo "Name,Location"; $(GREP) " *[0-9A-F]{8} [0-9A-F]{8} \S+ +\w+\t\(\w+\.o\)" arm9/$(BUILD_DIR)/arm9.elf.xMAP arm7/build/arm7.elf.xMAP | $(SED) 's/ *([0-9A-F]{8}) [0-9A-F]{8} \S+ +(\w+)\t\(\w+\.o\)/\2,\1/g' | cut -d: -f2) > $@
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 06b32e1f..0e976777 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -15,7 +15,7 @@ Static arm9
Object sound.o
Object unk_020040F4.o
Object unk_020051F4.o
- Object unk_02005CFC.o
+ Object sound_chatot.o
Object poke_overlay.o
Object unk_020061E8.o
Object overlay_manager.o
@@ -25,13 +25,14 @@ Static arm9
Object unk_02006D98.o
Object unk_02008AA4.o
Object unk_02008DEC.o
- Object unk_02009EAC.o
+ Object oam.o
+ Object brightness.o
Object msgdata.o
Object script_buffers.o
Object unk_0200BA78.o
Object unk_0200BB14.o
Object unk_0200CA44.o
- Object unk_0200CABC.o
+ Object render_window.o
Object unk_0200E1D0.o
Object unk_0200E850.o
Object unk_0201137C.o
@@ -49,7 +50,7 @@ Static arm9
Object unk_02014590.o
Object unk_02014BF4.o
Object unk_02015CC0.o
- Object unk_02015D14.o
+ Object rs_migrate_string.o
Object unk_02015E30.o
Object game_init.o
Object heap.o
@@ -172,7 +173,7 @@ Static arm9
Object scrcmd_coins.o
Object scrcmd_money.o
Object scrcmd_daycare.o
- Object scrcmd_17.o
+ Object scrcmd_amity_square.o
Object scrcmd_party.o
Object scrcmd_fossils.o
Object scrcmd_prizes.o
@@ -315,8 +316,8 @@ Static arm9
Object unk_020893E0.o
Object unk_02089498.o
Object unk_02089960.o
- Object unk_02089D90.o
- Object unk_02089F24.o
+ Object save_data_read_error.o
+ Object save_data_write_error.o
Object unk_0208A258.o
Object unk_0208A300.o
Object unk_0208A338.o
@@ -657,7 +658,26 @@ Overlay MODULE_03
Overlay MODULE_04
{
After arm9
- Object thumb_04.o
+ Object mod04_021D74E0.o
+ Object mod04_021D868C.o
+ Object mod04_021D8D18.o
+ Object mod04_021D9C2C.o
+ Object mod04_021DA260.o
+ Object mod04_021DB730.o
+ Object mod04_021DC8A4.o
+ Object mod04_021DCCC8.o
+ Object mod04_021DD36C.o
+ Object mod04_0220C680_certs.o
+ Object mod04_021DD6B0.o
+ Object mod04_021DD82C.o
+ Object mod04_021DD984.o
+ Object mod04_021DDF40.o
+ Object mod04_021DE2D0.o
+ Object mod04_021DE89C.o
+ Object mod04_021DEB90.o
+ Object mod04_021E05FC.o
+ Object mod04_021E10F8.o
+ Object mod04_021E26D0.o
Object arm_04.o
}
@@ -702,7 +722,39 @@ Overlay MODULE_05
Object mod05_021E7C00.o
Object mod05_021E80F8.o
Object mod05_021E8310.o
- Object module_05.o
+ Object mod05_021E8648.o
+ Object mod05_021E8860.o
+ Object mod05_021E88E8.o
+ Object mod05_021EC458.o
+ Object mod05_021ED9C0.o
+ Object mod05_021EDB70.o
+ Object mod05_021EDE34.o
+ Object mod05_021EFA9C.o
+ Object mod05_021EFBF8.o
+ Object mod05_021F0318.o
+ Object mod05_021F0514.o
+ Object mod05_021F1B0C.o
+ Object mod05_021F1CB8.o
+ Object mod05_021F1F04.o
+ Object mod05_021F3780.o
+ Object mod05_021F3854.o
+ Object mod05_021F38CC.o
+ Object mod05_021F3BC0.o
+ Object mod05_021F3C98.o
+ Object mod05_021F3FE0.o
+ Object mod05_021F445C.o
+ Object mod05_021F45B4.o
+ Object mod05_021F46C8.o
+ Object mod05_021F4968.o
+ Object mod05_021F4CF8.o
+ Object mod05_021F5268.o
+ Object mod05_021F5518.o
+ Object mod05_021F5990.o
+ Object mod05_021F5B9C.o
+ Object mod05_021F5C44.o
+ Object mod05_021F61DC.o
+ Object mod05_021F61F4.o
+ Object mod05_021F6360.o
}
Overlay MODULE_06
@@ -802,7 +854,12 @@ Overlay MODULE_20
{
##Pokétch##
After MODULE_06
- Object module_20.o
+ Object mod20_02252440.o
+ Object mod20_02252C5C.o
+ Object mod20_022536F4.o
+ Object mod20_02253BA4.o
+ Object mod20_02254130.o
+ Object mod20_02254420.o
}
Overlay MODULE_21
diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s
deleted file mode 100644
index 794a16de..00000000
--- a/arm9/asm/scrcmd_17.s
+++ /dev/null
@@ -1,215 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F4494
-UNK_020F4494: ; 0x020F4494
- .byte 0x00, 0x00, 0x05, 0x00, 0x15, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x0D, 0x00, 0x19, 0x00, 0x1F, 0x00
- .byte 0x10, 0x00, 0x21, 0x00, 0x02, 0x00, 0x13, 0x00, 0x14, 0x00, 0x18, 0x00, 0x11, 0x00, 0x00, 0x00
- .byte 0x17, 0x00, 0x1D, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0B, 0x00
- .byte 0x16, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x12, 0x00
- .byte 0x15, 0x00, 0x0D, 0x00, 0x1F, 0x00, 0x09, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x06, 0x00
- .byte 0x05, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x13, 0x00, 0x14, 0x00, 0x01, 0x00, 0x07, 0x00, 0x10, 0x00
- .byte 0x16, 0x00, 0x0F, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x14, 0x00, 0x1D, 0x00, 0x04, 0x00
- .byte 0x08, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0A, 0x00
-
- .text
-
- thumb_func_start ScrCmd_Unk0215
-ScrCmd_Unk0215: ; 0x02044158
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205F54C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start ScrCmd_Unk0216
-ScrCmd_Unk0216: ; 0x0204416C
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205F55C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0217
-ScrCmd_Unk0217: ; 0x02044198
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- bl LCRandom
- mov r1, #0x64
- bl _s32_div_f
- lsl r0, r1, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0xf
- bhs _020441D6
- mov r0, #0x0
- b _02044218
-_020441D6:
- cmp r0, #0x1e
- bhs _020441DE
- mov r0, #0x1
- b _02044218
-_020441DE:
- cmp r0, #0x2d
- bhs _020441E6
- mov r0, #0x2
- b _02044218
-_020441E6:
- cmp r0, #0x3c
- bhs _020441EE
- mov r0, #0x3
- b _02044218
-_020441EE:
- cmp r0, #0x46
- bhs _020441F6
- mov r0, #0x4
- b _02044218
-_020441F6:
- cmp r0, #0x50
- bhs _020441FE
- mov r0, #0x5
- b _02044218
-_020441FE:
- cmp r0, #0x58
- bhs _02044206
- mov r0, #0x6
- b _02044218
-_02044206:
- cmp r0, #0x5d
- bhs _0204420E
- mov r0, #0x7
- b _02044218
-_0204420E:
- cmp r0, #0x62
- bhs _02044216
- mov r0, #0x8
- b _02044218
-_02044216:
- mov r0, #0x9
-_02044218:
- ldr r2, _020442B4 ; =0x0000011D
- cmp r5, r2
- bgt _02044244
- bge _02044290
- cmp r5, #0x27
- bgt _02044236
- cmp r5, #0x23
- blt _02044230
- beq _02044284
- cmp r5, #0x27
- beq _02044290
- b _0204429C
-_02044230:
- cmp r5, #0x19
- beq _02044294
- b _0204429C
-_02044236:
- cmp r5, #0x36
- bgt _0204423E
- beq _0204428C
- b _0204429C
-_0204423E:
- cmp r5, #0xff
- beq _02044288
- b _0204429C
-_02044244:
- add r1, r2, #0x0
- add r1, #0x8c
- cmp r5, r1
- bgt _0204426C
- add r1, r2, #0x0
- add r1, #0x8c
- cmp r5, r1
- bge _02044288
- add r1, r2, #0x0
- add r1, #0xf
- cmp r5, r1
- bgt _02044264
- add r2, #0xf
- cmp r5, r2
- beq _02044284
- b _0204429C
-_02044264:
- add r2, #0x84
- cmp r5, r2
- beq _0204428C
- b _0204429C
-_0204426C:
- add r1, r2, #0x0
- add r1, #0x8e
- cmp r5, r1
- bgt _0204427C
- add r2, #0x8e
- cmp r5, r2
- beq _02044298
- b _0204429C
-_0204427C:
- add r2, #0x9b
- cmp r5, r2
- beq _02044298
- b _0204429C
-_02044284:
- mov r2, #0x0
- b _0204429E
-_02044288:
- mov r2, #0x1
- b _0204429E
-_0204428C:
- mov r2, #0x2
- b _0204429E
-_02044290:
- mov r2, #0x3
- b _0204429E
-_02044294:
- mov r2, #0x4
- b _0204429E
-_02044298:
- mov r2, #0x5
- b _0204429E
-_0204429C:
- mov r2, #0x0
-_0204429E:
- add r3, r2, #0x0
- mov r1, #0x14
- mul r3, r1
- ldr r2, _020442B8 ; =UNK_020F4494
- lsl r1, r0, #0x1
- add r0, r2, r3
- ldrh r0, [r1, r0]
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- nop
-_020442B4: .word 0x0000011D
-_020442B8: .word UNK_020F4494
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index 8dcbdf20..29106585 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -14,32 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- thumb_func_start FUN_0203B174
-FUN_0203B174: ; 0x0203B174
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- mov r0, #0x4
- mov r1, #0x10
- add r7, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- bne _0203B18E
- bl GF_AssertFail
- pop {r3-r7, pc}
-_0203B18E:
- str r5, [r4, #0xc]
- str r6, [r4, #0x4]
- ldr r0, _0203B1A4 ; =FUN_0203B1A8
- add r1, r4, #0x0
- mov r2, #0x0
- str r7, [r4, #0x8]
- bl FUN_0200CA44
- str r0, [r4, #0x0]
- pop {r3-r7, pc}
- nop
-_0203B1A4: .word FUN_0203B1A8
-
thumb_func_start FUN_0203B1A8
FUN_0203B1A8: ; 0x0203B1A8
push {r3-r5, lr}
diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s
index 5ddfa9ab..cd5a4010 100644
--- a/arm9/asm/unk_02001B80.s
+++ b/arm9/asm/unk_02001B80.s
@@ -809,7 +809,7 @@ CreateYesNoMenu: ; 0x020020EC
ldr r2, [sp, #0xc]
ldr r3, [sp, #0x10]
mov r1, #0x1
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
lsl r0, r5, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -881,7 +881,7 @@ FUN_020021EC: ; 0x020021EC
ldr r0, [r5, #0x4]
add r4, r1, #0x0
mov r1, #0x0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, [r5, #0x4]
bl RemoveWindow
ldr r1, [r5, #0x4]
diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s
deleted file mode 100644
index e56b613f..00000000
--- a/arm9/asm/unk_02005CFC.s
+++ /dev/null
@@ -1,303 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02005CFC
-FUN_02005CFC: ; 0x02005CFC
- push {r3, lr}
- mov r0, #0x1d
- bl FUN_02003D38
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005D1C
- mov r0, #0xe
- bl FUN_02004ABC
- cmp r0, #0x0
- bne _02005D1C
- bl FUN_02005DFC
- mov r0, #0x1
- pop {r3, pc}
-_02005D1C:
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02005D20
-FUN_02005D20: ; 0x02005D20
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x1e
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl Chatot_exists
- cmp r0, #0x0
- bne _02005D3A
- mov r0, #0x0
- pop {r3-r5, pc}
-_02005D3A:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- beq _02005D44
- mov r0, #0x1
- pop {r3-r5, pc}
-_02005D44:
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005D48
-FUN_02005D48: ; 0x02005D48
- push {r3-r7, lr}
- sub sp, #0x30
- add r6, r0, #0x0
- add r5, r2, #0x0
- add r7, r3, #0x0
- bl FUN_02004DB4
- str r0, [sp, #0x0]
- mov r0, #0x1d
- bl FUN_02003D38
- str r0, [sp, #0x4]
- add r0, r6, #0x0
- bl FUN_02005D20
- cmp r0, #0x0
- bne _02005D70
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02005D70:
- mov r0, #0x0
- bl FUN_02005614
- bl FUN_02005DFC
- mov r0, #0xe
- bl FUN_02004984
- bl LCRandom
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x13
- sub r1, r1, r2
- mov r0, #0x13
- ror r1, r0
- add r0, r2, r1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r6, #0x0
- bl Chatot_GetData
- add r1, r0, #0x0
- ldr r0, [sp, #0x0]
- bl Chatot_Decode
- mov r0, #0xe
- bl FUN_02004930
- str r0, [sp, #0x8]
- mov r0, #0x0
- str r0, [sp, #0xc]
- bl FUN_02004DB4
- str r0, [sp, #0x10]
- mov r0, #0x0
- str r0, [sp, #0x14]
- str r0, [sp, #0x18]
- mov r0, #0x7d
- lsl r0, r0, #0x4
- str r0, [sp, #0x1c]
- str r0, [sp, #0x20]
- mov r0, #0x2
- lsl r0, r0, #0xe
- add r0, r4, r0
- str r0, [sp, #0x28]
- lsr r0, r7, #0x1f
- add r0, r7, r0
- asr r0, r0, #0x1
- add r0, #0x40
- str r0, [sp, #0x2c]
- add r0, sp, #0x8
- mov r1, #0xe
- str r5, [sp, #0x24]
- bl FUN_02004A6C
- add r4, r0, #0x0
- mov r0, #0xe
- add r1, r5, #0x0
- bl FUN_02004AF8
- ldr r0, [sp, #0x4]
- mov r1, #0x1
- strb r1, [r0, #0x0]
- mov r0, #0x0
- bl FUN_02005E80
- add r0, r4, #0x0
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02005DFC
-FUN_02005DFC: ; 0x02005DFC
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x1d
- bl FUN_02003D38
- add r4, r0, #0x0
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005E20
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005E20:
- mov r0, #0x0
- strb r0, [r4, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02005E28
-FUN_02005E28: ; 0x02005E28
- push {lr}
- sub sp, #0x1c
- mov r0, #0x2
- str r0, [sp, #0x0]
- bl FUN_02004DB4
- mov r1, #0x7d
- str r0, [sp, #0x4]
- lsl r1, r1, #0x4
- mov r0, #0x1f
- str r1, [sp, #0x8]
- tst r0, r1
- beq _02005E48
- mov r0, #0x1f
- bic r1, r0
- str r1, [sp, #0x8]
-_02005E48:
- ldr r0, _02005E60 ; =0x00004174
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- str r0, [sp, #0x18]
- add r0, sp, #0x0
- bl GF_MIC_StartAutoSampling
- add sp, #0x1c
- pop {pc}
- nop
-_02005E60: .word 0x00004174
-
- thumb_func_start FUN_02005E64
-FUN_02005E64: ; 0x02005E64
- ldr r3, _02005E68 ; =GF_MIC_StopAutoSampling
- bx r3
- .balign 4
-_02005E68: .word GF_MIC_StopAutoSampling
-
- thumb_func_start FUN_02005E6C
-FUN_02005E6C: ; 0x02005E6C
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02004DB4
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl Chatot_Encode
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02005E80
-FUN_02005E80: ; 0x02005E80
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x1e
- bl FUN_02003D38
- strb r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02005E90
-FUN_02005E90: ; 0x02005E90
- push {r3-r7, lr}
- add r5, r0, #0x0
- mov r0, #0x23
- add r7, r1, #0x0
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl FUN_02003D38
- cmp r5, #0x0
- bne _02005EB2
- ldr r0, [r0, #0x0]
- add r1, r7, #0x0
- add r2, r4, #0x0
- add r3, r6, #0x0
- bl FUN_02005D48
- b _02005EBE
-_02005EB2:
- add r0, r5, #0x0
- add r1, r7, #0x0
- add r2, r4, #0x0
- add r3, r6, #0x0
- bl FUN_02005D48
-_02005EBE:
- cmp r0, #0x0
- bne _02005ED8
- mov r0, #0x1
- bl FUN_02005E80
- mov r0, #0xb
- str r0, [sp, #0x0]
- ldr r1, _02005EDC ; =0x000001B9
- mov r0, #0x0
- add r2, r6, #0x0
- add r3, r4, #0x0
- bl FUN_020056AC
-_02005ED8:
- pop {r3-r7, pc}
- nop
-_02005EDC: .word 0x000001B9
-
- thumb_func_start FUN_02005EE0
-FUN_02005EE0: ; 0x02005EE0
- push {r4, lr}
- add r4, r0, #0x0
- bl Chatot_exists
- cmp r0, #0x0
- bne _02005EF0
- mov r0, #0x0
- pop {r4, pc}
-_02005EF0:
- add r0, r4, #0x0
- bl Chatot_GetData
- mov r1, #0xf
- ldrsb r0, [r0, r1]
- sub r1, #0x2d
- cmp r0, r1
- bge _02005F04
- mov r0, #0x1
- pop {r4, pc}
-_02005F04:
- cmp r0, #0x1e
- blt _02005F10
- cmp r0, #0x80
- bge _02005F10
- mov r0, #0x2
- pop {r4, pc}
-_02005F10:
- mov r0, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02005F14
-FUN_02005F14: ; 0x02005F14
- cmp r0, #0xb
- bgt _02005F2E
- bge _02005F32
- cmp r0, #0x5
- bgt _02005F36
- cmp r0, #0x0
- blt _02005F36
- beq _02005F32
- cmp r0, #0x1
- beq _02005F32
- cmp r0, #0x5
- beq _02005F32
- b _02005F36
-_02005F2E:
- cmp r0, #0xc
- bne _02005F36
-_02005F32:
- mov r0, #0x1
- bx lr
-_02005F36:
- mov r0, #0x0
- bx lr
- .balign 4
diff --git a/arm9/asm/unk_02008AA4.s b/arm9/asm/unk_02008AA4.s
deleted file mode 100644
index 0b8d98e7..00000000
--- a/arm9/asm/unk_02008AA4.s
+++ /dev/null
@@ -1,428 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02008AA4
-FUN_02008AA4: ; 0x02008AA4
- push {r3-r7, lr}
- sub sp, #0x18
- mov r4, #0x0
- add r5, r0, #0x0
- add r0, r4, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x44]
- add r6, r1, #0x0
- str r2, [sp, #0x0]
- str r3, [sp, #0x4]
- str r4, [sp, #0xc]
- cmp r0, #0x0
- bne _02008AC2
- bl GF_AssertFail
-_02008AC2:
- ldr r0, [sp, #0x48]
- cmp r0, #0x0
- bne _02008ACC
- bl GF_AssertFail
-_02008ACC:
- ldr r0, [sp, #0x50]
- cmp r0, #0x0
- bne _02008AD6
- bl GF_AssertFail
-_02008AD6:
- ldr r0, [sp, #0x4c]
- cmp r0, #0x0
- bne _02008AE0
- bl GF_AssertFail
-_02008AE0:
- cmp r5, #0x0
- bne _02008AE8
- bl GF_AssertFail
-_02008AE8:
- ldr r0, [sp, #0x44]
- add r1, r6, #0x0
- bl FUN_020094F0
- add r7, r0, #0x0
- bne _02008AF8
- bl GF_AssertFail
-_02008AF8:
- ldr r0, [sp, #0x48]
- ldr r1, [sp, #0x0]
- bl FUN_020094F0
- str r0, [sp, #0x14]
- cmp r0, #0x0
- bne _02008B0A
- bl GF_AssertFail
-_02008B0A:
- ldr r0, [sp, #0x4c]
- ldr r1, [sp, #0x4]
- bl FUN_020094F0
- str r0, [sp, #0x10]
- cmp r0, #0x0
- bne _02008B1C
- bl GF_AssertFail
-_02008B1C:
- ldr r0, [sp, #0x50]
- cmp r0, #0x0
- beq _02008B3A
- mov r2, #0x0
- ldr r1, [sp, #0x30]
- mvn r2, r2
- cmp r1, r2
- beq _02008B3A
- bl FUN_020094F0
- str r0, [sp, #0xc]
- cmp r0, #0x0
- bne _02008B3A
- bl GF_AssertFail
-_02008B3A:
- ldr r0, [sp, #0x54]
- cmp r0, #0x0
- beq _02008B62
- mov r2, #0x0
- ldr r1, [sp, #0x34]
- mvn r2, r2
- cmp r1, r2
- beq _02008B50
- bl FUN_020094F0
- add r4, r0, #0x0
-_02008B50:
- mov r0, #0x0
- ldr r1, [sp, #0x38]
- mvn r0, r0
- cmp r1, r0
- beq _02008B62
- ldr r0, [sp, #0x58]
- bl FUN_020094F0
- str r0, [sp, #0x8]
-_02008B62:
- ldr r0, [sp, #0x3c]
- cmp r0, #0x0
- beq _02008B82
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- bl FUN_02009C80
- add r6, r0, #0x0
- bne _02008B78
- bl GF_AssertFail
-_02008B78:
- add r0, r7, #0x0
- bl FUN_02009544
- str r0, [r5, #0x4]
- b _02008B94
-_02008B82:
- add r0, r7, #0x0
- bl FUN_02009C5C
- add r6, r0, #0x0
- bne _02008B90
- bl GF_AssertFail
-_02008B90:
- mov r0, #0x0
- str r0, [r5, #0x4]
-_02008B94:
- ldr r0, [sp, #0x14]
- add r1, r6, #0x0
- bl FUN_02009E54
- str r0, [r5, #0x8]
- ldr r0, [sp, #0x10]
- str r6, [r5, #0x0]
- bl FUN_02009574
- str r0, [r5, #0xc]
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- beq _02008BB4
- bl FUN_0200958C
- b _02008BB6
-_02008BB4:
- mov r0, #0x0
-_02008BB6:
- str r0, [r5, #0x10]
- cmp r4, #0x0
- beq _02008BCC
- add r0, r4, #0x0
- bl FUN_020095A4
- str r0, [r5, #0x14]
- ldr r0, [sp, #0x8]
- bl FUN_020095BC
- b _02008BD0
-_02008BCC:
- mov r0, #0x0
- str r0, [r5, #0x14]
-_02008BD0:
- str r0, [r5, #0x18]
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x1c]
- ldr r0, [sp, #0x40]
- add r5, #0x20
- strb r0, [r5, #0x0]
- add sp, #0x18
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02008BE0
-FUN_02008BE0: ; 0x02008BE0
- push {r4-r7, lr}
- sub sp, #0x34
- add r5, r0, #0x0
- ldr r0, [sp, #0x48]
- add r7, r1, #0x0
- str r0, [sp, #0x48]
- ldr r0, [sp, #0x4c]
- mov r4, #0x0
- str r0, [sp, #0x4c]
- ldr r0, [sp, #0x50]
- ldr r1, [r5, #0x0]
- str r0, [sp, #0x50]
- ldr r0, [sp, #0x54]
- str r2, [sp, #0x2c]
- str r0, [sp, #0x54]
- sub r0, r4, #0x2
- str r3, [sp, #0x30]
- cmp r1, r0
- beq _02008C14
- add r2, r5, #0x0
- sub r0, r4, #0x2
-_02008C0A:
- add r2, #0x20
- ldr r1, [r2, #0x0]
- add r4, r4, #0x1
- cmp r1, r0
- bne _02008C0A
-_02008C14:
- add r0, r7, #0x0
- mov r1, #0x8
- bl AllocFromHeap
- mov r1, #0x24
- add r6, r0, #0x0
- add r0, r7, #0x0
- mul r1, r4
- bl AllocFromHeap
- str r0, [r6, #0x0]
- mov r7, #0x0
- str r4, [r6, #0x4]
- cmp r4, #0x0
- ble _02008C7A
- add r4, r7, #0x0
-_02008C34:
- ldr r0, [r5, #0xc]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x10]
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x14]
- str r0, [sp, #0x8]
- ldr r0, [r5, #0x18]
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x1c]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x2c]
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x30]
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x1c]
- ldr r0, [sp, #0x4c]
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x50]
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x54]
- str r0, [sp, #0x28]
- ldr r0, [r6, #0x0]
- ldr r1, [r5, #0x0]
- ldr r2, [r5, #0x4]
- ldr r3, [r5, #0x8]
- add r0, r0, r4
- bl FUN_02008AA4
- ldr r0, [r6, #0x4]
- add r7, r7, #0x1
- add r5, #0x20
- add r4, #0x24
- cmp r7, r0
- blt _02008C34
-_02008C7A:
- add r0, r6, #0x0
- add sp, #0x34
- pop {r4-r7, pc}
-
- thumb_func_start FUN_02008C80
-FUN_02008C80: ; 0x02008C80
- push {r4, lr}
- add r4, r0, #0x0
- bne _02008C8A
- bl GF_AssertFail
-_02008C8A:
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _02008C94
- bl FreeToHeap
-_02008C94:
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start FUN_02008C9C
-FUN_02008C9C: ; 0x02008C9C
- push {r3-r6, lr}
- sub sp, #0x1c
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r1, _02008D00 ; =0xFFFFF000
- add r0, r4, #0x0
- add r6, r2, #0x0
- bl FUN_0202134C
- mov r0, #0x0
- str r0, [sp, #0x0]
- str r0, [sp, #0x4]
- mov r0, #0xff
- lsl r0, r0, #0xc
- str r0, [sp, #0x8]
- mov r0, #0x3
- lsl r0, r0, #0x12
- str r0, [sp, #0xc]
- add r0, r4, #0x0
- add r0, #0x98
- add r1, sp, #0x0
- mov r2, #0x1
- add r3, r4, #0x0
- bl FUN_02009FD8
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0xff
- mov r1, #0x3
- lsl r1, r1, #0x12
- lsl r0, r0, #0xc
- str r0, [sp, #0x8]
- add r0, r4, #0x0
- str r1, [sp, #0x4]
- str r1, [sp, #0xc]
- add r0, #0xe0
- add r1, sp, #0x0
- mov r2, #0x2
- add r3, r4, #0x0
- bl FUN_02009FD8
- add r0, sp, #0x10
- str r5, [sp, #0x10]
- str r4, [sp, #0x14]
- str r6, [sp, #0x18]
- bl FUN_0201FCB0
- add sp, #0x1c
- pop {r3-r6, pc}
- nop
-_02008D00: .word 0xFFFFF000
-
- thumb_func_start FUN_02008D04
-FUN_02008D04: ; 0x02008D04
- push {r3, lr}
- sub sp, #0x10
- str r1, [sp, #0x0]
- mov r1, #0xff
- lsl r1, r1, #0xc
- str r1, [sp, #0x8]
- mov r1, #0x3
- lsl r1, r1, #0x12
- str r1, [sp, #0xc]
- add r0, #0x98
- add r1, sp, #0x0
- str r2, [sp, #0x4]
- bl FUN_02021390
- add sp, #0x10
- pop {r3, pc}
-
- thumb_func_start FUN_02008D24
-FUN_02008D24: ; 0x02008D24
- push {r3, lr}
- sub sp, #0x10
- str r1, [sp, #0x0]
- mov r1, #0xff
- lsl r1, r1, #0xc
- str r1, [sp, #0x8]
- mov r1, #0x3
- lsl r1, r1, #0x12
- str r1, [sp, #0xc]
- add r0, #0xe0
- add r1, sp, #0x0
- str r2, [sp, #0x4]
- bl FUN_02021390
- add sp, #0x10
- pop {r3, pc}
-
- thumb_func_start FUN_02008D44
-FUN_02008D44: ; 0x02008D44
- push {r4, lr}
- add r4, r0, #0x0
- cmp r1, #0x10
- beq _02008D5A
- ldr r2, _02008DCC ; =0x00100010
- cmp r1, r2
- beq _02008D8A
- ldr r0, _02008DD0 ; =0x00200010
- cmp r1, r0
- beq _02008D98
- b _02008DC4
-_02008D5A:
- bl GX_GetBankForOBJ
- cmp r0, #0x40
- beq _02008D6A
- bl GX_GetBankForOBJ
- cmp r0, #0x20
- bne _02008D7A
-_02008D6A:
- mov r0, #0x3e
- mov r1, #0x2
- lsl r0, r0, #0x8
- lsl r1, r1, #0x8
- add r2, r4, #0x0
- bl FUN_0201D194
- pop {r4, pc}
-_02008D7A:
- mov r0, #0x7e
- mov r1, #0x2
- lsl r0, r0, #0x8
- lsl r1, r1, #0x8
- add r2, r4, #0x0
- bl FUN_0201D194
- pop {r4, pc}
-_02008D8A:
- mov r0, #0xfe
- lsr r1, r2, #0xb
- lsl r0, r0, #0x8
- add r2, r4, #0x0
- bl FUN_0201D194
- pop {r4, pc}
-_02008D98:
- bl GX_GetBankForOBJ
- cmp r0, #0x30
- beq _02008DA8
- bl GX_GetBankForOBJ
- cmp r0, #0x50
- bne _02008DB6
-_02008DA8:
- mov r1, #0x2
- ldr r0, _02008DD4 ; =0x00013E00
- lsl r1, r1, #0x8
- add r2, r4, #0x0
- bl FUN_0201D194
- pop {r4, pc}
-_02008DB6:
- mov r1, #0x2
- ldr r0, _02008DD8 ; =0x0001FE00
- lsl r1, r1, #0x8
- add r2, r4, #0x0
- bl FUN_0201D194
- pop {r4, pc}
-_02008DC4:
- bl GF_AssertFail
- pop {r4, pc}
- nop
-_02008DCC: .word 0x00100010
-_02008DD0: .word 0x00200010
-_02008DD4: .word 0x00013E00
-_02008DD8: .word 0x0001FE00
-
- thumb_func_start FUN_02008DDC
-FUN_02008DDC: ; 0x02008DDC
- ldr r3, _02008DE8 ; =FUN_0201E068
- add r1, r0, #0x0
- mov r0, #0x3
- lsl r0, r0, #0xe
- bx r3
- nop
-_02008DE8: .word FUN_0201E068
diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s
deleted file mode 100644
index f257d2c8..00000000
--- a/arm9/asm/unk_02008DEC.s
+++ /dev/null
@@ -1,2280 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02008DEC
-FUN_02008DEC: ; 0x02008DEC
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- str r2, [sp, #0x0]
- add r0, r2, #0x0
- mov r1, #0x14
- bl AllocFromHeap
- add r4, r0, #0x0
- ldr r1, [sp, #0x0]
- add r0, r5, #0x0
- bl FUN_02020C44
- str r0, [r4, #0x0]
- mov r0, #0xc
- add r7, r5, #0x0
- mul r7, r0
- ldr r0, [sp, #0x0]
- add r1, r7, #0x0
- bl AllocFromHeap
- mov r1, #0x0
- add r2, r7, #0x0
- str r0, [r4, #0x4]
- bl memset
- str r5, [r4, #0x8]
- mov r0, #0x0
- str r0, [r4, #0xc]
- str r6, [r4, #0x10]
- add r0, r4, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02008E2C
-FUN_02008E2C: ; 0x02008E2C
- push {r4, lr}
- add r4, r0, #0x0
- bne _02008E36
- bl GF_AssertFail
-_02008E36:
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02008E40
- bl GF_AssertFail
-_02008E40:
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- bne _02008E4A
- bl GF_AssertFail
-_02008E4A:
- add r0, r4, #0x0
- bl FUN_020094C4
- ldr r0, [r4, #0x0]
- bl FUN_02020C90
- mov r0, #0x0
- str r0, [r4, #0x0]
- ldr r0, [r4, #0x4]
- bl FreeToHeap
- mov r0, #0x0
- str r0, [r4, #0x4]
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start FUN_02008E6C
-FUN_02008E6C: ; 0x02008E6C
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r5, #0x0
- bne _02008E80
- bl GF_AssertFail
-_02008E80:
- cmp r4, #0x0
- bne _02008E88
- bl GF_AssertFail
-_02008E88:
- ldr r0, [r4, #0x4]
- cmp r0, r6
- bgt _02008E92
- bl GF_AssertFail
-_02008E92:
- ldr r1, [r5, #0x10]
- ldr r0, [r4, #0x8]
- cmp r1, r0
- beq _02008E9E
- bl GF_AssertFail
-_02008E9E:
- add r0, r5, #0x0
- bl FUN_020097D0
- str r0, [sp, #0x1c]
- cmp r0, #0x0
- bne _02008EAE
- bl GF_AssertFail
-_02008EAE:
- ldrb r0, [r4, #0xc]
- cmp r0, #0x0
- bne _02008EEA
- ldr r2, [r4, #0x0]
- mov r0, #0x4c
- add r1, r6, #0x0
- mul r1, r0
- add r6, r2, r1
- ldr r1, [r2, r1]
- add r0, r5, #0x0
- bl FUN_0200945C
- cmp r0, #0x1
- beq _02008ECE
- bl GF_AssertFail
-_02008ECE:
- ldr r0, [r6, #0x44]
- ldr r1, [sp, #0x1c]
- str r0, [sp, #0x0]
- ldr r0, [r6, #0x48]
- add r2, r6, #0x4
- str r0, [sp, #0x4]
- ldr r0, [r4, #0x8]
- str r0, [sp, #0x8]
- str r7, [sp, #0xc]
- ldr r3, [r6, #0x0]
- add r0, r5, #0x0
- bl FUN_0200994C
- b _02008F28
-_02008EEA:
- mov r0, #0x18
- ldr r1, [r4, #0x0]
- mul r0, r6
- add r6, r1, r0
- ldr r1, [r6, #0xc]
- add r0, r5, #0x0
- bl FUN_0200945C
- cmp r0, #0x1
- beq _02008F02
- bl GF_AssertFail
-_02008F02:
- ldr r0, [r6, #0x8]
- ldr r1, [sp, #0x1c]
- str r0, [sp, #0x0]
- ldr r0, [r6, #0xc]
- str r0, [sp, #0x4]
- ldr r0, [r6, #0x10]
- str r0, [sp, #0x8]
- ldr r0, [r6, #0x14]
- str r0, [sp, #0xc]
- ldr r0, [r4, #0x8]
- str r0, [sp, #0x10]
- str r7, [sp, #0x14]
- mov r0, #0x0
- str r0, [sp, #0x18]
- ldr r2, [r6, #0x0]
- ldr r3, [r6, #0x4]
- add r0, r5, #0x0
- bl FUN_02009978
-_02008F28:
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- ldr r0, [sp, #0x1c]
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02008F34
-FUN_02008F34: ; 0x02008F34
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _02008F48
- bl GF_AssertFail
-_02008F48:
- ldr r0, [r5, #0x10]
- cmp r0, #0x0
- beq _02008F52
- bl GF_AssertFail
-_02008F52:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _02008F60
- bl GF_AssertFail
-_02008F60:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- mov r1, #0x0
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- ldr r0, [sp, #0x40]
- str r1, [sp, #0x10]
- str r0, [sp, #0x14]
- str r1, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl FUN_02009978
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02008F90
-FUN_02008F90: ; 0x02008F90
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _02008FA4
- bl GF_AssertFail
-_02008FA4:
- ldr r0, [r5, #0x10]
- cmp r0, #0x0
- beq _02008FAE
- bl GF_AssertFail
-_02008FAE:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _02008FBC
- bl GF_AssertFail
-_02008FBC:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- mov r0, #0x0
- str r0, [sp, #0xc]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x40]
- add r1, r6, #0x0
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x44]
- add r2, r7, #0x0
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_02009978
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02008FEC
-FUN_02008FEC: ; 0x02008FEC
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _02009000
- bl GF_AssertFail
-_02009000:
- ldr r0, [r5, #0x10]
- cmp r0, #0x1
- beq _0200900A
- bl GF_AssertFail
-_0200900A:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _02009018
- bl GF_AssertFail
-_02009018:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x40]
- add r1, r6, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x1
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x44]
- add r2, r7, #0x0
- str r0, [sp, #0x14]
- mov r0, #0x0
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_02009978
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200904C
-FUN_0200904C: ; 0x0200904C
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _02009060
- bl GF_AssertFail
-_02009060:
- ldr r0, [r5, #0x10]
- cmp r0, #0x1
- beq _0200906A
- bl GF_AssertFail
-_0200906A:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _02009078
- bl GF_AssertFail
-_02009078:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x40]
- add r1, r6, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x1
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x44]
- add r2, r7, #0x0
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_02009978
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020090AC
-FUN_020090AC: ; 0x020090AC
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _020090C0
- bl GF_AssertFail
-_020090C0:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _020090CE
- bl GF_AssertFail
-_020090CE:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- mov r1, #0x0
- str r1, [sp, #0x8]
- ldr r0, [sp, #0x3c]
- str r1, [sp, #0xc]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x40]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x14]
- str r1, [sp, #0x18]
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl FUN_02009978
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020090FC
-FUN_020090FC: ; 0x020090FC
- push {r4-r7, lr}
- sub sp, #0x24
- add r5, r0, #0x0
- add r4, r1, #0x0
- str r2, [sp, #0x1c]
- str r3, [sp, #0x20]
- cmp r5, #0x0
- bne _02009110
- bl GF_AssertFail
-_02009110:
- ldr r0, [r5, #0x10]
- cmp r0, #0x0
- beq _0200911A
- bl GF_AssertFail
-_0200911A:
- cmp r4, #0x0
- bne _02009122
- bl GF_AssertFail
-_02009122:
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- beq _0200912C
- bl GF_AssertFail
-_0200912C:
- add r0, r4, #0x0
- bl FUN_02009530
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl FUN_020095E4
- add r7, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02009490
- ldr r0, [sp, #0x38]
- mov r1, #0x0
- str r0, [sp, #0x0]
- str r6, [sp, #0x4]
- str r7, [sp, #0x8]
- str r1, [sp, #0xc]
- ldr r0, [sp, #0x3c]
- str r1, [sp, #0x10]
- str r0, [sp, #0x14]
- str r1, [sp, #0x18]
- ldr r2, [sp, #0x1c]
- ldr r3, [sp, #0x20]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02009978
- add sp, #0x24
- pop {r4-r7, pc}
-
- thumb_func_start FUN_02009168
-FUN_02009168: ; 0x02009168
- push {r3-r7, lr}
- sub sp, #0x28
- add r5, r0, #0x0
- add r4, r1, #0x0
- str r2, [sp, #0x1c]
- str r3, [sp, #0x20]
- cmp r5, #0x0
- bne _0200917C
- bl GF_AssertFail
-_0200917C:
- ldr r0, [r5, #0x10]
- cmp r0, #0x1
- beq _02009186
- bl GF_AssertFail
-_02009186:
- cmp r4, #0x0
- bne _0200918E
- bl GF_AssertFail
-_0200918E:
- ldr r0, [r4, #0x4]
- cmp r0, #0x1
- beq _02009198
- bl GF_AssertFail
-_02009198:
- add r0, r4, #0x0
- bl FUN_02009530
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl FUN_020095E4
- add r7, r0, #0x0
- add r0, r4, #0x0
- bl FUN_02009610
- str r0, [sp, #0x24]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02009490
- ldr r0, [sp, #0x40]
- ldr r2, [sp, #0x1c]
- str r0, [sp, #0x0]
- str r6, [sp, #0x4]
- ldr r0, [sp, #0x24]
- str r7, [sp, #0x8]
- str r0, [sp, #0xc]
- mov r0, #0x1
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x44]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x14]
- mov r0, #0x0
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02009978
- add sp, #0x28
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020091E0
-FUN_020091E0: ; 0x020091E0
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _020091F4
- bl GF_AssertFail
-_020091F4:
- ldr r0, [r5, #0x10]
- cmp r0, #0x0
- beq _020091FE
- bl GF_AssertFail
-_020091FE:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _0200920C
- bl GF_AssertFail
-_0200920C:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- mov r1, #0x0
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- ldr r0, [sp, #0x40]
- str r1, [sp, #0x10]
- str r0, [sp, #0x14]
- str r1, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl FUN_020099B0
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200923C
-FUN_0200923C: ; 0x0200923C
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _02009250
- bl GF_AssertFail
-_02009250:
- ldr r0, [r5, #0x10]
- cmp r0, #0x0
- beq _0200925A
- bl GF_AssertFail
-_0200925A:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _02009268
- bl GF_AssertFail
-_02009268:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- mov r0, #0x0
- str r0, [sp, #0xc]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x40]
- add r1, r6, #0x0
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x44]
- add r2, r7, #0x0
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_020099B0
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02009298
-FUN_02009298: ; 0x02009298
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _020092AC
- bl GF_AssertFail
-_020092AC:
- ldr r0, [r5, #0x10]
- cmp r0, #0x1
- beq _020092B6
- bl GF_AssertFail
-_020092B6:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _020092C4
- bl GF_AssertFail
-_020092C4:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x40]
- add r1, r6, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x1
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x44]
- add r2, r7, #0x0
- str r0, [sp, #0x14]
- mov r0, #0x0
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_020099B0
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020092F8
-FUN_020092F8: ; 0x020092F8
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _0200930C
- bl GF_AssertFail
-_0200930C:
- ldr r0, [r5, #0x10]
- cmp r0, #0x1
- beq _02009316
- bl GF_AssertFail
-_02009316:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _02009324
- bl GF_AssertFail
-_02009324:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x40]
- add r1, r6, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x1
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x44]
- add r2, r7, #0x0
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_020099B0
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02009358
-FUN_02009358: ; 0x02009358
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r4, r3, #0x0
- str r2, [sp, #0x1c]
- cmp r5, #0x0
- bne _0200936C
- bl GF_AssertFail
-_0200936C:
- add r0, r5, #0x0
- bl FUN_020097D0
- add r6, r0, #0x0
- bne _0200937A
- bl GF_AssertFail
-_0200937A:
- ldr r0, [sp, #0x38]
- str r4, [sp, #0x0]
- str r0, [sp, #0x4]
- mov r1, #0x0
- str r1, [sp, #0x8]
- ldr r0, [sp, #0x3c]
- str r1, [sp, #0xc]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x40]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x14]
- str r1, [sp, #0x18]
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl FUN_020099B0
- ldr r0, [r5, #0xc]
- add r0, r0, #0x1
- str r0, [r5, #0xc]
- add r0, r6, #0x0
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020093A8
-FUN_020093A8: ; 0x020093A8
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r5, #0x0
- bne _020093BC
- bl GF_AssertFail
-_020093BC:
- cmp r4, #0x0
- bne _020093C4
- bl GF_AssertFail
-_020093C4:
- str r6, [sp, #0x0]
- str r7, [sp, #0x4]
- ldr r3, [r4, #0x4]
- add r0, r5, #0x0
- add r1, r4, #0x0
- mov r2, #0x0
- bl FUN_020093DC
- ldr r0, [r4, #0x4]
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020093DC
-FUN_020093DC: ; 0x020093DC
- push {r3-r7, lr}
- sub sp, #0x8
- str r0, [sp, #0x0]
- add r5, r2, #0x0
- ldr r0, [sp, #0x24]
- add r7, r5, r3
- str r1, [sp, #0x4]
- ldr r4, [sp, #0x20]
- str r0, [sp, #0x24]
- cmp r5, r7
- bge _02009420
- add r6, r4, #0x0
- add r6, #0x8
-_020093F6:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- ldr r3, [sp, #0x24]
- add r2, r5, #0x0
- bl FUN_02008E6C
- cmp r4, #0x0
- beq _0200941A
- ldr r2, [r4, #0x8]
- ldr r1, [r4, #0x4]
- cmp r1, r2
- ble _0200941A
- ldr r1, [r4, #0x0]
- lsl r2, r2, #0x2
- str r0, [r1, r2]
- ldr r0, [r6, #0x0]
- add r0, r0, #0x1
- str r0, [r6, #0x0]
-_0200941A:
- add r5, r5, #0x1
- cmp r5, r7
- blt _020093F6
-_02009420:
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02009424
-FUN_02009424: ; 0x02009424
- push {r4-r6, lr}
- add r6, r1, #0x0
- add r5, r0, #0x0
- add r0, r6, #0x0
- mov r1, #0xc
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r6, #0x0
- lsl r1, r5, #0x2
- bl AllocFromHeap
- str r0, [r4, #0x0]
- str r5, [r4, #0x4]
- mov r0, #0x0
- str r0, [r4, #0x8]
- add r0, r4, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009448
-FUN_02009448: ; 0x02009448
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- bl FreeToHeap
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200945C
-FUN_0200945C: ; 0x0200945C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _0200946A
- bl GF_AssertFail
-_0200946A:
- ldr r0, [r5, #0x0]
- add r1, r4, #0x0
- bl FUN_02020CB0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02009474
-FUN_02009474: ; 0x02009474
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200947E
- bl GF_AssertFail
-_0200947E:
- add r0, r4, #0x0
- bl FUN_02009920
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_02020E1C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02009490
-FUN_02009490: ; 0x02009490
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _0200949E
- bl GF_AssertFail
-_0200949E:
- ldr r0, [r5, #0x4]
- cmp r0, #0x0
- bne _020094A8
- bl GF_AssertFail
-_020094A8:
- add r0, r4, #0x0
- bl FUN_02009920
- ldr r0, [r5, #0x0]
- ldr r1, [r4, #0x0]
- bl FUN_02020D68
- mov r0, #0x0
- str r0, [r4, #0x0]
- ldr r0, [r5, #0xc]
- sub r0, r0, #0x1
- str r0, [r5, #0xc]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020094C4
-FUN_020094C4: ; 0x020094C4
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldr r0, [r5, #0x8]
- mov r6, #0x0
- cmp r0, #0x0
- ble _020094EC
- add r4, r6, #0x0
-_020094D2:
- ldr r1, [r5, #0x4]
- ldr r0, [r1, r4]
- cmp r0, #0x0
- beq _020094E2
- add r0, r5, #0x0
- add r1, r1, r4
- bl FUN_02009490
-_020094E2:
- ldr r0, [r5, #0x8]
- add r6, r6, #0x1
- add r4, #0xc
- cmp r6, r0
- blt _020094D2
-_020094EC:
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020094F0
-FUN_020094F0: ; 0x020094F0
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r7, r1, #0x0
- cmp r5, #0x0
- bne _020094FE
- bl GF_AssertFail
-_020094FE:
- ldr r0, [r5, #0x8]
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200952C
- add r4, r6, #0x0
-_02009508:
- ldr r0, [r5, #0x4]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _02009522
- bl FUN_02020E38
- cmp r0, r7
- bne _02009522
- mov r0, #0xc
- ldr r1, [r5, #0x4]
- mul r0, r6
- add r0, r1, r0
- pop {r3-r7, pc}
-_02009522:
- ldr r0, [r5, #0x8]
- add r6, r6, #0x1
- add r4, #0xc
- cmp r6, r0
- blt _02009508
-_0200952C:
- mov r0, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02009530
-FUN_02009530: ; 0x02009530
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200953A
- bl GF_AssertFail
-_0200953A:
- ldr r0, [r4, #0x0]
- bl FUN_02020E38
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02009544
-FUN_02009544: ; 0x02009544
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- beq _02009552
- bl GF_AssertFail
-_02009552:
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_0200955C
-FUN_0200955C: ; 0x0200955C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x1
- beq _0200956A
- bl GF_AssertFail
-_0200956A:
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_02009574
-FUN_02009574: ; 0x02009574
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x2
- beq _02009582
- bl GF_AssertFail
-_02009582:
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_0200958C
-FUN_0200958C: ; 0x0200958C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x3
- beq _0200959A
- bl GF_AssertFail
-_0200959A:
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_020095A4
-FUN_020095A4: ; 0x020095A4
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x4
- beq _020095B2
- bl GF_AssertFail
-_020095B2:
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_020095BC
-FUN_020095BC: ; 0x020095BC
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x5
- beq _020095CA
- bl GF_AssertFail
-_020095CA:
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_020095D4
-FUN_020095D4: ; 0x020095D4
- push {r4, lr}
- add r4, r0, #0x0
- bne _020095DE
- bl GF_AssertFail
-_020095DE:
- ldr r0, [r4, #0x4]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020095E4
-FUN_020095E4: ; 0x020095E4
- push {r4, lr}
- add r4, r0, #0x0
- bne _020095EE
- bl GF_AssertFail
-_020095EE:
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- bne _020095FE
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x4]
- pop {r4, pc}
-_020095FE:
- cmp r0, #0x1
- bne _0200960C
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x4]
- pop {r4, pc}
-_0200960C:
- mov r0, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02009610
-FUN_02009610: ; 0x02009610
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200961A
- bl GF_AssertFail
-_0200961A:
- ldr r0, [r4, #0x4]
- cmp r0, #0x1
- bne _0200962A
- add r0, r4, #0x0
- bl FUN_02009934
- ldr r0, [r0, #0x8]
- pop {r4, pc}
-_0200962A:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02009630
-FUN_02009630: ; 0x02009630
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _0200963E
- bl GF_AssertFail
-_0200963E:
- ldr r0, [r5, #0x4]
- cmp r0, #0x0
- bne _0200964C
- add r0, r5, #0x0
- bl FUN_02009934
- str r4, [r0, #0x4]
-_0200964C:
- ldr r0, [r5, #0x4]
- cmp r0, #0x1
- bne _0200965A
- add r0, r5, #0x0
- bl FUN_02009934
- str r4, [r0, #0x4]
-_0200965A:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200965C
-FUN_0200965C: ; 0x0200965C
- mov r0, #0x10
- bx lr
-
- thumb_func_start FUN_02009660
-FUN_02009660: ; 0x02009660
- lsl r1, r1, #0x4
- add r0, r0, r1
- bx lr
- .balign 4
-
- thumb_func_start FUN_02009668
-FUN_02009668: ; 0x02009668
- push {r4-r6, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r6, r2, #0x0
- cmp r4, #0x0
- bne _02009678
- bl GF_AssertFail
-_02009678:
- ldr r0, [r5, #0x0]
- str r0, [r4, #0x8]
- mov r0, #0x1
- strb r0, [r4, #0xc]
- add r0, r5, #0x4
- bl FUN_020099E8
- add r2, r0, #0x0
- str r0, [r4, #0x4]
- cmp r2, #0x0
- ble _0200969A
- mov r1, #0x18
- add r0, r6, #0x0
- mul r1, r2
- bl AllocFromHeap
- b _0200969C
-_0200969A:
- mov r0, #0x0
-_0200969C:
- str r0, [r4, #0x0]
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _020096B0
- ldr r3, [r4, #0x4]
- mov r2, #0x18
- add r1, r5, #0x4
- mul r2, r3
- bl memcpy
-_020096B0:
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020096B4
-FUN_020096B4: ; 0x020096B4
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _020096C2
- bl FreeToHeap
-_020096C2:
- mov r0, #0x0
- str r0, [r4, #0x0]
- str r0, [r4, #0x4]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020096CC
-FUN_020096CC: ; 0x020096CC
- push {r4, lr}
- add r4, r0, #0x0
- bne _020096D6
- bl GF_AssertFail
-_020096D6:
- ldr r0, [r4, #0x4]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020096DC
-FUN_020096DC: ; 0x020096DC
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _020096EA
- bl GF_AssertFail
-_020096EA:
- ldr r0, [r5, #0x4]
- cmp r0, r4
- bgt _020096F4
- bl GF_AssertFail
-_020096F4:
- ldrb r0, [r5, #0xc]
- ldr r1, [r5, #0x0]
- cmp r0, #0x0
- bne _02009704
- mov r0, #0x4c
- mul r0, r4
- ldr r0, [r1, r0]
- pop {r3-r5, pc}
-_02009704:
- mov r0, #0x18
- mul r0, r4
- add r0, r1, r0
- ldr r0, [r0, #0xc]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02009710
-FUN_02009710: ; 0x02009710
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _0200971E
- bl GF_AssertFail
-_0200971E:
- ldr r0, [r5, #0x4]
- cmp r0, r4
- bgt _02009728
- bl GF_AssertFail
-_02009728:
- ldrb r0, [r5, #0xc]
- cmp r0, #0x1
- bne _02009738
- mov r0, #0x18
- ldr r1, [r5, #0x0]
- mul r0, r4
- add r0, r1, r0
- ldr r6, [r0, #0x4]
-_02009738:
- add r0, r6, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0200973C
-FUN_0200973C: ; 0x0200973C
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _0200974A
- bl GF_AssertFail
-_0200974A:
- ldr r0, [r5, #0x4]
- cmp r0, r4
- bgt _02009754
- bl GF_AssertFail
-_02009754:
- ldrb r0, [r5, #0xc]
- cmp r0, #0x1
- bne _02009764
- mov r0, #0x18
- ldr r1, [r5, #0x0]
- mul r0, r4
- add r0, r1, r0
- ldr r6, [r0, #0x8]
-_02009764:
- add r0, r6, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009768
-FUN_02009768: ; 0x02009768
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _02009776
- bl GF_AssertFail
-_02009776:
- ldr r0, [r5, #0x4]
- cmp r0, r4
- bgt _02009780
- bl GF_AssertFail
-_02009780:
- ldrb r0, [r5, #0xc]
- ldr r1, [r5, #0x0]
- cmp r0, #0x0
- bne _02009792
- mov r0, #0x4c
- mul r0, r4
- add r0, r1, r0
- ldr r0, [r0, #0x44]
- pop {r3-r5, pc}
-_02009792:
- mov r0, #0x18
- mul r0, r4
- add r0, r1, r0
- ldr r0, [r0, #0x10]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200979C
-FUN_0200979C: ; 0x0200979C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _020097AA
- bl GF_AssertFail
-_020097AA:
- ldr r0, [r5, #0x4]
- cmp r0, r4
- bgt _020097B4
- bl GF_AssertFail
-_020097B4:
- ldrb r0, [r5, #0xc]
- ldr r1, [r5, #0x0]
- cmp r0, #0x0
- bne _020097C6
- mov r0, #0x4c
- mul r0, r4
- add r0, r1, r0
- ldr r0, [r0, #0x48]
- pop {r3-r5, pc}
-_020097C6:
- mov r0, #0x18
- mul r0, r4
- add r0, r1, r0
- ldr r0, [r0, #0x14]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020097D0
-FUN_020097D0: ; 0x020097D0
- push {r3-r4}
- ldr r4, [r0, #0x8]
- mov r1, #0x0
- cmp r4, #0x0
- ble _020097F6
- ldr r3, [r0, #0x4]
- add r2, r3, #0x0
-_020097DE:
- ldr r0, [r2, #0x0]
- cmp r0, #0x0
- bne _020097EE
- mov r0, #0xc
- mul r0, r1
- add r0, r3, r0
- pop {r3-r4}
- bx lr
-_020097EE:
- add r1, r1, #0x1
- add r2, #0xc
- cmp r1, r4
- blt _020097DE
-_020097F6:
- mov r0, #0x0
- pop {r3-r4}
- bx lr
-
- thumb_func_start FUN_020097FC
-FUN_020097FC: ; 0x020097FC
- push {r3-r7, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- add r6, r1, #0x0
- add r7, r2, #0x0
- str r3, [sp, #0x0]
- ldr r5, [sp, #0x18]
- bl FUN_02020E0C
- cmp r6, #0x5
- bhi _0200986A
- add r1, r6, r6
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0200981E: ; jump table (using 16-bit offset)
- .short _0200982A - _0200981E - 2; case 0
- .short _02009836 - _0200981E - 2; case 1
- .short _02009844 - _0200981E - 2; case 2
- .short _0200984E - _0200981E - 2; case 3
- .short _02009858 - _0200981E - 2; case 4
- .short _02009862 - _0200981E - 2; case 5
-_0200982A:
- add r1, r7, #0x0
- add r2, r5, #0x0
- bl FUN_0200986C
- str r0, [r4, #0x8]
- pop {r3-r7, pc}
-_02009836:
- ldr r2, [sp, #0x0]
- add r1, r7, #0x0
- add r3, r5, #0x0
- bl FUN_0200988C
- str r0, [r4, #0x8]
- pop {r3-r7, pc}
-_02009844:
- add r1, r5, #0x0
- bl FUN_020098B0
- str r0, [r4, #0x8]
- pop {r3-r7, pc}
-_0200984E:
- add r1, r5, #0x0
- bl FUN_020098CC
- str r0, [r4, #0x8]
- pop {r3-r7, pc}
-_02009858:
- add r1, r5, #0x0
- bl FUN_020098E8
- str r0, [r4, #0x8]
- pop {r3-r7, pc}
-_02009862:
- add r1, r5, #0x0
- bl FUN_02009904
- str r0, [r4, #0x8]
-_0200986A:
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200986C
-FUN_0200986C: ; 0x0200986C
- push {r4-r6, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r0, r2, #0x0
- mov r1, #0x8
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl NNS_G2dGetUnpackedCharacterData
- str r5, [r4, #0x4]
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200988C
-FUN_0200988C: ; 0x0200988C
- push {r3-r7, lr}
- add r7, r0, #0x0
- add r5, r1, #0x0
- add r0, r3, #0x0
- mov r1, #0xc
- add r6, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r7, #0x0
- add r1, r4, #0x0
- bl NNS_G2dGetUnpackedPaletteData
- str r5, [r4, #0x4]
- str r6, [r4, #0x8]
- add r0, r4, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020098B0
-FUN_020098B0: ; 0x020098B0
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0x4
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl NNS_G2dGetUnpackedCellBank
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020098CC
-FUN_020098CC: ; 0x020098CC
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0x4
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl NNS_G2dGetUnpackedAnimBank
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020098E8
-FUN_020098E8: ; 0x020098E8
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0x4
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl NNS_G2dGetUnpackedMultiCellBank
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02009904
-FUN_02009904: ; 0x02009904
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0x4
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl NNS_G2dGetUnpackedMCAnimBank
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02009920
-FUN_02009920: ; 0x02009920
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- beq _0200992E
- bl FreeToHeap
-_0200992E:
- mov r0, #0x0
- str r0, [r4, #0x8]
- pop {r4, pc}
-
- thumb_func_start FUN_02009934
-FUN_02009934: ; 0x02009934
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200993E
- bl GF_AssertFail
-_0200993E:
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- bne _02009948
- bl GF_AssertFail
-_02009948:
- ldr r0, [r4, #0x8]
- pop {r4, pc}
-
- thumb_func_start FUN_0200994C
-FUN_0200994C: ; 0x0200994C
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r1, #0x0
- add r1, r2, #0x0
- add r2, r3, #0x0
- ldr r0, [r0, #0x0]
- ldr r3, [sp, #0x1c]
- bl FUN_02020D10
- str r0, [r4, #0x0]
- ldr r1, [sp, #0x18]
- ldr r0, [sp, #0x1c]
- str r1, [r4, #0x4]
- str r0, [sp, #0x0]
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0x14]
- add r0, r4, #0x0
- bl FUN_020097FC
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
-
- thumb_func_start FUN_02009978
-FUN_02009978: ; 0x02009978
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- add r4, r1, #0x0
- str r0, [sp, #0x0]
- add r0, r2, #0x0
- add r1, r3, #0x0
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0x24]
- bl GfGfxLoader_LoadFromNarc
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r2, [sp, #0x14]
- bl FUN_02020CD4
- str r0, [r4, #0x0]
- ldr r1, [sp, #0x20]
- ldr r0, [sp, #0x24]
- str r1, [r4, #0x4]
- str r0, [sp, #0x0]
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, r4, #0x0
- bl FUN_020097FC
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020099B0
-FUN_020099B0: ; 0x020099B0
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- add r4, r1, #0x0
- str r0, [sp, #0x0]
- add r0, r2, #0x0
- add r1, r3, #0x0
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0x24]
- bl FUN_02009A04
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r2, [sp, #0x14]
- bl FUN_02020CD4
- str r0, [r4, #0x0]
- ldr r1, [sp, #0x20]
- ldr r0, [sp, #0x24]
- str r1, [r4, #0x4]
- str r0, [sp, #0x0]
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, r4, #0x0
- bl FUN_020097FC
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020099E8
-FUN_020099E8: ; 0x020099E8
- mov r3, #0x0
- ldr r2, [r0, #0x0]
- sub r1, r3, #0x2
- cmp r2, r1
- beq _020099FE
- sub r1, r3, #0x2
-_020099F4:
- add r0, #0x18
- ldr r2, [r0, #0x0]
- add r3, r3, #0x1
- cmp r2, r1
- bne _020099F4
-_020099FE:
- add r0, r3, #0x0
- bx lr
- .balign 4
-
- thumb_func_start FUN_02009A04
-FUN_02009A04: ; 0x02009A04
- push {r4-r6, lr}
- add r6, r3, #0x0
- add r5, r2, #0x0
- add r2, r6, #0x0
- bl NARC_AllocAndReadWholeMember
- add r4, r0, #0x0
- beq _02009A4A
- cmp r5, #0x0
- beq _02009A4A
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- bne _02009A2A
- ldr r1, [r4, #0x0]
- add r0, r6, #0x0
- lsr r1, r1, #0x8
- bl AllocFromHeap
- b _02009A34
-_02009A2A:
- ldr r1, [r4, #0x0]
- add r0, r6, #0x0
- lsr r1, r1, #0x8
- bl AllocFromHeapAtEnd
-_02009A34:
- add r5, r0, #0x0
- cmp r5, #0x0
- beq _02009A48
- add r0, r4, #0x0
- add r1, r5, #0x0
- bl MI_UncompressLZ8
- add r0, r4, #0x0
- bl FreeToHeap
-_02009A48:
- add r4, r5, #0x0
-_02009A4A:
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02009A50
-FUN_02009A50: ; 0x02009A50
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0x0
- bne _02009A5C
- bl GF_AssertFail
-_02009A5C:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x0
- beq _02009A6A
- bl GF_AssertFail
-_02009A6A:
- add r0, r4, #0x0
- bl FUN_02009544
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- bl FUN_020095E4
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl FUN_02009530
- str r0, [sp, #0x8]
- mov r0, #0x0
- str r0, [sp, #0xc]
- add r0, sp, #0x0
- bl FUN_0201D1F8
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start FUN_02009A90
-FUN_02009A90: ; 0x02009A90
- push {r4-r6, lr}
- add r5, r0, #0x0
- bne _02009A9A
- bl GF_AssertFail
-_02009A9A:
- ldr r0, [r5, #0x4]
- mov r6, #0x0
- cmp r0, #0x0
- ble _02009AC2
- add r4, r6, #0x0
-_02009AA4:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _02009AB8
- bl FUN_02009A50
- cmp r0, #0x0
- bne _02009AB8
- bl GF_AssertFail
-_02009AB8:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _02009AA4
-_02009AC2:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009AC4
-FUN_02009AC4: ; 0x02009AC4
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0x0
- bne _02009AD0
- bl GF_AssertFail
-_02009AD0:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x0
- beq _02009ADE
- bl GF_AssertFail
-_02009ADE:
- add r0, r4, #0x0
- bl FUN_02009544
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- bl FUN_020095E4
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl FUN_02009530
- str r0, [sp, #0x8]
- mov r0, #0x0
- str r0, [sp, #0xc]
- add r0, sp, #0x0
- bl FUN_0201D250
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start FUN_02009B04
-FUN_02009B04: ; 0x02009B04
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0x0
- bne _02009B10
- bl GF_AssertFail
-_02009B10:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x0
- beq _02009B1E
- bl GF_AssertFail
-_02009B1E:
- add r0, r4, #0x0
- bl FUN_02009544
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- bl FUN_020095E4
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl FUN_02009530
- str r0, [sp, #0x8]
- mov r0, #0x1
- str r0, [sp, #0xc]
- add r0, sp, #0x0
- bl FUN_0201D1F8
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start FUN_02009B44
-FUN_02009B44: ; 0x02009B44
- push {r4-r6, lr}
- add r5, r0, #0x0
- bne _02009B4E
- bl GF_AssertFail
-_02009B4E:
- ldr r0, [r5, #0x4]
- mov r6, #0x0
- cmp r0, #0x0
- ble _02009B76
- add r4, r6, #0x0
-_02009B58:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _02009B6C
- bl FUN_02009B04
- cmp r0, #0x0
- bne _02009B6C
- bl GF_AssertFail
-_02009B6C:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _02009B58
-_02009B76:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009B78
-FUN_02009B78: ; 0x02009B78
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0x0
- bne _02009B84
- bl GF_AssertFail
-_02009B84:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x0
- beq _02009B92
- bl GF_AssertFail
-_02009B92:
- add r0, r4, #0x0
- bl FUN_02009544
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- bl FUN_020095E4
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl FUN_02009530
- str r0, [sp, #0x8]
- mov r0, #0x1
- str r0, [sp, #0xc]
- add r0, sp, #0x0
- bl FUN_0201D250
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start FUN_02009BB8
-FUN_02009BB8: ; 0x02009BB8
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r5, r1, #0x0
- cmp r4, #0x0
- bne _02009BC6
- bl GF_AssertFail
-_02009BC6:
- cmp r5, #0x0
- bne _02009BCE
- bl GF_AssertFail
-_02009BCE:
- add r0, r4, #0x0
- bl FUN_02009530
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02009544
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl FUN_0201D2DC
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02009BE8
-FUN_02009BE8: ; 0x02009BE8
- push {r3-r5, lr}
- add r5, r0, #0x0
- bne _02009BF2
- bl GF_AssertFail
-_02009BF2:
- add r0, r5, #0x0
- bl FUN_02009530
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02009544
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl FUN_0201D2DC
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02009C0C
-FUN_02009C0C: ; 0x02009C0C
- push {r4, lr}
- add r4, r0, #0x0
- bne _02009C16
- bl GF_AssertFail
-_02009C16:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x0
- beq _02009C24
- bl GF_AssertFail
-_02009C24:
- add r0, r4, #0x0
- bl FUN_02009530
- bl FUN_0201D324
- pop {r4, pc}
-
- thumb_func_start FUN_02009C30
-FUN_02009C30: ; 0x02009C30
- push {r4-r6, lr}
- add r5, r0, #0x0
- bne _02009C3A
- bl GF_AssertFail
-_02009C3A:
- ldr r0, [r5, #0x4]
- mov r6, #0x0
- cmp r0, #0x0
- ble _02009C5A
- add r4, r6, #0x0
-_02009C44:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _02009C50
- bl FUN_02009C0C
-_02009C50:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _02009C44
-_02009C5A:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009C5C
-FUN_02009C5C: ; 0x02009C5C
- push {r4, lr}
- add r4, r0, #0x0
- bne _02009C66
- bl GF_AssertFail
-_02009C66:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x0
- beq _02009C74
- bl GF_AssertFail
-_02009C74:
- add r0, r4, #0x0
- bl FUN_02009530
- bl FUN_0201D3B0
- pop {r4, pc}
-
- thumb_func_start FUN_02009C80
-FUN_02009C80: ; 0x02009C80
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r5, r1, #0x0
- cmp r4, #0x0
- bne _02009C8E
- bl GF_AssertFail
-_02009C8E:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x0
- beq _02009C9C
- bl GF_AssertFail
-_02009C9C:
- cmp r5, #0x0
- bne _02009CA4
- bl GF_AssertFail
-_02009CA4:
- add r0, r5, #0x0
- bl FUN_020095D4
- cmp r0, #0x2
- beq _02009CB2
- bl GF_AssertFail
-_02009CB2:
- add r0, r4, #0x0
- bl FUN_02009530
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02009574
- add r1, r0, #0x0
- ldr r1, [r1, #0xc]
- add r0, r4, #0x0
- ldr r1, [r1, #0x0]
- bl FUN_0201D3D4
- cmp r0, #0x0
- bne _02009CDA
- add r0, r4, #0x0
- bl FUN_0201D3B0
- bl FUN_0201D458
-_02009CDA:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02009CDC
-FUN_02009CDC: ; 0x02009CDC
- push {r4, lr}
- add r4, r0, #0x0
- bne _02009CE6
- bl GF_AssertFail
-_02009CE6:
- add r0, r4, #0x0
- bl FUN_0201D4F0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02009CF0
-FUN_02009CF0: ; 0x02009CF0
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0x0
- bne _02009CFC
- bl GF_AssertFail
-_02009CFC:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x1
- beq _02009D0A
- bl GF_AssertFail
-_02009D0A:
- add r0, r4, #0x0
- bl FUN_0200955C
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- bl FUN_020095E4
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl FUN_02009530
- str r0, [sp, #0xc]
- add r0, r4, #0x0
- bl FUN_02009610
- str r0, [sp, #0x8]
- add r0, sp, #0x0
- bl FUN_0201E0E4
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start FUN_02009D34
-FUN_02009D34: ; 0x02009D34
- push {r4-r6, lr}
- add r5, r0, #0x0
- bne _02009D3E
- bl GF_AssertFail
-_02009D3E:
- ldr r0, [r5, #0x4]
- mov r6, #0x0
- cmp r0, #0x0
- ble _02009D66
- add r4, r6, #0x0
-_02009D48:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _02009D5C
- bl FUN_02009CF0
- cmp r0, #0x0
- bne _02009D5C
- bl GF_AssertFail
-_02009D5C:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _02009D48
-_02009D66:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009D68
-FUN_02009D68: ; 0x02009D68
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0x0
- bne _02009D74
- bl GF_AssertFail
-_02009D74:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x1
- beq _02009D82
- bl GF_AssertFail
-_02009D82:
- add r0, r4, #0x0
- bl FUN_0200955C
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- bl FUN_020095E4
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl FUN_02009530
- str r0, [sp, #0xc]
- add r0, r4, #0x0
- bl FUN_02009610
- str r0, [sp, #0x8]
- add r0, sp, #0x0
- bl FUN_0201E128
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start FUN_02009DAC
-FUN_02009DAC: ; 0x02009DAC
- push {r4-r6, lr}
- add r5, r0, #0x0
- bne _02009DB6
- bl GF_AssertFail
-_02009DB6:
- ldr r0, [r5, #0x4]
- mov r6, #0x0
- cmp r0, #0x0
- ble _02009DDE
- add r4, r6, #0x0
-_02009DC0:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _02009DD4
- bl FUN_02009D68
- cmp r0, #0x0
- bne _02009DD4
- bl GF_AssertFail
-_02009DD4:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _02009DC0
-_02009DDE:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009DE0
-FUN_02009DE0: ; 0x02009DE0
- push {r3-r5, lr}
- add r5, r0, #0x0
- bne _02009DEA
- bl GF_AssertFail
-_02009DEA:
- add r0, r5, #0x0
- bl FUN_02009530
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_0200955C
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl FUN_0201E168
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02009E04
-FUN_02009E04: ; 0x02009E04
- push {r4, lr}
- add r4, r0, #0x0
- bne _02009E0E
- bl GF_AssertFail
-_02009E0E:
- add r0, r4, #0x0
- bl FUN_020095D4
- cmp r0, #0x1
- beq _02009E1C
- bl GF_AssertFail
-_02009E1C:
- add r0, r4, #0x0
- bl FUN_02009530
- bl FUN_0201E1C8
- pop {r4, pc}
-
- thumb_func_start FUN_02009E28
-FUN_02009E28: ; 0x02009E28
- push {r4-r6, lr}
- add r5, r0, #0x0
- bne _02009E32
- bl GF_AssertFail
-_02009E32:
- ldr r0, [r5, #0x4]
- mov r6, #0x0
- cmp r0, #0x0
- ble _02009E52
- add r4, r6, #0x0
-_02009E3C:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _02009E48
- bl FUN_02009E04
-_02009E48:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _02009E3C
-_02009E52:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02009E54
-FUN_02009E54: ; 0x02009E54
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _02009E62
- bl GF_AssertFail
-_02009E62:
- add r0, r5, #0x0
- bl FUN_020095D4
- cmp r0, #0x1
- beq _02009E70
- bl GF_AssertFail
-_02009E70:
- add r0, r5, #0x0
- bl FUN_02009530
- cmp r4, #0x0
- beq _02009E82
- add r1, r4, #0x0
- bl FUN_0201E258
- pop {r3-r5, pc}
-_02009E82:
- bl FUN_0201E230
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02009E88
-FUN_02009E88: ; 0x02009E88
- push {r4, lr}
- add r4, r1, #0x0
- mov r1, #0x0
- bl FUN_02009E54
- add r1, r4, #0x0
- bl NNS_G2dGetImagePaletteLocation
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- beq _02009EA8
- asr r1, r0, #0x4
- lsr r1, r1, #0x1b
- add r1, r0, r1
- asr r0, r1, #0x5
-_02009EA8:
- pop {r4, pc}
- .balign 4
diff --git a/arm9/asm/unk_02009EAC.s b/arm9/asm/unk_02009EAC.s
deleted file mode 100644
index b08b52fd..00000000
--- a/arm9/asm/unk_02009EAC.s
+++ /dev/null
@@ -1,664 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .global UNK_021C4670
-UNK_021C4670: ; 0x021C4670
- .space 0x4
-
- .global UNK_021C4674
-UNK_021C4674: ; 0x021C4674
- .space 0x20
-
- .global UNK_021C4694
-UNK_021C4694: ; 0x021C4694
- .space 0x20
-
- .text
-
- thumb_func_start FUN_02009EAC
-FUN_02009EAC: ; 0x02009EAC
- push {r3-r4, lr}
- sub sp, #0x14
- add r4, r0, #0x0
- cmp r4, #0x4
- bge _02009EC0
- mov r0, #0x4
- cmp r1, #0x7c
- ble _02009EC0
- sub r4, r0, r4
- sub r1, r1, r4
-_02009EC0:
- cmp r2, #0x1
- bge _02009ED0
- mov r4, #0x1
- cmp r3, #0x1e
- ble _02009ED2
- sub r2, r4, r2
- sub r3, r3, r2
- b _02009ED2
-_02009ED0:
- add r4, r2, #0x0
-_02009ED2:
- ldr r2, [sp, #0x20]
- str r2, [sp, #0x0]
- ldr r2, [sp, #0x24]
- str r2, [sp, #0x4]
- ldr r2, [sp, #0x28]
- str r2, [sp, #0x8]
- ldr r2, [sp, #0x2c]
- str r2, [sp, #0xc]
- ldr r2, [sp, #0x30]
- str r2, [sp, #0x10]
- add r2, r4, #0x0
- bl FUN_02009EF0
- add sp, #0x14
- pop {r3-r4, pc}
-
- thumb_func_start FUN_02009EF0
-FUN_02009EF0: ; 0x02009EF0
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- ldr r0, _02009F7C ; =UNK_021C4670
- add r4, r1, #0x0
- ldr r0, [r0, #0x0]
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r0, #0x0
- beq _02009F08
- bl GF_AssertFail
-_02009F08:
- ldr r0, [sp, #0x30]
- mov r1, #0x3c
- bl AllocFromHeap
- ldr r1, _02009F7C ; =UNK_021C4670
- cmp r0, #0x0
- str r0, [r1, #0x0]
- bne _02009F1C
- bl GF_AssertFail
-_02009F1C:
- ldr r1, _02009F7C ; =UNK_021C4670
- lsl r3, r6, #0x10
- ldr r2, [sp, #0x30]
- ldr r0, [r1, #0x0]
- lsr r3, r3, #0x10
- str r2, [r0, #0x38]
- lsl r0, r7, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x0]
- mov r0, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r1, #0x0]
- lsl r1, r5, #0x10
- lsl r2, r4, #0x10
- lsr r1, r1, #0x10
- lsr r2, r2, #0x10
- bl NNS_G2dGetNewOamManagerInstance
- cmp r0, #0x0
- bne _02009F48
- bl GF_AssertFail
-_02009F48:
- ldr r0, [sp, #0x2c]
- ldr r1, [sp, #0x20]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, _02009F7C ; =UNK_021C4670
- ldr r2, [sp, #0x24]
- ldr r3, [sp, #0x28]
- ldr r0, [r0, #0x0]
- lsl r1, r1, #0x10
- lsl r2, r2, #0x10
- lsl r3, r3, #0x10
- add r0, #0x1c
- lsr r1, r1, #0x10
- lsr r2, r2, #0x10
- lsr r3, r3, #0x10
- bl NNS_G2dGetNewOamManagerInstance
- cmp r0, #0x0
- bne _02009F78
- bl GF_AssertFail
-_02009F78:
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_02009F7C: .word UNK_021C4670
-
- thumb_func_start FUN_02009F80
-FUN_02009F80: ; 0x02009F80
- push {r3, lr}
- ldr r0, _02009F9C ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02009F98
- bl NNS_G2dApplyAndResetOamManagerBuffer
- ldr r0, _02009F9C ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- add r0, #0x1c
- bl NNS_G2dApplyAndResetOamManagerBuffer
-_02009F98:
- pop {r3, pc}
- nop
-_02009F9C: .word UNK_021C4670
-
- thumb_func_start FUN_02009FA0
-FUN_02009FA0: ; 0x02009FA0
- push {r3, lr}
- ldr r0, _02009FD4 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02009FAE
- bl GF_AssertFail
-_02009FAE:
- ldr r0, _02009FD4 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x38]
- bl FUN_0200A064
- ldr r0, _02009FD4 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x38]
- bl FUN_0200A06C
- ldr r0, _02009FD4 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- bl FreeToHeap
- ldr r0, _02009FD4 ; =UNK_021C4670
- mov r1, #0x0
- str r1, [r0, #0x0]
- pop {r3, pc}
- nop
-_02009FD4: .word UNK_021C4670
-
- thumb_func_start FUN_02009FD8
-FUN_02009FD8: ; 0x02009FD8
- push {r4-r7, lr}
- sub sp, #0xc
- add r6, r0, #0x0
- ldr r0, _0200A024 ; =UNK_021C4670
- add r7, r1, #0x0
- ldr r0, [r0, #0x0]
- add r5, r2, #0x0
- add r4, r3, #0x0
- cmp r0, #0x0
- bne _02009FF0
- bl GF_AssertFail
-_02009FF0:
- cmp r5, #0x1
- bne _0200A00C
- ldr r0, _0200A028 ; =FUN_020213A0
- ldr r2, _0200A02C ; =FUN_0200A074
- str r0, [sp, #0x0]
- str r5, [sp, #0x4]
- ldr r3, _0200A030 ; =FUN_0200A0B8
- add r0, r6, #0x0
- add r1, r7, #0x0
- str r4, [sp, #0x8]
- bl FUN_0202135C
- add sp, #0xc
- pop {r4-r7, pc}
-_0200A00C:
- ldr r0, _0200A028 ; =FUN_020213A0
- ldr r2, _0200A034 ; =FUN_0200A094
- str r0, [sp, #0x0]
- str r5, [sp, #0x4]
- ldr r3, _0200A038 ; =FUN_0200A0DC
- add r0, r6, #0x0
- add r1, r7, #0x0
- str r4, [sp, #0x8]
- bl FUN_0202135C
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_0200A024: .word UNK_021C4670
-_0200A028: .word FUN_020213A0
-_0200A02C: .word FUN_0200A074
-_0200A030: .word FUN_0200A0B8
-_0200A034: .word FUN_0200A094
-_0200A038: .word FUN_0200A0DC
-
- thumb_func_start FUN_0200A03C
-FUN_0200A03C: ; 0x0200A03C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0200A060 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0200A04C
- bl GF_AssertFail
-_0200A04C:
- cmp r4, #0x0
- bne _0200A056
- ldr r0, _0200A060 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- pop {r4, pc}
-_0200A056:
- ldr r0, _0200A060 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- add r0, #0x1c
- pop {r4, pc}
- nop
-_0200A060: .word UNK_021C4670
-
- thumb_func_start FUN_0200A064
-FUN_0200A064: ; 0x0200A064
- ldr r3, _0200A068 ; =FUN_020203CC
- bx r3
- .balign 4
-_0200A068: .word FUN_020203CC
-
- thumb_func_start FUN_0200A06C
-FUN_0200A06C: ; 0x0200A06C
- ldr r3, _0200A070 ; =FUN_02020404
- bx r3
- .balign 4
-_0200A070: .word FUN_02020404
-
- thumb_func_start FUN_0200A074
-FUN_0200A074: ; 0x0200A074
- push {r4, lr}
- add r3, r0, #0x0
- ldr r0, _0200A090 ; =UNK_021C4670
- add r2, r1, #0x0
- ldr r0, [r0, #0x0]
- add r1, r3, #0x0
- bl NNS_G2dEntryOamManagerOamWithAffineIdx
- add r4, r0, #0x0
- bne _0200A08C
- bl GF_AssertFail
-_0200A08C:
- add r0, r4, #0x0
- pop {r4, pc}
- .balign 4
-_0200A090: .word UNK_021C4670
-
- thumb_func_start FUN_0200A094
-FUN_0200A094: ; 0x0200A094
- push {r4, lr}
- add r3, r0, #0x0
- ldr r0, _0200A0B4 ; =UNK_021C4670
- add r2, r1, #0x0
- ldr r0, [r0, #0x0]
- add r1, r3, #0x0
- add r0, #0x1c
- bl NNS_G2dEntryOamManagerOamWithAffineIdx
- add r4, r0, #0x0
- bne _0200A0AE
- bl GF_AssertFail
-_0200A0AE:
- add r0, r4, #0x0
- pop {r4, pc}
- nop
-_0200A0B4: .word UNK_021C4670
-
- thumb_func_start FUN_0200A0B8
-FUN_0200A0B8: ; 0x0200A0B8
- push {r4, lr}
- add r1, r0, #0x0
- ldr r0, _0200A0D4 ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- bl NNS_G2dEntryOamManagerAffine
- add r4, r0, #0x0
- ldr r0, _0200A0D8 ; =0x0000FFFE
- cmp r4, r0
- bne _0200A0D0
- bl GF_AssertFail
-_0200A0D0:
- add r0, r4, #0x0
- pop {r4, pc}
- .balign 4
-_0200A0D4: .word UNK_021C4670
-_0200A0D8: .word 0x0000FFFE
-
- thumb_func_start FUN_0200A0DC
-FUN_0200A0DC: ; 0x0200A0DC
- push {r4, lr}
- add r1, r0, #0x0
- ldr r0, _0200A0FC ; =UNK_021C4670
- ldr r0, [r0, #0x0]
- add r0, #0x1c
- bl NNS_G2dEntryOamManagerAffine
- add r4, r0, #0x0
- ldr r0, _0200A100 ; =0x0000FFFE
- cmp r4, r0
- bne _0200A0F6
- bl GF_AssertFail
-_0200A0F6:
- add r0, r4, #0x0
- pop {r4, pc}
- nop
-_0200A0FC: .word UNK_021C4670
-_0200A100: .word 0x0000FFFE
-
- thumb_func_start FUN_0200A104
-FUN_0200A104: ; 0x0200A104
- push {r3-r7, lr}
- add r5, r0, #0x0
- mov r0, #0x10
- ldrsb r2, [r5, r0]
- mov r0, #0x14
- ldrsh r0, [r5, r0]
- add r1, r2, #0x0
- mov r7, #0x1a
- ldrsh r2, [r5, r7]
- mul r1, r0
- mov r6, #0xa
- ldrsh r0, [r5, r6]
- add r1, r2, r1
- mov r4, #0x0
- cmp r0, r1
- beq _0200A162
- cmp r2, r0
- beq _0200A162
- strh r1, [r5, #0x1a]
- ldrh r3, [r5, #0x18]
- ldrh r0, [r5, #0x16]
- add r2, r5, #0x0
- add r1, r5, #0x0
- add r0, r3, r0
- strh r0, [r5, #0x18]
- ldrh r3, [r5, #0x18]
- ldrh r0, [r5, #0x8]
- add r2, #0x1a
- add r1, #0x18
- cmp r3, r0
- blo _0200A166
- mov r3, #0x10
- ldrsh r0, [r2, r4]
- ldrsb r3, [r5, r3]
- add r0, r0, r3
- strh r0, [r2, #0x0]
- ldrsh r2, [r5, r7]
- ldrsh r0, [r5, r6]
- cmp r2, r0
- beq _0200A15E
- ldrh r2, [r1, #0x0]
- ldrh r0, [r5, #0x8]
- sub r0, r2, r0
- strh r0, [r1, #0x0]
- b _0200A166
-_0200A15E:
- mov r4, #0x1
- b _0200A166
-_0200A162:
- strh r0, [r5, #0x1a]
- mov r4, #0x1
-_0200A166:
- ldr r1, [r5, #0x4]
- mov r0, #0x1
- tst r0, r1
- beq _0200A17C
- mov r2, #0x1a
- ldrsh r2, [r5, r2]
- ldr r0, _0200A198 ; =0x04000050
- ldr r1, [r5, #0x0]
- bl G2x_SetBlendBrightness_
- b _0200A18E
-_0200A17C:
- mov r0, #0x2
- tst r0, r1
- beq _0200A18E
- mov r2, #0x1a
- ldrsh r2, [r5, r2]
- ldr r0, _0200A19C ; =0x04001050
- ldr r1, [r5, #0x0]
- bl G2x_SetBlendBrightness_
-_0200A18E:
- cmp r4, #0x1
- bne _0200A196
- mov r0, #0x0
- str r0, [r5, #0x1c]
-_0200A196:
- pop {r3-r7, pc}
- .balign 4
-_0200A198: .word 0x04000050
-_0200A19C: .word 0x04001050
-
- thumb_func_start FUN_0200A1A0
-FUN_0200A1A0: ; 0x0200A1A0
- push {r3-r7, lr}
- add r5, r0, #0x0
- ldr r0, [r5, #0x1c]
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r0, #0x0
- beq _0200A1B4
- bl GF_AssertFail
-_0200A1B4:
- ldr r1, [sp, #0x18]
- mov r0, #0x1
- lsl r1, r1, #0x18
- str r0, [r5, #0x1c]
- lsr r1, r1, #0x18
- str r1, [r5, #0x0]
- ldr r1, [sp, #0x1c]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [r5, #0x4]
- strh r4, [r5, #0x8]
- strh r6, [r5, #0xa]
- strh r7, [r5, #0x1a]
- sub r1, r7, r6
- strh r1, [r5, #0x12]
- mov r1, #0x12
- ldrsh r2, [r5, r1]
- cmp r2, #0x0
- ble _0200A1E0
- sub r1, #0x13
- strb r1, [r5, #0x10]
- b _0200A1EA
-_0200A1E0:
- strb r0, [r5, #0x10]
- ldrsh r0, [r5, r1]
- sub r1, #0x13
- mul r1, r0
- strh r1, [r5, #0x12]
-_0200A1EA:
- mov r0, #0x12
- ldrsh r0, [r5, r0]
- add r1, r4, #0x0
- bl _s32_div_f
- strh r0, [r5, #0x14]
- mov r0, #0x12
- ldrsh r0, [r5, r0]
- add r1, r4, #0x0
- bl _s32_div_f
- strh r1, [r5, #0x16]
- mov r0, #0x0
- strh r0, [r5, #0x18]
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200A208
-FUN_0200A208: ; 0x0200A208
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r6, r2, #0x0
- add r4, r3, #0x0
- cmp r5, #0x0
- beq _0200A25E
- ldr r1, [sp, #0x20]
- mov r0, #0x1
- tst r0, r1
- beq _0200A23A
- ldr r0, _0200A264 ; =0x04000050
- add r1, r4, #0x0
- bl G2x_SetBlendBrightness_
- str r4, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, _0200A268 ; =UNK_021C4694
- add r1, r5, #0x0
- add r2, r7, #0x0
- add r3, r6, #0x0
- bl FUN_0200A1A0
-_0200A23A:
- ldr r1, [sp, #0x20]
- mov r0, #0x2
- tst r0, r1
- beq _0200A25E
- ldr r0, _0200A26C ; =0x04001050
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl G2x_SetBlendBrightness_
- str r4, [sp, #0x0]
- mov r0, #0x2
- str r0, [sp, #0x4]
- ldr r0, _0200A270 ; =UNK_021C4674
- add r1, r5, #0x0
- add r2, r7, #0x0
- add r3, r6, #0x0
- bl FUN_0200A1A0
-_0200A25E:
- add sp, #0x8
- pop {r3-r7, pc}
- nop
-_0200A264: .word 0x04000050
-_0200A268: .word UNK_021C4694
-_0200A26C: .word 0x04001050
-_0200A270: .word UNK_021C4674
-
- thumb_func_start FUN_0200A274
-FUN_0200A274: ; 0x0200A274
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r2, #0x0
- mov r0, #0x1
- add r6, r1, #0x0
- tst r0, r4
- beq _0200A28A
- ldr r0, _0200A2A4 ; =0x04000050
- add r2, r5, #0x0
- bl G2x_SetBlendBrightness_
-_0200A28A:
- mov r0, #0x2
- tst r0, r4
- beq _0200A29A
- ldr r0, _0200A2A8 ; =0x04001050
- add r1, r6, #0x0
- add r2, r5, #0x0
- bl G2x_SetBlendBrightness_
-_0200A29A:
- add r0, r4, #0x0
- bl FUN_0200A2D8
- pop {r4-r6, pc}
- nop
-_0200A2A4: .word 0x04000050
-_0200A2A8: .word 0x04001050
-
- thumb_func_start FUN_0200A2AC
-FUN_0200A2AC: ; 0x0200A2AC
- push {r3, lr}
- ldr r0, _0200A2CC ; =UNK_021C4694
- mov r1, #0x0
- mov r2, #0x20
- bl MI_CpuFill8
- ldr r0, _0200A2D0 ; =UNK_021C4674
- mov r1, #0x0
- mov r2, #0x20
- bl MI_CpuFill8
- ldr r0, _0200A2D4 ; =UNK_021C4674
- mov r1, #0x0
- str r1, [r0, #0x3c]
- str r1, [r0, #0x1c]
- pop {r3, pc}
- .balign 4
-_0200A2CC: .word UNK_021C4694
-_0200A2D0: .word UNK_021C4674
-_0200A2D4: .word UNK_021C4674
-
- thumb_func_start FUN_0200A2D8
-FUN_0200A2D8: ; 0x0200A2D8
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x1
- tst r0, r4
- beq _0200A2F2
- ldr r0, _0200A30C ; =UNK_021C4694
- mov r1, #0x0
- mov r2, #0x20
- bl MI_CpuFill8
- ldr r0, _0200A310 ; =UNK_021C4674
- mov r1, #0x0
- str r1, [r0, #0x3c]
-_0200A2F2:
- mov r0, #0x2
- tst r0, r4
- beq _0200A308
- ldr r0, _0200A314 ; =UNK_021C4674
- mov r1, #0x0
- mov r2, #0x20
- bl MI_CpuFill8
- ldr r0, _0200A310 ; =UNK_021C4674
- mov r1, #0x0
- str r1, [r0, #0x1c]
-_0200A308:
- pop {r4, pc}
- nop
-_0200A30C: .word UNK_021C4694
-_0200A310: .word UNK_021C4674
-_0200A314: .word UNK_021C4674
-
- thumb_func_start FUN_0200A318
-FUN_0200A318: ; 0x0200A318
- push {r3, lr}
- ldr r0, _0200A338 ; =UNK_021C4674
- ldr r0, [r0, #0x3c]
- cmp r0, #0x0
- beq _0200A328
- ldr r0, _0200A33C ; =UNK_021C4694
- bl FUN_0200A104
-_0200A328:
- ldr r0, _0200A338 ; =UNK_021C4674
- ldr r0, [r0, #0x1c]
- cmp r0, #0x0
- beq _0200A336
- ldr r0, _0200A340 ; =UNK_021C4674
- bl FUN_0200A104
-_0200A336:
- pop {r3, pc}
- .balign 4
-_0200A338: .word UNK_021C4674
-_0200A33C: .word UNK_021C4694
-_0200A340: .word UNK_021C4674
-
- thumb_func_start FUN_0200A344
-FUN_0200A344: ; 0x0200A344
- cmp r0, #0x3
- bne _0200A35A
- ldr r0, _0200A380 ; =UNK_021C4674
- ldr r1, [r0, #0x3c]
- cmp r1, #0x0
- bne _0200A37A
- ldr r0, [r0, #0x1c]
- cmp r0, #0x0
- bne _0200A37A
- mov r0, #0x1
- bx lr
-_0200A35A:
- cmp r0, #0x1
- bne _0200A36A
- ldr r0, _0200A380 ; =UNK_021C4674
- ldr r0, [r0, #0x3c]
- cmp r0, #0x0
- bne _0200A37A
- mov r0, #0x1
- bx lr
-_0200A36A:
- cmp r0, #0x2
- bne _0200A37A
- ldr r0, _0200A380 ; =UNK_021C4674
- ldr r0, [r0, #0x1c]
- cmp r0, #0x0
- bne _0200A37A
- mov r0, #0x1
- bx lr
-_0200A37A:
- mov r0, #0x0
- bx lr
- nop
-_0200A380: .word UNK_021C4674
diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s
deleted file mode 100644
index 62bace0d..00000000
--- a/arm9/asm/unk_0200CABC.s
+++ /dev/null
@@ -1,2866 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020ECE88
-UNK_020ECE88: ; 0x020ECE88
- .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
-
- .global UNK_020ECE98
-UNK_020ECE98: ; 0x020ECE98
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
-
- .global UNK_020ECEA8
-UNK_020ECEA8: ; 0x020ECEA8
- .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020ECEC0
-UNK_020ECEC0: ; 0x020ECEC0
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0xD5, 0x5C, 0x01, 0x00, 0xD5, 0x5C, 0x01, 0x00, 0xD5, 0x5C, 0x01, 0x00
- .byte 0xD5, 0x5C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .text
-
- thumb_func_start FUN_0200CABC
-FUN_0200CABC: ; 0x0200CABC
- push {r3-r5, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r3, #0x0
- str r2, [sp, #0x0]
- bne _0200CAE2
- mov r1, #0x0
- str r1, [sp, #0x4]
- ldr r0, [sp, #0x20]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r2, r5, #0x0
- add r3, r4, #0x0
- bl GfGfxLoader_LoadCharData
- add sp, #0x10
- pop {r3-r5, pc}
-_0200CAE2:
- mov r0, #0x0
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x20]
- mov r1, #0x1
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r2, r5, #0x0
- add r3, r4, #0x0
- bl GfGfxLoader_LoadCharData
- add sp, #0x10
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200CAFC
-FUN_0200CAFC: ; 0x0200CAFC
- mov r0, #0x18
- bx lr
-
- thumb_func_start FUN_0200CB00
-FUN_0200CB00: ; 0x0200CB00
- push {r4-r6, lr}
- sub sp, #0x10
- add r6, r0, #0x0
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- add r5, r1, #0x0
- add r4, r3, #0x0
- cmp r0, #0x0
- beq _0200CB16
- mov r1, #0x1
- b _0200CB18
-_0200CB16:
- mov r1, #0x0
-_0200CB18:
- str r2, [sp, #0x0]
- mov r0, #0x0
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x24]
- add r2, r6, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r3, r5, #0x0
- bl GfGfxLoader_LoadCharData
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- cmp r0, #0x2
- bne _0200CB3A
- mov r1, #0x2d
- b _0200CB3C
-_0200CB3A:
- mov r1, #0x18
-_0200CB3C:
- cmp r5, #0x4
- bhs _0200CB56
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- mov r2, #0x0
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x10
- pop {r4-r6, pc}
-_0200CB56:
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- mov r2, #0x4
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x10
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0200CB6C
-FUN_0200CB6C: ; 0x0200CB6C
- push {r4-r7, lr}
- sub sp, #0x24
- str r1, [sp, #0x14]
- str r2, [sp, #0x18]
- str r3, [sp, #0x1c]
- ldr r2, [sp, #0x1c]
- ldr r5, [sp, #0x40]
- sub r7, r2, #0x1
- ldr r2, [sp, #0x18]
- str r0, [sp, #0x10]
- sub r6, r2, #0x1
- lsl r2, r7, #0x18
- lsr r2, r2, #0x18
- str r2, [sp, #0x0]
- mov r2, #0x1
- str r2, [sp, #0x4]
- str r2, [sp, #0x8]
- lsl r3, r6, #0x18
- str r5, [sp, #0xc]
- add r2, sp, #0x28
- ldrh r2, [r2, #0x1c]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r1, sp, #0x28
- ldrh r4, [r1, #0x1c]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- ldrb r0, [r1, #0x10]
- add r2, r4, #0x1
- lsl r2, r2, #0x10
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- ldr r3, [sp, #0x18]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- add r0, sp, #0x28
- ldrb r1, [r0, #0x10]
- ldr r0, [sp, #0x18]
- add r2, r4, #0x2
- add r0, r0, r1
- str r0, [sp, #0x20]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x3
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, sp, #0x28
- ldrb r0, [r0, #0x14]
- lsl r2, r2, #0x10
- lsl r3, r6, #0x18
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, sp, #0x28
- ldrb r0, [r0, #0x14]
- add r2, r4, #0x5
- lsl r2, r2, #0x10
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r0, sp, #0x28
- ldrb r1, [r0, #0x14]
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x6
- add r7, r0, r1
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r6, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- add r0, sp, #0x28
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x7
- lsl r2, r2, #0x10
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- ldr r3, [sp, #0x18]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- add r4, #0x8
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add sp, #0x24
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200CCA4
-FUN_0200CCA4: ; 0x0200CCA4
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl GetWindowWidth
- str r0, [sp, #0x1c]
- add r0, r5, #0x0
- bl GetWindowHeight
- ldr r1, [sp, #0x1c]
- ldr r2, [sp, #0x14]
- str r1, [sp, #0x0]
- str r0, [sp, #0x4]
- str r7, [sp, #0x8]
- str r6, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- ldr r3, [sp, #0x18]
- bl FUN_0200CB6C
- cmp r4, #0x0
- bne _0200CCF4
- add r0, r5, #0x0
- bl CopyWindowToVram
-_0200CCF4:
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200CCF8
-FUN_0200CCF8: ; 0x0200CCF8
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r7, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x14]
- add r0, r0, #0x2
- add r1, r1, #0x2
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- lsl r0, r0, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- sub r3, r6, #0x1
- lsl r3, r3, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- cmp r4, #0x0
- bne _0200CD5A
- add r0, r5, #0x0
- bl ClearWindowTilemapAndCopyToVram
-_0200CD5A:
- add sp, #0x18
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200CD60
-FUN_0200CD60: ; 0x0200CD60
- add r0, r0, #0x2
- bx lr
-
- thumb_func_start FUN_0200CD64
-FUN_0200CD64: ; 0x0200CD64
- add r0, #0x19
- bx lr
-
- thumb_func_start FUN_0200CD68
-FUN_0200CD68: ; 0x0200CD68
- push {r4-r7, lr}
- sub sp, #0x14
- str r0, [sp, #0x10]
- add r0, sp, #0x18
- ldrb r7, [r0, #0x10]
- add r6, r2, #0x0
- add r5, r1, #0x0
- add r0, r7, #0x0
- add r4, r3, #0x0
- bl FUN_0200CD60
- add r1, r0, #0x0
- str r6, [sp, #0x0]
- mov r0, #0x0
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x2c]
- ldr r2, [sp, #0x10]
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r3, r5, #0x0
- bl GfGfxLoader_LoadCharData
- cmp r5, #0x4
- bhs _0200CDB8
- add r0, r7, #0x0
- bl FUN_0200CD64
- add r1, r0, #0x0
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- mov r2, #0x0
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x14
- pop {r4-r7, pc}
-_0200CDB8:
- add r0, r7, #0x0
- bl FUN_0200CD64
- add r1, r0, #0x0
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- mov r2, #0x4
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200CDD8
-FUN_0200CDD8: ; 0x0200CDD8
- push {r3-r7, lr}
- sub sp, #0x30
- str r1, [sp, #0x10]
- str r2, [sp, #0x14]
- str r3, [sp, #0x18]
- ldr r2, [sp, #0x4c]
- add r7, r0, #0x0
- str r2, [sp, #0x4c]
- ldr r2, [sp, #0x18]
- ldr r5, [sp, #0x50]
- sub r6, r2, #0x1
- ldr r2, [sp, #0x14]
- sub r2, r2, #0x2
- str r2, [sp, #0x28]
- lsl r2, r6, #0x18
- lsr r2, r2, #0x18
- str r2, [sp, #0x0]
- mov r2, #0x1
- str r2, [sp, #0x4]
- str r2, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r2, sp, #0x38
- lsl r3, r3, #0x18
- ldrh r2, [r2, #0x1c]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x14]
- sub r0, r0, #0x1
- str r0, [sp, #0x24]
- add r0, sp, #0x38
- ldrh r4, [r0, #0x1c]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x24]
- str r5, [sp, #0xc]
- add r2, r4, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- add r0, sp, #0x38
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x2
- lsl r2, r2, #0x10
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r1, [sp, #0x10]
- ldr r3, [sp, #0x14]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- add r0, sp, #0x38
- ldrb r1, [r0, #0x10]
- ldr r0, [sp, #0x14]
- add r2, r4, #0x3
- add r0, r0, r1
- str r0, [sp, #0x2c]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x2c]
- add r2, r4, #0x4
- add r0, r0, #0x1
- str r0, [sp, #0x20]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x2c]
- add r2, r4, #0x5
- add r0, r0, #0x2
- str r0, [sp, #0x1c]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x1c]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- ldr r3, [sp, #0x28]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- add r2, r4, #0x6
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- ldr r3, [sp, #0x24]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- add r2, r4, #0x7
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- ldr r3, [sp, #0x2c]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, #0x9
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, #0xa
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, #0xb
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r2, r4, #0x0
- ldr r3, [sp, #0x28]
- add r2, #0xc
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x18]
- ldr r0, [sp, #0x4c]
- lsr r2, r2, #0x10
- add r6, r1, r0
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x24]
- str r5, [sp, #0xc]
- add r2, #0xd
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- add r0, sp, #0x38
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x0
- add r2, #0xe
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- ldr r1, [sp, #0x10]
- ldr r3, [sp, #0x14]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- add r2, #0xf
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- add r2, #0x10
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x1c]
- str r5, [sp, #0xc]
- add r4, #0x11
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D06C
-FUN_0200D06C: ; 0x0200D06C
- push {r4-r7, lr}
- sub sp, #0x1c
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- str r7, [sp, #0x0]
- str r0, [sp, #0x4]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x8]
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- ldr r2, [sp, #0x14]
- ldr r3, [sp, #0x18]
- bl FUN_0200CDD8
- add sp, #0x1c
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D0BC
-FUN_0200D0BC: ; 0x0200D0BC
- push {r4-r6, lr}
- add r6, r2, #0x0
- add r4, r1, #0x0
- add r1, r6, #0x0
- add r2, r3, #0x0
- add r5, r0, #0x0
- bl FUN_0200D06C
- cmp r4, #0x0
- bne _0200D0D6
- add r0, r5, #0x0
- bl CopyWindowToVram
-_0200D0D6:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_0200D18C
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0200D0E0
-FUN_0200D0E0: ; 0x0200D0E0
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r7, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x14]
- add r0, r0, #0x2
- add r1, r1, #0x5
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- lsl r0, r0, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- sub r3, r6, #0x2
- lsl r3, r3, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- cmp r4, #0x0
- bne _0200D142
- add r0, r5, #0x0
- bl ClearWindowTilemapAndCopyToVram
-_0200D142:
- add sp, #0x18
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D148
-FUN_0200D148: ; 0x0200D148
- push {r4-r5, lr}
- sub sp, #0x24
- add r5, r1, #0x0
- str r0, [sp, #0x1c]
- add r1, sp, #0x14
- strh r3, [r1, #0xc]
- add r4, r2, #0x0
- add r0, sp, #0x20
- ldrh r2, [r0, #0x10]
- add r3, r4, #0x0
- strh r2, [r1, #0xe]
- ldr r2, [sp, #0x34]
- str r2, [sp, #0x14]
- ldrh r2, [r0, #0x18]
- strh r2, [r1, #0x4]
- ldrh r2, [r0, #0x1c]
- strh r2, [r1, #0x6]
- ldrh r1, [r0, #0x20]
- add r2, r5, #0x0
- str r1, [sp, #0x0]
- ldrh r1, [r0, #0x24]
- str r1, [sp, #0x4]
- ldrh r1, [r0, #0x28]
- str r1, [sp, #0x8]
- ldrh r0, [r0, #0x2c]
- add r1, sp, #0x14
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- add r0, sp, #0x1c
- bl BlitBitmapRect4Bit
- add sp, #0x24
- pop {r4-r5, pc}
-
- thumb_func_start FUN_0200D18C
-FUN_0200D18C: ; 0x0200D18C
- push {r3-r7, lr}
- sub sp, #0x40
- str r1, [sp, #0x24]
- str r0, [sp, #0x20]
- ldr r0, [r0, #0x0]
- bl BgConfig_GetHeapId
- add r6, r0, #0x0
- ldr r0, [sp, #0x20]
- bl GetWindowBgId
- mov r1, #0x6
- str r0, [sp, #0x28]
- add r0, r6, #0x0
- lsl r1, r1, #0x6
- bl AllocFromHeap
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- bl BgGetCharPtr
- add r4, r0, #0x0
- str r6, [sp, #0x0]
- mov r0, #0x26
- mov r1, #0x16
- mov r2, #0x0
- add r3, sp, #0x3c
- bl GfGfxLoader_GetCharData
- str r0, [sp, #0x2c]
- ldr r0, [sp, #0x3c]
- mov r7, #0x0
- ldr r0, [r0, #0x14]
- str r0, [sp, #0x30]
- ldr r0, [sp, #0x24]
- add r0, #0xa
- lsl r0, r0, #0x5
- str r0, [sp, #0x34]
- ldr r0, [sp, #0x24]
- add r0, #0xb
- lsl r0, r0, #0x5
- str r0, [sp, #0x38]
-_0200D1E0:
- ldr r1, [sp, #0x34]
- lsl r6, r7, #0x7
- add r0, r5, r6
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- add r0, r6, #0x0
- ldr r1, [sp, #0x38]
- add r0, #0x20
- add r0, r5, r0
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- add r0, r6, #0x0
- ldr r1, [sp, #0x34]
- add r0, #0x40
- add r0, r5, r0
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- ldr r1, [sp, #0x38]
- add r6, #0x60
- add r0, r5, r6
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- add r0, r7, #0x1
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- cmp r7, #0x3
- blo _0200D1E0
- mov r1, #0x30
- str r1, [sp, #0x0]
- str r5, [sp, #0x4]
- mov r3, #0xc
- str r3, [sp, #0x8]
- str r1, [sp, #0xc]
- mov r0, #0x1
- str r0, [sp, #0x10]
- mov r2, #0x0
- str r2, [sp, #0x14]
- str r3, [sp, #0x18]
- str r1, [sp, #0x1c]
- ldr r0, [sp, #0x30]
- mov r1, #0x4
- bl FUN_0200D148
- ldr r0, [sp, #0x24]
- mov r3, #0x6
- add r0, #0x12
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x20]
- ldr r1, [sp, #0x28]
- ldr r0, [r0, #0x0]
- add r2, r5, #0x0
- lsl r3, r3, #0x6
- bl BG_LoadCharTilesData
- ldr r0, [sp, #0x24]
- bl FUN_02002840
- ldr r0, [sp, #0x2c]
- bl FreeToHeap
- add r0, r5, #0x0
- bl FreeToHeap
- add sp, #0x40
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D274
-FUN_0200D274: ; 0x0200D274
- push {r4-r7, lr}
- sub sp, #0x14
- str r0, [sp, #0x4]
- str r1, [sp, #0x8]
- add r0, sp, #0x18
- ldrb r0, [r0, #0x10]
- add r7, r2, #0x0
- add r5, r3, #0x0
- bl FUN_0200CD60
- add r1, r0, #0x0
- ldr r0, [sp, #0x2c]
- mov r2, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x26
- add r3, sp, #0x10
- bl GfGfxLoader_GetCharData
- str r0, [sp, #0xc]
- mov r1, #0x9
- ldr r0, [sp, #0x2c]
- lsl r1, r1, #0x6
- bl AllocFromHeap
- ldr r1, [sp, #0x10]
- mov r2, #0x9
- ldr r1, [r1, #0x14]
- lsl r2, r2, #0x6
- add r4, r0, #0x0
- bl memcpy
- mov r0, #0x9
- mov r3, #0x0
- lsl r0, r0, #0x6
- mov r1, #0xf
-_0200D2BA:
- ldrb r2, [r4, r3]
- lsl r6, r2, #0x14
- and r2, r1
- lsl r2, r2, #0x18
- lsr r6, r6, #0x18
- lsr r2, r2, #0x18
- cmp r6, #0x0
- bne _0200D2CC
- add r6, r5, #0x0
-_0200D2CC:
- cmp r2, #0x0
- bne _0200D2D2
- add r2, r5, #0x0
-_0200D2D2:
- lsl r6, r6, #0x4
- orr r2, r6
- strb r2, [r4, r3]
- add r3, r3, #0x1
- cmp r3, r0
- blo _0200D2BA
- str r7, [sp, #0x0]
- mov r3, #0x9
- ldr r0, [sp, #0x4]
- ldr r1, [sp, #0x8]
- add r2, r4, #0x0
- lsl r3, r3, #0x6
- bl BG_LoadCharTilesData
- ldr r0, [sp, #0xc]
- bl FreeToHeap
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D300
-FUN_0200D300: ; 0x0200D300
- push {r4-r7, lr}
- sub sp, #0x1c
- str r0, [sp, #0x10]
- add r5, r2, #0x0
- mov r0, #0xf
- add r6, r1, #0x0
- add r7, r3, #0x0
- str r5, [sp, #0x0]
- lsl r0, r0, #0x6
- str r0, [sp, #0x4]
- mov r1, #0x0
- ldr r4, [sp, #0x38]
- str r1, [sp, #0x8]
- ldr r2, [sp, #0x10]
- mov r0, #0x24
- add r3, r6, #0x0
- str r4, [sp, #0xc]
- bl GfGfxLoader_LoadCharData
- mov r0, #0x24 ; NARC_GRAPHIC_FIELD_BOARD
- mov r1, #0x1
- add r2, r4, #0x0
- bl AllocAndReadWholeNarcMemberByIdPair
- add r1, sp, #0x18
- str r0, [sp, #0x14]
- bl NNS_G2dGetUnpackedPaletteData
- add r2, sp, #0x20
- ldr r1, [sp, #0x18]
- ldrb r2, [r2, #0x10]
- lsl r3, r7, #0x15
- ldr r1, [r1, #0xc]
- lsl r2, r2, #0x5
- add r1, r1, r2
- add r0, r6, #0x0
- mov r2, #0x20
- lsr r3, r3, #0x10
- bl BG_LoadPlttData
- ldr r1, [sp, #0x14]
- add r0, r4, #0x0
- bl FreeToHeapExplicit
- add r0, sp, #0x20
- ldrb r3, [r0, #0x10]
- cmp r3, #0x1
- bhi _0200D374
- ldrh r0, [r0, #0x14]
- add r5, #0x1e
- lsl r2, r5, #0x10
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x10]
- add r1, r6, #0x0
- lsr r2, r2, #0x10
- str r4, [sp, #0x4]
- bl FUN_0200D378
-_0200D374:
- add sp, #0x1c
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200D378
-FUN_0200D378: ; 0x0200D378
- push {r3-r5, lr}
- sub sp, #0x10
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r1, [sp, #0x20]
- cmp r3, #0x0
- bne _0200D38C
- add r1, #0x21
- lsl r0, r1, #0x10
- b _0200D390
-_0200D38C:
- add r0, r1, #0x2
- lsl r0, r0, #0x10
-_0200D390:
- lsr r1, r0, #0x10
- mov r0, #0x3
- str r2, [sp, #0x0]
- lsl r0, r0, #0x8
- str r0, [sp, #0x4]
- mov r0, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x24]
- add r2, r5, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x24
- add r3, r4, #0x0
- bl GfGfxLoader_LoadCharData
- add sp, #0x10
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200D3B0
-FUN_0200D3B0: ; 0x0200D3B0
- push {r3-r7, lr}
- sub sp, #0x40
- str r1, [sp, #0x14]
- str r2, [sp, #0x18]
- str r3, [sp, #0x1c]
- ldr r2, [sp, #0x1c]
- ldr r6, [sp, #0x5c]
- sub r7, r2, #0x1
- ldr r2, [sp, #0x18]
- ldr r5, [sp, #0x60]
- str r2, [sp, #0x34]
- sub r2, #0x9
- str r2, [sp, #0x34]
- lsl r2, r7, #0x18
- lsr r2, r2, #0x18
- str r2, [sp, #0x0]
- mov r2, #0x1
- str r2, [sp, #0x4]
- str r2, [sp, #0x8]
- ldr r3, [sp, #0x34]
- str r5, [sp, #0xc]
- add r2, sp, #0x48
- lsl r3, r3, #0x18
- ldrh r2, [r2, #0x1c]
- lsr r3, r3, #0x18
- str r0, [sp, #0x10]
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- str r0, [sp, #0x30]
- sub r0, #0x8
- str r0, [sp, #0x30]
- add r0, sp, #0x48
- ldrh r4, [r0, #0x1c]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x30]
- str r5, [sp, #0xc]
- add r2, r4, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r0, sp, #0x48
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x2
- lsl r2, r2, #0x10
- str r0, [sp, #0x3c]
- add r0, r0, #0x7
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x18]
- lsr r2, r2, #0x10
- sub r0, r0, #0x7
- str r0, [sp, #0x20]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- ldr r3, [sp, #0x20]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r2, r4, #0x3
- lsl r2, r2, #0x10
- ldr r1, [sp, #0x18]
- ldr r0, [sp, #0x3c]
- lsr r2, r2, #0x10
- add r0, r1, r0
- str r0, [sp, #0x38]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x38]
- str r5, [sp, #0xc]
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x38]
- add r2, r4, #0x4
- add r0, r0, #0x1
- str r0, [sp, #0x2c]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x38]
- add r0, r0, #0x2
- str r0, [sp, #0x28]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r2, r4, #0x5
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x34]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, r4, #0x6
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x30]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, r4, #0x7
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r3, [sp, #0x18]
- add r2, #0x8
- sub r3, r3, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- ldr r3, [sp, #0x38]
- str r5, [sp, #0xc]
- add r2, #0x9
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- add r2, #0xa
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r2, #0xb
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- add r6, r0, r6
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x34]
- str r5, [sp, #0xc]
- add r2, #0xc
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x30]
- str r5, [sp, #0xc]
- add r2, #0xd
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r2, r4, #0x0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- add r2, #0xe
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x38]
- str r5, [sp, #0xc]
- add r2, #0xf
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- add r2, #0x10
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r4, #0x11
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add sp, #0x40
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D678
-FUN_0200D678: ; 0x0200D678
- push {r3-r7, lr}
- sub sp, #0x28
- str r1, [sp, #0x10]
- add r7, r0, #0x0
- str r2, [sp, #0x14]
- bl GetWindowBgId
- str r0, [sp, #0x20]
- add r0, r7, #0x0
- bl GetWindowX
- sub r0, r0, #0x7
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x18]
- add r0, r7, #0x0
- bl GetWindowY
- str r0, [sp, #0x1c]
- mov r0, #0x0
- str r0, [sp, #0x24]
-_0200D6A2:
- ldr r2, [sp, #0x24]
- ldr r1, [sp, #0x1c]
- ldr r0, [sp, #0x24]
- add r3, r2, #0x0
- add r0, r1, r0
- mov r1, #0x6
- mul r3, r1
- ldr r1, [sp, #0x10]
- lsl r0, r0, #0x18
- mov r4, #0x0
- add r5, r1, r3
- lsr r6, r0, #0x18
-_0200D6BA:
- str r6, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x14]
- ldr r3, [sp, #0x18]
- str r0, [sp, #0xc]
- add r2, r4, r5
- add r3, r3, r4
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r7, #0x0]
- ldr r1, [sp, #0x20]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, #0x6
- blo _0200D6BA
- ldr r0, [sp, #0x24]
- add r0, r0, #0x1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x24]
- cmp r0, #0x4
- blo _0200D6A2
- add sp, #0x28
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200D6F8
-FUN_0200D6F8: ; 0x0200D6F8
- push {r3-r7, lr}
- sub sp, #0x28
- add r5, r0, #0x0
- str r1, [sp, #0x10]
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x14]
- add r0, sp, #0x30
- ldrb r0, [r0, #0x10]
- cmp r0, #0x1
- bhi _0200D756
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x1c]
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- str r7, [sp, #0x0]
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r4, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- bl FUN_0200D3B0
- add r1, r4, #0x0
- add r1, #0x1e
- lsl r1, r1, #0x10
- add r0, r5, #0x0
- lsr r1, r1, #0x10
- add r2, r6, #0x0
- bl FUN_0200D678
- b _0200D788
-_0200D756:
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x20]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x24]
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- str r7, [sp, #0x0]
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r4, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- ldr r2, [sp, #0x20]
- ldr r3, [sp, #0x24]
- bl FUN_0200CDD8
-_0200D788:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- bne _0200D794
- add r0, r5, #0x0
- bl CopyWindowToVram
-_0200D794:
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0200D18C
- add sp, #0x28
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200D7A0
-FUN_0200D7A0: ; 0x0200D7A0
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- add r4, r1, #0x0
- str r2, [sp, #0x10]
- bl GetWindowBgId
- str r0, [sp, #0x14]
- cmp r4, #0x1
- bhi _0200D7FE
- add r0, r5, #0x0
- bl GetWindowX
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r7, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- add r0, r0, #0x2
- lsl r0, r0, #0x18
- sub r4, #0x9
- lsl r3, r4, #0x18
- add r6, #0xb
- str r1, [sp, #0x0]
- lsl r1, r6, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- b _0200D846
-_0200D7FE:
- add r0, r5, #0x0
- bl GetWindowX
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r6, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x0]
- add r1, r7, #0x4
- lsl r1, r1, #0x18
- add r0, r0, #0x2
- lsr r1, r1, #0x18
- lsl r0, r0, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- sub r3, r4, #0x2
- lsl r3, r3, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
-_0200D846:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- bne _0200D852
- add r0, r5, #0x0
- bl ClearWindowTilemapAndCopyToVram
-_0200D852:
- add sp, #0x18
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D858
-FUN_0200D858: ; 0x0200D858
- push {r4-r7, lr}
- sub sp, #0x34
- str r0, [sp, #0x20]
- ldr r0, [r0, #0x0]
- str r1, [sp, #0x24]
- bl BgConfig_GetHeapId
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x20]
- bl GetWindowBgId
- bl BgGetCharPtr
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- ldr r1, _0200D970 ; =0x0000048C
- bl AllocFromHeap
- ldr r1, [sp, #0x24]
- add r4, r0, #0x0
- ldr r0, _0200D974 ; =0x00000404
- add r1, #0x12
- lsl r1, r1, #0x5
- add r0, r4, r0
- add r1, r5, r1
- mov r2, #0x80
- bl memcpy
- ldr r0, [sp, #0x28]
- mov r1, #0x80
- bl AllocFromHeap
- ldr r1, [sp, #0x24]
- mov r2, #0x20
- add r1, #0xa
- lsl r1, r1, #0x5
- str r1, [sp, #0x2c]
- add r1, r5, r1
- add r6, r0, #0x0
- bl memcpy
- ldr r0, [sp, #0x24]
- mov r2, #0x20
- add r0, #0xb
- lsl r7, r0, #0x5
- add r0, r6, #0x0
- add r0, #0x20
- add r1, r5, r7
- bl memcpy
- ldr r1, [sp, #0x2c]
- add r0, r6, #0x0
- add r0, #0x40
- add r1, r5, r1
- mov r2, #0x20
- bl memcpy
- add r0, r6, #0x0
- add r0, #0x60
- add r1, r5, r7
- mov r2, #0x20
- bl memcpy
- mov r5, #0x0
- add r7, r4, #0x4
-_0200D8DA:
- lsl r0, r5, #0x7
- add r0, r7, r0
- add r1, r6, #0x0
- mov r2, #0x80
- bl memcpy
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #0x8
- blo _0200D8DA
- add r0, r6, #0x0
- bl FreeToHeap
- ldr r0, [sp, #0x28]
- mov r1, #0x17
- str r0, [sp, #0x0]
- mov r0, #0x26
- mov r2, #0x0
- add r3, sp, #0x30
- bl GfGfxLoader_GetCharData
- mov r2, #0x80
- add r5, r0, #0x0
- str r2, [sp, #0x0]
- add r0, r4, #0x4
- str r0, [sp, #0x4]
- mov r3, #0x10
- str r3, [sp, #0x8]
- str r2, [sp, #0xc]
- mov r1, #0x0
- str r1, [sp, #0x10]
- str r1, [sp, #0x14]
- str r3, [sp, #0x18]
- str r2, [sp, #0x1c]
- ldr r0, [sp, #0x30]
- add r2, r1, #0x0
- ldr r0, [r0, #0x14]
- bl FUN_0200D148
- add r0, r5, #0x0
- bl FreeToHeap
- ldr r0, [sp, #0x20]
- ldr r1, _0200D978 ; =0x00000484
- str r0, [r4, #0x0]
- ldr r0, [sp, #0x24]
- mov r2, #0x0
- strh r0, [r4, r1]
- add r0, r1, #0x2
- strb r2, [r4, r0]
- add r0, r1, #0x3
- ldrb r3, [r4, r0]
- mov r0, #0x7f
- bic r3, r0
- add r0, r1, #0x3
- strb r3, [r4, r0]
- add r0, r1, #0x4
- ldrb r3, [r4, r0]
- mov r0, #0x3
- bic r3, r0
- add r0, r1, #0x4
- strb r3, [r4, r0]
- ldr r0, _0200D97C ; =FUN_0200DB7C
- add r1, r4, #0x0
- bl FUN_0200CA60
- add r0, r4, #0x0
- mov r1, #0x1
- bl FUN_0200D980
- add r0, r4, #0x0
- add sp, #0x34
- pop {r4-r7, pc}
- nop
-_0200D970: .word 0x0000048C
-_0200D974: .word 0x00000404
-_0200D978: .word 0x00000484
-_0200D97C: .word FUN_0200DB7C
-
- thumb_func_start FUN_0200D980
-FUN_0200D980: ; 0x0200D980
- push {r4-r7, lr}
- sub sp, #0x24
- add r5, r0, #0x0
- ldr r0, [r5, #0x0]
- add r6, r1, #0x0
- bl GetWindowBgId
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetWindowX
- str r0, [sp, #0x18]
- ldr r0, [r5, #0x0]
- bl GetWindowY
- str r0, [sp, #0x1c]
- ldr r0, [r5, #0x0]
- bl GetWindowWidth
- str r0, [sp, #0x20]
- cmp r6, #0x2
- bne _0200DA8A
- ldr r2, _0200DB78 ; =0x00000484
- add r1, r4, #0x0
- ldrh r0, [r5, r2]
- sub r2, #0x80
- add r2, r5, r2
- add r0, #0x12
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x0]
- mov r3, #0x80
- ldr r0, [r0, #0x0]
- bl BG_LoadCharTilesData
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x18]
- add r7, r0, #0x2
- ldr r0, [sp, #0x20]
- ldr r2, _0200DB78 ; =0x00000484
- add r6, r1, r0
- add r0, r6, #0x1
- str r0, [sp, #0x14]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrh r2, [r5, r2]
- ldr r0, [r5, #0x0]
- ldr r3, [sp, #0x14]
- add r2, #0xa
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- add r6, r6, #0x2
- lsl r3, r6, #0x18
- add r2, #0xb
- lsl r2, r2, #0x10
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x14]
- add r7, r0, #0x3
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0xa
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r6, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0xb
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [r5, #0x0]
- add r1, r4, #0x0
- ldr r0, [r0, #0x0]
- bl BgCommitTilemapBufferToVram
- add sp, #0x24
- pop {r4-r7, pc}
-_0200DA8A:
- ldr r3, _0200DB78 ; =0x00000484
- add r2, r5, #0x4
- ldrh r0, [r5, r3]
- add r3, r3, #0x3
- add r1, r4, #0x0
- add r0, #0x12
- str r0, [sp, #0x0]
- ldrb r3, [r5, r3]
- ldr r0, [r5, #0x0]
- lsl r3, r3, #0x19
- lsr r3, r3, #0x19
- lsl r3, r3, #0x7
- add r2, r2, r3
- ldr r0, [r0, #0x0]
- mov r3, #0x80
- bl BG_LoadCharTilesData
- cmp r6, #0x0
- beq _0200DB72
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x18]
- add r7, r0, #0x2
- ldr r0, [sp, #0x20]
- ldr r2, _0200DB78 ; =0x00000484
- add r6, r1, r0
- add r0, r6, #0x1
- str r0, [sp, #0x10]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrh r2, [r5, r2]
- ldr r0, [r5, #0x0]
- ldr r3, [sp, #0x10]
- add r2, #0x12
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- add r6, r6, #0x2
- lsl r3, r6, #0x18
- add r2, #0x13
- lsl r2, r2, #0x10
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x10]
- add r7, r0, #0x3
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0x14
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r6, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0x15
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [r5, #0x0]
- add r1, r4, #0x0
- ldr r0, [r0, #0x0]
- bl BgCommitTilemapBufferToVram
-_0200DB72:
- add sp, #0x24
- pop {r4-r7, pc}
- nop
-_0200DB78: .word 0x00000484
-
- thumb_func_start FUN_0200DB7C
-FUN_0200DB7C: ; 0x0200DB7C
- push {r3-r5, lr}
- add r4, r0, #0x0
- ldr r0, _0200DBE4 ; =0x00000488
- ldrb r2, [r1, r0]
- lsl r2, r2, #0x1e
- lsr r2, r2, #0x1e
- beq _0200DB9E
- cmp r2, #0x1
- bne _0200DB96
- add r0, r1, #0x0
- mov r1, #0x2
- bl FUN_0200D980
-_0200DB96:
- add r0, r4, #0x0
- bl FUN_0200CAB4
- pop {r3-r5, pc}
-_0200DB9E:
- sub r2, r0, #0x2
- ldrb r2, [r1, r2]
- add r3, r2, #0x1
- sub r2, r0, #0x2
- strb r3, [r1, r2]
- ldrb r2, [r1, r2]
- cmp r2, #0x10
- bne _0200DBE0
- mov r3, #0x0
- sub r2, r0, #0x2
- strb r3, [r1, r2]
- sub r2, r0, #0x1
- ldrb r2, [r1, r2]
- mov r4, #0x7f
- bic r2, r4
- sub r4, r0, #0x1
- ldrb r4, [r1, r4]
- sub r0, r0, #0x1
- lsl r4, r4, #0x19
- lsr r4, r4, #0x19
- add r5, r4, #0x1
- mov r4, #0x7
- and r4, r5
- lsl r4, r4, #0x18
- lsr r5, r4, #0x18
- mov r4, #0x7f
- and r4, r5
- orr r2, r4
- strb r2, [r1, r0]
- add r0, r1, #0x0
- add r1, r3, #0x0
- bl FUN_0200D980
-_0200DBE0:
- pop {r3-r5, pc}
- nop
-_0200DBE4: .word 0x00000488
-
- thumb_func_start FUN_0200DBE8
-FUN_0200DBE8: ; 0x0200DBE8
- push {r4, lr}
- add r4, r0, #0x0
- add r0, r1, #0x0
- bl FreeToHeap
- add r0, r4, #0x0
- bl FUN_0200CAB4
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200DBFC
-FUN_0200DBFC: ; 0x0200DBFC
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0200DC1C ; =FUN_0200DBE8
- add r1, r4, #0x0
- mov r2, #0x0
- bl FUN_0200CA98
- ldr r1, _0200DC20 ; =0x00000488
- mov r0, #0x3
- ldrb r2, [r4, r1]
- bic r2, r0
- mov r0, #0x1
- orr r0, r2
- strb r0, [r4, r1]
- pop {r4, pc}
- nop
-_0200DC1C: .word FUN_0200DBE8
-_0200DC20: .word 0x00000488
-
- thumb_func_start FUN_0200DC24
-FUN_0200DC24: ; 0x0200DC24
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0200DC44 ; =FUN_0200DBE8
- add r1, r4, #0x0
- mov r2, #0x0
- bl FUN_0200CA98
- ldr r1, _0200DC48 ; =0x00000488
- mov r0, #0x3
- ldrb r2, [r4, r1]
- bic r2, r0
- mov r0, #0x2
- orr r0, r2
- strb r0, [r4, r1]
- pop {r4, pc}
- nop
-_0200DC44: .word FUN_0200DBE8
-_0200DC48: .word 0x00000488
-
- thumb_func_start FUN_0200DC4C
-FUN_0200DC4C: ; 0x0200DC4C
- push {r4-r7, lr}
- sub sp, #0xc
- str r2, [sp, #0x4]
- ldr r5, [sp, #0x30]
- str r3, [sp, #0x8]
- add r6, r0, #0x0
- add r7, r1, #0x0
- str r5, [sp, #0x0]
- bl FUN_0200DD70
- add r4, r0, #0x0
- add r1, r5, #0x0
- bl FUN_0200DDAC
- add r0, r4, #0x0
- bl FUN_0200DDD8
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0x8]
- add r0, r4, #0x0
- bl FUN_0200DE30
- add r2, sp, #0x10
- ldrh r1, [r2, #0x18]
- ldrb r2, [r2, #0x1c]
- add r0, r4, #0x0
- bl FUN_0200DE80
- add r2, sp, #0x10
- ldrb r1, [r2, #0x10]
- ldrh r2, [r2, #0x14]
- add r0, r4, #0x0
- bl FUN_0200DFD8
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl BgCommitTilemapBufferToVram
- ldr r0, _0200DCA0 ; =0x0000016F
- add r0, r4, r0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_0200DCA0: .word 0x0000016F
-
- thumb_func_start FUN_0200DCA4
-FUN_0200DCA4: ; 0x0200DCA4
- push {r4-r7, lr}
- sub sp, #0xc
- str r2, [sp, #0x4]
- ldr r5, [sp, #0x2c]
- str r3, [sp, #0x8]
- add r6, r0, #0x0
- add r7, r1, #0x0
- str r5, [sp, #0x0]
- bl FUN_0200DD70
- add r4, r0, #0x0
- add r1, r5, #0x0
- bl FUN_0200DDAC
- add r0, r4, #0x0
- bl FUN_0200DDD8
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0x8]
- add r0, r4, #0x0
- bl FUN_0200DE30
- ldr r1, [sp, #0x28]
- add r0, r4, #0x0
- bl FUN_0200DEC0
- add r2, sp, #0x10
- ldrb r1, [r2, #0x10]
- ldrh r2, [r2, #0x14]
- add r0, r4, #0x0
- bl FUN_0200DFD8
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl BgCommitTilemapBufferToVram
- ldr r0, _0200DCF4 ; =0x0000016F
- add r0, r4, r0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_0200DCF4: .word 0x0000016F
-
- thumb_func_start FUN_0200DCF8
-FUN_0200DCF8: ; 0x0200DCF8
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _0200DD6C ; =0x0000016F
- add r4, r1, #0x0
- ldrb r1, [r4, r0]
- cmp r1, #0x1
- beq _0200DD10
- cmp r1, #0x2
- beq _0200DD2E
- cmp r1, #0x3
- beq _0200DD40
- b _0200DD54
-_0200DD10:
- add r0, r4, #0x0
- bl FUN_0200E188
- mov r0, #0x59
- lsl r0, r0, #0x2
- ldr r0, [r4, r0]
- bl FUN_0200C3DC
- add r0, r4, #0x0
- bl MOD05_021D99F8
- add r0, r5, #0x0
- bl FUN_0200621C
- pop {r3-r5, pc}
-_0200DD2E:
- mov r1, #0x3
- strb r1, [r4, r0]
- sub r0, #0xb
- ldr r0, [r4, r0]
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- bl FUN_02020130
- b _0200DD54
-_0200DD40:
- sub r0, #0xb
- ldr r0, [r4, r0]
- ldr r0, [r0, #0x0]
- bl FUN_0202022C
- cmp r0, #0x6
- bne _0200DD54
- ldr r0, _0200DD6C ; =0x0000016F
- mov r1, #0x0
- strb r1, [r4, r0]
-_0200DD54:
- mov r0, #0x59
- lsl r0, r0, #0x2
- ldr r0, [r4, r0]
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- lsl r1, r1, #0xc
- bl FUN_020201E4
- ldr r0, [r4, #0x0]
- bl FUN_0201FDEC
- pop {r3-r5, pc}
- .balign 4
-_0200DD6C: .word 0x0000016F
-
- thumb_func_start FUN_0200DD70
-FUN_0200DD70: ; 0x0200DD70
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r7, r3, #0x0
- mov r1, #0x17
- add r6, r2, #0x0
- ldr r0, _0200DDA4 ; =FUN_0200DCF8
- ldr r3, [sp, #0x18]
- lsl r1, r1, #0x4
- mov r2, #0x0
- bl FUN_020061E8
- bl FUN_0201B6C8
- ldr r1, _0200DDA8 ; =0x0000016F
- mov r2, #0x0
- strb r2, [r0, r1]
- sub r2, r1, #0x7
- str r5, [r0, r2]
- sub r2, r1, #0x3
- strb r4, [r0, r2]
- sub r2, r1, #0x2
- strb r6, [r0, r2]
- sub r1, r1, #0x1
- strb r7, [r0, r1]
- pop {r3-r7, pc}
- .balign 4
-_0200DDA4: .word FUN_0200DCF8
-_0200DDA8: .word 0x0000016F
-
- thumb_func_start FUN_0200DDAC
-FUN_0200DDAC: ; 0x0200DDAC
- push {r4-r6, lr}
- sub sp, #0x18
- ldr r5, _0200DDD4 ; =UNK_020ECEA8
- add r4, sp, #0x0
- add r6, r0, #0x0
- add r3, r1, #0x0
- add r2, r4, #0x0
- ldmia r5!, {r0-r1}
- stmia r4!, {r0-r1}
- ldmia r5!, {r0-r1}
- stmia r4!, {r0-r1}
- ldmia r5!, {r0-r1}
- stmia r4!, {r0-r1}
- add r1, r2, #0x0
- add r0, r6, #0x0
- mov r2, #0x1
- bl MOD05_021D959C
- add sp, #0x18
- pop {r4-r6, pc}
- .balign 4
-_0200DDD4: .word UNK_020ECEA8
-
- thumb_func_start FUN_0200DDD8
-FUN_0200DDD8: ; 0x0200DDD8
- push {r3-r4, lr}
- sub sp, #0xc
- mov r1, #0x1
- str r1, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r1, _0200DE2C ; =0x00015CD5
- mov r2, #0x31
- str r1, [sp, #0x8]
- mov r1, #0x26
- mov r3, #0x0
- add r4, r0, #0x0
- 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 MOD05_021D96F4
- ldr r0, _0200DE2C ; =0x00015CD5
- mov r1, #0x26
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- mov r2, #0x2e
- mov r3, #0x0
- bl MOD05_021D9708
- mov r0, #0x1
- str r0, [sp, #0x0]
- ldr r0, _0200DE2C ; =0x00015CD5
- mov r1, #0x26
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r2, #0x30
- mov r3, #0x0
- bl MOD05_021D971C
- add sp, #0xc
- pop {r3-r4, pc}
- nop
-_0200DE2C: .word 0x00015CD5
-
- thumb_func_start FUN_0200DE30
-FUN_0200DE30: ; 0x0200DE30
- push {r4-r7, lr}
- sub sp, #0x34
- ldr r5, _0200DE7C ; =UNK_020ECEC0
- add r6, r2, #0x0
- add r4, r0, #0x0
- add r7, r1, #0x0
- add r3, sp, #0x0
- mov r2, #0x6
-_0200DE40:
- ldmia r5!, {r0-r1}
- stmia r3!, {r0-r1}
- sub r2, r2, #0x1
- bne _0200DE40
- ldr r0, [r5, #0x0]
- str r0, [r3, #0x0]
- add r0, r7, #0x5
- lsl r1, r0, #0x3
- add r0, sp, #0x0
- strh r1, [r0, #0x0]
- add r1, r6, #0x5
- lsl r1, r1, #0x3
- strh r1, [r0, #0x2]
- add r0, r4, #0x0
- add r1, sp, #0x0
- bl MOD05_021D9820
- mov r1, #0x59
- lsl r1, r1, #0x2
- str r0, [r4, r1]
- ldr r0, [r4, #0x0]
- bl FUN_0201FDEC
- mov r0, #0x10
- mov r1, #0x1
- bl GX_EngineBToggleLayers
- add sp, #0x34
- pop {r4-r7, pc}
- nop
-_0200DE7C: .word UNK_020ECEC0
-
- thumb_func_start FUN_0200DE80
-FUN_0200DE80: ; 0x0200DE80
- push {r4-r7, lr}
- sub sp, #0x1c
- add r5, r0, #0x0
- ldr r0, _0200DEBC ; =0x00000162
- add r4, r1, #0x0
- ldrh r0, [r5, r0]
- add r6, r2, #0x0
- bl FUN_02006D98
- add r7, r0, #0x0
- mov r0, #0x0
- str r0, [sp, #0x0]
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r0, sp, #0xc
- add r1, r4, #0x0
- add r2, r6, #0x0
- mov r3, #0x2
- bl FUN_02068C00
- add r0, r5, #0x0
- add r1, sp, #0xc
- bl FUN_0200DEF4
- add r0, r7, #0x0
- bl FUN_020072E8
- add sp, #0x1c
- pop {r4-r7, pc}
- nop
-_0200DEBC: .word 0x00000162
-
- thumb_func_start FUN_0200DEC0
-FUN_0200DEC0: ; 0x0200DEC0
- push {r4-r6, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- ldr r0, _0200DEF0 ; =0x00000162
- add r4, r1, #0x0
- ldrh r0, [r5, r0]
- bl FUN_02006D98
- add r6, r0, #0x0
- add r0, sp, #0x0
- add r1, r4, #0x0
- mov r2, #0x2
- bl FUN_02068B68
- add r0, r5, #0x0
- add r1, sp, #0x0
- bl FUN_0200DEF4
- add r0, r6, #0x0
- bl FUN_020072E8
- add sp, #0x10
- pop {r4-r6, pc}
- nop
-_0200DEF0: .word 0x00000162
-
- thumb_func_start FUN_0200DEF4
-FUN_0200DEF4: ; 0x0200DEF4
- push {r3-r7, lr}
- sub sp, #0x28
- add r5, r0, #0x0
- ldr r0, _0200DFC8 ; =0x00000162
- add r6, r1, #0x0
- mov r1, #0x19
- ldrh r0, [r5, r0]
- lsl r1, r1, #0x8
- bl AllocFromHeap
- add r2, sp, #0x18
- ldr r3, _0200DFCC ; =UNK_020ECE98
- add r4, r0, #0x0
- add r7, r2, #0x0
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- str r4, [sp, #0x0]
- ldr r2, _0200DFC8 ; =0x00000162
- ldrh r0, [r6, #0x0]
- ldrh r1, [r6, #0x2]
- ldrh r2, [r5, r2]
- add r3, r7, #0x0
- bl FUN_02012400
- ldr r3, _0200DFD0 ; =UNK_020ECE88
- add r2, sp, #0x8
- add r7, r2, #0x0
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- mov r0, #0x32
- lsl r0, r0, #0x6
- add r0, r4, r0
- str r0, [sp, #0x0]
- ldr r2, _0200DFC8 ; =0x00000162
- ldrh r0, [r6, #0x0]
- ldrh r1, [r6, #0x2]
- ldrh r2, [r5, r2]
- add r3, r7, #0x0
- bl FUN_02012400
- mov r0, #0x13
- lsl r0, r0, #0x4
- ldr r0, [r5, r0]
- ldr r1, _0200DFD4 ; =0x00015CD5
- bl FUN_020094F0
- bl FUN_02009C5C
- mov r1, #0x1
- str r0, [sp, #0x4]
- bl NNS_G2dGetImageLocation
- mov r1, #0x19
- add r7, r0, #0x0
- add r0, r4, #0x0
- lsl r1, r1, #0x8
- bl DC_FlushRange
- mov r2, #0x19
- add r0, r4, #0x0
- add r1, r7, #0x0
- lsl r2, r2, #0x8
- bl GX_LoadOBJ
- add r0, r4, #0x0
- bl FreeToHeap
- ldr r2, _0200DFC8 ; =0x00000162
- ldrh r0, [r6, #0x0]
- ldrh r1, [r6, #0x4]
- ldrh r2, [r5, r2]
- bl FUN_02012470
- add r4, r0, #0x0
- mov r0, #0x4d
- lsl r0, r0, #0x2
- ldr r0, [r5, r0]
- ldr r1, _0200DFD4 ; =0x00015CD5
- bl FUN_020094F0
- ldr r1, [sp, #0x4]
- bl FUN_02009E54
- mov r1, #0x1
- bl NNS_G2dGetImagePaletteLocation
- add r5, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x20
- bl DC_FlushRange
- add r0, r4, #0x0
- add r1, r5, #0x0
- mov r2, #0x20
- bl GX_LoadOBJPltt
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x28
- pop {r3-r7, pc}
- nop
-_0200DFC8: .word 0x00000162
-_0200DFCC: .word UNK_020ECE98
-_0200DFD0: .word UNK_020ECE88
-_0200DFD4: .word 0x00015CD5
-
- thumb_func_start FUN_0200DFD8
-FUN_0200DFD8: ; 0x0200DFD8
- push {r4-r6, lr}
- sub sp, #0x10
- ldr r3, _0200E184 ; =0x0000016E
- add r5, r0, #0x0
- ldrb r0, [r5, r3]
- add r4, r1, #0x0
- sub r1, r3, #0x2
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- add r6, r2, #0x0
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x1
- ldrb r0, [r5, r3]
- sub r1, r3, #0x2
- lsl r2, r2, #0x10
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0xa
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r1, [r5, r1]
- ldrb r3, [r5, r3]
- ldr r0, [r5, r0]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x2
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- add r3, #0xa
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x4
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- str r0, [sp, #0x0]
- mov r0, #0xa
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r1, [r5, r1]
- ldrb r3, [r5, r3]
- ldr r0, [r5, r0]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x3
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0xa
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x5
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0xa
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- add r3, #0xa
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x6
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- add r0, #0xa
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x7
- ldrb r0, [r5, r3]
- sub r1, r3, #0x2
- lsl r2, r2, #0x10
- add r0, #0xa
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0xa
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r1, [r5, r1]
- ldrb r3, [r5, r3]
- ldr r0, [r5, r0]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r6, #0x8
- ldrb r0, [r5, r3]
- lsl r2, r6, #0x10
- sub r1, r3, #0x2
- add r0, #0xa
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- add r3, #0xa
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- mov r1, #0x5a
- lsl r1, r1, #0x2
- ldr r0, [r5, r1]
- add r1, r1, #0x4
- ldrb r1, [r5, r1]
- bl ScheduleBgTilemapBufferTransfer
- add sp, #0x10
- pop {r4-r6, pc}
- nop
-_0200E184: .word 0x0000016E
-
- thumb_func_start FUN_0200E188
-FUN_0200E188: ; 0x0200E188
- push {r4, lr}
- sub sp, #0x10
- ldr r3, _0200E1CC ; =0x0000016E
- add r4, r0, #0x0
- ldrb r0, [r4, r3]
- mov r2, #0x0
- sub r1, r3, #0x2
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0xc
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r2, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r4, r3]
- ldrb r1, [r4, r1]
- ldr r0, [r4, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- mov r1, #0x5a
- lsl r1, r1, #0x2
- ldr r0, [r4, r1]
- add r1, r1, #0x4
- ldrb r1, [r4, r1]
- bl ScheduleBgTilemapBufferTransfer
- add sp, #0x10
- pop {r4, pc}
- .balign 4
-_0200E1CC: .word 0x0000016E
diff --git a/arm9/asm/unk_0200E850.s b/arm9/asm/unk_0200E850.s
index a464171a..32fcbf7b 100644
--- a/arm9/asm/unk_0200E850.s
+++ b/arm9/asm/unk_0200E850.s
@@ -5947,3 +5947,137 @@ _02011372:
pop {r4-r6, pc}
.balign 4
_02011378: .word 0x00000385
+
+ thumb_func_start FUN_0201137C
+FUN_0201137C: ; 0x0201137C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ lsl r0, r6, #0xc
+ ldr r2, [r4, #0x2c]
+ add r7, r3, #0x0
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r2, r0, #0x0
+ mov r0, #0x2
+ mov r3, #0x0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #0xe1
+ asr r0, r0, #0xc
+ lsl r1, r1, #0x2
+ strb r0, [r5, r1]
+ ldrb r0, [r5, r1]
+ sub r2, r6, r0
+ sub r0, r1, #0x4
+ str r4, [r5, r0]
+ add r4, #0x23
+ add r0, r1, #0x2
+ ldrb r3, [r4, #0x0]
+ sub r1, r1, #0x4
+ strb r3, [r5, r0]
+ ldr r0, [sp, #0x28]
+ add r3, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0xc]
+ ldr r1, [r5, r1]
+ add r0, r5, #0x0
+ add r0, #0x4c
+ add r1, #0x24
+ bl FUN_02010FD0
+ ldr r0, _020113E8 ; =0x00000385
+ mov r1, #0x0
+ strb r1, [r5, r0]
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_020113E8: .word 0x00000385
+
+ thumb_func_start FUN_020113EC
+FUN_020113EC: ; 0x020113EC
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ ldr r1, _0201147C ; =0x00000385
+ add r5, r0, #0x0
+ ldrb r1, [r5, r1]
+ mov r6, #0x0
+ cmp r1, #0x0
+ beq _02011408
+ cmp r1, #0x1
+ beq _02011460
+ cmp r1, #0x2
+ beq _02011474
+ b _02011476
+_02011408:
+ add r0, #0x4c
+ bl FUN_020110BC
+ cmp r0, #0x1
+ bne _02011476
+ ldr r2, _0201147C ; =0x00000385
+ ldrb r0, [r5, r2]
+ sub r1, r2, #0x5
+ add r0, r0, #0x1
+ strb r0, [r5, r2]
+ ldr r0, [r4, #0x10]
+ sub r2, r2, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldrb r2, [r5, r2]
+ ldr r1, [r5, r1]
+ ldr r3, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0200FE20
+ mov r0, #0xe
+ lsl r0, r0, #0x6
+ ldr r3, [r5, r0]
+ add r0, r3, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldr r0, [r4, #0x18]
+ bne _02011452
+ add r3, #0x23
+ ldrb r3, [r3, #0x0]
+ ldr r2, [r4, #0x10]
+ mov r1, #0x1
+ bl FUN_0200F6E4
+ b _02011476
+_02011452:
+ add r3, #0x23
+ ldrb r3, [r3, #0x0]
+ ldr r2, [r4, #0x10]
+ mov r1, #0x2
+ bl FUN_0200F6E4
+ b _02011476
+_02011460:
+ bl FUN_0200FE90
+ cmp r0, #0x1
+ bne _02011476
+ ldr r0, _0201147C ; =0x00000385
+ mov r6, #0x1
+ ldrb r1, [r5, r0]
+ add r1, r1, #0x1
+ strb r1, [r5, r0]
+ b _02011476
+_02011474:
+ mov r6, #0x1
+_02011476:
+ add r0, r6, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0201147C: .word 0x00000385
diff --git a/arm9/asm/unk_0201137C.s b/arm9/asm/unk_0201137C.s
index 65e076bb..ad250827 100644
--- a/arm9/asm/unk_0201137C.s
+++ b/arm9/asm/unk_0201137C.s
@@ -3,140 +3,6 @@
.text
- thumb_func_start FUN_0201137C
-FUN_0201137C: ; 0x0201137C
- push {r3-r7, lr}
- sub sp, #0x10
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r5, r0, #0x0
- lsl r0, r6, #0xc
- ldr r2, [r4, #0x2c]
- add r7, r3, #0x0
- asr r1, r0, #0x1f
- asr r3, r2, #0x1f
- bl _ll_mul
- add r2, r0, #0x0
- mov r0, #0x2
- mov r3, #0x0
- lsl r0, r0, #0xa
- add r0, r2, r0
- adc r1, r3
- lsl r1, r1, #0x14
- lsr r0, r0, #0xc
- orr r0, r1
- mov r1, #0xe1
- asr r0, r0, #0xc
- lsl r1, r1, #0x2
- strb r0, [r5, r1]
- ldrb r0, [r5, r1]
- sub r2, r6, r0
- sub r0, r1, #0x4
- str r4, [r5, r0]
- add r4, #0x23
- add r0, r1, #0x2
- ldrb r3, [r4, #0x0]
- sub r1, r1, #0x4
- strb r3, [r5, r0]
- ldr r0, [sp, #0x28]
- add r3, r7, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x30]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x34]
- str r0, [sp, #0xc]
- ldr r1, [r5, r1]
- add r0, r5, #0x0
- add r0, #0x4c
- add r1, #0x24
- bl FUN_02010FD0
- ldr r0, _020113E8 ; =0x00000385
- mov r1, #0x0
- strb r1, [r5, r0]
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-_020113E8: .word 0x00000385
-
- thumb_func_start FUN_020113EC
-FUN_020113EC: ; 0x020113EC
- push {r4-r6, lr}
- sub sp, #0x8
- add r4, r1, #0x0
- ldr r1, _0201147C ; =0x00000385
- add r5, r0, #0x0
- ldrb r1, [r5, r1]
- mov r6, #0x0
- cmp r1, #0x0
- beq _02011408
- cmp r1, #0x1
- beq _02011460
- cmp r1, #0x2
- beq _02011474
- b _02011476
-_02011408:
- add r0, #0x4c
- bl FUN_020110BC
- cmp r0, #0x1
- bne _02011476
- ldr r2, _0201147C ; =0x00000385
- ldrb r0, [r5, r2]
- sub r1, r2, #0x5
- add r0, r0, #0x1
- strb r0, [r5, r2]
- ldr r0, [r4, #0x10]
- sub r2, r2, #0x1
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x18]
- str r0, [sp, #0x4]
- ldrb r2, [r5, r2]
- ldr r1, [r5, r1]
- ldr r3, [r4, #0x8]
- add r0, r5, #0x0
- bl FUN_0200FE20
- mov r0, #0xe
- lsl r0, r0, #0x6
- ldr r3, [r5, r0]
- add r0, r3, #0x0
- add r0, #0x20
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- ldr r0, [r4, #0x18]
- bne _02011452
- add r3, #0x23
- ldrb r3, [r3, #0x0]
- ldr r2, [r4, #0x10]
- mov r1, #0x1
- bl FUN_0200F6E4
- b _02011476
-_02011452:
- add r3, #0x23
- ldrb r3, [r3, #0x0]
- ldr r2, [r4, #0x10]
- mov r1, #0x2
- bl FUN_0200F6E4
- b _02011476
-_02011460:
- bl FUN_0200FE90
- cmp r0, #0x1
- bne _02011476
- ldr r0, _0201147C ; =0x00000385
- mov r6, #0x1
- ldrb r1, [r5, r0]
- add r1, r1, #0x1
- strb r1, [r5, r0]
- b _02011476
-_02011474:
- mov r6, #0x1
-_02011476:
- add r0, r6, #0x0
- add sp, #0x8
- pop {r4-r6, pc}
- .balign 4
-_0201147C: .word 0x00000385
-
thumb_func_start FUN_02011480
FUN_02011480: ; 0x02011480
cmp r1, #0x0
diff --git a/arm9/asm/unk_02015D14.s b/arm9/asm/unk_02015D14.s
deleted file mode 100644
index 7a67039f..00000000
--- a/arm9/asm/unk_02015D14.s
+++ /dev/null
@@ -1,238 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020ED734
-UNK_020ED734: ; 0x020ED734
- .short 0x0001, 0x01DE, 0x0003, 0x0003, 0x0005, 0x0005, 0x0007, 0x0007
- .short 0x0009, 0x0009, 0x000B, 0x000B, 0x000C, 0x000C, 0x000E, 0x000E
- .short 0x0010, 0x0010, 0x0012, 0x0012, 0x0014, 0x0014, 0x0016, 0x0016
- .short 0x0018, 0x0018, 0x001A, 0x001A, 0x001C, 0x001C, 0x001E, 0x001E
- .short 0x0020, 0x0020, 0x0022, 0x0022, 0x0025, 0x0025, 0x0027, 0x0027
- .short 0x0029, 0x0029, 0x002B, 0x002B, 0x002C, 0x002C, 0x002D, 0x002D
- .short 0x002E, 0x002E, 0x002F, 0x002F, 0x0030, 0x0030, 0x0033, 0x0033
- .short 0x0036, 0x0036, 0x0039, 0x0039, 0x003C, 0x003C, 0x003F, 0x003F
- .short 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042, 0x0043, 0x0043
- .short 0x0045, 0x0045, 0x0047, 0x0047, 0x0049, 0x0049, 0x004A, 0x004A
- .short 0x004B, 0x004B, 0x004C, 0x004C, 0x004D, 0x004D, 0x004E, 0x004E
- .short 0x004F, 0x004F, 0x0050, 0x0050, 0x0051, 0x0051, 0x0002, 0x0002
- .short 0x0004, 0x0004, 0x0006, 0x0006, 0x0008, 0x0008, 0x000A, 0x000A
- .short 0x0044, 0x0044, 0x0046, 0x0046, 0x0048, 0x0048, 0x000D, 0x000D
- .short 0x000F, 0x000F, 0x0011, 0x0011, 0x0013, 0x0013, 0x0015, 0x0015
- .short 0x0017, 0x0017, 0x0019, 0x0019, 0x001B, 0x001B, 0x001D, 0x001D
- .short 0x001F, 0x001F, 0x0021, 0x0021, 0x0023, 0x0023, 0x0026, 0x0026
- .short 0x0028, 0x0028, 0x002A, 0x002A, 0x0031, 0x0031, 0x0034, 0x0034
- .short 0x0037, 0x0037, 0x003A, 0x003A, 0x003D, 0x003D, 0x0032, 0x0032
- .short 0x0035, 0x0035, 0x0038, 0x0038, 0x003B, 0x003B, 0x003E, 0x003E
- .short 0x0024, 0x0024, 0x0053, 0x0053, 0x0055, 0x0055, 0x0057, 0x0057
- .short 0x0059, 0x0059, 0x005B, 0x005B, 0x005C, 0x005C, 0x005E, 0x005E
- .short 0x0060, 0x0060, 0x0062, 0x0062, 0x0064, 0x0064, 0x0066, 0x0066
- .short 0x0068, 0x0068, 0x006A, 0x006A, 0x006C, 0x006C, 0x006E, 0x006E
- .short 0x0070, 0x0070, 0x0072, 0x0072, 0x0075, 0x0075, 0x0077, 0x0077
- .short 0x0079, 0x0079, 0x007B, 0x007B, 0x007C, 0x007C, 0x007D, 0x007D
- .short 0x007E, 0x007E, 0x007F, 0x007F, 0x0080, 0x0080, 0x0083, 0x0083
- .short 0x0086, 0x0086, 0x0089, 0x0089, 0x008C, 0x008C, 0x008F, 0x008F
- .short 0x0090, 0x0090, 0x0091, 0x0091, 0x0092, 0x0092, 0x0093, 0x0093
- .short 0x0095, 0x0095, 0x0097, 0x0097, 0x0099, 0x0099, 0x009A, 0x009A
- .short 0x009B, 0x009B, 0x009C, 0x009C, 0x009D, 0x009D, 0x009E, 0x009E
- .short 0x009F, 0x009F, 0x00A0, 0x00A0, 0x00A1, 0x00A1, 0x0052, 0x0052
- .short 0x0054, 0x0054, 0x0056, 0x0056, 0x0058, 0x0058, 0x005A, 0x005A
- .short 0x0094, 0x0094, 0x0096, 0x0096, 0x0098, 0x0098, 0x005D, 0x005D
- .short 0x005F, 0x005F, 0x0061, 0x0061, 0x0063, 0x0063, 0x0065, 0x0065
- .short 0x0067, 0x0067, 0x0069, 0x0069, 0x006B, 0x006B, 0x006D, 0x006D
- .short 0x006F, 0x006F, 0x0071, 0x0071, 0x0073, 0x0073, 0x0076, 0x0076
- .short 0x0078, 0x0078, 0x007A, 0x007A, 0x0081, 0x0081, 0x0084, 0x0084
- .short 0x0087, 0x0087, 0x008A, 0x008A, 0x008D, 0x008D, 0x0082, 0x0082
- .short 0x0085, 0x0085, 0x0088, 0x0088, 0x008B, 0x008B, 0x008E, 0x008E
- .short 0x0074, 0x0074, 0x00A2, 0x0121, 0x00A3, 0x0122, 0x00A4, 0x0123
- .short 0x00A5, 0x0124, 0x00A6, 0x0125, 0x00A7, 0x0126, 0x00A8, 0x0127
- .short 0x00A9, 0x0128, 0x00AA, 0x0129, 0x00AB, 0x012A, 0x00E1, 0x01AB
- .short 0x00E2, 0x01AC, 0x00E4, 0x01AE, 0x00F1, 0x01BE, 0x00E6, 0x01B0
- .short 0x00E5, 0x01AF, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00E8, 0x01B2
- .short 0x00E9, 0x01B3, 0x00EE, 0x01BB, 0x00EF, 0x01BC, 0x0112, 0x0112
- .short 0x00E3, 0x01AD, 0x00F2, 0x0176, 0x00E7, 0x01B1, 0x00AC, 0x012B
- .short 0x00AD, 0x012C, 0x00AE, 0x012D, 0x00AF, 0x012E, 0x00B0, 0x012F
- .short 0x00B1, 0x0130, 0x00B2, 0x0131, 0x00B3, 0x0132, 0x00B4, 0x0133
- .short 0x00B5, 0x0134, 0x00B6, 0x0135, 0x00B7, 0x0136, 0x00B8, 0x0137
- .short 0x00B9, 0x0138, 0x00BA, 0x0139, 0x00BB, 0x013A, 0x00BC, 0x013B
- .short 0x00BD, 0x013C, 0x00BE, 0x013D, 0x00BF, 0x013E, 0x00C0, 0x013F
- .short 0x00C1, 0x0140, 0x00C2, 0x0141, 0x00C3, 0x0142, 0x00C4, 0x0143
- .short 0x00C5, 0x0144, 0x00C6, 0x0145, 0x00C7, 0x0146, 0x00C8, 0x0147
- .short 0x00C9, 0x0148, 0x00CA, 0x0149, 0x00CB, 0x014A, 0x00CC, 0x014B
- .short 0x00CD, 0x014C, 0x00CE, 0x014D, 0x00CF, 0x014E, 0x00D0, 0x014F
- .short 0x00D1, 0x0150, 0x00D2, 0x0151, 0x00D3, 0x0152, 0x00D4, 0x0153
- .short 0x00D5, 0x0154, 0x00D6, 0x0155, 0x00D7, 0x0156, 0x00D8, 0x0157
- .short 0x00D9, 0x0158, 0x00DA, 0x0159, 0x00DB, 0x015A, 0x00DC, 0x015B
- .short 0x00DD, 0x015C, 0x00DE, 0x015D, 0x00DF, 0x015E, 0x011F, 0x011F
- .short 0x00F6, 0x01C4, 0x0163, 0x0163, 0x0175, 0x0175, 0x017B, 0x017B
- .short 0x0183, 0x0183, 0x0195, 0x0195, 0x019B, 0x019B
-
- .text
-
- thumb_func_start FUN_02015D14
-FUN_02015D14: ; 0x02015D14
- cmp r0, #0x7
- bhi _02015D34
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02015D24: ; jump table (using 16-bit offset)
- .short _02015D34 - _02015D24 - 2; case 0
- .short _02015D34 - _02015D24 - 2; case 1
- .short _02015D38 - _02015D24 - 2; case 2
- .short _02015D3E - _02015D24 - 2; case 3
- .short _02015D38 - _02015D24 - 2; case 4
- .short _02015D42 - _02015D24 - 2; case 5
- .short _02015D34 - _02015D24 - 2; case 6
- .short _02015D38 - _02015D24 - 2; case 7
-_02015D34:
- mov r0, #0xea
- bx lr
-_02015D38:
- mov r0, #0x6d
- lsl r0, r0, #0x2
- bx lr
-_02015D3E:
- ldr r0, _02015D48 ; =0x000001B7
- bx lr
-_02015D42:
- ldr r0, _02015D4C ; =0x000001B6
- bx lr
- nop
-_02015D48: .word 0x000001B7
-_02015D4C: .word 0x000001B6
-
- thumb_func_start FUN_02015D50
-FUN_02015D50: ; 0x02015D50
- cmp r0, #0x7
- bhi _02015D70
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02015D60: ; jump table (using 16-bit offset)
- .short _02015D70 - _02015D60 - 2; case 0
- .short _02015D70 - _02015D60 - 2; case 1
- .short _02015D74 - _02015D60 - 2; case 2
- .short _02015D78 - _02015D60 - 2; case 3
- .short _02015D74 - _02015D60 - 2; case 4
- .short _02015D7E - _02015D60 - 2; case 5
- .short _02015D70 - _02015D60 - 2; case 6
- .short _02015D74 - _02015D60 - 2; case 7
-_02015D70:
- mov r0, #0xeb
- bx lr
-_02015D74:
- ldr r0, _02015D84 ; =0x000001B5
- bx lr
-_02015D78:
- mov r0, #0x6e
- lsl r0, r0, #0x2
- bx lr
-_02015D7E:
- mov r0, #0x6d
- lsl r0, r0, #0x2
- bx lr
- .balign 4
-_02015D84: .word 0x000001B5
-
- thumb_func_start FUN_02015D88
-FUN_02015D88: ; 0x02015D88
- push {r3-r7, lr}
- sub sp, #0x10
- add r6, r3, #0x0
- str r0, [sp, #0x0]
- str r1, [sp, #0x4]
- str r2, [sp, #0x8]
- cmp r6, #0x1
- beq _02015D9C
- mov r2, #0x1
- b _02015D9E
-_02015D9C:
- mov r2, #0x0
-_02015D9E:
- ldr r0, [sp, #0x8]
- mov r4, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0xc]
- beq _02015E18
- ldr r1, _02015E28 ; =UNK_020ED734
- lsl r0, r2, #0x1
- ldr r5, [sp, #0x4]
- add r7, r1, r0
-_02015DB0:
- ldr r0, [sp, #0x0]
- ldrb r0, [r0, r4]
- cmp r0, #0xff
- beq _02015E18
- cmp r0, #0xf7
- blo _02015DEA
- ldr r0, [sp, #0x8]
- sub r3, r0, #0x1
- cmp r3, #0xa
- blo _02015DC6
- mov r3, #0xa
-_02015DC6:
- mov r1, #0x0
- cmp r3, #0x0
- ble _02015DDC
- mov r0, #0x6b
- ldr r2, [sp, #0x4]
- lsl r0, r0, #0x2
-_02015DD2:
- add r1, r1, #0x1
- strh r0, [r2, #0x0]
- add r2, r2, #0x2
- cmp r1, r3
- blt _02015DD2
-_02015DDC:
- ldr r0, [sp, #0x4]
- ldr r2, _02015E2C ; =0x0000FFFF
- lsl r1, r1, #0x1
- strh r2, [r0, r1]
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_02015DEA:
- lsl r0, r0, #0x2
- ldrh r0, [r7, r0]
- cmp r0, #0xea
- beq _02015DF8
- cmp r0, #0xeb
- beq _02015E02
- b _02015E0C
-_02015DF8:
- add r0, r6, #0x0
- bl FUN_02015D14
- strh r0, [r5, #0x0]
- b _02015E0E
-_02015E02:
- add r0, r6, #0x0
- bl FUN_02015D50
- strh r0, [r5, #0x0]
- b _02015E0E
-_02015E0C:
- strh r0, [r5, #0x0]
-_02015E0E:
- ldr r0, [sp, #0xc]
- add r4, r4, #0x1
- add r5, r5, #0x2
- cmp r4, r0
- blo _02015DB0
-_02015E18:
- ldr r2, _02015E2C ; =0x0000FFFF
- ldr r0, [sp, #0x4]
- lsl r1, r4, #0x1
- strh r2, [r0, r1]
- mov r0, #0x1
- add sp, #0x10
- pop {r3-r7, pc}
- nop
-_02015E28: .word UNK_020ED734
-_02015E2C: .word 0x0000FFFF
diff --git a/arm9/asm/unk_02021590.s b/arm9/asm/unk_02021590.s
deleted file mode 100644
index a648ab1d..00000000
--- a/arm9/asm/unk_02021590.s
+++ /dev/null
@@ -1,514 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020EE668
-UNK_020EE668: ; 0x020EE668
- .byte 0x00, 0x01, 0x02, 0x03
-
- .global UNK_020EE66C
-UNK_020EE66C: ; 0x020EE66C
- .word FUN_020216EC, FUN_0202171C
-
- .global UNK_020EE674
-UNK_020EE674: ; 0x020EE674
- .word FUN_0202173C, FUN_0202174C
-
- .text
-
- thumb_func_start FUN_02021590
-FUN_02021590: ; 0x02021590
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r6, r1, #0x0
- ldr r0, [sp, #0x20]
- mov r1, #0x78
- add r7, r2, #0x0
- str r3, [sp, #0x4]
- bl AllocFromHeap
- add r4, r0, #0x0
- beq _020215C0
- ldr r1, [sp, #0x20]
- ldr r3, [sp, #0x4]
- str r1, [sp, #0x0]
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02021600
- ldr r2, [sp, #0x20]
- add r0, r4, #0x0
- add r1, r7, #0x0
- bl FUN_020216D4
-_020215C0:
- add r0, r4, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020215C8
-FUN_020215C8: ; 0x020215C8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02021728
- add r0, r4, #0x0
- bl FUN_020216B8
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020215E0
-FUN_020215E0: ; 0x020215E0
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- ldr r1, [r5, #0x0]
- add r6, r2, #0x0
- cmp r1, r4
- beq _020215FC
- bl FUN_02021728
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_020216D4
-_020215FC:
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02021600
-FUN_02021600: ; 0x02021600
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- add r0, r1, #0x0
- ldr r1, [sp, #0x18]
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl NARC_ctor
- str r0, [r5, #0x54]
- cmp r0, #0x0
- beq _020216A6
- add r1, r5, #0x0
- add r1, #0x5c
- str r1, [sp, #0x0]
- add r1, r4, #0x0
- mov r2, #0x0
- mov r3, #0x10
- bl NARC_ReadFromMember
- str r6, [r5, #0x6c]
- cmp r6, #0x0
- beq _02021638
- mov r0, #0x0
- str r0, [r5, #0x74]
- ldr r0, _020216AC ; =FUN_0202192C
- str r0, [r5, #0x70]
- b _02021660
-_02021638:
- ldr r0, [r5, #0x60]
- cmp r0, #0x0
- bne _02021642
- bl GF_AssertFail
-_02021642:
- ldr r0, [sp, #0x18]
- ldr r1, [r5, #0x64]
- bl AllocFromHeap
- str r0, [r5, #0x74]
- ldr r0, _020216B0 ; =FUN_02021924
- add r1, r4, #0x0
- str r0, [r5, #0x70]
- ldr r0, [r5, #0x74]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x54]
- ldr r2, [r5, #0x60]
- ldr r3, [r5, #0x64]
- bl NARC_ReadFromMember
-_02021660:
- add r0, r5, #0x0
- add r0, #0x6a
- ldrb r0, [r0, #0x0]
- cmp r0, #0x2
- bhi _02021674
- add r0, r5, #0x0
- add r0, #0x6b
- ldrb r0, [r0, #0x0]
- cmp r0, #0x2
- bls _02021678
-_02021674:
- bl GF_AssertFail
-_02021678:
- add r0, r5, #0x0
- add r0, #0x6a
- ldrb r0, [r0, #0x0]
- ldr r2, _020216B4 ; =UNK_020EE668
- sub r0, r0, #0x1
- lsl r3, r0, #0x1
- add r0, r5, #0x0
- add r0, #0x6b
- ldrb r0, [r0, #0x0]
- sub r1, r0, #0x1
- add r0, r2, r3
- ldrb r0, [r1, r0]
- str r0, [r5, #0x8]
- add r0, r5, #0x0
- add r0, #0x6b
- ldrb r1, [r0, #0x0]
- add r0, r5, #0x0
- add r0, #0x6a
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x4
- mul r0, r1
- str r0, [r5, #0xc]
- str r4, [r5, #0x58]
-_020216A6:
- add sp, #0x4
- pop {r3-r6, pc}
- nop
-_020216AC: .word FUN_0202192C
-_020216B0: .word FUN_02021924
-_020216B4: .word UNK_020EE668
-
- thumb_func_start FUN_020216B8
-FUN_020216B8: ; 0x020216B8
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x74]
- cmp r0, #0x0
- beq _020216C6
- bl FreeToHeap
-_020216C6:
- ldr r0, [r4, #0x54]
- cmp r0, #0x0
- beq _020216D0
- bl NARC_dtor
-_020216D0:
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020216D4
-FUN_020216D4: ; 0x020216D4
- push {r3, lr}
- add r3, r1, #0x0
- add r1, r2, #0x0
- str r3, [r0, #0x0]
- ldr r2, _020216E8 ; =UNK_020EE66C
- lsl r3, r3, #0x2
- ldr r2, [r2, r3]
- blx r2
- pop {r3, pc}
- nop
-_020216E8: .word UNK_020EE66C
-
- thumb_func_start FUN_020216EC
-FUN_020216EC: ; 0x020216EC
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r2, [r5, #0xc]
- ldr r0, [r5, #0x64]
- add r4, r2, #0x0
- mul r4, r0
- add r0, r1, #0x0
- add r1, r4, #0x0
- bl AllocFromHeap
- str r0, [r5, #0x10]
- ldr r0, _02021718 ; =FUN_02021774
- add r3, r4, #0x0
- str r0, [r5, #0x4]
- ldr r0, [r5, #0x10]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x54]
- ldr r1, [r5, #0x58]
- ldr r2, [r5, #0x5c]
- bl NARC_ReadFromMember
- pop {r3-r5, pc}
- .balign 4
-_02021718: .word FUN_02021774
-
- thumb_func_start FUN_0202171C
-FUN_0202171C: ; 0x0202171C
- ldr r1, _02021724 ; =FUN_0202181C
- str r1, [r0, #0x4]
- bx lr
- nop
-_02021724: .word FUN_0202181C
-
- thumb_func_start FUN_02021728
-FUN_02021728: ; 0x02021728
- push {r3, lr}
- ldr r1, [r0, #0x0]
- lsl r2, r1, #0x2
- ldr r1, _02021738 ; =UNK_020EE674
- ldr r1, [r1, r2]
- blx r1
- pop {r3, pc}
- nop
-_02021738: .word UNK_020EE674
-
- thumb_func_start FUN_0202173C
-FUN_0202173C: ; 0x0202173C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x10]
- bl FreeToHeap
- mov r0, #0x0
- str r0, [r4, #0x10]
- pop {r4, pc}
-
- thumb_func_start FUN_0202174C
-FUN_0202174C: ; 0x0202174C
- bx lr
- .balign 4
-
- thumb_func_start FUN_02021750
-FUN_02021750: ; 0x02021750
- push {r3, lr}
- ldr r3, [r0, #0x64]
- cmp r1, r3
- bhi _02021764
- sub r1, r1, #0x1
- lsl r1, r1, #0x10
- ldr r3, [r0, #0x4]
- lsr r1, r1, #0x10
- blx r3
- pop {r3, pc}
-_02021764:
- add r0, r2, #0x0
- mov r1, #0x0
- add r0, #0x80
- strb r1, [r0, #0x0]
- add r2, #0x81
- strb r1, [r2, #0x0]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02021774
-FUN_02021774: ; 0x02021774
- push {r3-r7, lr}
- str r1, [sp, #0x0]
- add r7, r0, #0x0
- ldr r0, [sp, #0x0]
- ldr r1, [r7, #0xc]
- add r5, r0, #0x0
- ldr r0, [r7, #0x8]
- add r6, r2, #0x0
- mul r5, r1
- ldr r4, [r7, #0x10]
- cmp r0, #0x3
- bhi _02021802
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02021798: ; jump table (using 16-bit offset)
- .short _020217A0 - _02021798 - 2; case 0
- .short _020217AA - _02021798 - 2; case 1
- .short _020217C0 - _02021798 - 2; case 2
- .short _020217D6 - _02021798 - 2; case 3
-_020217A0:
- add r0, r4, r5
- add r1, r6, #0x0
- bl DecompressGlyphTile
- b _02021802
-_020217AA:
- add r0, r4, r5
- add r1, r6, #0x0
- bl DecompressGlyphTile
- add r0, r4, r5
- add r1, r6, #0x0
- add r0, #0x10
- add r1, #0x40
- bl DecompressGlyphTile
- b _02021802
-_020217C0:
- add r0, r4, r5
- add r1, r6, #0x0
- bl DecompressGlyphTile
- add r0, r4, r5
- add r1, r6, #0x0
- add r0, #0x10
- add r1, #0x20
- bl DecompressGlyphTile
- b _02021802
-_020217D6:
- add r0, r4, r5
- add r1, r6, #0x0
- bl DecompressGlyphTile
- add r0, r4, r5
- add r1, r6, #0x0
- add r0, #0x10
- add r1, #0x20
- bl DecompressGlyphTile
- add r0, r4, r5
- add r1, r6, #0x0
- add r0, #0x20
- add r1, #0x40
- bl DecompressGlyphTile
- add r0, r4, r5
- add r1, r6, #0x0
- add r0, #0x30
- add r1, #0x60
- bl DecompressGlyphTile
-_02021802:
- ldr r1, [sp, #0x0]
- ldr r2, [r7, #0x70]
- add r0, r7, #0x0
- blx r2
- add r1, r6, #0x0
- add r1, #0x80
- add r7, #0x69
- strb r0, [r1, #0x0]
- ldrb r0, [r7, #0x0]
- add r6, #0x81
- strb r0, [r6, #0x0]
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0202181C
-FUN_0202181C: ; 0x0202181C
- push {r3-r7, lr}
- add r4, r0, #0x0
- ldr r6, [r4, #0xc]
- add r0, #0x14
- str r0, [sp, #0x0]
- add r7, r1, #0x0
- add r5, r2, #0x0
- add r2, r7, #0x0
- ldr r3, [r4, #0x5c]
- mul r2, r6
- add r2, r3, r2
- ldr r0, [r4, #0x54]
- ldr r1, [r4, #0x58]
- add r3, r6, #0x0
- bl NARC_ReadFromMember
- ldr r0, [r4, #0x8]
- cmp r0, #0x3
- bhi _020218C0
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0202184E: ; jump table (using 16-bit offset)
- .short _02021856 - _0202184E - 2; case 0
- .short _02021862 - _0202184E - 2; case 1
- .short _0202187A - _0202184E - 2; case 2
- .short _02021892 - _0202184E - 2; case 3
-_02021856:
- add r0, r4, #0x0
- add r0, #0x14
- add r1, r5, #0x0
- bl DecompressGlyphTile
- b _020218C0
-_02021862:
- add r0, r4, #0x0
- add r0, #0x14
- add r1, r5, #0x0
- bl DecompressGlyphTile
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r0, #0x24
- add r1, #0x40
- bl DecompressGlyphTile
- b _020218C0
-_0202187A:
- add r0, r4, #0x0
- add r0, #0x14
- add r1, r5, #0x0
- bl DecompressGlyphTile
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r0, #0x24
- add r1, #0x20
- bl DecompressGlyphTile
- b _020218C0
-_02021892:
- add r0, r4, #0x0
- add r0, #0x14
- add r1, r5, #0x0
- bl DecompressGlyphTile
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r0, #0x24
- add r1, #0x20
- bl DecompressGlyphTile
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r0, #0x34
- add r1, #0x40
- bl DecompressGlyphTile
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r0, #0x44
- add r1, #0x60
- bl DecompressGlyphTile
-_020218C0:
- ldr r2, [r4, #0x70]
- add r0, r4, #0x0
- add r1, r7, #0x0
- blx r2
- add r1, r5, #0x0
- add r1, #0x80
- add r4, #0x69
- strb r0, [r1, #0x0]
- ldrb r0, [r4, #0x0]
- add r5, #0x81
- strb r0, [r5, #0x0]
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020218D8
-FUN_020218D8: ; 0x020218D8
- push {r3-r7, lr}
- add r4, r1, #0x0
- ldrh r1, [r4, #0x0]
- add r5, r0, #0x0
- ldr r0, _0202191C ; =0x0000FFFF
- add r7, r2, #0x0
- mov r6, #0x0
- cmp r1, r0
- beq _02021916
-_020218EA:
- ldr r0, _02021920 ; =0x0000FFFE
- cmp r1, r0
- bne _02021900
- add r0, r4, #0x0
- bl MsgArray_SkipControlCode
- add r4, r0, #0x0
- ldrh r1, [r4, #0x0]
- ldr r0, _0202191C ; =0x0000FFFF
- cmp r1, r0
- beq _02021916
-_02021900:
- ldr r2, [r5, #0x70]
- add r0, r5, #0x0
- sub r1, r1, #0x1
- blx r2
- add r4, r4, #0x2
- add r0, r7, r0
- add r6, r6, r0
- ldrh r1, [r4, #0x0]
- ldr r0, _0202191C ; =0x0000FFFF
- cmp r1, r0
- bne _020218EA
-_02021916:
- sub r0, r6, r7
- pop {r3-r7, pc}
- nop
-_0202191C: .word 0x0000FFFF
-_02021920: .word 0x0000FFFE
-
- thumb_func_start FUN_02021924
-FUN_02021924: ; 0x02021924
- ldr r0, [r0, #0x74]
- ldrb r0, [r0, r1]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0202192C
-FUN_0202192C: ; 0x0202192C
- add r0, #0x68
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index 94c65983..d0bddd04 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -550,7 +550,7 @@ _02035440:
bl FUN_02035718
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0x0
bl RemoveWindow
add r0, r6, #0x0
@@ -630,7 +630,7 @@ FUN_0203549C: ; 0x0203549C
add r0, r4, #0x0
mov r1, #0x1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r2, _02035660 ; =0x00000143
mov r0, #0x0
mov r1, #0x1a
@@ -962,7 +962,7 @@ _0203576C:
add r0, #0x10
mov r1, #0x1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0x0
add r0, #0x10
mov r1, #0xf
@@ -1090,7 +1090,7 @@ _020358CE:
add r0, r5, #0x0
add r0, #0x10
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r5, #0x10
add r0, r5, #0x0
bl RemoveWindow
@@ -2654,7 +2654,7 @@ FUN_020365BC: ; 0x020365BC
bl FUN_02035718
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldrb r1, [r4, #0x4]
ldr r0, [r4, #0x0]
bl ScheduleBgTilemapBufferTransfer
@@ -2924,7 +2924,7 @@ FUN_020367E8: ; 0x020367E8
bl FUN_02035718
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldrb r1, [r4, #0x4]
ldr r0, [r4, #0x0]
bl ScheduleBgTilemapBufferTransfer
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index aea1dbf8..d33d8df2 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -682,9 +682,9 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_GetPartyMonNature
.word ScrCmd_FindPartyMonWithNature
.word ScrCmd_Unk0214
- .word ScrCmd_Unk0215
- .word ScrCmd_Unk0216
- .word ScrCmd_Unk0217
+ .word ScrCmd_ClearAmitySquareSteps
+ .word ScrCmd_CheckAmitySquareSteps
+ .word ScrCmd_GetAmitySquareAccessory
.word ScrCmd_Unk0218
.word ScrCmd_Unk0219
.word ScrCmd_Unk021A
diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s
index 68018241..55ee967c 100644
--- a/arm9/asm/unk_02048120.s
+++ b/arm9/asm/unk_02048120.s
@@ -218,7 +218,7 @@ _020482B2:
add r0, r4, #0x0
add r0, #0xc
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
add r0, #0xc
bl RemoveWindow
@@ -376,12 +376,12 @@ _0204840C:
mvn r0, r0
mov r1, #0x37
mov r2, #0x1
- bl FUN_0200A274
+ bl SetBrightness
mov r0, #0xf
mvn r0, r0
mov r1, #0x3f
mov r2, #0x2
- bl FUN_0200A274
+ bl SetBrightness
add r0, r6, #0x0
add r1, r5, #0x0
bl FUN_02048164
@@ -400,7 +400,7 @@ _02048442:
mov r0, #0x0
mov r1, #0x3f
mov r2, #0x3
- bl FUN_0200A274
+ bl SetBrightness
bl FUN_02034E8C
add r7, r0, #0x0
ldr r0, [r6, #0xc]
diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s
index 8cf0ee61..6c2c53b9 100644
--- a/arm9/asm/unk_02048904.s
+++ b/arm9/asm/unk_02048904.s
@@ -2061,7 +2061,7 @@ _0204992E:
add r0, r4, #0x0
add r0, #0x24
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
add r0, #0x24
bl RemoveWindow
@@ -2072,7 +2072,7 @@ _02049946:
add r0, r4, #0x0
add r0, #0x24
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
add r0, #0x24
bl RemoveWindow
@@ -2218,14 +2218,14 @@ _02049A64:
mov r0, #0x1e
sub r2, #0x10
mov r3, #0x19
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
b _02049AB2
_02049A96:
mov r0, #0x2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0x0
beq _02049AB2
mov r0, #0x1
@@ -2287,14 +2287,14 @@ _02049B02:
sub r1, #0x2e
mov r2, #0x0
mov r3, #0x1
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
b _02049BDC
_02049B2C:
mov r0, #0x2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0x0
beq _02049BDC
ldr r0, [r5, #0x68]
diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s
index ae7380b7..e7a0de7c 100644
--- a/arm9/asm/unk_02050E48.s
+++ b/arm9/asm/unk_02050E48.s
@@ -1180,7 +1180,7 @@ _02051798:
add r0, r4, #0x0
add r0, #0x14
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x0
ldr r2, [r4, #0x8]
add r1, r0, #0x0
@@ -1245,7 +1245,7 @@ FUN_02051810: ; 0x02051810
add r0, r5, #0x0
add r0, #0x14
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0x0
add r0, #0x14
bl ClearWindowTilemapAndCopyToVram
@@ -1782,7 +1782,7 @@ _02051C34:
mov r1, #0x0
mov r2, #0x1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r1, r5, #0x0
ldr r0, [sp, #0x14]
add r1, #0x81
@@ -1891,7 +1891,7 @@ _02051D0A:
mov r1, #0x0
mov r2, #0x1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add sp, #0x18
pop {r3-r7, pc}
.balign 4
@@ -2006,12 +2006,12 @@ _02051E20: .word 0x000005DC
thumb_func_start FUN_02051E24
FUN_02051E24: ; 0x02051E24
- ldr r3, _02051E2C ; =FUN_0200CCF8
+ ldr r3, _02051E2C ; =ClearFrameAndWindow1
ldr r0, [r0, #0x7c]
mov r1, #0x1
bx r3
.balign 4
-_02051E2C: .word FUN_0200CCF8
+_02051E2C: .word ClearFrameAndWindow1
thumb_func_start FUN_02051E30
FUN_02051E30: ; 0x02051E30
@@ -2202,7 +2202,7 @@ _02051F7C:
add r0, r4, #0x0
add r0, #0x8
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
add r0, #0x8
bl RemoveWindow
diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s
index ccff7b32..43f1137e 100644
--- a/arm9/asm/unk_0205CE48.s
+++ b/arm9/asm/unk_0205CE48.s
@@ -1462,7 +1462,7 @@ _0205D95C:
beq _0205D9A0
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldrh r0, [r4, #0x16]
add r0, r0, #0x1
strh r0, [r4, #0x16]
diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s
index 2813b999..f09d524b 100644
--- a/arm9/asm/unk_020625EC.s
+++ b/arm9/asm/unk_020625EC.s
@@ -1188,7 +1188,7 @@ FUN_02062EC4: ; 0x02062EC4
add r4, r0, #0x0
add r0, #0xe4
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
add r0, #0xe4
bl ClearWindowTilemapAndCopyToVram
@@ -1464,13 +1464,13 @@ _02063094:
add r0, #0xd4
mov r1, #0x0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0x0
ldr r2, _02063170 ; =0x000003E2
add r0, #0xe4
mov r1, #0x1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0x0
add r0, #0xe4
mov r1, #0xff
@@ -1526,7 +1526,7 @@ FUN_02063178: ; 0x02063178
add r0, r4, #0x0
add r0, #0xd4
mov r1, #0x0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0x0
add r0, #0xd4
bl RemoveWindow
@@ -1872,7 +1872,7 @@ FUN_02063430: ; 0x02063430
add r0, #0xd4
mov r1, #0x1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0x0
mov r1, #0x0
bl FUN_020632A4
@@ -1933,7 +1933,7 @@ FUN_020634DC: ; 0x020634DC
add r0, r4, #0x0
add r0, #0xd4
mov r1, #0x0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0x0
add r0, #0xd4
bl RemoveWindow
diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s
index 8fa3df67..1094df5d 100644
--- a/arm9/asm/unk_020653EC.s
+++ b/arm9/asm/unk_020653EC.s
@@ -1119,7 +1119,7 @@ _02065C64:
ldr r2, _02065CF4 ; =0x000003D9
mov r1, #0x0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r1, #0x0
str r1, [sp, #0x0]
mov r2, #0x65
@@ -1139,7 +1139,7 @@ _02065C64:
add r0, r5, r0
mov r1, #0x0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x17
lsl r0, r0, #0x4
ldr r0, [r5, r0]
@@ -1371,7 +1371,7 @@ _02065E14:
ldr r2, _02065EDC ; =0x000003D9
mov r1, #0x0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x17
lsl r0, r0, #0x4
ldr r0, [r5, r0]
@@ -1431,7 +1431,7 @@ FUN_02065EF8: ; 0x02065EF8
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0x65
lsl r0, r0, #0x2
add r0, r4, r0
@@ -1444,7 +1444,7 @@ FUN_02065EF8: ; 0x02065EF8
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
@@ -1488,7 +1488,7 @@ FUN_02065F8C: ; 0x02065F8C
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0x16
lsl r0, r0, #0x4
add r1, sp, #0x0
@@ -2055,7 +2055,7 @@ FUN_02066404: ; 0x02066404
add r0, r5, r0
mov r1, #0x1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_02066426:
mov r1, #0xd8
str r1, [sp, #0x0]
@@ -2147,7 +2147,7 @@ FUN_020664D8: ; 0x020664D8
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x61
lsl r0, r0, #0x2
add r0, r4, r0
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index 90e19c61..345ecae1 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -152,7 +152,7 @@ FUN_0206C700: ; 0x0206C700
mov r1, #0x0
mov r2, #0x1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0x0
bl FUN_02006D98
str r0, [r4, #0x18]
@@ -1440,7 +1440,7 @@ _0206D2EE:
mov r1, #0x0
mov r2, #0x1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r4, #0x1c]
mov r1, #0x6
mov r2, #0x0
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index c504af1a..07679fac 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -765,12 +765,12 @@ _0206F914:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
@@ -3665,7 +3665,7 @@ FUN_020710C4: ; 0x020710C4
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xc
mov r1, #0x8
bl AllocFromHeap
@@ -4734,7 +4734,7 @@ _020718EC:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0x0
bl FUN_02073DB4
ldr r0, _02071940 ; =0x000005A4
@@ -4992,7 +4992,7 @@ _02071ADE:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _02071C28 ; =0x000005C8
mov r1, #0x0
ldr r0, [r4, r0]
@@ -5112,7 +5112,7 @@ _02071BE0:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _02071C28 ; =0x000005C8
mov r1, #0x0
ldr r0, [r4, r0]
@@ -5642,7 +5642,7 @@ _02072054:
mov r1, #0x1
mov r2, #0xa
mov r3, #0xf
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, r7
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -5936,7 +5936,7 @@ FUN_020722B8: ; 0x020722B8
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
mov r1, #0x1d
mov r2, #0x1
@@ -6061,7 +6061,7 @@ _020723D6:
mov r1, #0x1
mov r2, #0xa
mov r3, #0xf
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #0x89
lsl r0, r0, #0x2
add r0, r5, r0
diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s
index 92121142..521570bf 100644
--- a/arm9/asm/unk_02072548.s
+++ b/arm9/asm/unk_02072548.s
@@ -540,7 +540,7 @@ _0207291E:
add r0, r5, r0
add r2, r1, #0x0
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0xc
str r0, [sp, #0x0]
mov r0, #0x2
@@ -1559,7 +1559,7 @@ FUN_02073160: ; 0x02073160
mov r1, #0x1
mov r2, #0xa
mov r3, #0xf
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_0207317A:
add r0, r4, #0x0
mov r1, #0xf
@@ -1630,7 +1630,7 @@ FUN_020731E8: ; 0x020731E8
mov r1, #0x1
mov r2, #0xa
mov r3, #0xf
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_02073202:
add r0, r5, r6
mov r1, #0xf
@@ -2041,7 +2041,7 @@ FUN_020734C0: ; 0x020734C0
add r0, r5, r0
add r2, r1, #0x0
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r5, r0
@@ -2236,7 +2236,7 @@ FUN_020736F4: ; 0x020736F4
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r4, r0
diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s
index 8a959bef..f3d54fee 100644
--- a/arm9/asm/unk_02073DA8.s
+++ b/arm9/asm/unk_02073DA8.s
@@ -35,7 +35,7 @@ FUN_02073DB4: ; 0x02073DB4
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r4, r0
@@ -124,7 +124,7 @@ FUN_02073DF4: ; 0x02073DF4
strb r6, [r2, #0xb]
add r2, r1, #0x0
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0xc
str r0, [sp, #0x0]
mov r0, #0x2
@@ -179,7 +179,7 @@ FUN_02073EEC: ; 0x02073EEC
add r4, r1, #0x0
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02074044 ; =0x000006FC
mov r1, #0x0
ldr r0, [r5, r0]
@@ -311,7 +311,7 @@ _02074018:
mov r1, #0x1
mov r2, #0xa
mov r3, #0xf
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #0x89
lsl r0, r0, #0x2
add r0, r5, r0
@@ -349,7 +349,7 @@ FUN_0207405C: ; 0x0207405C
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
mov r1, #0x1d
mov r2, #0x1
@@ -436,7 +436,7 @@ FUN_020740AC: ; 0x020740AC
strb r6, [r2, #0xb]
add r2, r1, #0x0
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0xc
str r0, [sp, #0x0]
mov r0, #0x2
@@ -490,7 +490,7 @@ FUN_020741A4: ; 0x020741A4
add r4, r1, #0x0
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _020741EC ; =0x000006FC
mov r1, #0x0
ldr r0, [r5, r0]
@@ -679,7 +679,7 @@ FUN_02074340: ; 0x02074340
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
mov r1, #0x1d
mov r2, #0x1
@@ -706,7 +706,7 @@ FUN_0207436C: ; 0x0207436C
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
mov r1, #0x1d
mov r2, #0x1
@@ -810,7 +810,7 @@ FUN_02074454: ; 0x02074454
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
mov r1, #0x1d
mov r2, #0x1
@@ -889,7 +889,7 @@ FUN_02074480: ; 0x02074480
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0x0
bl FUN_02073DB4
add r0, r5, #0x0
@@ -2049,7 +2049,7 @@ FUN_02074E74: ; 0x02074E74
add r6, r1, #0x0
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0x0
bl FUN_02073DB4
ldr r0, _02074F5C ; =0x000005A4
@@ -2177,7 +2177,7 @@ FUN_02074F6C: ; 0x02074F6C
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
mov r1, #0x22
mov r2, #0x1
@@ -2288,7 +2288,7 @@ _02075046:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0x0
bl FUN_02073DB4
add r0, r5, #0x0
@@ -2368,7 +2368,7 @@ FUN_020750F8: ; 0x020750F8
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0x0
bl FUN_02075118
str r0, [r4, #0x0]
@@ -2502,7 +2502,7 @@ _0207520A:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
bl FUN_02073DB4
add r0, r4, #0x0
@@ -2733,7 +2733,7 @@ FUN_020753B4: ; 0x020753B4
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
bl FUN_02073DB4
ldr r0, _020754A8 ; =0x00000B25
@@ -2861,7 +2861,7 @@ FUN_020754D0: ; 0x020754D0
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
mov r1, #0x1d
mov r2, #0x1
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index 0ad8aad2..eec999c6 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -1729,7 +1729,7 @@ _02076360:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0x0
add r1, r5, #0x0
bl FUN_020709FC
@@ -3276,7 +3276,7 @@ _020770DC:
add r0, r4, r0
add r2, r1, #0x0
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0xc
str r0, [sp, #0x0]
mov r0, #0x2
@@ -3316,12 +3316,12 @@ _02077130:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x91
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _0207722C ; =0x000006FC
mov r1, #0x0
ldr r0, [r5, r0]
@@ -3341,12 +3341,12 @@ _0207716A:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x91
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _0207722C ; =0x000006FC
mov r1, #0x0
ldr r0, [r5, r0]
@@ -3441,7 +3441,7 @@ FUN_02077248: ; 0x02077248
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _020772BC ; =0x00000B25
ldr r2, _020772C0 ; =0x0000070C
ldrb r1, [r4, r0]
diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s
index cdf9258d..00a42326 100644
--- a/arm9/asm/unk_020772F0.s
+++ b/arm9/asm/unk_020772F0.s
@@ -1020,7 +1020,7 @@ _02077594:
mov r1, #0x0
lsl r2, r2, #0x8
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0x0
mov r2, #0x6
ldr r0, _020776B0 ; =0x00000448
@@ -1505,7 +1505,7 @@ _02077982:
lsl r0, r0, #0x2
ldr r0, [r4, r0]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
ldr r1, _02077A70 ; =0x000004AC
mov r0, #0x12
ldr r1, [r4, r1]
@@ -1655,7 +1655,7 @@ _02077ADA:
FUN_02077AE8: ; 0x02077AE8
push {r3, lr}
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _02077B00 ; =0x027E0000
ldr r1, _02077B04 ; =0x00003FF8
mov r0, #0x1
@@ -3328,7 +3328,7 @@ FUN_02078894: ; 0x02078894
lsl r2, r2, #0x8
mov r3, #0xa
add r5, r0, #0x0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0x0
str r3, [sp, #0x0]
str r3, [sp, #0x4]
diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s
index 3d3fd3fe..ea1b0029 100644
--- a/arm9/asm/unk_0207D5BC.s
+++ b/arm9/asm/unk_0207D5BC.s
@@ -3095,7 +3095,7 @@ _0207EF10:
add r0, r6, #0x0
mov r1, #0x1
mov r3, #0xd
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r6, #0x0
mov r1, #0xf
bl FillWindowPixelBuffer
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index 4f43b41e..e8299712 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -3370,7 +3370,7 @@ FUN_0208251C: ; 0x0208251C
add r5, r1, #0x0
ldr r4, [r5, r0]
mov r0, #0x1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0x0
beq _02082594
ldrb r0, [r4, #0xb]
@@ -3392,7 +3392,7 @@ FUN_0208251C: ; 0x0208251C
mov r1, #0x0
mov r2, #0x4
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _0208259C ; =0x000005F8
bl PlaySE
ldrb r0, [r4, #0xa]
diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s
index f5e751fa..66073837 100644
--- a/arm9/asm/unk_02086414.s
+++ b/arm9/asm/unk_02086414.s
@@ -549,7 +549,7 @@ FUN_02086784: ; 0x02086784
mov r1, #0x1
mov r2, #0x14
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0x0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -711,7 +711,7 @@ _020868DE:
ldr r0, [sp, #0x14]
mov r2, #0x32
mov r3, #0xd
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x47
str r0, [sp, #0x0]
mov r0, #0x2
@@ -733,7 +733,7 @@ FUN_02086960: ; 0x02086960
add r4, r0, #0x0
add r0, #0x28
mov r1, #0x1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0x0
add r0, #0x28
bl ClearWindowTilemapAndCopyToVram
diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s
index b6b6ec25..ee6d24c9 100644
--- a/arm9/asm/unk_02089498.s
+++ b/arm9/asm/unk_02089498.s
@@ -545,7 +545,7 @@ _020898B8:
add r0, #0x1c
add r1, r6, #0x0
mov r3, #0x2
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #0x1
ldr r1, [r5, #0x0]
lsl r0, r0, #0xa
diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s
index 7af6109f..d6f9c061 100644
--- a/arm9/asm/unk_02089960.s
+++ b/arm9/asm/unk_02089960.s
@@ -472,7 +472,7 @@ _02089CE8:
add r0, #0x20
add r1, r6, #0x0
mov r3, #0x2
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #0x1
ldr r1, [r5, #0x0]
lsl r0, r0, #0xa
diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s
deleted file mode 100644
index 4ef386dd..00000000
--- a/arm9/asm/unk_02089D90.s
+++ /dev/null
@@ -1,188 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern gMain
-
- .section .rodata
-
- .global UNK_020FF3E4
-UNK_020FF3E4: ; 0x020FF3E4
- .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00
-
- .global UNK_020FF3EC
-UNK_020FF3EC: ; 0x020FF3EC
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020FF3FC
-UNK_020FF3FC: ; 0x020FF3FC
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020FF418
-UNK_020FF418: ; 0x020FF418
- .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .text
-
- thumb_func_start FUN_02089D90
-FUN_02089D90: ; 0x02089D90
- push {r3-r6, lr}
- sub sp, #0x1c
- add r4, r0, #0x0
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_0200E3A0
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_0200E3A0
- mov r0, #0x0
- add r1, r0, #0x0
- bl Main_SetVBlankIntrCB
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_02015F34
- bl GX_DisableEngineALayers
- bl GX_DisableEngineBLayers
- mov r2, #0x1
- lsl r2, r2, #0x1a
- ldr r1, [r2, #0x0]
- ldr r0, _02089EF4 ; =0xFFFFE0FF
- and r1, r0
- str r1, [r2, #0x0]
- ldr r2, _02089EF8 ; =0x04001000
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- mov r0, #0x4
- mov r1, #0x8
- bl SetKeyRepeatTimers
- ldr r0, _02089EFC ; =gMain + 0x60
- mov r1, #0x0
- strb r1, [r0, #0x5]
- bl GX_SwapDisplay
- ldr r3, _02089F00 ; =0x04000050
- mov r0, #0x0
- strh r0, [r3, #0x0]
- ldr r2, _02089F04 ; =0x04001050
- sub r3, #0x50
- strh r0, [r2, #0x0]
- ldr r1, [r3, #0x0]
- ldr r0, _02089F08 ; =0xFFFF1FFF
- sub r2, #0x50
- and r1, r0
- str r1, [r3, #0x0]
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- ldr r0, _02089F0C ; =UNK_020FF418
- bl GX_SetBanks
- add r0, r4, #0x0
- bl BgConfig_Alloc
- add r5, r0, #0x0
- ldr r0, _02089F10 ; =UNK_020FF3EC
- bl SetBothScreensModesAndDisable
- mov r1, #0x0
- ldr r2, _02089F14 ; =UNK_020FF3FC
- add r0, r5, #0x0
- add r3, r1, #0x0
- bl InitBgFromTemplate
- add r0, r5, #0x0
- mov r1, #0x0
- bl BgClearTilemapBufferAndCommit
- mov r1, #0x0
- str r1, [sp, #0x0]
- ldr r2, _02089F18 ; =0x000001F7
- add r0, r5, #0x0
- mov r3, #0x2
- str r4, [sp, #0x4]
- bl FUN_0200CB00
- mov r0, #0x0
- mov r1, #0x20
- add r2, r4, #0x0
- bl FUN_02002ED0
- mov r0, #0x0
- mov r1, #0x20
- add r2, r0, #0x0
- add r3, r4, #0x0
- bl BG_ClearCharDataRange
- ldr r1, _02089F1C ; =0x00006C21
- mov r0, #0x0
- bl BG_SetMaskColor
- ldr r1, _02089F1C ; =0x00006C21
- mov r0, #0x4
- bl BG_SetMaskColor
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0x5
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r6, r0, #0x0
- mov r0, #0x6
- lsl r0, r0, #0x6
- add r1, r4, #0x0
- bl String_ctor
- add r4, r0, #0x0
- bl FUN_0201BD5C
- ldr r2, _02089F20 ; =UNK_020FF3E4
- add r0, r5, #0x0
- add r1, sp, #0xc
- bl AddWindow
- mov r0, #0xd0
- str r0, [sp, #0x0]
- mov r0, #0x90
- mov r2, #0x0
- str r0, [sp, #0x4]
- add r0, sp, #0xc
- mov r1, #0xf
- add r3, r2, #0x0
- bl FillWindowPixelRect
- ldr r2, _02089F18 ; =0x000001F7
- add r0, sp, #0xc
- mov r1, #0x0
- mov r3, #0x2
- bl FUN_0200CCA4
- add r0, r6, #0x0
- mov r1, #0x0
- add r2, r4, #0x0
- bl ReadMsgDataIntoString
- mov r1, #0x0
- str r1, [sp, #0x0]
- str r1, [sp, #0x4]
- add r0, sp, #0xc
- add r2, r4, #0x0
- add r3, r1, #0x0
- str r1, [sp, #0x8]
- bl AddTextPrinterParameterized
- add r0, r4, #0x0
- bl String_dtor
- bl GX_BothDispOn
- mov r0, #0x0
- bl FUN_0200E394
- mov r0, #0x1
- bl FUN_0200E394
- mov r0, #0x0
- mov r1, #0x3f
- mov r2, #0x3
- bl FUN_0200A274
- mov r4, #0x1
-_02089EE4:
- bl HandleDSLidAction
- add r0, r4, #0x0
- add r1, r4, #0x0
- bl OS_WaitIrq
- b _02089EE4
- nop
-_02089EF4: .word 0xFFFFE0FF
-_02089EF8: .word 0x04001000
-_02089EFC: .word gMain + 0x60
-_02089F00: .word 0x04000050
-_02089F04: .word 0x04001050
-_02089F08: .word 0xFFFF1FFF
-_02089F0C: .word UNK_020FF418
-_02089F10: .word UNK_020FF3EC
-_02089F14: .word UNK_020FF3FC
-_02089F18: .word 0x000001F7
-_02089F1C: .word 0x00006C21
-_02089F20: .word UNK_020FF3E4
diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s
deleted file mode 100644
index 63f6e77a..00000000
--- a/arm9/asm/unk_02089F24.s
+++ /dev/null
@@ -1,362 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern gMain
- .extern UNK_020FF3E4
- .extern UNK_020FF3EC
- .extern UNK_020FF3FC
- .extern UNK_020FF418
-
- .section .rodata
-
- .global UNK_020FF440
-UNK_020FF440: ; 0x020FF440
- .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00
-
- .global UNK_020FF448
-UNK_020FF448: ; 0x020FF448
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020FF458
-UNK_020FF458: ; 0x020FF458
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020FF474
-UNK_020FF474: ; 0x020FF474
- .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .text
-
- thumb_func_start FUN_02089F24
-FUN_02089F24: ; 0x02089F24
- push {r3-r6, lr}
- sub sp, #0x1c
- add r4, r0, #0x0
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_0200E3A0
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_0200E3A0
- mov r0, #0x0
- add r1, r0, #0x0
- bl Main_SetVBlankIntrCB
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_02015F34
- bl GX_DisableEngineALayers
- bl GX_DisableEngineBLayers
- mov r2, #0x1
- lsl r2, r2, #0x1a
- ldr r1, [r2, #0x0]
- ldr r0, _0208A088 ; =0xFFFFE0FF
- and r1, r0
- str r1, [r2, #0x0]
- ldr r2, _0208A08C ; =0x04001000
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- mov r0, #0x4
- mov r1, #0x8
- bl SetKeyRepeatTimers
- ldr r0, _0208A090 ; =gMain + 0x60
- mov r1, #0x0
- strb r1, [r0, #0x5]
- bl GX_SwapDisplay
- ldr r3, _0208A094 ; =0x04000050
- mov r0, #0x0
- strh r0, [r3, #0x0]
- ldr r2, _0208A098 ; =0x04001050
- sub r3, #0x50
- strh r0, [r2, #0x0]
- ldr r1, [r3, #0x0]
- ldr r0, _0208A09C ; =0xFFFF1FFF
- sub r2, #0x50
- and r1, r0
- str r1, [r3, #0x0]
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- ldr r0, _0208A0A0 ; =UNK_020FF418
- bl GX_SetBanks
- add r0, r4, #0x0
- bl BgConfig_Alloc
- add r5, r0, #0x0
- ldr r0, _0208A0A4 ; =UNK_020FF3EC
- bl SetBothScreensModesAndDisable
- mov r1, #0x0
- ldr r2, _0208A0A8 ; =UNK_020FF3FC
- add r0, r5, #0x0
- add r3, r1, #0x0
- bl InitBgFromTemplate
- add r0, r5, #0x0
- mov r1, #0x0
- bl BgClearTilemapBufferAndCommit
- mov r1, #0x0
- str r1, [sp, #0x0]
- ldr r2, _0208A0AC ; =0x000001F7
- add r0, r5, #0x0
- mov r3, #0x2
- str r4, [sp, #0x4]
- bl FUN_0200CB00
- mov r0, #0x0
- mov r1, #0x20
- add r2, r4, #0x0
- bl FUN_02002ED0
- mov r0, #0x0
- mov r1, #0x20
- add r2, r0, #0x0
- add r3, r4, #0x0
- bl BG_ClearCharDataRange
- ldr r1, _0208A0B0 ; =0x00006C21
- mov r0, #0x0
- bl BG_SetMaskColor
- ldr r1, _0208A0B0 ; =0x00006C21
- mov r0, #0x4
- bl BG_SetMaskColor
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0x5
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r6, r0, #0x0
- mov r0, #0x6
- lsl r0, r0, #0x6
- add r1, r4, #0x0
- bl String_ctor
- add r4, r0, #0x0
- bl FUN_0201BD5C
- ldr r2, _0208A0B4 ; =UNK_020FF3E4
- add r0, r5, #0x0
- add r1, sp, #0xc
- bl AddWindow
- mov r0, #0xd0
- str r0, [sp, #0x0]
- mov r0, #0x90
- mov r2, #0x0
- str r0, [sp, #0x4]
- add r0, sp, #0xc
- mov r1, #0xf
- add r3, r2, #0x0
- bl FillWindowPixelRect
- ldr r2, _0208A0AC ; =0x000001F7
- add r0, sp, #0xc
- mov r1, #0x0
- mov r3, #0x2
- bl FUN_0200CCA4
- add r0, r6, #0x0
- mov r1, #0x1
- add r2, r4, #0x0
- bl ReadMsgDataIntoString
- mov r1, #0x0
- str r1, [sp, #0x0]
- str r1, [sp, #0x4]
- add r0, sp, #0xc
- add r2, r4, #0x0
- add r3, r1, #0x0
- str r1, [sp, #0x8]
- bl AddTextPrinterParameterized
- add r0, r4, #0x0
- bl String_dtor
- bl GX_BothDispOn
- mov r0, #0x0
- bl FUN_0200E394
- mov r0, #0x1
- bl FUN_0200E394
- mov r0, #0x0
- mov r1, #0x3f
- mov r2, #0x3
- bl FUN_0200A274
- mov r4, #0x1
-_0208A078:
- bl HandleDSLidAction
- add r0, r4, #0x0
- add r1, r4, #0x0
- bl OS_WaitIrq
- b _0208A078
- nop
-_0208A088: .word 0xFFFFE0FF
-_0208A08C: .word 0x04001000
-_0208A090: .word gMain + 0x60
-_0208A094: .word 0x04000050
-_0208A098: .word 0x04001050
-_0208A09C: .word 0xFFFF1FFF
-_0208A0A0: .word UNK_020FF418
-_0208A0A4: .word UNK_020FF3EC
-_0208A0A8: .word UNK_020FF3FC
-_0208A0AC: .word 0x000001F7
-_0208A0B0: .word 0x00006C21
-_0208A0B4: .word UNK_020FF3E4
-
- thumb_func_start FUN_0208A0B8
-FUN_0208A0B8: ; 0x0208A0B8
- push {r4-r7, lr}
- sub sp, #0x1c
- add r4, r0, #0x0
- cmp r1, #0x0
- bne _0208A0C6
- mov r6, #0x1
- b _0208A0C8
-_0208A0C6:
- mov r6, #0x0
-_0208A0C8:
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_0200E3A0
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_0200E3A0
- bl FUN_02015EF4
- mov r0, #0x0
- add r1, r0, #0x0
- bl Main_SetVBlankIntrCB
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_02015F34
- bl GX_DisableEngineALayers
- bl GX_DisableEngineBLayers
- mov r2, #0x1
- lsl r2, r2, #0x1a
- ldr r1, [r2, #0x0]
- ldr r0, _0208A228 ; =0xFFFFE0FF
- and r1, r0
- str r1, [r2, #0x0]
- ldr r2, _0208A22C ; =0x04001000
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- mov r0, #0x4
- mov r1, #0x8
- bl SetKeyRepeatTimers
- ldr r0, _0208A230 ; =gMain + 0x60
- mov r1, #0x0
- strb r1, [r0, #0x5]
- bl GX_SwapDisplay
- ldr r3, _0208A234 ; =0x04000050
- mov r1, #0x0
- strh r1, [r3, #0x0]
- ldr r0, _0208A238 ; =0x04001050
- sub r3, #0x50
- strh r1, [r0, #0x0]
- ldr r2, [r3, #0x0]
- ldr r1, _0208A23C ; =0xFFFF1FFF
- sub r0, #0x50
- and r2, r1
- str r2, [r3, #0x0]
- ldr r2, [r0, #0x0]
- and r1, r2
- str r1, [r0, #0x0]
- ldr r0, _0208A240 ; =UNK_020FF474
- bl GX_SetBanks
- add r0, r4, #0x0
- bl BgConfig_Alloc
- add r5, r0, #0x0
- ldr r0, _0208A244 ; =UNK_020FF448
- bl SetBothScreensModesAndDisable
- mov r1, #0x0
- ldr r2, _0208A248 ; =UNK_020FF458
- add r0, r5, #0x0
- add r3, r1, #0x0
- bl InitBgFromTemplate
- add r0, r5, #0x0
- mov r1, #0x0
- bl BgClearTilemapBufferAndCommit
- mov r1, #0x0
- str r1, [sp, #0x0]
- ldr r2, _0208A24C ; =0x000001F7
- add r0, r5, #0x0
- mov r3, #0x2
- str r4, [sp, #0x4]
- bl FUN_0200CB00
- mov r0, #0x0
- mov r1, #0x20
- add r2, r4, #0x0
- bl FUN_02002ED0
- mov r0, #0x0
- mov r1, #0x20
- add r2, r0, #0x0
- add r3, r4, #0x0
- bl BG_ClearCharDataRange
- ldr r1, _0208A250 ; =0x00006C21
- mov r0, #0x0
- bl BG_SetMaskColor
- ldr r1, _0208A250 ; =0x00006C21
- mov r0, #0x4
- bl BG_SetMaskColor
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0x6
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r7, r0, #0x0
- mov r0, #0x6
- lsl r0, r0, #0x6
- add r1, r4, #0x0
- bl String_ctor
- add r4, r0, #0x0
- bl FUN_0201BD5C
- ldr r2, _0208A254 ; =UNK_020FF440
- add r0, r5, #0x0
- add r1, sp, #0xc
- bl AddWindow
- mov r0, #0xd0
- str r0, [sp, #0x0]
- mov r0, #0x90
- mov r2, #0x0
- str r0, [sp, #0x4]
- add r0, sp, #0xc
- mov r1, #0xf
- add r3, r2, #0x0
- bl FillWindowPixelRect
- ldr r2, _0208A24C ; =0x000001F7
- add r0, sp, #0xc
- mov r1, #0x0
- mov r3, #0x2
- bl FUN_0200CCA4
- add r0, r7, #0x0
- add r1, r6, #0x0
- add r2, r4, #0x0
- bl ReadMsgDataIntoString
- mov r1, #0x0
- str r1, [sp, #0x0]
- str r1, [sp, #0x4]
- add r0, sp, #0xc
- add r2, r4, #0x0
- add r3, r1, #0x0
- str r1, [sp, #0x8]
- bl AddTextPrinterParameterized
- add r0, r4, #0x0
- bl String_dtor
- bl GX_BothDispOn
- mov r0, #0x0
- bl FUN_0200E394
- mov r0, #0x1
- bl FUN_0200E394
- mov r0, #0x0
- mov r1, #0x3f
- mov r2, #0x3
- bl FUN_0200A274
- mov r4, #0x1
- ; Battery-saver trap
-_0208A21A:
- bl HandleDSLidAction
- add r0, r4, #0x0
- add r1, r4, #0x0
- bl OS_WaitIrq
- b _0208A21A
- .balign 4
-_0208A228: .word 0xFFFFE0FF
-_0208A22C: .word 0x04001000
-_0208A230: .word gMain + 0x60
-_0208A234: .word 0x04000050
-_0208A238: .word 0x04001050
-_0208A23C: .word 0xFFFF1FFF
-_0208A240: .word UNK_020FF474
-_0208A244: .word UNK_020FF448
-_0208A248: .word UNK_020FF458
-_0208A24C: .word 0x000001F7
-_0208A250: .word 0x00006C21
-_0208A254: .word UNK_020FF440
diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s
index 8cc2030f..1b590bf4 100644
--- a/arm9/asm/unk_0208A338.s
+++ b/arm9/asm/unk_0208A338.s
@@ -477,7 +477,7 @@ _0208A722:
add r0, r4, #0x0
mov r1, #0x0
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_0208A734:
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
@@ -513,7 +513,7 @@ FUN_0208A760: ; 0x0208A760
beq _0208A778
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
_0208A778:
pop {r4, pc}
.balign 4
@@ -593,18 +593,18 @@ _0208A808:
add r0, r7, #0x0
mov r2, #0xa5
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add sp, #0x14
pop {r4-r7, pc}
thumb_func_start FUN_0208A820
FUN_0208A820: ; 0x0208A820
- ldr r3, _0208A828 ; =FUN_0200CCF8
+ ldr r3, _0208A828 ; =ClearFrameAndWindow1
add r0, #0x28
mov r1, #0x1
bx r3
.balign 4
-_0208A828: .word FUN_0200CCF8
+_0208A828: .word ClearFrameAndWindow1
thumb_func_start FUN_0208A82C
FUN_0208A82C: ; 0x0208A82C
@@ -681,18 +681,18 @@ _0208A8B8:
add r0, r7, #0x0
mov r2, #0xa5
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add sp, #0x14
pop {r4-r7, pc}
thumb_func_start FUN_0208A8D0
FUN_0208A8D0: ; 0x0208A8D0
- ldr r3, _0208A8D8 ; =FUN_0200CCF8
+ ldr r3, _0208A8D8 ; =ClearFrameAndWindow1
add r0, #0x38
mov r1, #0x1
bx r3
.balign 4
-_0208A8D8: .word FUN_0200CCF8
+_0208A8D8: .word ClearFrameAndWindow1
thumb_func_start FUN_0208A8DC
FUN_0208A8DC: ; 0x0208A8DC
diff --git a/arm9/global.inc b/arm9/global.inc
index d00c06de..ee15a6c2 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -363,12 +363,12 @@
.extern PlaySound
.extern FUN_02005CBC
.extern FUN_02005CFC
-.extern FUN_02005D20
+.extern Chatot_checkCry
.extern FUN_02005D48
.extern FUN_02005DFC
-.extern FUN_02005E28
-.extern FUN_02005E64
-.extern FUN_02005E6C
+.extern Chatot_startRecording
+.extern Chatot_stopRecording
+.extern Chatot_saveRecording
.extern FUN_02005E80
.extern FUN_02005E90
.extern FUN_02005EE0
@@ -514,17 +514,17 @@
.extern FUN_02009E54
.extern FUN_02009E88
.extern FUN_02009EAC
-.extern FUN_02009F80
-.extern FUN_02009FA0
+.extern ApplyAndResetOamManagerBuffer
+.extern DeinitOamData
.extern FUN_02009FD8
-.extern FUN_0200A03C
+.extern GetOamManager
.extern FUN_0200A064
.extern FUN_0200A06C
-.extern FUN_0200A208
-.extern FUN_0200A274
-.extern FUN_0200A2AC
-.extern FUN_0200A318
-.extern FUN_0200A344
+.extern StartBrightnessTransition
+.extern SetBrightness
+.extern InitAllScreenBrightnessData
+.extern DoAllScreenBrightnessTransitionStep
+.extern IsBrightnessTransitionActive
.extern ReadMsgData_NewNarc_ExistingString
.extern ReadMsgData_NewNarc_NewString
.extern NewMsgDataFromNarc
@@ -689,18 +689,18 @@
.extern FUN_0200CABC
.extern FUN_0200CAFC
.extern FUN_0200CB00
-.extern FUN_0200CCA4
-.extern FUN_0200CCF8
+.extern DrawFrameAndWindow1
+.extern ClearFrameAndWindow1
.extern FUN_0200CD60
.extern FUN_0200CD64
.extern FUN_0200CD68
-.extern FUN_0200D06C
-.extern FUN_0200D0BC
-.extern FUN_0200D0E0
+.extern DrawWindowFrame2
+.extern DrawFrameAndWindow2
+.extern ClearFrameAndWindow2
.extern FUN_0200D274
.extern FUN_0200D300
-.extern FUN_0200D6F8
-.extern FUN_0200D7A0
+.extern DrawFrameAndWindow3
+.extern ClearFrameAndWindow3
.extern FUN_0200D858
.extern FUN_0200DBFC
.extern FUN_0200DC24
@@ -1002,7 +1002,7 @@
.extern FUN_02015CC0
.extern FUN_02015CE0
.extern FUN_02015CF8
-.extern FUN_02015D88
+.extern ConvertRSStringToDPStringInternational
.extern FUN_02015E30
.extern FUN_02015E3C
.extern FUN_02015E60
@@ -1381,11 +1381,11 @@
.extern FUN_0202135C
.extern FUN_02021390
.extern FUN_020213A0
-.extern FUN_02021590
-.extern FUN_020215C8
-.extern FUN_020215E0
-.extern FUN_02021750
-.extern FUN_020218D8
+.extern FontData_new
+.extern FontData_delete
+.extern FontData_ModeSwitch
+.extern TryLoadGlyph
+.extern GetStringWidth
.extern StringGetWidth
.extern StringGetWidth_SingleLine_HandleClearToControlCode
.extern String_ctor
@@ -3315,9 +3315,9 @@
.extern ScrCmd_Unk01A6
.extern ScrCmd_Unk01A7
.extern ScrCmd_Unk01AD
-.extern ScrCmd_Unk0215
-.extern ScrCmd_Unk0216
-.extern ScrCmd_Unk0217
+.extern ScrCmd_ClearAmitySquareSteps
+.extern ScrCmd_CheckAmitySquareSteps
+.extern ScrCmd_GetAmitySquareAccessory
.extern ScrCmd_GiveMon
.extern ScrCmd_GetPartyMonSpecies
.extern ScrCmd_CheckPartyMonOTID
@@ -5467,9 +5467,9 @@
.extern FUN_02089418
.extern FUN_02089444
.extern FUN_0208946C
-.extern FUN_02089D90
-.extern FUN_02089F24
-.extern FUN_0208A0B8
+.extern ShowSaveDataReadError
+.extern ShowGBACartRemovedError
+.extern ShowSaveDataWriteError
.extern FUN_0208A258
.extern FUN_0208A300
.extern FUN_0208A320
@@ -6109,14 +6109,42 @@
.extern MOD04_021D8CF0
.extern MOD04_021D8D04
.extern MOD04_021D8F08
+.extern MOD04_021D97F8
+.extern MOD04_021D988C
+.extern MOD04_021D98DC
+.extern MOD04_021D991C
+.extern MOD04_021D9974
+.extern MOD04_021D9ACC
+.extern MOD04_021D9C1C
.extern MOD04_021D9C2C
.extern MOD04_021D9F78
+.extern MOD04_021DA238
.extern MOD04_021DA2F4
.extern MOD04_021DA334
.extern MOD04_021DA388
.extern MOD04_021DA3DC
+.extern MOD04_021DAACC
.extern MOD04_021DAB68
+.extern MOD04_021DAC98
+.extern MOD04_021DAE4C
+.extern MOD04_021DB440
+.extern MOD04_021DB4A4
+.extern MOD04_021DB570
+.extern MOD04_021DB608
+.extern MOD04_021DC794
+.extern MOD04_021DC7AC
+.extern MOD04_021DC7F0
+.extern MOD04_021DC870
+.extern MOD04_021DC970
.extern MOD04_021DCA84
+.extern MOD04_021DCF00
+.extern MOD04_021DCFFC
+.extern MOD04_021DD26C
+.extern MOD04_021DD2C4
+.extern MOD04_021DD36C
+.extern MOD04_021DD4FC
+.extern MOD04_021DD6B0
+.extern MOD04_021DD6D4
.extern MOD04_021DD6F0
.extern MOD04_021DD718
.extern MOD04_021DD808
@@ -6124,6 +6152,7 @@
.extern MOD04_021DD844
.extern MOD04_021DD860
.extern MOD04_021DD904
+.extern MOD04_021DD924
.extern MOD04_021DD944
.extern MOD04_021DD968
.extern MOD04_021DD984
@@ -6140,6 +6169,8 @@
.extern MOD04_021DDF40
.extern MOD04_021DDF4C
.extern MOD04_021DE05C
+.extern MOD04_021DE150
+.extern MOD04_021DE174
.extern MOD04_021DE1F8
.extern MOD04_021DE2D0
.extern MOD04_021DE308
@@ -6149,8 +6180,25 @@
.extern MOD04_021DE3D0
.extern MOD04_021DE404
.extern MOD04_021DE45C
+.extern MOD04_021DE89C
+.extern MOD04_021DE8C8
+.extern MOD04_021DE9F4
+.extern MOD04_021DEB0C
+.extern MOD04_021DEB54
+.extern MOD04_021DF5F0
+.extern MOD04_021DF638
+.extern MOD04_021DF648
+.extern MOD04_021DF6BC
+.extern MOD04_021DF704
+.extern MOD04_021DF748
+.extern MOD04_021DF760
+.extern MOD04_021DF7C4
+.extern MOD04_021DF88C
+.extern MOD04_021DF8A8
+.extern MOD04_021DF8F4
.extern MOD04_021DF95C
.extern MOD04_021DF978
+.extern MOD04_021DF9D4
.extern MOD04_021DFA40
.extern MOD04_021DFAF8
.extern MOD04_021DFB20
@@ -6160,16 +6208,65 @@
.extern MOD04_021DFF74
.extern MOD04_021E0200
.extern MOD04_021E0374
+.extern MOD04_021E05FC
+.extern MOD04_021E0E48
+.extern MOD04_021E0EAC
+.extern MOD04_021E0F00
+.extern MOD04_021E0F1C
+.extern MOD04_021E1034
+.extern MOD04_021E1074
+.extern MOD04_021E1D90
+.extern MOD04_021E1E30
+.extern MOD04_021E1ED4
+.extern MOD04_021E1F18
+.extern MOD04_021E1F84
+.extern MOD04_021E1FE4
+.extern MOD04_021E2068
+.extern MOD04_021E20C8
+.extern MOD04_021E2114
+.extern MOD04_021E2174
+.extern MOD04_021E2228
+.extern MOD04_021E234C
.extern MOD04_021E242C
.extern MOD04_021E2454
.extern MOD04_021E2578
+.extern MOD04_021E852C
+.extern MOD04_021E854C
+.extern MOD04_021E85D4
+.extern MOD04_021E86A4
+.extern MOD04_021E874C
+.extern MOD04_021E8780
+.extern MOD04_021E87D8
+.extern MOD04_021E8804
+.extern MOD04_021E8830
+.extern MOD04_021E8A50
+.extern MOD04_021E8A74
+.extern MOD04_021E8C08
+.extern MOD04_021E8DC0
+.extern MOD04_021E8E08
+.extern MOD04_021E8EF4
+.extern MOD04_021E8F80
+.extern MOD04_021E9204
+.extern MOD04_021E9464
+.extern MOD04_021E9568
+.extern MOD04_021E9FD0
+.extern MOD04_021EA138
+.extern MOD04_021EA1E0
+.extern MOD04_021EA368
.extern MOD04_021EA530
+.extern MOD04_021EA9C4
+.extern MOD04_021EA9D8
+.extern MOD04_021EAA64
+.extern MOD04_021EAC1C
+.extern MOD04_021EAC5C
+.extern MOD04_021EACB4
.extern MOD04_021EACF8
.extern MOD04_021EADD8
.extern MOD04_021EADF8
.extern MOD04_021EAE18
.extern MOD04_021EAE38
.extern MOD04_021EAE90
+.extern MOD04_021EAF20
.extern MOD04_021EB044
.extern MOD04_021EB0FC
.extern MOD04_021EB3B8
@@ -6178,9 +6275,14 @@
.extern MOD04_021EB59C
.extern MOD04_021EB9A4
.extern MOD04_021EB9D8
+.extern MOD04_021EBA28
+.extern MOD04_021EBAB8
.extern MOD04_021EBAE8
.extern MOD04_021EBB80
.extern MOD04_021EBC60
+.extern MOD04_021EE5F4
+.extern MOD04_021EE6A0
+.extern MOD04_021EE898
.extern MOD04_021EEFA8
.extern MOD04_021EEFFC
.extern MOD04_021EF06C
@@ -6202,6 +6304,87 @@
.extern MOD04_021F024C
.extern MOD04_021F0250
.extern MOD04_021F025C
+.extern MOD04_021F02B8
+.extern MOD04_021F034C
+.extern MOD04_021F0580
+.extern MOD04_021F05F4
+.extern MOD04_021F0664
+.extern MOD04_021F06E4
+.extern MOD04_021F0828
+.extern MOD04_021F0864
+.extern MOD04_021F0944
+.extern MOD04_021F09B0
+.extern MOD04_021F0B30
+.extern MOD04_021F0B9C
+.extern MOD04_021F0C84
+.extern MOD04_021F0D54
+.extern MOD04_021F0D8C
+.extern MOD04_021F0EB0
+.extern MOD04_021F0F18
+.extern MOD04_021F0F64
+.extern MOD04_021F0F94
+.extern MOD04_021FBD00
+.extern MOD04_021FBE5C
+.extern MOD04_021FBE7C
+.extern MOD04_021FD3C4
+.extern MOD04_021FD3F8
+.extern MOD04_021FD434
+.extern MOD04_021FD43C
+.extern MOD04_021FD454
+.extern MOD04_021FD45C
+.extern MOD04_021FD488
+.extern MOD04_021FD52C
+.extern MOD04_021FD6B0
+.extern MOD04_021FD6BC
+.extern MOD04_021FD6C8
+.extern MOD04_021FD6D4
+.extern MOD04_021FD704
+.extern MOD04_021FD71C
+.extern MOD04_021FFEB0
+.extern MOD04_021FFF78
+.extern MOD04_02200468
+.extern MOD04_022006B4
+.extern MOD04_022006EC
+.extern MOD04_02200D6C
+.extern MOD04_022011A8
+.extern MOD04_022021C0
+.extern MOD04_02202220
+.extern MOD04_02202254
+.extern MOD04_02202280
+.extern MOD04_02202308
+.extern MOD04_02202534
+.extern MOD04_02202568
+.extern MOD04_02202580
+.extern MOD04_02202598
+.extern MOD04_022025B0
+.extern MOD04_0220277C
+.extern MOD04_02203898
+.extern MOD04_022038BC
+.extern MOD04_022038C4
+.extern MOD04_022038E4
+.extern MOD04_02203908
+.extern MOD04_0220394C
+.extern MOD04_02203A48
+.extern MOD04_02203BCC
+.extern MOD04_02203BD4
+.extern MOD04_02203BE4
+.extern MOD04_02203BF4
+.extern MOD04_02203C04
+.extern MOD04_02203C38
+.extern MOD04_02203C50
+.extern MOD04_02203C7C
+.extern MOD04_02203CC4
+.extern MOD04_02203D1C
+.extern MOD04_02203E80
+.extern MOD04_02203EA4
+.extern MOD04_022069DC
+.extern MOD04_02206E6C
+.extern MOD04_02206EFC
+.extern MOD04_02207158
+.extern MOD04_02207330
+.extern MOD04_0220733C
+.extern MOD04_022074EC
+.extern MOD04_022077A8
.extern MOD05_021D74E0
.extern MOD05_021D7A20
.extern MOD05_021D7A28
@@ -6547,6 +6730,8 @@
.extern MOD05_021E85FC
.extern MOD05_021E8648
.extern MOD05_021E8698
+.extern MOD05_021E8860
+.extern MOD05_021E88C0
.extern MOD05_021E88E8
.extern MOD05_021E8A68
.extern MOD05_021E8BEC
@@ -6596,7 +6781,11 @@
.extern MOD05_021ED644
.extern MOD05_021ED940
.extern MOD05_021ED9B4
+.extern MOD05_021ED9C0
+.extern MOD05_021ED9DC
.extern MOD05_021EDA48
+.extern MOD05_021EDB70
+.extern MOD05_021EDB8C
.extern MOD05_021EDBC8
.extern MOD05_021EE52C
.extern MOD05_021EEF68
@@ -6611,6 +6800,7 @@
.extern MOD05_021EF5E0
.extern MOD05_021EF5FC
.extern MOD05_021EF604
+.extern MOD05_021EF618
.extern MOD05_021EF620
.extern MOD05_021EF654
.extern MOD05_021EF824
@@ -6631,16 +6821,35 @@
.extern MOD05_021F04F8
.extern MOD05_021F0514
.extern MOD05_021F1AF8
+.extern MOD05_021F1B0C
+.extern MOD05_021F1B2C
+.extern MOD05_021F1B58
+.extern MOD05_021F1B60
+.extern MOD05_021F1B8C
+.extern MOD05_021F1BD0
+.extern MOD05_021F1BF4
+.extern MOD05_021F1C14
.extern MOD05_021F1C1C
+.extern MOD05_021F1C24
.extern MOD05_021F1C30
.extern MOD05_021F1CB8
.extern MOD05_021F1D2C
.extern MOD05_021F1D8C
.extern MOD05_021F1DC8
.extern MOD05_021F1DFC
+.extern MOD05_021F1E2C
.extern MOD05_021F1E64
.extern MOD05_021F1EC0
+.extern MOD05_021F1EDC
+.extern MOD05_021F1EF4
+.extern MOD05_021F1EF8
+.extern MOD05_021F1EFC
+.extern MOD05_021F1F00
+.extern MOD05_021F1F04
+.extern MOD05_021F1F58
.extern MOD05_021F1F78
+.extern MOD05_021F1FC8
+.extern MOD05_021F2060
.extern MOD05_021F2094
.extern MOD05_021F20D8
.extern MOD05_021F20F8
@@ -6651,13 +6860,30 @@
.extern MOD05_021F2E28
.extern MOD05_021F2F48
.extern MOD05_021F2F6C
+.extern MOD05_021F2FAC
+.extern MOD05_021F2FB8
+.extern MOD05_021F2FC4
.extern MOD05_021F3490
+.extern MOD05_021F3780
+.extern MOD05_021F379C
+.extern MOD05_021F3810
.extern MOD05_021F38B8
.extern MOD05_021F3A18
.extern MOD05_021F3AB4
.extern MOD05_021F3B4C
.extern MOD05_021F3B7C
+.extern MOD05_021F3BC0
+.extern MOD05_021F3C30
+.extern MOD05_021F3C60
+.extern MOD05_021F3C68
.extern MOD05_021F3DA4
+.extern MOD05_021F4328
+.extern MOD05_021F4344
+.extern MOD05_021F43C0
+.extern MOD05_021F43CC
+.extern MOD05_021F43E4
+.extern MOD05_021F4444
+.extern MOD05_021F4454
.extern MOD05_021F4498
.extern MOD05_021F44D8
.extern MOD05_021F450C
@@ -6680,6 +6906,7 @@
.extern MOD05_021F4C74
.extern MOD05_021F4C88
.extern MOD05_021F4C9C
+.extern MOD05_021F4CA8
.extern MOD05_021F4CBC
.extern MOD05_021F4CD4
.extern MOD05_021F4CE4
@@ -6715,6 +6942,7 @@
.extern MOD05_021F5A5C
.extern MOD05_021F5A74
.extern MOD05_021F5A90
+.extern MOD05_021F5AA4
.extern MOD05_021F5AB8
.extern MOD05_021F5AE4
.extern MOD05_021F5B9C
@@ -7386,6 +7614,7 @@
.extern MOD20_0225298C
.extern MOD20_022529A0
.extern MOD20_022529B4
+.extern MOD20_02252B1C
.extern MOD20_02252B28
.extern MOD20_02252B48
.extern MOD20_02252B68
@@ -7397,11 +7626,17 @@
.extern MOD20_02252C38
.extern MOD20_02252C3C
.extern MOD20_02252C40
+.extern MOD20_02252C44
+.extern MOD20_02252C5C
.extern MOD20_02252D24
.extern MOD20_02252D34
.extern MOD20_02252D7C
.extern MOD20_02252DB4
.extern MOD20_02252DEC
+.extern MOD20_02252E18
+.extern MOD20_02252E80
+.extern MOD20_02252EA4
+.extern MOD20_02252EB0
.extern MOD20_022536F4
.extern MOD20_02253794
.extern MOD20_022537B8
@@ -7418,10 +7653,14 @@
.extern MOD20_022539C4
.extern MOD20_02253A04
.extern MOD20_02253AA4
+.extern MOD20_02253BA4
+.extern MOD20_02253C4C
+.extern MOD20_02253C78
.extern MOD20_02253E74
.extern MOD20_02253F14
.extern MOD20_02253F28
.extern MOD20_02253F44
+.extern MOD20_02253F54
.extern MOD20_02253F64
.extern MOD20_02253F6C
.extern MOD20_02253F78
@@ -7434,8 +7673,10 @@
.extern MOD20_02254014
.extern MOD20_02254130
.extern MOD20_02254198
+.extern MOD20_022541B4
.extern MOD20_022542AC
.extern MOD20_022542C0
+.extern MOD20_022542CC
.extern MOD20_02254420
.extern MOD20_02254460
.extern MOD20_02254488
@@ -8206,10 +8447,39 @@
.extern TP_SetCalibrateParam
.extern TP_WaitBusy
.extern TP_WaitRawResult
+.extern UNK04_0220BEB4
+.extern UNK04_0220C684
+.extern UNK04_0220C7D0
+.extern UNK04_0220C920
+.extern UNK04_0220CA08
+.extern UNK04_0220CACC
+.extern UNK04_0220CBB4
+.extern UNK04_0220CCD4
+.extern UNK04_0220CDEC
+.extern UNK04_0220CF18
+.extern UNK04_0220D0CC
+.extern UNK04_0220D1A8
+.extern UNK04_0220F018
+.extern UNK04_02210480
+.extern UNK04_02210484
+.extern UNK04_02210488
+.extern UNK04_0221048C
+.extern UNK04_022104F8
+.extern UNK04_022104FC
+.extern UNK04_02210F94
+.extern UNK04_02211094
.extern UNK05_021F64C8
+.extern UNK05_021F8B84
+.extern UNK05_021F8B88
+.extern UNK05_021F8B90
.extern UNK05_021F9080
+.extern UNK05_021F9094
+.extern UNK05_021F90E4
.extern UNK05_021F9194
.extern UNK05_021F9494
+.extern UNK05_021F9A9C
+.extern UNK05_021FA0AC
+.extern UNK05_021FAC6C
.extern UNK05_021FC718
.extern UNK05_021FC79C
.extern UNK05_021FC820
diff --git a/arm9/lib/NitroSDK/include/SPI_mic.h b/arm9/lib/NitroSDK/include/SPI_mic.h
index 79588fe9..b1d7b5ea 100644
--- a/arm9/lib/NitroSDK/include/SPI_mic.h
+++ b/arm9/lib/NitroSDK/include/SPI_mic.h
@@ -1,6 +1,20 @@
#ifndef NITRO_SPI_MIC_H_
#define NITRO_SPI_MIC_H_
+struct MIC_SamplingData
+{
+ int unk00;
+ void *unk04;
+ int unk08;
+ int unk0c;
+ int unk10;
+ int unk14;
+ int unk18;
+};
+
void MIC_Init(void);
+int MIC_StartAutoSampling(struct MIC_SamplingData *data);
+int MIC_StopAutoSampling(void);
+int MIC_DoSamplingAsync(int param0, int param1, int param2, int param3);
#endif //NITRO_SPI_MIC_H_
diff --git a/arm9/lib/libnns/include/NNS_g2d.h b/arm9/lib/libnns/include/NNS_g2d.h
index f7eed210..d65f0430 100644
--- a/arm9/lib/libnns/include/NNS_g2d.h
+++ b/arm9/lib/libnns/include/NNS_g2d.h
@@ -200,6 +200,11 @@ typedef struct NNSG2dAnimBankData
} NNSG2dAnimBankData;
+typedef struct NNSG2dOamManager
+{
+ u8 unk00[0x1c];
+} NNSG2dOamManager;
+
BOOL NNS_G2dGetUnpackedBGCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
BOOL NNS_G2dGetUnpackedCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
BOOL NNS_G2dGetUnpackedScreenData(void * pNscrFile, NNSG2dScreenData ** ppScrData);
@@ -209,4 +214,11 @@ BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void * pNclrFile, NNSG2dPaletteCompre
BOOL NNS_G2dGetUnpackedCellBank(void * pNcerFile, NNSG2dCellDataBank ** ppCellBank);
BOOL NNS_G2dGetUnpackedAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank);
+BOOL NNS_G2dGetNewOamManagerInstance(
+ NNSG2dOamManager *oamManager, u16 param1, u16 param2, u16 param3, u16 param4, u32 param5);
+void NNS_G2dApplyAndResetOamManagerBuffer(NNSG2dOamManager *oamManager);
+u32 NNS_G2dEntryOamManagerOamWithAffineIdx(
+ NNSG2dOamManager *oamManager, u32 param1, u32 param2);
+u32 NNS_G2dEntryOamManagerAffine(NNSG2dOamManager *oamManager, u32 param1);
+
#endif //NNSYS_NNS_G2D_H
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 259f9f52..71bf3cb8 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,20374 +3,6 @@
.section .text
.balign 4, 0
- arm_func_start MOD04_021D8D18
-MOD04_021D8D18: ; 0x021D8D18
- stmdb sp!, {r4, lr}
- ldr r2, _021D8D58 ; =UNK04_02210468
- ldr r1, _021D8D5C ; =0x000013D8
- ldr r2, [r2]
- mov r4, r0
- add r0, r2, r1
- bl OS_LockMutex
- ldr r2, _021D8D58 ; =UNK04_02210468
- ldr r1, _021D8D5C ; =0x000013D8
- ldr r0, [r2]
- add r0, r0, #0x1000
- str r4, [r0, #4]
- ldr r0, [r2]
- add r0, r0, r1
- bl OS_UnlockMutex
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D8D58: .word UNK04_02210468
-_021D8D5C: .word 0x000013D8
- arm_func_end MOD04_021D8D18
-
- arm_func_start MOD04_021D8D60
-MOD04_021D8D60: ; 0x021D8D60
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x98
- ldr r4, _021D8EE0 ; =UNK04_0221046C
- mov r3, #0
- ldr r5, [r4, #4]
- ldr ip, [r4]
- cmp r5, r3
- mov r5, r0
- mov r6, r1
- mov r4, r2
- cmpeq ip, r3
- bne _021D8DC0
- ldr r0, _021D8EE4 ; =UNK04_0220BEF8
- bl strlen
- mov r3, r0
- ldr r1, _021D8EE8 ; =UNK04_0220BF04
- ldr r2, _021D8EE4 ; =UNK04_0220BEF8
- mov r0, r5
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021D8E18
- add sp, sp, #0x98
- mov r0, #8
- ldmia sp!, {r4, r5, r6, pc}
-_021D8DC0:
- ldr r0, _021D8EEC ; =UNK04_0220BF0C
- bl strlen
- mov r3, r0
- ldr r1, _021D8EE8 ; =UNK04_0220BF04
- ldr r2, _021D8EEC ; =UNK04_0220BF0C
- mov r0, r5
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, r6
- bl strlen
- mov r3, r0
- ldr r1, _021D8EF0 ; =UNK04_0220BF14
- mov r0, r5
- mov r2, r6
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
-_021D8E18:
- ldr r1, _021D8EE0 ; =UNK04_0221046C
- add r0, sp, #0
- bl MOD04_021D9F78
- cmp r0, #0
- addeq sp, sp, #0x98
- moveq r0, #5
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, _021D8EF4 ; =UNK04_0221048C
- add r1, sp, #0
- ldr r2, [r0]
- mov r0, r5
- bl MOD04_021D9C2C
- cmp r0, #0
- addeq sp, sp, #0x98
- moveq r0, #8
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, _021D8EF8 ; =UNK04_02210460
- ldr r0, [r0]
- cmp r0, #1
- bne _021D8E94
- ldr r0, _021D8EFC ; =UNK04_0220BF1C
- bl strlen
- mov r3, r0
- ldr r1, _021D8F00 ; =UNK04_0220BF20
- ldr r2, _021D8EFC ; =UNK04_0220BF1C
- mov r0, r5
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
-_021D8E94:
- mov r0, r4
- bl wcslen
- cmp r0, #0
- beq _021D8ED4
- mov r0, r4
- bl wcslen
- mov r3, r0
- ldr r1, _021D8F04 ; =UNK04_0220BF28
- mov r0, r5
- mov r2, r4
- mov r3, r3, lsl #1
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
-_021D8ED4:
- mov r0, #0
- add sp, sp, #0x98
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021D8EE0: .word UNK04_0221046C
-_021D8EE4: .word UNK04_0220BEF8
-_021D8EE8: .word UNK04_0220BF04
-_021D8EEC: .word UNK04_0220BF0C
-_021D8EF0: .word UNK04_0220BF14
-_021D8EF4: .word UNK04_0221048C
-_021D8EF8: .word UNK04_02210460
-_021D8EFC: .word UNK04_0220BF1C
-_021D8F00: .word UNK04_0220BF20
-_021D8F04: .word UNK04_0220BF28
- arm_func_end MOD04_021D8D60
-
- arm_func_start MOD04_021D8F08
-MOD04_021D8F08: ; 0x021D8F08
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021D91BC ; =UNK04_02210468
- mov r1, #0
- ldr r0, [r0]
- str r1, [sp]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- ldr r1, _021D91C0 ; =UNK04_0220BF34
- bl MOD04_021DA388
- str r0, [sp]
- cmp r0, #0
- beq _021D8F40
- bl MOD04_021DCA84
-_021D8F40:
- ldr r0, _021D91BC ; =UNK04_02210468
- mov r2, #0
- ldr r1, [r0]
- ldr r0, _021D91C4 ; =errno
- str r2, [sp]
- str r2, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x314]
- ldr r1, _021D91C8 ; =UNK04_0220BF3C
- bl MOD04_021DA388
- bl atol
- ldr r1, _021D91C4 ; =errno
- ldr r1, [r1]
- cmp r1, #0x22
- bne _021D8F9C
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91CC ; =0x00004E85
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xc
- ldmia sp!, {r4, r5, pc}
-_021D8F9C:
- cmp r0, #0xc8
- beq _021D8FC8
- ldr r2, _021D91BC ; =UNK04_02210468
- ldr r1, _021D91D0 ; =0x000059D8
- ldr r2, [r2]
- add r1, r0, r1
- add r0, r2, #0x1000
- str r1, [r0, #8]
- add sp, sp, #4
- mov r0, #0x12
- ldmia sp!, {r4, r5, pc}
-_021D8FC8:
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91D4 ; =0x0000100C
- ldr r3, [r0]
- ldr r1, _021D91D8 ; =UNK04_0220BF48
- add r0, r3, #0x1000
- ldr r0, [r0, #0x314]
- add r2, r3, r2
- mov r3, #4
- bl MOD04_021DA334
- cmp r0, #0
- bgt _021D9014
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91CC ; =0x00004E85
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xe
- ldmia sp!, {r4, r5, pc}
-_021D9014:
- ldr r1, _021D91BC ; =UNK04_02210468
- ldr r0, _021D91D4 ; =0x0000100C
- ldr r2, [r1]
- add r1, sp, #0
- add r0, r2, r0
- mov r2, #0xa
- bl strtol
- ldr r2, _021D91BC ; =UNK04_02210468
- ldr r1, _021D91D4 ; =0x0000100C
- ldr r5, [r2]
- mov r4, r0
- add r0, r5, r1
- bl strlen
- ldr r1, _021D91D4 ; =0x0000100C
- ldr r2, [sp]
- add r1, r5, r1
- add r0, r1, r0
- cmp r2, r0
- ldrne r1, _021D91CC ; =0x00004E85
- addne r0, r5, #0x1000
- strne r1, [r0, #8]
- addne sp, sp, #4
- movne r0, #0xc
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D91DC ; =0x00004E20
- add r1, r5, #0x1000
- add r0, r4, r0
- str r0, [r1, #8]
- cmp r4, #0x64
- bge _021D91B0
- ldr ip, _021D91BC ; =UNK04_02210468
- mov r0, #0
- ldr r1, [ip]
- ldr r5, _021D91E0 ; =0x00001052
- add r1, r1, #0x1000
- strb r0, [r1, #0x52]
- ldr r2, [ip]
- ldr r1, _021D91E4 ; =UNK04_0220BF54
- add r2, r2, #0x1000
- strb r0, [r2, #0x1f]
- ldr r2, [ip]
- ldr r3, _021D91E8 ; =0x0000012D
- add r2, r2, #0x1000
- strb r0, [r2, #0x17f]
- ldr r2, [ip]
- add r2, r2, #0x1000
- strb r0, [r2, #0x10]
- ldr r2, [ip]
- add r2, r2, #0x1000
- strb r0, [r2, #0x188]
- ldr r2, [ip]
- add r0, r2, #0x1000
- ldr r0, [r0, #0x314]
- add r2, r2, r5
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91EC ; =0x0000101F
- ldr r3, [r0]
- ldr r1, _021D91F0 ; =UNK04_0220BF5C
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #0x33
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91F4 ; =0x0000117F
- ldr r3, [r0]
- ldr r1, _021D91F8 ; =UNK04_0220BF64
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #9
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91FC ; =0x00001010
- ldr r3, [r0]
- ldr r1, _021D9200 ; =UNK04_0220BF70
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #0xf
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D9204 ; =0x00001188
- ldr r3, [r0]
- ldr r1, _021D9208 ; =UNK04_0220BF7C
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #0x41
- bl MOD04_021DA2F4
- ldr r0, _021D91BC ; =UNK04_02210468
- mov r1, #0
- ldr r0, [r0]
- cmp r4, #0x28
- add r0, r0, #0x1000
- strb r1, [r0, #0x1b3]
- ldrne r0, _021D920C ; =UNK04_02210464
- movne r1, #1
- strne r1, [r0]
- ldreq r0, _021D920C ; =UNK04_02210464
- moveq r1, #2
- streq r1, [r0]
-_021D91B0:
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021D91BC: .word UNK04_02210468
-_021D91C0: .word UNK04_0220BF34
-_021D91C4: .word errno
-_021D91C8: .word UNK04_0220BF3C
-_021D91CC: .word 0x00004E85
-_021D91D0: .word 0x000059D8
-_021D91D4: .word 0x0000100C
-_021D91D8: .word UNK04_0220BF48
-_021D91DC: .word 0x00004E20
-_021D91E0: .word 0x00001052
-_021D91E4: .word UNK04_0220BF54
-_021D91E8: .word 0x0000012D
-_021D91EC: .word 0x0000101F
-_021D91F0: .word UNK04_0220BF5C
-_021D91F4: .word 0x0000117F
-_021D91F8: .word UNK04_0220BF64
-_021D91FC: .word 0x00001010
-_021D9200: .word UNK04_0220BF70
-_021D9204: .word 0x00001188
-_021D9208: .word UNK04_0220BF7C
-_021D920C: .word UNK04_02210464
- arm_func_end MOD04_021D8F08
-
- arm_func_start MOD04_021D9210
-MOD04_021D9210: ; 0x021D9210
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021D93F4 ; =UNK04_02210468
- mov r1, #0
- ldr r0, [r0]
- add r2, r0, #0x1000
- ldr r0, [r2, #0x314]
- ldr r5, [r2, #0x20c]
- ldr r4, [r2, #0x210]
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021D9260
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D93F8 ; =0x00004E84
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xe
- ldmia sp!, {r4, r5, pc}
-_021D9260:
- bl MOD04_021D8F08
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #0xe
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r1, _021D93F8 ; =0x00004E84
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r2, [r0, #8]
- cmp r2, r1
- bge _021D9334
- ldr r0, _021D93FC ; =0x00004E22
- cmp r2, r0
- bne _021D9328
- ldr r0, _021D9400 ; =UNK04_0220BF88
- ldr r1, _021D9404 ; =0x0000071F
- blx r5
- movs r5, r0
- bne _021D92D0
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D93F8 ; =0x00004E84
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #2
- ldmia sp!, {r4, r5, pc}
-_021D92D0:
- add r1, r5, #0x1f
- ldr r0, _021D9408 ; =UNK04_0221046C
- bic r1, r1, #0x1f
- bl FUN_02096710
- cmp r0, #1
- beq _021D9318
- ldr r0, _021D940C ; =UNK04_0220BF98
- mov r1, r5
- mov r2, #0
- blx r4
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D93F8 ; =0x00004E84
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xf
- ldmia sp!, {r4, r5, pc}
-_021D9318:
- ldr r0, _021D940C ; =UNK04_0220BF98
- mov r1, r5
- mov r2, #0
- blx r4
-_021D9328:
- add sp, sp, #4
- mov r0, #0x15
- ldmia sp!, {r4, r5, pc}
-_021D9334:
- ldr r0, _021D9410 ; =0x00004E88
- cmp r2, r0
- beq _021D9350
- ldr r0, _021D9414 ; =0x00004E8C
- cmp r2, r0
- beq _021D9378
- b _021D93E8
-_021D9350:
- ldr r0, _021D9408 ; =UNK04_0221046C
- bl FUN_02096570
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D9410 ; =0x00004E88
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0x10
- ldmia sp!, {r4, r5, pc}
-_021D9378:
- ldr r0, _021D9400 ; =UNK04_0220BF88
- mov r1, #0x700
- blx r5
- movs r5, r0
- bne _021D93AC
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D9414 ; =0x00004E8C
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0x11
- ldmia sp!, {r4, r5, pc}
-_021D93AC:
- add r0, r5, #0x1f
- bic r0, r0, #0x1f
- bl DWCi_AUTH_MakeWiFiID
- ldr r0, _021D940C ; =UNK04_0220BF98
- mov r1, r5
- mov r2, #0
- blx r4
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D9414 ; =0x00004E8C
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0x11
- ldmia sp!, {r4, r5, pc}
-_021D93E8:
- mov r0, #0x12
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021D93F4: .word UNK04_02210468
-_021D93F8: .word 0x00004E84
-_021D93FC: .word 0x00004E22
-_021D9400: .word UNK04_0220BF88
-_021D9404: .word 0x0000071F
-_021D9408: .word UNK04_0221046C
-_021D940C: .word UNK04_0220BF98
-_021D9410: .word 0x00004E88
-_021D9414: .word 0x00004E8C
- arm_func_end MOD04_021D9210
-
- 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
- mov r0, #1
- ldr r7, _021D96D4 ; =0x00001388
- ldr fp, _021D96D8 ; =0x000082EA
- ldr r5, _021D96DC ; =UNK04_02210468
- ldr r4, _021D96E0 ; =0x000013D8
- mov r6, sb
- str sb, [sp, #8]
- str sb, [sp, #0xc]
- str r0, [sp, #4]
-_021D9448:
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r1, [r0, #0x314]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021D9470
- ldr r0, _021D96E4 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021D9470:
- ldr r0, [r5]
- add r1, r0, #0x1000
- ldr r0, [r1, #0x314]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x20]
- cmp r0, #8
- beq _021D9518
- ldr r0, _021D96E8 ; =0x00004E84
- str r0, [r1, #8]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x20]
- cmp r0, #7
- bne _021D94C0
- mov r0, #0x14
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D94C0:
- cmp sb, #2
- ble _021D9508
- cmp r0, #2
- bne _021D94E0
- mov r0, #9
- 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 MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D94F8:
- mov r0, #0xd
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D9508:
- ldr r0, [sp, #4]
- add sb, sb, #1
- str r0, [sp]
- b _021D9598
-_021D9518:
- bl MOD04_021D9210
- cmp r0, #0x10
- beq _021D9544
- cmp r0, #0x11
- beq _021D956C
- cmp r0, #0x15
- bne _021D9578
- mov r0, #0x15
- 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 MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D955C:
- ldr r0, [sp, #8]
- add sb, sb, #1
- str r0, [sp]
- b _021D9598
-_021D956C:
- 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 MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D958C:
- ldr r0, [sp, #4]
- add sb, sb, #1
- str r0, [sp]
-_021D9598:
- bl OS_GetTick
- mov r8, r0
- mov sl, r1
- bl OS_GetTick
- subs r2, r0, r8
- sbc r0, r1, sl
- mov r1, r0, lsl #6
- ldr r3, [sp, #0xc]
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- mov r2, fp
- bl _ll_udiv
- cmp r1, #0
- cmpeq r0, r7
- bhs _021D965C
-_021D95D4:
- ldr r0, [r5]
- add r0, r0, r4
- bl OS_LockMutex
- ldr r2, [r5]
- add r1, r2, #0x1000
- ldr r0, [r1, #0x3f0]
- cmp r0, #1
- bne _021D961C
- ldr r2, _021D96E8 ; =0x00004E84
- ldr r0, _021D96E0 ; =0x000013D8
- str r2, [r1, #8]
- ldr r1, [r5]
- add r0, r1, r0
- bl OS_UnlockMutex
- mov r0, #0x14
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D961C:
- add r0, r2, r4
- bl OS_UnlockMutex
- mov r0, r7
- bl OS_Sleep
- bl OS_GetTick
- subs r2, r0, r8
- sbc r0, r1, sl
- mov r1, r0, lsl #6
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- mov r2, fp
- mov r3, r6
- bl _ll_udiv
- cmp r1, #0
- cmpeq r0, r7
- blo _021D95D4
-_021D965C:
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- bl MOD04_021DAE4C
- ldr r0, [r5]
- add r0, r0, r4
- bl OS_LockMutex
- ldr r0, [sp]
- bl MOD04_021D96EC
- ldr r1, [r5]
- add r1, r1, #0x1000
- str r0, [r1, #4]
- ldr r2, [r5]
- add r1, r2, #0x1000
- ldr r0, [r1, #4]
- cmp r0, #0
- beq _021D96C0
- ldr r2, _021D96E8 ; =0x00004E84
- ldr r0, _021D96E0 ; =0x000013D8
- str r2, [r1, #8]
- ldr r1, [r5]
- add r0, r1, r0
- bl OS_UnlockMutex
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D96C0:
- add r0, r2, r4
- bl OS_UnlockMutex
- b _021D9448
- arm_func_end MOD04_021D9418
-
- 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
-_021D96D4: .word 0x00001388
-_021D96D8: .word 0x000082EA
-_021D96DC: .word UNK04_02210468
-_021D96E0: .word 0x000013D8
-_021D96E4: .word 0x00001B34
-_021D96E8: .word 0x00004E84
- arm_func_end MOD04_021D96CC
-
- arm_func_start MOD04_021D96EC
-MOD04_021D96EC: ; 0x021D96EC
- stmdb sp!, {r4, lr}
- ldr r1, _021D97E0 ; =UNK04_0220BEB4
- mov r4, r0
- ldr r0, [r1]
- ldr r1, _021D97E4 ; =UNK04_0220BFA4
- bl strcmp
- cmp r0, #0
- ldrne r0, _021D97E0 ; =UNK04_0220BEB4
- movne r1, #1
- strne r1, [r0, #0x14]
- ldr r0, _021D97E8 ; =UNK04_02210468
- ldr r1, _021D97E0 ; =UNK04_0220BEB4
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r2, [r0, #0x20c]
- str r2, [r1, #0xc]
- ldr r2, [r0, #0x210]
- str r2, [r1, #0x10]
- ldr r0, [r0, #0x314]
- bl MOD04_021DB608
- cmp r0, #0
- movne r0, #4
- ldmneia sp!, {r4, pc}
- cmp r4, #1
- bne _021D9758
- ldr r0, _021D97EC ; =UNK04_0221046C
- bl DWCi_BM_GetWiFiInfo
-_021D9758:
- ldr r0, _021D97E8 ; =UNK04_02210468
- ldr r2, _021D97F0 ; =0x000011CC
- ldr r3, [r0]
- add r0, r3, #0x1000
- ldr r0, [r0, #0x314]
- add r1, r3, #0x1200
- add r2, r3, r2
- bl MOD04_021D8D60
- ldr r2, _021D97E8 ; =UNK04_02210468
- ldr r1, [r2]
- add r1, r1, #0x1000
- str r0, [r1, #4]
- ldr r0, [r2]
- add r0, r0, #0x1000
- ldr r1, [r0, #4]
- cmp r1, #0
- movne r0, #4
- ldmneia sp!, {r4, pc}
- ldr r0, [r0, #0x314]
- bl MOD04_021DB570
- cmp r0, #0
- movne r0, #4
- ldmneia sp!, {r4, pc}
- ldr r0, _021D97F4 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- ldr r1, _021D97E8 ; =UNK04_02210468
- ldr r2, [r1]
- sub r1, r0, #1
- add r0, r2, #0x1000
- ldr r0, [r0, #0x314]
- bl MOD04_021DB4A4
- mov r0, #0
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D97E0: .word UNK04_0220BEB4
-_021D97E4: .word UNK04_0220BFA4
-_021D97E8: .word UNK04_02210468
-_021D97EC: .word UNK04_0221046C
-_021D97F0: .word 0x000011CC
-_021D97F4: .word OSi_ThreadInfo
- arm_func_end MOD04_021D96EC
-
- arm_func_start MOD04_021D97F8
-MOD04_021D97F8: ; 0x021D97F8
- stmdb sp!, {r4, lr}
- ldr r1, _021D9874 ; =UNK04_02210468
- mov r4, r0
- ldr r1, [r1]
- cmp r1, #0
- bne _021D981C
- mov r1, #0
- mov r2, #0x1c4
- bl MI_CpuFill8
-_021D981C:
- ldr r1, _021D9874 ; =UNK04_02210468
- ldr r0, _021D9878 ; =0x00001008
- ldr r2, [r1]
- mov r1, r4
- add r0, r2, r0
- mov r2, #0x1c4
- bl MI_CpuCopy8
- ldr r1, [r4]
- ldr r0, _021D987C ; =0x00004E20
- cmp r1, r0
- blt _021D9854
- ldr r0, _021D9880 ; =0x00007530
- cmp r1, r0
- blt _021D985C
-_021D9854:
- ldr r0, _021D9884 ; =0x00005206
- str r0, [r4]
-_021D985C:
- ldr r1, [r4]
- ldr r0, _021D9888 ; =0x00004E84
- cmp r1, r0
- rsbge r0, r1, #0
- strge r0, [r4]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D9874: .word UNK04_02210468
-_021D9878: .word 0x00001008
-_021D987C: .word 0x00004E20
-_021D9880: .word 0x00007530
-_021D9884: .word 0x00005206
-_021D9888: .word 0x00004E84
- arm_func_end MOD04_021D97F8
-
- arm_func_start MOD04_021D988C
-MOD04_021D988C: ; 0x021D988C
- stmdb sp!, {r4, lr}
- ldr r0, _021D98D4 ; =UNK04_02210468
- ldr r1, [r0]
- cmp r1, #0
- moveq r0, #0x16
- ldmeqia sp!, {r4, pc}
- ldr r0, _021D98D8 ; =0x000013D8
- add r0, r1, r0
- bl OS_LockMutex
- ldr r1, _021D98D4 ; =UNK04_02210468
- ldr r0, _021D98D8 ; =0x000013D8
- ldr r2, [r1]
- add r1, r2, #0x1000
- add r0, r2, r0
- ldr r4, [r1, #4]
- bl OS_UnlockMutex
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D98D4: .word UNK04_02210468
-_021D98D8: .word 0x000013D8
- arm_func_end MOD04_021D988C
-
- arm_func_start MOD04_021D98DC
-MOD04_021D98DC: ; 0x021D98DC
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021D9914 ; =UNK04_02210468
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x384]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021D9918 ; =0x00001318
- add r0, r1, r0
- bl OS_JoinThread
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021D9914: .word UNK04_02210468
-_021D9918: .word 0x00001318
- arm_func_end MOD04_021D98DC
-
- arm_func_start MOD04_021D991C
-MOD04_021D991C: ; 0x021D991C
- stmdb sp!, {r4, lr}
- ldr r0, _021D996C ; =UNK04_02210468
- ldr r0, [r0]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- add r1, r0, #0x1000
- ldr r0, [r1, #0x314]
- ldr r4, [r1, #0x210]
- cmp r0, #0
- beq _021D9948
- bl MOD04_021DAE4C
-_021D9948:
- ldr r1, _021D996C ; =UNK04_02210468
- ldr r0, _021D9970 ; =UNK04_0220BFC4
- ldr r1, [r1]
- mov r2, #0
- blx r4
- ldr r0, _021D996C ; =UNK04_02210468
- mov r1, #0
- str r1, [r0]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D996C: .word UNK04_02210468
-_021D9970: .word UNK04_0220BFC4
- arm_func_end MOD04_021D991C
-
- arm_func_start MOD04_021D9974
-MOD04_021D9974: ; 0x021D9974
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021D9A0C ; =UNK04_02210468
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021D9A10 ; =0x000013D8
- add r0, r1, r0
- bl OS_LockMutex
- ldr r2, _021D9A0C ; =UNK04_02210468
- mov r3, #1
- ldr r0, [r2]
- ldr r1, _021D9A10 ; =0x000013D8
- add r0, r0, #0x1000
- str r3, [r0, #0x3f0]
- ldr r0, [r2]
- add r0, r0, r1
- bl OS_UnlockMutex
- ldr r0, _021D9A0C ; =UNK04_02210468
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- cmp r0, #0
- beq _021D99DC
- bl MOD04_021DB440
-_021D99DC:
- ldr r0, _021D9A0C ; =UNK04_02210468
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x384]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021D9A14 ; =0x00001318
- add r0, r1, r0
- bl OS_JoinThread
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021D9A0C: .word UNK04_02210468
-_021D9A10: .word 0x000013D8
-_021D9A14: .word 0x00001318
- arm_func_end MOD04_021D9974
-
- arm_func_start MOD04_021D9A18
-MOD04_021D9A18: ; 0x021D9A18
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r1, _021D9ABC ; =UNK04_02210468
- ldr r0, _021D9AC0 ; =0x000013D8
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_InitMutex
- ldr r1, _021D9ABC ; =UNK04_02210468
- mov r2, #0
- ldr r0, [r1]
- add r0, r0, #0x1000
- str r2, [r0, #0x3f0]
- ldr r1, [r1]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x384]
- cmp r0, #0
- beq _021D9A74
- ldr r0, _021D9AC4 ; =0x00001318
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {pc}
-_021D9A74:
- ldr r2, _021D9ABC ; =UNK04_02210468
- ldr r0, _021D9AC4 ; =0x00001318
- ldr lr, [r2]
- mov r3, #0x1000
- ldr r1, _021D9AC8 ; =MOD04_021D9418
- str r3, [sp]
- mov ip, #0x10
- add r0, lr, r0
- add r3, lr, #0x1000
- str ip, [sp, #4]
- bl OS_CreateThread
- ldr r1, _021D9ABC ; =UNK04_02210468
- ldr r0, _021D9AC4 ; =0x00001318
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_WakeupThreadDirect
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021D9ABC: .word UNK04_02210468
-_021D9AC0: .word 0x000013D8
-_021D9AC4: .word 0x00001318
-_021D9AC8: .word MOD04_021D9418
- arm_func_end MOD04_021D9A18
-
- arm_func_start MOD04_021D9ACC
-MOD04_021D9ACC: ; 0x021D9ACC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021D9BFC ; =UNK04_02210468
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- cmp r0, #0
- addne sp, sp, #4
- ldr r2, [r5, #0x40]
- movne r0, #2
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D9C00 ; =UNK04_0220BFD4
- ldr r1, _021D9C04 ; =0x000013F4
- blx r2
- ldr r1, _021D9BFC ; =UNK04_02210468
- cmp r0, #0
- str r0, [r1]
- addeq sp, sp, #4
- moveq r0, #2
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, _021D9C04 ; =0x000013F4
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021D9BFC ; =UNK04_02210468
- ldr r2, _021D9C08 ; =0x00001008
- ldr r0, [r1]
- ldr r3, _021D9C0C ; =UNK04_02210464
- add r0, r0, #0x1000
- str r4, [r0, #0x314]
- ldr r0, [r1]
- mov r1, #0
- add r0, r0, r2
- mov r2, #0x1c4
- str r1, [r3]
- bl MI_CpuFill8
- ldr r2, _021D9BFC ; =UNK04_02210468
- ldr r3, _021D9C10 ; =0x00004E84
- ldr r0, [r2]
- ldr r1, _021D9C14 ; =0x000011CC
- add r0, r0, #0x1000
- str r3, [r0, #8]
- ldr lr, [r2]
- mov r4, #4
- add ip, lr, r1
-_021D9B7C:
- ldmia r5!, {r0, r1, r2, r3}
- stmia ip!, {r0, r1, r2, r3}
- subs r4, r4, #1
- bne _021D9B7C
- ldmia r5, {r0, r1}
- stmia ip, {r0, r1}
- add r0, lr, #0x1100
- mov r2, #0
- strh r2, [r0, #0xfe]
- ldr r1, _021D9BFC ; =UNK04_02210468
- mov r0, #1
- ldr r1, [r1]
- add r1, r1, #0x1000
- strb r2, [r1, #0x20b]
- bl MOD04_021D96EC
- ldr r2, _021D9BFC ; =UNK04_02210468
- ldr r1, [r2]
- add r1, r1, #0x1000
- str r0, [r1, #4]
- ldr r0, [r2]
- add r0, r0, #0x1000
- ldr r0, [r0, #4]
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D9C18 ; =UNK04_02210460
- mov r1, #0
- str r1, [r0]
- bl MOD04_021D9A18
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021D9BFC: .word UNK04_02210468
-_021D9C00: .word UNK04_0220BFD4
-_021D9C04: .word 0x000013F4
-_021D9C08: .word 0x00001008
-_021D9C0C: .word UNK04_02210464
-_021D9C10: .word 0x00004E84
-_021D9C14: .word 0x000011CC
-_021D9C18: .word UNK04_02210460
- arm_func_end MOD04_021D9ACC
-
- arm_func_start MOD04_021D9C1C
-MOD04_021D9C1C: ; 0x021D9C1C
- ldr r1, _021D9C28 ; =UNK04_0220BEB4
- str r0, [r1]
- bx lr
- .align 2, 0
-_021D9C28: .word UNK04_0220BEB4
- arm_func_end MOD04_021D9C1C
-
- arm_func_start MOD04_021D9C2C
-MOD04_021D9C2C: ; 0x021D9C2C
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x28
- mov r4, r2
- mov r6, r0
- mov r5, r1
- mov ip, #2
- ldr r2, _021D9F30 ; =UNK04_0220BFE4
- add r0, sp, #4
- mov r1, #0x21
- mov r3, #1
- str ip, [sp]
- bl OS_SNPrintf
- add r0, sp, #4
- bl strlen
- mov r3, r0
- ldr r1, _021D9F34 ; =UNK04_0220BFF0
- mov r0, r6
- add r2, sp, #4
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, r5
- bl strlen
- mov r3, r0
- ldr r1, _021D9F38 ; =UNK04_0220BFF8
- mov r0, r6
- mov r2, r5
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0xe
- bl strlen
- mov r3, r0
- ldr r1, _021D9F3C ; =UNK04_0220C000
- mov r0, r6
- add r2, r5, #0xe
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x41
- bl strlen
- mov r3, r0
- ldr r1, _021D9F40 ; =UNK04_0220C008
- mov r0, r6
- add r2, r5, #0x41
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x6f
- bl strlen
- mov r3, r0
- ldr r1, _021D9F44 ; =UNK04_0220C010
- mov r0, r6
- add r2, r5, #0x6f
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x15
- bl strlen
- mov r3, r0
- ldr r1, _021D9F48 ; =UNK04_0220C018
- mov r0, r6
- add r2, r5, #0x15
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x1a
- bl strlen
- mov r3, r0
- ldr r1, _021D9F4C ; =UNK04_0220C020
- mov r0, r6
- add r2, r5, #0x1a
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x1d
- bl strlen
- mov r3, r0
- ldr r1, _021D9F50 ; =UNK04_0220C028
- mov r0, r6
- add r2, r5, #0x1d
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x1f
- bl strlen
- mov r3, r0
- ldr r1, _021D9F54 ; =UNK04_0220C030
- mov r0, r6
- add r2, r5, #0x1f
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x2c
- bl strlen
- mov r3, r0
- ldr r1, _021D9F58 ; =UNK04_0220C038
- mov r0, r6
- add r2, r5, #0x2c
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x2f
- bl strlen
- mov r3, r0
- ldr r1, _021D9F5C ; =UNK04_0220C040
- mov r0, r6
- add r2, r5, #0x2f
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x34
- bl strlen
- mov r3, r0
- ldr r1, _021D9F60 ; =UNK04_0220C048
- mov r0, r6
- add r2, r5, #0x34
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x7e
- bl wcslen
- mov r3, r0
- ldr r1, _021D9F64 ; =UNK04_0220C050
- mov r0, r6
- add r2, r5, #0x7e
- mov r3, r3, lsl #1
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- cmp r4, #1
- bne _021D9ED0
- add r0, r5, #0x4e
- bl strlen
- mov r3, r0
- ldr r1, _021D9F68 ; =UNK04_0220C058
- mov r0, r6
- add r2, r5, #0x4e
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
-_021D9ED0:
- ldr r2, _021D9F6C ; =UNK04_0220C060
- mov ip, #2
- add r0, sp, #4
- mov r1, #0x21
- mov r3, #1
- str ip, [sp]
- bl OS_SNPrintf
- ldr r1, _021D9F70 ; =UNK04_0220C078
- add r2, sp, #4
- mov r0, r6
- bl MOD04_021DAC98
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- ldr r1, _021D9F74 ; =UNK04_0220C084
- mov r0, r6
- add r2, r5, #0x15
- bl MOD04_021DAC98
- cmp r0, #0
- moveq r0, #1
- movne r0, #0
- add sp, sp, #0x28
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021D9F30: .word UNK04_0220BFE4
-_021D9F34: .word UNK04_0220BFF0
-_021D9F38: .word UNK04_0220BFF8
-_021D9F3C: .word UNK04_0220C000
-_021D9F40: .word UNK04_0220C008
-_021D9F44: .word UNK04_0220C010
-_021D9F48: .word UNK04_0220C018
-_021D9F4C: .word UNK04_0220C020
-_021D9F50: .word UNK04_0220C028
-_021D9F54: .word UNK04_0220C030
-_021D9F58: .word UNK04_0220C038
-_021D9F5C: .word UNK04_0220C040
-_021D9F60: .word UNK04_0220C048
-_021D9F64: .word UNK04_0220C050
-_021D9F68: .word UNK04_0220C058
-_021D9F6C: .word UNK04_0220C060
-_021D9F70: .word UNK04_0220C078
-_021D9F74: .word UNK04_0220C084
- arm_func_end MOD04_021D9C2C
-
- arm_func_start MOD04_021D9F78
-MOD04_021D9F78: ; 0x021D9F78
- stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
- sub sp, sp, #0x8c
- mov r6, r1
- mov r1, #0
- mov r2, #0x94
- mov r4, r0
- bl MI_CpuFill8
- ldr r3, [r6]
- ldr r5, [r6, #4]
- mov r0, #0
- cmp r5, r0
- cmpeq r3, r0
- beq _021D9FC4
- ldr r2, _021DA218 ; =UNK04_0220C094
- mov r0, r4
- mov r1, #0xe
- str r5, [sp]
- bl OS_SNPrintf
- b _021D9FE0
-_021D9FC4:
- ldr r3, [r6, #8]
- ldr r5, [r6, #0xc]
- ldr r2, _021DA218 ; =UNK04_0220C094
- mov r0, r4
- mov r1, #0xe
- str r5, [sp]
- bl OS_SNPrintf
-_021D9FE0:
- ldrh r3, [r6, #0x10]
- ldr r2, _021DA21C ; =UNK04_0220C09C
- add r0, r4, #0xe
- mov r1, #7
- bl OS_SNPrintf
- ldr r0, _021DA220 ; =0x027FFE0C
- ldrb r0, [r0]
- cmp r0, #0
- bne _021DA008
- bl OS_Terminate
-_021DA008:
- ldr r0, _021DA220 ; =0x027FFE0C
- add r1, r4, #0x15
- mov r2, #4
- bl MI_CpuCopy8
- ldr r0, _021DA224 ; =0x027FFE10
- ldrb r0, [r0]
- cmp r0, #0
- bne _021DA02C
- bl OS_Terminate
-_021DA02C:
- ldr r0, _021DA224 ; =0x027FFE10
- add r1, r4, #0x1a
- mov r2, #2
- bl MI_CpuCopy8
- mov r1, #0x30
- add r0, sp, #0x16
- strb r1, [r4, #0x1d]
- bl OS_GetMacAddress
- ldr r5, _021DA228 ; =UNK04_0220C0A4
- add r7, sp, #0x16
- add r6, r4, #0x1f
- mov r8, #0
-_021DA05C:
- ldrb r2, [r7]
- mov r0, r6
- mov r1, r5
- bl OS_SPrintf
- add r8, r8, #1
- cmp r8, #6
- add r7, r7, #1
- add r6, r6, #2
- blt _021DA05C
- add r0, sp, #0x38
- bl OS_GetOwnerInfo
- ldrb r0, [sp, #0x38]
- ldr r2, _021DA228 ; =UNK04_0220C0A4
- mov r1, #3
- cmp r0, #6
- movhi r0, #1
- strhib r0, [sp, #0x38]
- ldrb r3, [sp, #0x38]
- add r0, r4, #0x2c
- bl OS_SNPrintf
- add r0, sp, #0x3c
- add r1, r4, #0x7e
- mov r2, #0x14
- bl MI_CpuCopy8
- ldrb r1, [sp, #0x3b]
- ldr r2, _021DA22C ; =UNK04_0220C0AC
- add r0, r4, #0x2f
- str r1, [sp]
- ldrb r3, [sp, #0x3a]
- mov r1, #5
- bl OS_SNPrintf
- add r0, sp, #0x1c
- bl RTC_GetDate
- cmp r0, #0
- bne _021DA0F8
- add r0, sp, #0x2c
- bl RTC_GetTime
- cmp r0, #0
- beq _021DA104
-_021DA0F8:
- add sp, sp, #0x8c
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DA104:
- ldr r0, [sp, #0x20]
- ldr r2, _021DA230 ; =UNK04_0220C0B8
- str r0, [sp]
- ldr r1, [sp, #0x24]
- add r0, r4, #0x34
- str r1, [sp, #4]
- ldr r3, [sp, #0x2c]
- mov r1, #0xd
- str r3, [sp, #8]
- ldr r3, [sp, #0x30]
- str r3, [sp, #0xc]
- ldr r3, [sp, #0x34]
- str r3, [sp, #0x10]
- ldr r3, [sp, #0x1c]
- bl OS_SNPrintf
- bl OS_DisableInterrupts
- mov sb, r0
- bl WCM_GetApMacAddress
- mov r8, r0
- mov r1, #6
- bl DC_InvalidateRange
- cmp r8, #0
- bne _021DA174
- mov r0, sb
- bl OS_RestoreInterrupts
- add sp, sp, #0x8c
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DA174:
- add r7, r4, #0x41
- mov r6, #0
- ldr r5, _021DA228 ; =UNK04_0220C0A4
-_021DA180:
- ldrb r2, [r8, r6]
- mov r0, r7
- mov r1, r5
- bl OS_SPrintf
- add r6, r6, #1
- cmp r6, #6
- add r7, r7, #2
- blt _021DA180
- bl MOD04_021EBAB8
- mov r3, r0
- ldr r2, _021DA234 ; =UNK04_0220C0D4
- add r0, r4, #0x6f
- mov r1, #0xe
- bl OS_SNPrintf
- add r0, sp, #0x14
- bl WCM_GetApEssid
- mov r5, r0
- mov r1, #0x20
- bl DC_InvalidateRange
- cmp r5, #0
- bne _021DA1E8
- mov r0, sb
- bl OS_RestoreInterrupts
- add sp, sp, #0x8c
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DA1E8:
- mov r0, r5
- add r1, r4, #0x72
- bl MOD04_021EE5F4
- mov r0, r5
- add r1, r4, #0x4e
- mov r2, #0x20
- bl MI_CpuCopy8
- mov r0, sb
- bl OS_RestoreInterrupts
- mov r0, #1
- add sp, sp, #0x8c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021DA218: .word UNK04_0220C094
-_021DA21C: .word UNK04_0220C09C
-_021DA220: .word 0x027FFE0C
-_021DA224: .word 0x027FFE10
-_021DA228: .word UNK04_0220C0A4
-_021DA22C: .word UNK04_0220C0AC
-_021DA230: .word UNK04_0220C0B8
-_021DA234: .word UNK04_0220C0D4
- arm_func_end MOD04_021D9F78
-
- arm_func_start MOD04_021DA238
-MOD04_021DA238: ; 0x021DA238
- stmdb sp!, {r4, lr}
- sub sp, sp, #0x18
- mov r4, r0
- add r0, sp, #0
- bl DWCi_BM_GetWiFiInfo
- add r1, sp, #0
- mov r0, r4
- bl MOD04_021D9F78
- add sp, sp, #0x18
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DA238
-
- 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
- mov sb, r2
- cmp sb, #0
- ldr r8, [r0, #0x14]
- mov sl, r1
- mov r7, #0
- addle sp, sp, #4
- ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- mov r6, r7
- mov r5, r7
- mov fp, r7
- mov r4, r7
-_021DA298:
- ldr r1, [sl, r7, lsl #3]
- cmp r1, #0
- beq _021DA2B4
- ldr r0, _021DA2EC ; =UNK04_0220C110
- mov r2, r6
- blx r8
- str r5, [sl, r7, lsl #3]
-_021DA2B4:
- add r0, sl, r7, lsl #3
- ldr r1, [r0, #4]
- cmp r1, #0
- beq _021DA2D8
- ldr r0, _021DA2F0 ; =UNK04_0220C12C
- mov r2, fp
- blx r8
- add r0, sl, r7, lsl #3
- str r4, [r0, #4]
-_021DA2D8:
- add r7, r7, #1
- cmp r7, sb
- blt _021DA298
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DA2EC: .word UNK04_0220C110
-_021DA2F0: .word UNK04_0220C12C
- arm_func_end MOD04_021DA260
-
- arm_func_start MOD04_021DA2F4
-MOD04_021DA2F4: ; 0x021DA2F4
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r2
- mov r5, r3
- bl MOD04_021DA388
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl strlen
- cmp r0, r5
- movge r0, #0
- ldmgeia sp!, {r4, r5, r6, pc}
- mov r0, r6
- mov r1, r4
- bl strcpy
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DA2F4
-
- arm_func_start MOD04_021DA334
-MOD04_021DA334: ; 0x021DA334
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r2
- mov r5, r3
- bl MOD04_021DA388
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl strlen
- mov r1, r0
- mov r0, r4
- mov r2, r6
- mov r3, r5
- bl MOD04_021DD36C
- mvn r1, #0
- cmp r0, r1
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r0, r5
- ldmhsia sp!, {r4, r5, r6, pc}
- mov r1, #0
- strb r1, [r6, r0]
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DA334
-
- arm_func_start MOD04_021DA388
-MOD04_021DA388: ; 0x021DA388
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, #0
-_021DA398:
- add r0, r6, r4, lsl #3
- add r0, r0, #0x1000
- ldr r1, [r0, #0xa34]
- cmp r1, #0
- beq _021DA3D4
- mov r0, r5
- bl strcmp
- cmp r0, #0
- addeq r0, r6, r4, lsl #3
- addeq r0, r0, #0x1000
- ldreq r0, [r0, #0xa38]
- ldmeqia sp!, {r4, r5, r6, pc}
- add r4, r4, #1
- cmp r4, #0x20
- blt _021DA398
-_021DA3D4:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DA388
-
- 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
- mov fp, r0
- add r0, fp, r2
- mov r6, r1
- mov r3, #0x20
- mov r1, #0
- mov r2, #0x100
- str r0, [sp, #8]
- str r3, [sp, #0xc]
- str r1, [sp, #0x10]
- bl MI_CpuFill8
- add r0, fp, #0x1000
- ldr r5, [r0, #0xa04]
- ldr r1, _021DA66C ; =UNK04_0220C148
- mov r0, r5
- bl strstr
- str r0, [sp]
- cmp r0, #0
- addeq sp, sp, #0x14
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r0, r0, #4
- bl strlen
- ldr r1, [sp]
- add r1, r1, #4
- add r0, r1, r0
- str r0, [sp, #4]
- ldr r1, _021DA670 ; =UNK04_0220C150
- mov r0, r5
- bl strstr
- cmp r0, #0
- addeq sp, sp, #0x14
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r8, r0, #1
- ldrsb r7, [r8, #3]
- ldr r2, _021DA674 ; =UNK04_0220C154
- mov r5, #0
- add r1, sp, #8
- mov r0, fp
- mov r3, r8
- strb r5, [r8, #3]
- bl MOD04_021DA68C
- cmp r0, #1
- addne sp, sp, #0x14
- strneb r7, [r8, #3]
- movne r0, r5
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- strb r7, [r8, #3]
- cmp r6, #1
- beq _021DA4C8
- ldr r1, _021DA678 ; =UNK04_0220C160
- mov r0, r8
- mov r2, #3
- bl strncmp
- cmp r0, #0
- beq _021DA4D4
-_021DA4C8:
- add sp, sp, #0x14
- mov r0, #1
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DA4D4:
- ldr r1, _021DA67C ; =UNK04_0220C164
- add r0, r8, #4
- bl strstr
- cmp r0, #0
- addeq sp, sp, #0x14
- moveq r0, r5
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add sb, r0, #2
- mov r6, r5
- b _021DA580
-_021DA4FC:
- ldr r1, _021DA680 ; =UNK04_0220C168
- mov r0, sb
- bl strstr
- movs r7, r0
- beq _021DA598
- ldrsb sl, [r7]
- add r8, r7, #2
- ldr r1, _021DA67C ; =UNK04_0220C164
- mov r0, r8
- strb r6, [r7]
- bl strstr
- movs r5, r0
- streqb sl, [r7]
- beq _021DA598
- ldrsb r4, [r5]
- mov r0, fp
- mov r2, sb
- strb r6, [r5]
- add r1, sp, #8
- mov r3, r8
- bl MOD04_021DA68C
- cmp r0, #1
- strneb sl, [r7]
- addne sp, sp, #0x14
- strneb r4, [r5]
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- mov r0, r8
- bl strlen
- strb sl, [r7]
- add r0, r8, r0
- strb r4, [r5]
- add sb, r0, #2
-_021DA580:
- ldrsb r0, [sb]
- cmp r0, #0xd
- beq _021DA598
- ldrsb r0, [sb, #1]
- cmp r0, #0xa
- bne _021DA4FC
-_021DA598:
- ldr r0, [sp]
- add r8, r0, #4
- ldr r0, [sp, #4]
- cmp r8, r0
- bhs _021DA65C
- mov r5, #0
-_021DA5B0:
- ldr r1, _021DA684 ; =UNK04_0220C16C
- mov r0, r8
- bl strstr
- movs sl, r0
- beq _021DA65C
- ldrsb r7, [sl]
- add sb, sl, #1
- ldr r1, _021DA688 ; =UNK04_0220C170
- mov r0, sb
- strb r5, [sl]
- bl strstr
- movs r6, r0
- bne _021DA5F4
- ldr r1, _021DA67C ; =UNK04_0220C164
- mov r0, sb
- bl strstr
- mov r6, r0
-_021DA5F4:
- cmp r6, #0
- ldrnesb r4, [r6]
- mov r0, fp
- mov r2, r8
- add r1, sp, #8
- mov r3, sb
- strneb r5, [r6]
- bl MOD04_021DA68C
- cmp r0, #1
- beq _021DA634
- strb r7, [sl]
- cmp r6, #0
- add sp, sp, #0x14
- strneb r4, [r6]
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DA634:
- mov r0, sb
- bl strlen
- add r0, sb, r0
- add r8, r0, #1
- ldr r0, [sp, #4]
- strb r7, [sl]
- cmp r6, #0
- strneb r4, [r6]
- cmp r8, r0
- blo _021DA5B0
-_021DA65C:
- mov r0, #1
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DA668: .word 0x00001A34
-_021DA66C: .word UNK04_0220C148
-_021DA670: .word UNK04_0220C150
-_021DA674: .word UNK04_0220C154
-_021DA678: .word UNK04_0220C160
-_021DA67C: .word UNK04_0220C164
-_021DA680: .word UNK04_0220C168
-_021DA684: .word UNK04_0220C16C
-_021DA688: .word UNK04_0220C170
- arm_func_end MOD04_021DA3DC
-
- arm_func_start MOD04_021DA68C
-MOD04_021DA68C: ; 0x021DA68C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r1
- ldr r4, [r8, #8]
- ldr r1, [r8, #4]
- add r0, r0, #0x1000
- cmp r4, r1
- ldr r5, [r0, #0x10]
- ldr r4, [r0, #0x14]
- mov r7, r2
- mov r6, r3
- movgt r0, #0
- ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
- mov r0, r7
- bl strlen
- mov r1, r0
- ldr r0, _021DA7D8 ; =UNK04_0220C174
- add r1, r1, #1
- blx r5
- ldr r2, [r8]
- ldr r1, [r8, #8]
- str r0, [r2, r1, lsl #3]
- ldr r3, [r8, #8]
- ldr r2, [r8]
- ldr r0, [r2, r3, lsl #3]
- cmp r0, #0
- beq _021DA770
- mov r0, r6
- bl strlen
- mov r1, r0
- ldr r0, _021DA7DC ; =UNK04_0220C194
- add r1, r1, #1
- blx r5
- ldr r2, [r8]
- ldr r1, [r8, #8]
- add r1, r2, r1, lsl #3
- str r0, [r1, #4]
- ldr r3, [r8, #8]
- ldr r2, [r8]
- mov r1, r3, lsl #3
- add r0, r2, r3, lsl #3
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021DA770
- ldr r0, [r2, r1]
- mov r1, r7
- bl strcpy
- ldr r2, [r8]
- ldr r0, [r8, #8]
- mov r1, r6
- add r0, r2, r0, lsl #3
- ldr r0, [r0, #4]
- bl strcpy
- ldr r1, [r8, #8]
- mov r0, #1
- add r1, r1, #1
- str r1, [r8, #8]
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
-_021DA770:
- ldr r1, [r2, r3, lsl #3]
- cmp r1, #0
- beq _021DA798
- ldr r0, _021DA7E0 ; =UNK04_0220C1B4
- mov r2, #0
- blx r4
- ldr r1, [r8]
- ldr r0, [r8, #8]
- mov r2, #0
- str r2, [r1, r0, lsl #3]
-_021DA798:
- ldr r1, [r8]
- ldr r0, [r8, #8]
- add r0, r1, r0, lsl #3
- ldr r1, [r0, #4]
- cmp r1, #0
- beq _021DA7D0
- ldr r0, _021DA7E4 ; =UNK04_0220C1D0
- mov r2, #0
- blx r4
- ldr r1, [r8]
- ldr r0, [r8, #8]
- mov r2, #0
- add r0, r1, r0, lsl #3
- str r2, [r0, #4]
-_021DA7D0:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DA7D8: .word UNK04_0220C174
-_021DA7DC: .word UNK04_0220C194
-_021DA7E0: .word UNK04_0220C1B4
-_021DA7E4: .word UNK04_0220C1D0
- arm_func_end MOD04_021DA68C
-
- arm_func_start MOD04_021DA7E8
-MOD04_021DA7E8: ; 0x021DA7E8
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r1
- mov r5, r0
- mov r0, r6
- mov r4, #0
- bl strlen
- cmp r0, #0x100
- movhs r0, r4
- ldmhsia sp!, {r4, r5, r6, pc}
- ldr r0, _021DA934 ; =0x00001024
- mov r1, r6
- add r0, r5, r0
- mov r2, #0x100
- bl strncpy
- mov r0, r6
- bl strlen
- ldr r1, _021DA934 ; =0x00001024
- mov r6, r0
- add r0, r5, r1
- bl strlen
- cmp r6, r0
- movne r0, r4
- ldmneia sp!, {r4, r5, r6, pc}
- ldr r0, _021DA934 ; =0x00001024
- ldr r1, _021DA938 ; =UNK04_0220C1EC
- add r0, r5, r0
- bl strstr
- cmp r0, #0
- beq _021DA884
- ldr r0, _021DA93C ; =0x0000102B
- add r1, r5, #0x1000
- add r0, r5, r0
- str r0, [r1, #0x124]
- mov r0, r4
- str r0, [r1, #0x12c]
- add r0, r5, #0x1100
- mov r1, #0x50
- strh r1, [r0, #0x30]
- b _021DA8C0
-_021DA884:
- ldr r0, _021DA934 ; =0x00001024
- ldr r1, _021DA940 ; =UNK04_0220C1F4
- add r0, r5, r0
- bl strstr
- cmp r0, #0
- moveq r0, r4
- ldmeqia sp!, {r4, r5, r6, pc}
- add r1, r0, #8
- add r0, r5, #0x1000
- str r1, [r0, #0x124]
- mov r2, #1
- ldr r1, _021DA944 ; =0x000001BB
- str r2, [r0, #0x12c]
- add r0, r5, #0x1100
- strh r1, [r0, #0x30]
-_021DA8C0:
- add r0, r5, #0x1000
- ldr r0, [r0, #0x124]
- ldr r1, _021DA948 ; =UNK04_0220C200
- bl strstr
- cmp r0, #0
- movne r1, #0
- strneb r1, [r0]
- addne r4, r0, #1
- add r0, r5, #0x1000
- ldr r0, [r0, #0x124]
- ldr r1, _021DA94C ; =UNK04_0220C204
- bl strstr
- cmp r0, #0
- addeq r0, r5, #0x1000
- moveq r1, #0
- streq r1, [r0, #0x128]
- movne r1, #0
- strneb r1, [r0]
- addne r1, r0, #1
- addne r0, r5, #0x1000
- strne r1, [r0, #0x128]
- cmp r4, #0
- beq _021DA92C
- mov r0, r4
- bl atol
- add r1, r5, #0x1100
- strh r0, [r1, #0x30]
-_021DA92C:
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DA934: .word 0x00001024
-_021DA938: .word UNK04_0220C1EC
-_021DA93C: .word 0x0000102B
-_021DA940: .word UNK04_0220C1F4
-_021DA944: .word 0x000001BB
-_021DA948: .word UNK04_0220C200
-_021DA94C: .word UNK04_0220C204
- arm_func_end MOD04_021DA7E8
-
- arm_func_start MOD04_021DA950
-MOD04_021DA950: ; 0x021DA950
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- add r0, r0, #0x1000
- mov r5, r2
- cmp r5, #0
- ldr r7, [r0, #0x14]
- ldr r2, [r0, #0x10]
- mov r6, r1
- addle sp, sp, #4
- movle r0, #0
- ldmleia sp!, {r4, r5, r6, r7, pc}
- ldr r1, [r6, #0xc]
- ldr r0, _021DAA08 ; =UNK04_0220C208
- add r1, r1, r5
- blx r2
- movs r4, r0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r6]
- ldr r2, [r6, #0xc]
- mov r1, r4
- bl MI_CpuCopy8
- ldr r1, [r6]
- ldr r0, _021DAA0C ; =UNK04_0220C218
- mov r2, #0
- blx r7
- cmp r4, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r6]
- ldr r1, [r6, #4]
- sub r0, r4, r0
- add r0, r1, r0
- str r0, [r6, #4]
- ldr r1, [r6, #0xc]
- mov r0, #1
- add r1, r1, r5
- str r1, [r6, #0xc]
- str r4, [r6]
- ldr r1, [r6, #0xc]
- add r1, r4, r1
- str r1, [r6, #8]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DAA08: .word UNK04_0220C208
-_021DAA0C: .word UNK04_0220C218
- arm_func_end MOD04_021DA950
-
- arm_func_start MOD04_021DAA10
-MOD04_021DAA10: ; 0x021DAA10
- stmdb sp!, {r4, lr}
- mov r4, r1
- ldr r1, [r4]
- add r0, r0, #0x1000
- cmp r1, #0
- ldr r3, [r0, #0x14]
- beq _021DAA38
- ldr r0, _021DAA4C ; =UNK04_0220C218
- mov r2, #0
- blx r3
-_021DAA38:
- mov r0, r4
- mov r1, #0
- mov r2, #0x10
- bl MI_CpuFill8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DAA4C: .word UNK04_0220C218
- arm_func_end MOD04_021DAA10
-
- arm_func_start MOD04_021DAA50
-MOD04_021DAA50: ; 0x021DAA50
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- movs r5, r2
- add r0, r0, #0x1000
- ldr r2, [r0, #0x10]
- mov r4, r1
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- ldr r0, _021DAABC ; =UNK04_0220C22C
- mov r1, r5
- blx r2
- str r0, [r4]
- ldr r0, [r4]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- str r0, [r4, #4]
- str r5, [r4, #0xc]
- ldr r2, [r4]
- ldr r1, [r4, #0xc]
- mov r0, #1
- add r1, r2, r1
- str r1, [r4, #8]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DAABC: .word UNK04_0220C22C
- arm_func_end MOD04_021DAA50
-
- arm_func_start MOD04_021DAAC0
-MOD04_021DAAC0: ; 0x021DAAC0
- ands r1, r0, #0x8000
- bicne r0, r0, #0x8000
- bx lr
- arm_func_end MOD04_021DAAC0
-
- arm_func_start MOD04_021DAACC
-MOD04_021DAACC: ; 0x021DAACC
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- ldr r2, _021DAB60 ; =0x000019F4
- mov r7, r0
- mov r6, r1
- mov r0, r6
- add r4, r7, r2
- bl strlen
- mov r5, r0
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- sub r1, r1, r0
- cmp r5, r1
- ble _021DAB34
- sub r2, r5, r1
- mov r0, r7
- mov r1, r4
- add r2, r2, #1
- bl MOD04_021DA950
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- sub r1, r1, r0
-_021DAB34:
- ldr r2, _021DAB64 ; =UNK04_0220C240
- mov r3, r6
- bl OS_SNPrintf
- cmp r0, r5
- ldreq r1, [r4, #4]
- movne r0, #1
- addeq r0, r1, r0
- streq r0, [r4, #4]
- moveq r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DAB60: .word 0x000019F4
-_021DAB64: .word UNK04_0220C240
- arm_func_end MOD04_021DAACC
-
- 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
- add r0, sl, #0x1000
- ldr r4, [r0, #0x9f0]
- ldr r0, _021DAC8C ; =0x000019F4
- cmp r4, #0
- ldreq r6, _021DAC90 ; =UNK04_0220C244
- mov r8, r2
- add r5, sl, #0x1000
- add r4, sl, r0
- ldr r0, [r5, #0x9f0]
- mov r7, r3
- add fp, r0, #1
- mov r2, #0
- mov sb, r1
- ldrne r6, _021DAC94 ; =UNK04_0220C248
- mov r0, r8
- mov r1, r7
- mov r3, r2
- str fp, [r5, #0x9f0]
- bl MOD04_021DD4FC
- mov r5, r0
- mov r0, r6
- bl strlen
- mov fp, r0
- mov r0, sb
- bl strlen
- sub r1, fp, #2
- add r2, r1, r0
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- add r2, r5, r2
- sub r1, r1, r0
- cmp r2, r1
- ble _021DAC28
- sub r2, r2, r1
- mov r0, sl
- mov r1, r4
- add r2, r2, #1
- bl MOD04_021DA950
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- sub r1, r1, r0
-_021DAC28:
- mov r2, r6
- mov r3, sb
- bl OS_SNPrintf
- ldr r2, [r4, #4]
- mov r1, r7
- add r0, r2, r0
- str r0, [r4, #4]
- ldr r2, [r4, #4]
- ldr r3, [r4, #8]
- mov r0, r8
- sub r3, r3, r2
- sub r3, r3, #1
- bl MOD04_021DD4FC
- cmp r0, #0
- addlt sp, sp, #4
- movlt r0, #1
- ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r1, [r4, #4]
- mov r0, #0
- add r1, r1, r5
- str r1, [r4, #4]
- ldr r1, [r4, #4]
- strb r0, [r1]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DAC8C: .word 0x000019F4
-_021DAC90: .word UNK04_0220C244
-_021DAC94: .word UNK04_0220C248
- arm_func_end MOD04_021DAB68
-
- arm_func_start MOD04_021DAC98
-MOD04_021DAC98: ; 0x021DAC98
- stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
- sub sp, sp, #4
- mov r6, r2
- mov r8, r0
- ldr r2, _021DAD7C ; =0x000019F4
- mov r0, r6
- mov r7, r1
- add r5, r8, r2
- bl strlen
- mov r4, r0
- ldr r0, _021DAD80 ; =UNK04_0220C250
- bl strlen
- mov sb, r0
- mov r0, r7
- bl strlen
- sub r1, sb, #4
- add r0, r1, r0
- add r4, r4, r0
- ldr r2, [r5, #8]
- ldr r1, [r5, #4]
- add r0, r4, #1
- sub r1, r2, r1
- cmp r0, r1
- ble _021DAD1C
- sub r2, r4, r1
- mov r0, r8
- mov r1, r5
- add r2, r2, #1
- bl MOD04_021DA950
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DAD1C:
- ldr r0, [r5]
- ldr r1, _021DAD84 ; =UNK04_0220C148
- bl strstr
- add r8, r0, #2
- ldrsb sb, [r0, #2]
- mov r0, r8
- bl strlen
- add r2, r0, #1
- add r0, r8, r4
- mov r1, r8
- bl memmove
- ldr r2, _021DAD80 ; =UNK04_0220C250
- str r6, [sp]
- mov r3, r7
- mov r0, r8
- add r1, r4, #1
- bl OS_SNPrintf
- strb sb, [r8, r0]
- ldr r1, [r5, #4]
- mov r0, #0
- add r1, r1, r4
- str r1, [r5, #4]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021DAD7C: .word 0x000019F4
-_021DAD80: .word UNK04_0220C250
-_021DAD84: .word UNK04_0220C148
- arm_func_end MOD04_021DAC98
-
- arm_func_start MOD04_021DAD88
-MOD04_021DAD88: ; 0x021DAD88
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #8
- mov r7, r0
- add r0, r7, #0x1000
- ldr r1, [r0, #8]
- ldr r0, _021DAE40 ; =0x000019F4
- cmp r1, #0
- ldreq r6, _021DAE44 ; =UNK04_0220C25C
- add r5, r7, r0
- add r0, r7, #0x1000
- ldrne r6, _021DAE48 ; =UNK04_0220C2B0
- ldr r0, [r0, #0x124]
- bl strlen
- mov r4, r0
- mov r0, r6
- bl strlen
- add r1, r7, #0x1000
- mov r8, r0
- ldr r0, [r1, #0x128]
- bl strlen
- sub r1, r8, #4
- add r0, r1, r0
- add r1, r4, r0
- ldr r0, _021DAE40 ; =0x000019F4
- add r2, r1, #0x400
- add r1, r7, r0
- mov r0, r7
- bl MOD04_021DAA50
- cmp r0, #1
- addne sp, sp, #8
- movne r0, #1
- ldmneia sp!, {r4, r5, r6, r7, r8, pc}
- add r3, r7, #0x1000
- ldr r0, [r3, #0x124]
- mov r2, r6
- str r0, [sp]
- ldr r0, [r5, #4]
- ldr r1, [r5, #0xc]
- ldr r3, [r3, #0x128]
- bl OS_SNPrintf
- ldr r1, [r5, #4]
- add r0, r1, r0
- str r0, [r5, #4]
- mov r0, #0
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DAE40: .word 0x000019F4
-_021DAE44: .word UNK04_0220C25C
-_021DAE48: .word UNK04_0220C2B0
- arm_func_end MOD04_021DAD88
-
- arm_func_start MOD04_021DAE4C
-MOD04_021DAE4C: ; 0x021DAE4C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- movs r5, r0
- add r1, r5, #0x1000
- ldr r4, [r1, #0x14]
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r1, _021DAF00 ; =0x00001A34
- mov r2, #0x20
- add r1, r5, r1
- bl MOD04_021DA260
- ldr r1, _021DAF04 ; =0x00001A04
- mov r0, r5
- add r1, r5, r1
- bl MOD04_021DAA10
- ldr r1, _021DAF08 ; =0x000019F4
- mov r0, r5
- add r1, r5, r1
- bl MOD04_021DAA10
- add r0, r5, #0x1000
- ldr r1, [r0, #0x9c8]
- cmp r1, #0
- beq _021DAEC0
- ldr r0, _021DAF0C ; =UNK04_0220C2D0
- mov r2, #0
- blx r4
- add r0, r5, #0x1000
- mov r1, #0
- str r1, [r0, #0x9c8]
-_021DAEC0:
- add r0, r5, #0x1000
- ldr r1, [r0, #0x9cc]
- cmp r1, #0
- beq _021DAEE8
- ldr r0, _021DAF10 ; =UNK04_0220C2E8
- mov r2, #0
- blx r4
- add r0, r5, #0x1000
- mov r1, #0
- str r1, [r0, #0x9cc]
-_021DAEE8:
- ldr r2, _021DAF14 ; =0x00001C10
- mov r0, r5
- mov r1, #0
- bl MI_CpuFill8
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DAF00: .word 0x00001A34
-_021DAF04: .word 0x00001A04
-_021DAF08: .word 0x000019F4
-_021DAF0C: .word UNK04_0220C2D0
-_021DAF10: .word UNK04_0220C2E8
-_021DAF14: .word 0x00001C10
- arm_func_end MOD04_021DAE4C
-
- 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
- add r0, sl, #0x1000
- ldr fp, [r0, #0x1c]
- ldr r0, _021DB224 ; =0x00001134
- ldr r1, _021DB228 ; =0x00001198
- ldr r2, _021DB22C ; =0x00001A04
- add r8, sl, r0
- cmp fp, #0
- mov r0, sl
- add r6, sl, r1
- add r7, sl, r2
- mov r5, #0
- ldrle fp, _021DB230 ; =0x0000EA60
- bl MOD04_021DB35C
- mov r0, sl
- bl MOD04_021DB348
- movs r4, r0
- addeq r0, sl, #0x1000
- moveq r1, #2
- streq r1, [r0, #0x20]
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl CPS_SocUse
- add r0, sl, #0x1000
- ldr r0, [r0, #0x12c]
- cmp r0, #1
- bne _021DAFC8
- mov r0, r6
- mov r1, #0
- mov r2, #0x830
- bl MI_CpuFill8
- ldr r1, _021DB234 ; =MOD04_021DAAC0
- add r0, sl, #0x1000
- str r1, [r6, #0x810]
- ldr r1, [r0, #0x124]
- ldr r0, _021DB238 ; =UNK04_0220C0E4
- str r1, [r6, #0x800]
- mov r1, #0xb
- str r6, [r8, #0xc]
- bl CPS_SetRootCa
- mov r0, #1
- bl CPS_SetSsl
-_021DAFC8:
- add r0, sl, #0x1100
- ldrh r1, [r0, #0x30]
- mov r2, r4
- mov r0, #0
- bl CPS_SocPingMode
- bl CPS_TcpConnect
- cmp r0, #0
- beq _021DB004
- add r0, sl, #0x1000
- mov r1, #3
- str r1, [r0, #0x20]
- bl CPS_SocRelease
- bl CPS_SocUnRegister
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DB004:
- add r0, sl, #0x1000
- ldr r4, [r0, #0x9f4]
- mov r0, r4
- bl strlen
- mov r1, r0
- mov r0, r4
- bl CPS_SocWrite
- cmp r0, #0
- str r0, [sp, #8]
- addle r0, sl, #0x1000
- movle r1, #5
- strle r1, [r0, #0x20]
- ble _021DB20C
- bl CPS_SocGetChar
- mov r0, sl
- bl MOD04_021DB3B8
- cmp r0, #0
- addeq r0, sl, #0x1000
- moveq r1, #7
- streq r1, [r0, #0x20]
- beq _021DB20C
- ldr r0, [r7]
- str r0, [r7, #4]
- ldr r1, [r7]
- ldr r0, [r7, #0xc]
- add r0, r1, r0
- str r0, [r7, #8]
- bl OS_GetTick
- mov r6, r0
- mov r0, fp, asr #0x1f
- mov r8, r1
- str r0, [sp, #4]
- mov r4, #0
-_021DB088:
- ldr r0, _021DB23C ; =CPSMyIp
- ldr r0, [r0]
- cmp r0, #0
- addeq r0, sl, #0x1000
- moveq r1, #5
- streq r1, [r0, #0x20]
- beq _021DB20C
- bl CPS_SocGetLength
- str r0, [sp, #8]
- cmp r0, #0
- blt _021DB1E8
- cmp r0, #0
- ble _021DB16C
- bl OS_GetTick
- mov r6, r0
- add r0, sp, #8
- mov r8, r1
- bl CPS_SocRead
- cmp r0, #0
- beq _021DB1E8
- ldr r2, [r7, #8]
- ldr r1, [r7, #4]
- sub r2, r2, #1
- ldr sb, [sp, #8]
- sub r2, r2, r1
- cmp sb, r2
- movge sb, r2
- mov r2, sb
- bl MI_CpuCopy8
- ldr r0, [r7, #4]
- cmp r5, #1
- add r0, r0, sb
- str r0, [r7, #4]
- ldr r0, [r7, #4]
- strb r4, [r0]
- bne _021DB144
- ldr r0, _021DB240 ; =0x00001A14
- add r0, sl, r0
- bl OS_LockMutex
- add r1, sl, #0x1000
- ldr r2, [r1, #0xa30]
- ldr r0, _021DB240 ; =0x00001A14
- add r2, r2, sb
- add r0, sl, r0
- str r2, [r1, #0xa30]
- bl OS_UnlockMutex
- b _021DB150
-_021DB144:
- mov r0, sl
- bl MOD04_021DB248
- mov r5, r0
-_021DB150:
- ldr r0, [sp, #8]
- cmp r0, sb
- bls _021DB164
- bl CPS_SocConsume
- b _021DB1E8
-_021DB164:
- mov r0, sb
- bl CPS_SocConsume
-_021DB16C:
- add r0, sl, #0x1000
- ldr r1, [r0, #0xa2c]
- cmp r1, #0
- blt _021DB188
- ldr r0, [r0, #0xa30]
- cmp r0, r1
- bge _021DB1E8
-_021DB188:
- bl OS_GetTick
- subs r2, r0, r6
- sbc r0, r1, r8
- mov r1, r0, lsl #6
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- ldr r2, _021DB244 ; =0x000082EA
- mov r3, r4
- bl _ll_udiv
- ldr r2, [sp, #4]
- cmp r1, r2
- cmpeq r0, fp
- addhi r0, sl, #0x1000
- movhi r1, #6
- strhi r1, [r0, #0x20]
- bhi _021DB20C
- mov r0, sl
- bl MOD04_021DB3B8
- cmp r0, #0
- bne _021DB088
- add r0, sl, #0x1000
- mov r1, #7
- str r1, [r0, #0x20]
- b _021DB20C
-_021DB1E8:
- bl CPS_TcpShutdown
- bl CPS_TcpClose
- bl CPS_SocRelease
- bl CPS_SocUnRegister
- add r0, sl, #0x1000
- mov r1, #8
- str r1, [r0, #0x20]
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DB20C:
- bl CPS_TcpShutdown
- bl CPS_TcpClose
- bl CPS_SocRelease
- bl CPS_SocUnRegister
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DB224: .word 0x00001134
-_021DB228: .word 0x00001198
-_021DB22C: .word 0x00001A04
-_021DB230: .word 0x0000EA60
-_021DB234: .word MOD04_021DAAC0
-_021DB238: .word UNK04_0220C0E4
-_021DB23C: .word CPSMyIp
-_021DB240: .word 0x00001A14
-_021DB244: .word 0x000082EA
- arm_func_end MOD04_021DAF18
-
- arm_func_start MOD04_021DB248
-MOD04_021DB248: ; 0x021DB248
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, r0
- add r0, r5, #0x1000
- ldr r6, [r0, #0xa04]
- ldr r2, _021DB334 ; =0x00001A04
- ldr r1, _021DB338 ; =UNK04_0220C148
- mov r0, r6
- add r4, r5, r2
- bl strstr
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r1, _021DB338 ; =UNK04_0220C148
- mov r0, r6
- bl strstr
- ldr r1, _021DB33C ; =0x00001A14
- add r6, r0, #4
- add r0, r5, r1
- bl OS_LockMutex
- ldr r0, [r4, #4]
- ldr r1, _021DB33C ; =0x00001A14
- sub r2, r0, r6
- add r0, r5, #0x1000
- str r2, [r0, #0xa30]
- add r0, r5, r1
- bl OS_UnlockMutex
- ldr r0, [r4]
- ldr r1, _021DB340 ; =UNK04_0220C300
- bl strstr
- movs r4, r0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DB340 ; =UNK04_0220C300
- bl strlen
- add r7, r4, r0
- ldr r1, _021DB344 ; =UNK04_0220C164
- mov r0, r7
- bl strstr
- mov r4, r0
- ldr r0, _021DB33C ; =0x00001A14
- ldrsb r6, [r4]
- mov r1, #0
- add r0, r5, r0
- strb r1, [r4]
- bl OS_LockMutex
- mov r0, r7
- bl atol
- add r1, r5, #0x1000
- ldr r2, _021DB33C ; =0x00001A14
- str r0, [r1, #0xa2c]
- add r0, r5, r2
- bl OS_UnlockMutex
- strb r6, [r4]
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DB334: .word 0x00001A04
-_021DB338: .word UNK04_0220C148
-_021DB33C: .word 0x00001A14
-_021DB340: .word UNK04_0220C300
-_021DB344: .word UNK04_0220C164
- arm_func_end MOD04_021DB248
-
- arm_func_start MOD04_021DB348
-MOD04_021DB348: ; 0x021DB348
- ldr ip, _021DB358 ; =CPS_Resolve
- add r0, r0, #0x1000
- ldr r0, [r0, #0x124]
- bx ip
- .align 2, 0
-_021DB358: .word CPS_Resolve
- arm_func_end MOD04_021DB348
-
- arm_func_start MOD04_021DB35C
-MOD04_021DB35C: ; 0x021DB35C
- stmdb sp!, {r4, lr}
- ldr r1, _021DB3AC ; =0x00001134
- mov r4, r0
- add r0, r4, r1
- mov r1, #0
- mov r2, #0x64
- bl MI_CpuFill8
- ldr r0, _021DB3B0 ; =0x00000B68
- add r1, r4, #0x1000
- str r0, [r1, #0x170]
- ldr r3, [r1, #0x9c8]
- ldr r0, _021DB3AC ; =0x00001134
- ldr r2, _021DB3B4 ; =0x000005EA
- str r3, [r1, #0x174]
- str r2, [r1, #0x17c]
- ldr r2, [r1, #0x9cc]
- add r0, r4, r0
- str r2, [r1, #0x180]
- bl CPS_SocRegister
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB3AC: .word 0x00001134
-_021DB3B0: .word 0x00000B68
-_021DB3B4: .word 0x000005EA
- arm_func_end MOD04_021DB35C
-
- arm_func_start MOD04_021DB3B8
-MOD04_021DB3B8: ; 0x021DB3B8
- stmdb sp!, {r4, lr}
- mov r4, r0
- add r0, r4, #0x1000
- ldr r0, [r0, #0x12c]
- cmp r0, #1
- bne _021DB3EC
- ldr r0, _021DB438 ; =0x000019D0
- add r0, r4, r0
- bl OS_GetLowEntropyData
- ldr r0, _021DB438 ; =0x000019D0
- mov r1, #0x20
- add r0, r4, r0
- bl CPS_SslAddRandomSeed
-_021DB3EC:
- ldr r0, _021DB43C ; =0x00001BF4
- add r0, r4, r0
- bl OS_LockMutex
- add r0, r4, #0x1000
- ldr r0, [r0, #0xc0c]
- cmp r0, #1
- bne _021DB41C
- ldr r0, _021DB43C ; =0x00001BF4
- add r0, r4, r0
- bl OS_UnlockMutex
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DB41C:
- ldr r0, _021DB43C ; =0x00001BF4
- add r0, r4, r0
- bl OS_UnlockMutex
- mov r0, #0xa
- bl OS_Sleep
- mov r0, #1
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB438: .word 0x000019D0
-_021DB43C: .word 0x00001BF4
- arm_func_end MOD04_021DB3B8
-
- arm_func_start MOD04_021DB440
-MOD04_021DB440: ; 0x021DB440
- stmdb sp!, {r4, lr}
- mov r4, r0
- add r0, r4, #0x1000
- ldrb r0, [r0]
- cmp r0, #0xff
- ldmneia sp!, {r4, pc}
- ldr r0, _021DB49C ; =0x00001BF4
- add r0, r4, r0
- bl OS_LockMutex
- ldr r0, _021DB49C ; =0x00001BF4
- add r1, r4, #0x1000
- mov r2, #1
- add r0, r4, r0
- str r2, [r1, #0xc0c]
- bl OS_UnlockMutex
- add r0, r4, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r0, _021DB4A0 ; =0x00001B34
- add r0, r4, r0
- bl OS_JoinThread
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB49C: .word 0x00001BF4
-_021DB4A0: .word 0x00001B34
- arm_func_end MOD04_021DB440
-
- arm_func_start MOD04_021DB4A4
-MOD04_021DB4A4: ; 0x021DB4A4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xc
- ldr r3, _021DB55C ; =0x00001BF4
- mov r5, r0
- add r2, r5, #0x1000
- mov ip, #0
- add r0, r5, r3
- mov r4, r1
- str ip, [r2, #0xc0c]
- bl OS_InitMutex
- ldr r0, _021DB560 ; =0x00001A14
- add r0, r5, r0
- bl OS_InitMutex
- add r0, r5, #0x1000
- ldr r0, [r0, #0x18]
- cmp r0, #1
- ldreq r0, _021DB564 ; =UNK04_02210480
- moveq r1, #1
- streq r1, [r0]
- ldrne r0, _021DB564 ; =UNK04_02210480
- movne r1, #0
- strne r1, [r0]
- add r0, r5, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DB524
- ldr r0, _021DB568 ; =0x00001B34
- add r0, r5, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, pc}
-_021DB524:
- ldr r0, _021DB568 ; =0x00001B34
- mov r1, #0x1000
- str r1, [sp]
- ldr r1, _021DB56C ; =MOD04_021DAF18
- mov r2, r5
- add r0, r5, r0
- add r3, r5, #0x1000
- str r4, [sp, #4]
- bl OS_CreateThread
- ldr r0, _021DB568 ; =0x00001B34
- add r0, r5, r0
- bl OS_WakeupThreadDirect
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DB55C: .word 0x00001BF4
-_021DB560: .word 0x00001A14
-_021DB564: .word UNK04_02210480
-_021DB568: .word 0x00001B34
-_021DB56C: .word MOD04_021DAF18
- arm_func_end MOD04_021DB4A4
-
- arm_func_start MOD04_021DB570
-MOD04_021DB570: ; 0x021DB570
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r1, _021DB5F4 ; =UNK04_0220C314
- ldr r2, _021DB5F8 ; =UNK04_0220C320
- mov r4, r0
- bl MOD04_021DAC98
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #1
- ldmneia sp!, {r4, pc}
- add r0, r4, #0x1000
- ldr r0, [r0, #0x9f4]
- ldr r1, _021DB5FC ; =UNK04_0220C148
- bl strstr
- add r0, r0, #4
- bl strlen
- movs r3, r0
- beq _021DB5E8
- ldr r2, _021DB600 ; =UNK04_0220C328
- add r0, sp, #0
- mov r1, #7
- bl OS_SNPrintf
- ldr r1, _021DB604 ; =UNK04_0220C32C
- add r2, sp, #0
- mov r0, r4
- bl MOD04_021DAC98
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #1
- ldmneia sp!, {r4, pc}
-_021DB5E8:
- mov r0, #0
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB5F4: .word UNK04_0220C314
-_021DB5F8: .word UNK04_0220C320
-_021DB5FC: .word UNK04_0220C148
-_021DB600: .word UNK04_0220C328
-_021DB604: .word UNK04_0220C32C
- arm_func_end MOD04_021DB570
-
- arm_func_start MOD04_021DB608
-MOD04_021DB608: ; 0x021DB608
- stmdb sp!, {r4, r5, r6, lr}
- mov r5, r1
- ldr r2, _021DB714 ; =0x00001C10
- mov r6, r0
- ldr r4, [r5, #0xc]
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021DB718 ; =0x00001004
- add r0, r6, #0x1000
- mvn r2, #0
- str r2, [r0, #0xa2c]
- mov lr, r5
- str r2, [r0, #0xa30]
- add ip, r6, r1
- ldmia lr!, {r0, r1, r2, r3}
- stmia ip!, {r0, r1, r2, r3}
- ldmia lr, {r0, r1, r2}
- stmia ip, {r0, r1, r2}
- ldr r0, _021DB71C ; =UNK04_0220C33C
- ldr r1, _021DB720 ; =0x00000B68
- blx r4
- add r1, r6, #0x1000
- str r0, [r1, #0x9c8]
- ldr r0, [r1, #0x9c8]
- cmp r0, #0
- moveq r0, #1
- streq r0, [r1, #0x20]
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, _021DB724 ; =UNK04_0220C354
- ldr r1, _021DB728 ; =0x000005EA
- blx r4
- add r2, r6, #0x1000
- str r0, [r2, #0x9cc]
- ldr r0, [r2, #0x9cc]
- cmp r0, #0
- moveq r0, #1
- streq r0, [r2, #0x20]
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r1, _021DB72C ; =0x00001A04
- ldr r2, [r2, #0xc]
- mov r0, r6
- add r1, r6, r1
- bl MOD04_021DAA50
- cmp r0, #0
- addeq r1, r6, #0x1000
- moveq r0, #1
- streq r0, [r1, #0x20]
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r1, [r5]
- mov r0, r6
- 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 MOD04_021DAD88
- add r1, r6, #0x1000
- str r0, [r1, #0x20]
- ldr r0, [r1, #0x20]
- cmp r0, #0
- moveq r0, #0xff
- streqb r0, [r1]
- add r0, r6, #0x1000
- ldr r0, [r0, #0x20]
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DB714: .word 0x00001C10
-_021DB718: .word 0x00001004
-_021DB71C: .word UNK04_0220C33C
-_021DB720: .word 0x00000B68
-_021DB724: .word UNK04_0220C354
-_021DB728: .word 0x000005EA
-_021DB72C: .word 0x00001A04
- arm_func_end MOD04_021DB608
-
- arm_func_start MOD04_021DB730
-MOD04_021DB730: ; 0x021DB730
- stmdb sp!, {r4, lr}
- ldr r2, _021DB770 ; =UNK04_02210484
- ldr r1, _021DB774 ; =0x000011DC
- ldr r2, [r2]
- mov r4, r0
- add r0, r2, r1
- bl OS_LockMutex
- ldr r2, _021DB770 ; =UNK04_02210484
- ldr r1, _021DB774 ; =0x000011DC
- ldr r0, [r2]
- add r0, r0, #0x1000
- str r4, [r0]
- ldr r0, [r2]
- add r0, r0, r1
- bl OS_UnlockMutex
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB770: .word UNK04_02210484
-_021DB774: .word 0x000011DC
- arm_func_end MOD04_021DB730
-
- 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 ; =UNK04_02210484
- mov r0, #0
- str r0, [sp]
- ldr r0, [r5]
- ldr r7, [sp]
- add r0, r0, #0x1000
- ldr sb, [r0, #0x108]
- ldr r8, [r0, #0x10c]
- mov r0, r7
- str r0, [sp, #8]
- str r0, [sp, #0x1c]
- mvn r0, #2
- str r0, [sp, #0x20]
- mov r0, r7
- str r0, [sp, #0x24]
- mvn r0, #3
- str r0, [sp, #0x28]
- mov r0, r7
- str r0, [sp, #0x2c]
- mov r0, #0x1000
- str r0, [sp, #0x14]
- mov r0, #5
- str r0, [sp, #0x30]
- mov r0, r7
- str r0, [sp, #0x34]
- str r0, [sp, #0x38]
- str r0, [sp, #0x3c]
- mov r0, #4
- str r0, [sp, #0x40]
- mov r0, r7
- str r0, [sp, #0x44]
- str r0, [sp, #0x48]
- str r0, [sp, #0x4c]
- str r0, [sp, #0x50]
- str r0, [sp, #0x58]
- str r0, [sp, #0x54]
- mvn r0, #4
- str r0, [sp, #0x5c]
- mov r0, r7
- str r0, [sp, #0x60]
- mvn r0, #1
- ldr r4, _021DC674 ; =UNK04_02210490
- mov r6, #1
- str r0, [sp, #0x18]
-_021DB830:
- ldr r0, _021DC678 ; =UNK04_02210494
- ldr r1, [sp, #0x14]
- str r6, [r0, #4]
- str r1, [r0, #8]
- ldr r1, _021DC67C ; =0x00004E20
- str sb, [r0, #0xc]
- str r1, [r0, #0x18]
- str r8, [r0, #0x10]
- ldr r0, _021DC680 ; =UNK04_0220C36C
- ldr r1, [r5]
- ldr r2, [r0]
- ldr r0, _021DC678 ; =UNK04_02210494
- add r1, r1, #0x1000
- str r2, [r0]
- ldr r0, [sp, #0x18]
- str r0, [r1, #4]
- ldr r0, [r4]
- ldr r1, _021DC678 ; =UNK04_02210494
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DB89C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DB89C:
- ldr r0, [r4]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DB8C4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DB8C4:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- sub r1, r0, #1
- ldr r0, [r4]
- bl MOD04_021DB4A4
- ldr r1, [r4]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DB8FC
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DB8FC:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DB91C
- cmp r1, #8
- beq _021DB948
- b _021DB930
-_021DB91C:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DB930:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DB948:
- ldr r1, [sp, #0x1c]
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021DB970
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DB970:
- ldr r0, [r4]
- ldr r1, _021DC68C ; =UNK04_0220C418
- bl MOD04_021DA388
- bl atol
- mov sl, r0
- ldr r0, _021DC690 ; =errno
- ldr r0, [r0]
- cmp r0, #0x22
- bne _021DB9A0
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DB9A0:
- cmp sl, #0xc8
- beq _021DBCB4
- ldr r0, _021DC694 ; =0x0000012E
- cmp sl, r0
- bne _021DBC9C
- ldr r0, _021DC698 ; =UNK04_0221048C
- str r6, [r0]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r1, [r0, #0x118]
- cmp r1, #0
- beq _021DBC0C
- ldr r1, _021DC674 ; =UNK04_02210490
- mvn r2, #5
- str r2, [r0, #4]
- ldr r0, [r1]
- bl MOD04_021DAE4C
- ldr r2, _021DC678 ; =UNK04_02210494
- ldr r0, _021DC69C ; =UNK04_0220BEB4
- ldr r3, _021DC67C ; =0x00004E20
- ldr r0, [r0]
- mov r5, #0
- mov r4, #0x200
- ldr r1, _021DC6A0 ; =UNK04_0220C424
- str r0, [r2]
- str r5, [r2, #4]
- str r4, [r2, #8]
- str sb, [r2, #0xc]
- str r8, [r2, #0x10]
- str r3, [r2, #0x18]
- bl strcmp
- cmp r0, #0
- ldrne r0, _021DC678 ; =UNK04_02210494
- movne r1, #1
- strne r1, [r0, #0x14]
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r1, _021DC678 ; =UNK04_02210494
- ldr r0, [r0]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DBA5C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBA5C:
- add r0, sp, #0x240
- bl MOD04_021DA238
- cmp r0, #0
- beq _021DBA88
- ldr r0, _021DC674 ; =UNK04_02210490
- add r1, sp, #0x240
- ldr r0, [r0]
- mov r2, #1
- bl MOD04_021D9C2C
- cmp r0, #0
- bne _021DBAA0
-_021DBA88:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBAA0:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r1, _021DC6A4 ; =UNK04_0220C444
- ldr r0, [r0]
- ldr r2, _021DC6A8 ; =UNK04_0220C44C
- mov r3, #7
- bl MOD04_021DAB68
- cmp r0, #0
- bne _021DBAF8
- ldr r0, _021DC670 ; =UNK04_02210484
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r4, [r0, #0x118]
- mov r0, r4
- bl strlen
- ldr r1, _021DC674 ; =UNK04_02210490
- mov r3, r0
- ldr r0, [r1]
- ldr r1, _021DC6AC ; =UNK04_0220C454
- mov r2, r4
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021DBB10
-_021DBAF8:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBB10:
- ldr r1, _021DC670 ; =UNK04_02210484
- ldr r0, _021DC6B0 ; =UNK04_0220C464
- ldr r1, [r1]
- mov r2, #0
- add r1, r1, #0x1000
- ldr r1, [r1, #0x118]
- blx r8
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r0, [r0]
- ldr r1, _021DC674 ; =UNK04_02210490
- add r0, r0, #0x1000
- str r2, [r0, #0x118]
- ldr r0, [r1]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DBB6C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBB6C:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- ldr r2, _021DC674 ; =UNK04_02210490
- sub r1, r0, #1
- ldr r0, [r2]
- bl MOD04_021DB4A4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DBBAC
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DBBAC:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DBBD0
- cmp r1, #8
- beq _021DBBFC
- b _021DBBE4
-_021DBBD0:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DBBE4:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DBBFC:
- bl MOD04_021DAE4C
- mov r0, #7
- bl MOD04_021DB730
- b _021DC614
-_021DBC0C:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr fp, [r1, #0xa04]
- cmp fp, #0
- bne _021DBC30
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DBC30:
- mov r0, fp
- bl strlen
- add r1, r0, #1
- ldr r0, _021DC6B4 ; =UNK04_0220C394
- blx sb
- ldr r1, [r5]
- add r1, r1, #0x1000
- str r0, [r1, #0x114]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x114]
- str r0, [sp, #0xc]
- cmp r0, #0
- bne _021DBC80
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DBC80:
- mov r0, fp
- bl strlen
- mov r2, r0
- ldr r0, [sp, #0xc]
- mov r1, fp
- bl strncpy
- b _021DBCB4
-_021DBC9C:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #0xa
- bl MOD04_021DB730
- b _021DC614
-_021DBCB4:
- ldr r0, [r4]
- bl MOD04_021DAE4C
- add r0, sp, #0x68
- bl DWCi_BM_GetWiFiInfo
- ldr r2, [sp, #0x68]
- ldr r1, [sp, #0x6c]
- mov r0, #0
- cmp r1, r0
- cmpeq r2, r0
- bne _021DBDEC
- ldr r1, [r5]
- ldr r0, _021DC6B8 ; =UNK04_022104B0
- add r2, r1, #0x1000
- ldr r1, [sp, #0x20]
- str r1, [r2, #4]
- ldr r2, [sp, #0x24]
- mov r1, r0
- strh r2, [r1]
- strb r2, [r1, #0x34]
- ldr r2, [r5]
- ldr r1, [r4]
- add r3, r2, #0x1000
- ldr fp, [r3, #0x108]
- mov r2, r0
- str fp, [r2, #0x40]
- ldr r3, [r3, #0x10c]
- str r3, [r2, #0x44]
- bl MOD04_021D9ACC
- cmp r0, #0
- beq _021DBD38
- mov r0, #5
- bl MOD04_021DB730
- b _021DC614
-_021DBD38:
- bl MOD04_021D98DC
- bl MOD04_021D988C
- cmp r0, #0x15
- beq _021DBDE8
- bl MOD04_021D988C
- cmp r0, #9
- bne _021DBD6C
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
- b _021DBDD8
-_021DBD6C:
- add r0, sp, #0x7c
- bl MOD04_021D97F8
- ldr r0, _021DC6BC ; =UNK04_02210488
- ldr r0, [r0]
- cmp r0, #1
- bne _021DBDC4
- ldr r1, [sp, #0x7c]
- ldr r0, _021DC6C0 ; =0xFFFFA4FA
- cmp r1, r0
- beq _021DBDA0
- bl MOD04_021D988C
- cmp r0, #0xb
- bne _021DBDC4
-_021DBDA0:
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
- bl MOD04_021D991C
- mov r0, #0xb
- bl MOD04_021DB730
- b _021DC614
-_021DBDC4:
- ldr r0, _021DC670 ; =UNK04_02210484
- ldr r1, [sp, #0x7c]
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DBDD8:
- bl MOD04_021D991C
- mov r0, #6
- bl MOD04_021DB730
- b _021DC614
-_021DBDE8:
- bl MOD04_021D991C
-_021DBDEC:
- cmp sl, #0xc8
- bne _021DBE14
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DBE14:
- ldr r0, [r5]
- ldr r1, _021DC6A0 ; =UNK04_0220C424
- add r2, r0, #0x1000
- ldr r0, [sp, #0x28]
- str r0, [r2, #4]
- ldr r0, _021DC678 ; =UNK04_02210494
- ldr r2, [sp, #0x2c]
- str sb, [r0, #0xc]
- str r2, [r0, #4]
- ldr r2, [sp, #0x14]
- str r8, [r0, #0x10]
- str r2, [r0, #8]
- ldr r2, _021DC6C4 ; =0x00009C40
- str r2, [r0, #0x18]
- ldr r0, _021DC69C ; =UNK04_0220BEB4
- ldr r2, _021DC678 ; =UNK04_02210494
- ldr r0, [r0]
- str r0, [r2]
- bl strcmp
- cmp r0, #0
- ldrne r0, _021DC678 ; =UNK04_02210494
- ldr r1, _021DC678 ; =UNK04_02210494
- strne r6, [r0, #0x14]
- ldr r0, [r4]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DBE98
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBE98:
- add r0, sp, #0x240
- bl MOD04_021DA238
- cmp r0, #0
- beq _021DBEC0
- ldr r0, [r4]
- add r1, sp, #0x240
- mov r2, r6
- bl MOD04_021D9C2C
- cmp r0, #0
- bne _021DBED8
-_021DBEC0:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBED8:
- ldr r0, [r4]
- ldr r1, _021DC6A4 ; =UNK04_0220C444
- ldr r2, _021DC6C8 ; =UNK04_0220C484
- ldr r3, [sp, #0x30]
- bl MOD04_021DAB68
- cmp r0, #0
- bne _021DBF24
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr sl, [r0, #0x114]
- mov r0, sl
- bl strlen
- mov r3, r0
- ldr r0, [r4]
- ldr r1, _021DC6CC ; =UNK04_0220C48C
- mov r2, sl
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021DBF3C
-_021DBF24:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBF3C:
- ldr r1, [r5]
- ldr r0, _021DC6D0 ; =UNK04_0220C3B0
- add r1, r1, #0x1000
- ldr r2, [sp, #0x34]
- ldr r1, [r1, #0x114]
- blx r8
- ldr r0, [r5]
- add r1, r0, #0x1000
- ldr r0, [sp, #0x38]
- str r0, [r1, #0x114]
- ldr r0, [r4]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DBF8C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBF8C:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- sub r1, r0, #1
- ldr r0, [r4]
- bl MOD04_021DB4A4
- ldr r1, [r4]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DBFC4
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DBFC4:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DC02C
- cmp r1, #3
- beq _021DBFEC
- cmp r1, #8
- beq _021DC058
- b _021DC040
-_021DBFEC:
- bl MOD04_021DAE4C
- ldr r0, _021DC6BC ; =UNK04_02210488
- ldr r0, [r0]
- cmp r0, #1
- bne _021DC020
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DC020:
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DC02C:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DC040:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DC058:
- ldr r1, [sp, #0x3c]
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021DC080
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC080:
- ldr r0, [r4]
- ldr r1, _021DC68C ; =UNK04_0220C418
- bl MOD04_021DA388
- bl atol
- mov sl, r0
- ldr r0, _021DC690 ; =errno
- ldr r0, [r0]
- cmp r0, #0x22
- bne _021DC0BC
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC0BC:
- cmp sl, #0xc8
- beq _021DC118
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- ldr r0, _021DC6BC ; =UNK04_02210488
- ldr r0, [r0]
- cmp r0, #1
- bne _021DC10C
- ldr r0, _021DC694 ; =0x0000012E
- cmp sl, r0
- bne _021DC10C
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DC10C:
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC118:
- ldr r0, [r4]
- ldr r1, _021DC6D4 ; =UNK04_0220C494
- ldr r3, [sp, #0x40]
- add r2, sp, #0x64
- bl MOD04_021DA334
- cmp r0, #0
- bgt _021DC14C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC14C:
- add r0, sp, #0x64
- bl atol
- ldr r1, _021DC690 ; =errno
- ldr r1, [r1]
- cmp r1, #0x22
- bne _021DC17C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC17C:
- ldr r1, _021DC6BC ; =UNK04_02210488
- ldr r1, [r1]
- cmp r1, #1
- bne _021DC1B4
- cmp r0, #0x72
- bne _021DC1B4
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DC1B4:
- cmp r0, #0x64
- blt _021DC1D4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #6
- bl MOD04_021DB730
- b _021DC614
-_021DC1D4:
- ldr r2, [sp, #0x44]
- ldr r0, [r4]
- ldr r1, _021DC6D8 ; =UNK04_0220C4A0
- mov r3, r2
- bl MOD04_021DA334
- mov fp, r0
- cmp fp, #0
- bgt _021DC20C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC20C:
- ldr r2, [sp, #0x48]
- ldr r0, [r4]
- ldr r1, _021DC6DC ; =UNK04_0220C4A4
- mov r3, r2
- bl MOD04_021DA334
- str r0, [sp, #4]
- cmp r0, #0
- bgt _021DC244
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC244:
- ldr r2, [sp, #0x4c]
- ldr r0, [r4]
- ldr r1, _021DC6E0 ; =UNK04_0220C4AC
- mov r3, r2
- bl MOD04_021DA334
- mov sl, r0
- ldr r0, _021DC6E4 ; =UNK04_0220C3CC
- add r1, fp, #1
- blx sb
- str r0, [sp]
- cmp r0, #0
- bne _021DC28C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC28C:
- ldr r1, [sp, #4]
- ldr r0, _021DC6E8 ; =UNK04_0220C3D8
- add r1, r1, #1
- blx sb
- movs r7, r0
- bne _021DC2BC
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC2BC:
- cmp sl, #0
- ble _021DC2F4
- ldr r0, _021DC6EC ; =UNK04_0220C3E8
- add r1, sl, #1
- blx sb
- str r0, [sp, #8]
- cmp r0, #0
- bne _021DC2F4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC2F4:
- ldr r0, [r4]
- ldr r1, _021DC6D8 ; =UNK04_0220C4A0
- ldr r2, [sp]
- add r3, fp, #1
- bl MOD04_021DA334
- cmp r0, #0
- bge _021DC328
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC328:
- ldr r1, [sp, #4]
- ldr r2, [sp, #0x50]
- add r3, r1, #1
- ldr r1, [sp]
- strb r2, [r1, r0]
- ldr r0, [r4]
- ldr r1, _021DC6DC ; =UNK04_0220C4A4
- mov r2, r7
- bl MOD04_021DA334
- cmp r0, #0
- bge _021DC36C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC36C:
- ldr r1, [sp, #0x54]
- cmp sl, #0
- strb r1, [r7, r0]
- mov fp, r1
- ble _021DC404
- ldr r0, [r4]
- ldr r1, _021DC6E0 ; =UNK04_0220C4AC
- ldr r2, [sp, #8]
- add r3, sl, #1
- bl MOD04_021DA334
- cmp r0, #0
- bge _021DC3B4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC3B4:
- ldr r2, [sp, #0x58]
- ldr r1, [sp, #8]
- strb r2, [r1, r0]
- mov r0, r1
- bl atol
- ldr r1, _021DC690 ; =errno
- ldr r1, [r1]
- cmp r1, #0x22
- bne _021DC3F0
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC3F0:
- mov r1, #0x3e8
- mul fp, r0, r1
- ldr r0, _021DC6F0 ; =0x0002BF20
- cmp fp, r0
- movgt fp, r0
-_021DC404:
- ldr r0, [r4]
- bl MOD04_021DAE4C
- ldr r0, [r5]
- ldr r1, _021DC678 ; =UNK04_02210494
- add r2, r0, #0x1000
- ldr r0, [sp, #0x5c]
- str r0, [r2, #4]
- mov r0, r1
- ldr r2, [sp]
- str sb, [r0, #0xc]
- str r2, [r0]
- ldr r2, [sp, #0x60]
- str r8, [r0, #0x10]
- str r2, [r0, #4]
- ldr r2, [sp, #0x14]
- str r2, [r0, #8]
- ldr r2, _021DC6F4 ; =0x0001D4C0
- str r2, [r0, #0x18]
- ldr r0, [r4]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DC474
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DC474:
- ldr r0, [r4]
- mov r1, r7
- bl MOD04_021DAACC
- cmp r0, #0
- beq _021DC4A0
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DC4A0:
- ldr r0, [r4]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DC4C8
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DC4C8:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- sub r1, r0, #1
- ldr r0, [r4]
- bl MOD04_021DB4A4
- ldr r1, [r4]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DC500
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DC500:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DC520
- cmp r1, #8
- beq _021DC54C
- b _021DC534
-_021DC520:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DC534:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DC54C:
- mov r1, r6
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021DC574
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC574:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr sl, [r1, #0xa04]
- cmp sl, #0
- bne _021DC598
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC598:
- mov r0, sl
- bl strlen
- add r1, r0, #1
- ldr r0, _021DC6F8 ; =UNK04_0220C3F8
- blx sb
- ldr r1, [r5]
- add r1, r1, #0x1000
- str r0, [r1, #0x118]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x118]
- str r0, [sp, #0x10]
- cmp r0, #0
- bne _021DC5E8
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC5E8:
- mov r0, sl
- bl strlen
- mov r2, r0
- ldr r0, [sp, #0x10]
- mov r1, sl
- bl strncpy
- ldr r0, [r4]
- bl MOD04_021DAE4C
- mov r0, fp
- bl OS_Sleep
- b _021DB830
-_021DC614:
- ldr r0, [sp]
- cmp r0, #0
- beq _021DC630
- ldr r0, _021DC6FC ; =UNK04_0220C4B4
- ldr r1, [sp]
- mov r2, #0
- blx r8
-_021DC630:
- cmp r7, #0
- beq _021DC648
- ldr r0, _021DC700 ; =UNK04_0220C4C0
- mov r1, r7
- mov r2, #0
- blx r8
-_021DC648:
- ldr r0, [sp, #8]
- cmp r0, #0
- addeq sp, sp, #0x2d4
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, _021DC704 ; =UNK04_0220C4CC
- ldr r1, [sp, #8]
- mov r2, #0
- blx r8
- add sp, sp, #0x2d4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DC670: .word UNK04_02210484
-_021DC674: .word UNK04_02210490
-_021DC678: .word UNK04_02210494
-_021DC67C: .word 0x00004E20
-_021DC680: .word UNK04_0220C36C
-_021DC684: .word OSi_ThreadInfo
-_021DC688: .word 0x00001B34
-_021DC68C: .word UNK04_0220C418
-_021DC690: .word errno
-_021DC694: .word 0x0000012E
-_021DC698: .word UNK04_0221048C
-_021DC69C: .word UNK04_0220BEB4
-_021DC6A0: .word UNK04_0220C424
-_021DC6A4: .word UNK04_0220C444
-_021DC6A8: .word UNK04_0220C44C
-_021DC6AC: .word UNK04_0220C454
-_021DC6B0: .word UNK04_0220C464
-_021DC6B4: .word UNK04_0220C394
-_021DC6B8: .word UNK04_022104B0
-_021DC6BC: .word UNK04_02210488
-_021DC6C0: .word 0xFFFFA4FA
-_021DC6C4: .word 0x00009C40
-_021DC6C8: .word UNK04_0220C484
-_021DC6CC: .word UNK04_0220C48C
-_021DC6D0: .word UNK04_0220C3B0
-_021DC6D4: .word UNK04_0220C494
-_021DC6D8: .word UNK04_0220C4A0
-_021DC6DC: .word UNK04_0220C4A4
-_021DC6E0: .word UNK04_0220C4AC
-_021DC6E4: .word UNK04_0220C3CC
-_021DC6E8: .word UNK04_0220C3D8
-_021DC6EC: .word UNK04_0220C3E8
-_021DC6F0: .word 0x0002BF20
-_021DC6F4: .word 0x0001D4C0
-_021DC6F8: .word UNK04_0220C3F8
-_021DC6FC: .word UNK04_0220C4B4
-_021DC700: .word UNK04_0220C4C0
-_021DC704: .word UNK04_0220C4CC
- arm_func_end MOD04_021DB778
-
- arm_func_start MOD04_021DC708
-MOD04_021DC708: ; 0x021DC708
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r0, _021DC788 ; =UNK04_02210484
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x188]
- cmp r0, #0
- beq _021DC740
- ldr r0, _021DC78C ; =0x0000111C
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {pc}
-_021DC740:
- ldr r1, _021DC788 ; =UNK04_02210484
- ldr r0, _021DC78C ; =0x0000111C
- ldr r2, [r1]
- mov r3, #0x1000
- ldr r1, _021DC790 ; =MOD04_021DB778
- str r3, [sp]
- mov ip, #0x10
- add r0, r2, r0
- add r3, r2, #0x1000
- str ip, [sp, #4]
- bl OS_CreateThread
- ldr r1, _021DC788 ; =UNK04_02210484
- ldr r0, _021DC78C ; =0x0000111C
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_WakeupThreadDirect
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021DC788: .word UNK04_02210484
-_021DC78C: .word 0x0000111C
-_021DC790: .word MOD04_021DB778
- arm_func_end MOD04_021DC708
-
- arm_func_start MOD04_021DC794
-MOD04_021DC794: ; 0x021DC794
- ldr r0, _021DC7A8 ; =UNK04_02210484
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #4]
- bx lr
- .align 2, 0
-_021DC7A8: .word UNK04_02210484
- arm_func_end MOD04_021DC794
-
- arm_func_start MOD04_021DC7AC
-MOD04_021DC7AC: ; 0x021DC7AC
- stmdb sp!, {r4, lr}
- ldr r1, _021DC7E8 ; =UNK04_02210484
- ldr r0, _021DC7EC ; =0x000011DC
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_LockMutex
- ldr r1, _021DC7E8 ; =UNK04_02210484
- ldr r0, _021DC7EC ; =0x000011DC
- ldr r2, [r1]
- add r1, r2, #0x1000
- add r0, r2, r0
- ldr r4, [r1]
- bl OS_UnlockMutex
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DC7E8: .word UNK04_02210484
-_021DC7EC: .word 0x000011DC
- arm_func_end MOD04_021DC7AC
-
- arm_func_start MOD04_021DC7F0
-MOD04_021DC7F0: ; 0x021DC7F0
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DC864 ; =UNK04_02210484
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DC868 ; =UNK04_02210490
- ldr r0, [r0]
- cmp r0, #0
- beq _021DC820
- bl MOD04_021DB440
-_021DC820:
- bl MOD04_021D9974
- ldr r0, _021DC864 ; =UNK04_02210484
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x188]
- cmp r0, #0
- beq _021DC848
- ldr r0, _021DC86C ; =0x0000111C
- add r0, r1, r0
- bl OS_JoinThread
-_021DC848:
- ldr r0, _021DC864 ; =UNK04_02210484
- mvn r1, #6
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DC864: .word UNK04_02210484
-_021DC868: .word UNK04_02210490
-_021DC86C: .word 0x0000111C
- arm_func_end MOD04_021DC7F0
-
- arm_func_start MOD04_021DC870
-MOD04_021DC870: ; 0x021DC870
- stmdb sp!, {r4, lr}
- ldr r1, _021DC958 ; =UNK04_02210484
- ldr r0, _021DC95C ; =UNK04_02210490
- ldr r1, [r1]
- ldr r0, [r0]
- add r1, r1, #0x1000
- cmp r0, #0
- ldr r4, [r1, #0x10c]
- beq _021DC8B8
- bl MOD04_021DAE4C
- ldr r1, _021DC95C ; =UNK04_02210490
- ldr r0, _021DC960 ; =UNK04_0220C4D8
- ldr r1, [r1]
- mov r2, #0
- blx r4
- ldr r0, _021DC95C ; =UNK04_02210490
- mov r1, #0
- str r1, [r0]
-_021DC8B8:
- bl MOD04_021D991C
- ldr r0, _021DC958 ; =UNK04_02210484
- ldr r0, [r0]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- add r0, r0, #0x1000
- ldr r1, [r0, #0x114]
- cmp r1, #0
- beq _021DC8FC
- ldr r0, _021DC964 ; =UNK04_0220C3B0
- mov r2, #0
- blx r4
- ldr r0, _021DC958 ; =UNK04_02210484
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #0x114]
-_021DC8FC:
- ldr r0, _021DC958 ; =UNK04_02210484
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r1, [r0, #0x118]
- cmp r1, #0
- beq _021DC934
- ldr r0, _021DC968 ; =UNK04_0220C464
- mov r2, #0
- blx r4
- ldr r0, _021DC958 ; =UNK04_02210484
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #0x118]
-_021DC934:
- ldr r1, _021DC958 ; =UNK04_02210484
- ldr r0, _021DC96C ; =UNK04_0220C4E8
- ldr r1, [r1]
- mov r2, #0
- blx r4
- ldr r0, _021DC958 ; =UNK04_02210484
- mov r1, #0
- str r1, [r0]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DC958: .word UNK04_02210484
-_021DC95C: .word UNK04_02210490
-_021DC960: .word UNK04_0220C4D8
-_021DC964: .word UNK04_0220C3B0
-_021DC968: .word UNK04_0220C464
-_021DC96C: .word UNK04_0220C4E8
- arm_func_end MOD04_021DC870
-
- arm_func_start MOD04_021DC970
-MOD04_021DC970: ; 0x021DC970
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r1, _021DCA5C ; =UNK04_02210484
- mov r5, r0
- ldr r0, [r1]
- ldr r4, [r5]
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #4
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021DCA60 ; =UNK04_0220C4FC
- ldr r1, _021DCA64 ; =0x000011F4
- blx r4
- ldr r1, _021DCA5C ; =UNK04_02210484
- cmp r0, #0
- str r0, [r1]
- addeq sp, sp, #4
- moveq r0, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, _021DCA64 ; =0x000011F4
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021DCA5C ; =UNK04_02210484
- ldr r2, _021DCA68 ; =0xFFFE7961
- ldr r0, [r1]
- ldr r3, _021DCA6C ; =0x00001108
- add r0, r0, #0x1000
- str r2, [r0, #4]
- ldr ip, [r1]
- ldmia r5, {r0, r1, r2}
- add r3, ip, r3
- stmia r3, {r0, r1, r2}
- ldr r0, _021DCA70 ; =UNK04_02210490
- ldr r0, [r0]
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #4
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021DCA74 ; =UNK04_0220C510
- ldr r1, _021DCA78 ; =0x00001C10
- blx r4
- ldr r1, _021DCA70 ; =UNK04_02210490
- cmp r0, #0
- str r0, [r1]
- addeq sp, sp, #4
- moveq r0, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r1, _021DCA5C ; =UNK04_02210484
- ldr r0, _021DCA7C ; =0x000011DC
- ldr r2, [r1]
- ldr r1, _021DCA80 ; =UNK04_0221048C
- mov r3, #0
- add r0, r2, r0
- str r3, [r1]
- bl OS_InitMutex
- bl MOD04_021DC708
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DCA5C: .word UNK04_02210484
-_021DCA60: .word UNK04_0220C4FC
-_021DCA64: .word 0x000011F4
-_021DCA68: .word 0xFFFE7961
-_021DCA6C: .word 0x00001108
-_021DCA70: .word UNK04_02210490
-_021DCA74: .word UNK04_0220C510
-_021DCA78: .word 0x00001C10
-_021DCA7C: .word 0x000011DC
-_021DCA80: .word UNK04_0221048C
- arm_func_end MOD04_021DC970
-
- arm_func_start MOD04_021DCA84
-MOD04_021DCA84: ; 0x021DCA84
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #0x40
- mov r6, r0
- bl strlen
- mov r4, r0
- ldr r0, _021DCCB4 ; =UNK04_0220C580
- bl strlen
- cmp r4, r0
- bne _021DCCA8
- ldrsb r0, [r6, #7]
- cmp r0, #0x20
- bne _021DCCA8
- ldrsb r0, [r6, #0xb]
- cmp r0, #0x20
- bne _021DCCA8
- ldrsb r0, [r6, #0x10]
- cmp r0, #0x20
- bne _021DCCA8
- ldrsb r0, [r6, #0x13]
- cmp r0, #0x3a
- bne _021DCCA8
- ldrsb r0, [r6, #0x16]
- cmp r0, #0x3a
- bne _021DCCA8
- ldrsb r0, [r6, #0x19]
- cmp r0, #0x20
- bne _021DCCA8
- add r0, sp, #0
- bl RTC_GetDate
- cmp r0, #0
- bne _021DCCA8
- add r0, sp, #0x10
- bl RTC_GetTime
- cmp r0, #0
- bne _021DCCA8
- add r0, sp, #0
- add r1, sp, #0x10
- bl RTC_ConvertDateTimeToSecond
- mov r4, r0
- mov r5, r1
- mvn r0, #0
- cmp r5, r0
- cmpeq r4, r0
- beq _021DCCA8
- add r0, sp, #0x1c
- mov r1, r6
- bl strcpy
- mov r2, #0
- ldr r1, _021DCCB8 ; =errno
- add r0, sp, #0x28
- strb r2, [sp, #0x23]
- strb r2, [sp, #0x27]
- strb r2, [sp, #0x2c]
- strb r2, [sp, #0x2f]
- strb r2, [sp, #0x32]
- strb r2, [sp, #0x35]
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp]
- ldr r1, [r1]
- cmp r1, #0x22
- beq _021DCCA8
- sub r1, r0, #0x7d0
- mov r0, #0xd
- str r1, [sp]
- str r0, [sp, #4]
- mov r8, #0
- ldr r7, _021DCCBC ; =UNK04_0220C550
- add r6, sp, #0x24
-_021DCB9C:
- ldr r0, [r7, r8, lsl #2]
- mov r1, r6
- bl strcmp
- cmp r0, #0
- addeq r0, r8, #1
- streq r0, [sp, #4]
- beq _021DCBC4
- add r8, r8, #1
- cmp r8, #0xc
- blt _021DCB9C
-_021DCBC4:
- ldr r0, [sp, #4]
- cmp r0, #0xc
- bhi _021DCCA8
- ldr r1, _021DCCB8 ; =errno
- mov r2, #0
- add r0, sp, #0x21
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #8]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- mov r2, #0
- add r0, sp, #0x2d
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #0x10]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- mov r2, #0
- add r0, sp, #0x30
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #0x14]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- mov r2, #0
- add r0, sp, #0x33
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #0x18]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- add r0, sp, #0
- add r1, sp, #0x10
- bl RTC_ConvertDateTimeToSecond
- mvn r2, #0
- cmp r1, r2
- cmpeq r0, r2
- beq _021DCCA8
- subs r4, r4, r0
- ldr r2, _021DCCC0 ; =UNK04_022104FC
- sbc r3, r5, r1
- ldr r1, _021DCCC4 ; =UNK04_022104F8
- mov r0, #1
- str r3, [r2, #4]
- str r0, [r1]
- add sp, sp, #0x40
- str r4, [r2]
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
-_021DCCA8:
- mov r0, #0
- add sp, sp, #0x40
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DCCB4: .word UNK04_0220C580
-_021DCCB8: .word errno
-_021DCCBC: .word UNK04_0220C550
-_021DCCC0: .word UNK04_022104FC
-_021DCCC4: .word UNK04_022104F8
- arm_func_end MOD04_021DCA84
-
- arm_func_start MOD04_021DCCC8
-MOD04_021DCCC8: ; 0x021DCCC8
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r0, _021DCED4 ; =UNK04_02210504
- mov r1, #0
- ldr r0, [r0]
- add r4, r0, #8
- mov r0, r4
- bl MOD04_021DA3DC
- cmp r0, #0
- bne _021DCD08
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCD08:
- ldr r1, _021DCEDC ; =UNK04_0220C5A0
- mov r0, r4
- bl MOD04_021DA388
- cmp r0, #0
- beq _021DCD20
- bl MOD04_021DCA84
-_021DCD20:
- ldr r1, _021DCEE0 ; =UNK04_0220C5A8
- mov r0, r4
- bl MOD04_021DA388
- cmp r0, #0
- bne _021DCD4C
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCD4C:
- bl atol
- ldr r1, _021DCEE4 ; =errno
- mov r2, r0
- ldr r0, [r1]
- cmp r0, #0x22
- bne _021DCD7C
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCD7C:
- cmp r2, #0xc8
- beq _021DCDA0
- ldr r1, _021DCEE8 ; =0xFFFF9E58
- mov r0, #0x10
- sub r1, r1, r2
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCDA0:
- ldr r1, _021DCEEC ; =UNK04_0220C5B4
- add r2, sp, #0
- mov r0, r4
- mov r3, #4
- bl MOD04_021DA334
- cmp r0, #0
- bgt _021DCDD4
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCDD4:
- add r0, sp, #0
- bl atol
- ldr r1, _021DCEE4 ; =errno
- mov r2, r0
- ldr r0, [r1]
- cmp r0, #0x22
- bne _021DCE08
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCE08:
- cmp r2, #0x64
- blt _021DCE2C
- ldr r1, _021DCEF0 ; =0xFFFFA240
- mov r0, #0x10
- sub r1, r1, r2
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCE2C:
- ldr r0, _021DCED4 ; =UNK04_02210504
- ldr r1, _021DCEF4 ; =UNK04_0220C5C0
- ldr r2, [r0]
- mov r0, r4
- add r2, r2, #0x1000
- ldr r2, [r2, #0xc18]
- mov r3, #0x40
- add r2, r2, #4
- bl MOD04_021DA334
- ldr r0, _021DCED4 ; =UNK04_02210504
- ldr r1, _021DCEF8 ; =UNK04_0220C5C8
- ldr r2, [r0]
- mov r0, r4
- add r2, r2, #0x1000
- ldr r2, [r2, #0xc18]
- mov r3, #0x12c
- add r2, r2, #0x45
- bl MOD04_021DA334
- ldr r1, _021DCEFC ; =UNK04_0220C5D8
- add r2, sp, #0
- mov r0, r4
- mov r3, #1
- bl MOD04_021DA334
- ldrsb r0, [sp]
- cmp r0, #0x59
- bne _021DCEB0
- ldr r0, _021DCED4 ; =UNK04_02210504
- mov r1, #1
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #0xc18]
- str r1, [r0]
- b _021DCEC8
-_021DCEB0:
- ldr r0, _021DCED4 ; =UNK04_02210504
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #0xc18]
- str r1, [r0]
-_021DCEC8:
- mov r0, #1
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DCED4: .word UNK04_02210504
-_021DCED8: .word 0xFFFF9DF3
-_021DCEDC: .word UNK04_0220C5A0
-_021DCEE0: .word UNK04_0220C5A8
-_021DCEE4: .word errno
-_021DCEE8: .word 0xFFFF9E58
-_021DCEEC: .word UNK04_0220C5B4
-_021DCEF0: .word 0xFFFFA240
-_021DCEF4: .word UNK04_0220C5C0
-_021DCEF8: .word UNK04_0220C5C8
-_021DCEFC: .word UNK04_0220C5D8
- arm_func_end MOD04_021DCCC8
-
- arm_func_start MOD04_021DCF00
-MOD04_021DCF00: ; 0x021DCF00
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba8]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- ldr r0, _021DCFF4 ; =0x00001B3C
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #1
- bne _021DCFE4
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x28]
- cmp r0, #7
- beq _021DCFB0
- cmp r0, #8
- bne _021DCFC4
- bl MOD04_021DCCC8
- cmp r0, #0
- bne _021DCF94
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- add sp, sp, #4
- mov r0, #4
- ldmfd sp!, {pc}
-_021DCF94:
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- add sp, sp, #4
- mov r0, #3
- ldmfd sp!, {pc}
-_021DCFB0:
- add r0, r1, #8
- bl MOD04_021DAE4C
- add sp, sp, #4
- mov r0, #5
- ldmfd sp!, {pc}
-_021DCFC4:
- add r0, r1, #8
- bl MOD04_021DAE4C
- ldr r1, _021DCFF8 ; =0xFFFFA1DB
- mov r0, #0x11
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #4
- ldmfd sp!, {pc}
-_021DCFE4:
- mov r0, #2
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DCFF0: .word UNK04_02210504
-_021DCFF4: .word 0x00001B3C
-_021DCFF8: .word 0xFFFFA1DB
- arm_func_end MOD04_021DCF00
-
- arm_func_start MOD04_021DCFFC
-MOD04_021DCFFC: ; 0x021DCFFC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xb4
- ldr r2, _021DD244 ; =UNK04_02210504
- mov r5, r0
- ldr r2, [r2]
- mov r0, r1
- add r2, r2, #0x1000
- str r1, [r2, #0xc18]
- mov r1, #0
- mov r2, #0x174
- bl MI_CpuFill8
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba8]
- cmp r0, #0
- beq _021DD058
- ldr r0, _021DD248 ; =0x00001B3C
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- bne _021DD058
- bl OS_Terminate
-_021DD058:
- ldr r0, _021DD24C ; =UNK04_0220BEB4
- ldr r1, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- mov r3, #0
- ldr r4, [r1]
- mov r2, #0x1000
- str r0, [sp]
- str r3, [sp, #4]
- str r2, [sp, #8]
- ldr r2, [r4]
- ldr r1, _021DD250 ; =UNK04_0220C5E4
- str r2, [sp, #0xc]
- ldr r2, [r4, #4]
- str r2, [sp, #0x10]
- bl strcmp
- cmp r0, #0
- movne r0, #1
- strne r0, [sp, #0x14]
- moveq r0, #0
- ldr r2, _021DD254 ; =0x00004E20
- streq r0, [sp, #0x14]
- add r1, sp, #0
- add r0, r4, #8
- str r2, [sp, #0x18]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DD0DC
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD0DC:
- add r0, sp, #0x1c
- bl MOD04_021DA238
- cmp r0, #0
- beq _021DD10C
- ldr r0, _021DD244 ; =UNK04_02210504
- add r1, sp, #0x1c
- ldr r0, [r0]
- mov r2, #0
- add r0, r0, #8
- bl MOD04_021D9C2C
- cmp r0, #0
- bne _021DD134
-_021DD10C:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD134:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, _021DD25C ; =UNK04_0220C604
- ldr r0, [r0]
- ldr r2, _021DD260 ; =UNK04_0220C60C
- add r0, r0, #8
- mov r3, #6
- bl MOD04_021DAB68
- cmp r0, #0
- bne _021DD17C
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, _021DD264 ; =UNK04_0220C614
- ldr r0, [r0]
- mov r2, r5
- add r0, r0, #8
- mov r3, #4
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021DD1A4
-_021DD17C:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD1A4:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DD1E4
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD1E4:
- ldr r0, _021DD268 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- ldr r1, _021DD244 ; =UNK04_02210504
- ldr r2, [r1]
- sub r1, r0, #1
- add r0, r2, #8
- bl MOD04_021DB4A4
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba8]
- cmp r0, #0
- addne sp, sp, #0xb4
- movne r0, #1
- ldmneia sp!, {r4, r5, pc}
- add r0, r1, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- mov r0, #0
- add sp, sp, #0xb4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DD244: .word UNK04_02210504
-_021DD248: .word 0x00001B3C
-_021DD24C: .word UNK04_0220BEB4
-_021DD250: .word UNK04_0220C5E4
-_021DD254: .word 0x00004E20
-_021DD258: .word 0xFFFFA1DC
-_021DD25C: .word UNK04_0220C604
-_021DD260: .word UNK04_0220C60C
-_021DD264: .word UNK04_0220C614
-_021DD268: .word OSi_ThreadInfo
- arm_func_end MOD04_021DCFFC
-
- arm_func_start MOD04_021DD26C
-MOD04_021DD26C: ; 0x021DD26C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DD2BC ; =UNK04_02210504
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD2BC ; =UNK04_02210504
- ldr r0, _021DD2C0 ; =UNK04_0220C618
- ldr r1, [r1]
- mov r2, #0
- ldr r3, [r1, #4]
- blx r3
- ldr r0, _021DD2BC ; =UNK04_02210504
- mov r1, #0
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD2BC: .word UNK04_02210504
-_021DD2C0: .word UNK04_0220C618
- arm_func_end MOD04_021DD26C
-
- arm_func_start MOD04_021DD2C4
-MOD04_021DD2C4: ; 0x021DD2C4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021DD35C ; =UNK04_02210504
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- cmp r0, #0
- beq _021DD2FC
- ldr r1, _021DD360 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD2FC:
- ldr r0, _021DD364 ; =UNK04_0220C628
- ldr r1, _021DD368 ; =0x00001C1C
- blx r5
- ldr r1, _021DD35C ; =UNK04_02210504
- cmp r0, #0
- str r0, [r1]
- bne _021DD330
- ldr r1, _021DD360 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD330:
- ldr r2, _021DD368 ; =0x00001C1C
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021DD35C ; =UNK04_02210504
- mov r0, #1
- ldr r2, [r1]
- str r5, [r2]
- ldr r1, [r1]
- str r4, [r1, #4]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DD35C: .word UNK04_02210504
-_021DD360: .word 0xFFFFA1DC
-_021DD364: .word UNK04_0220C628
-_021DD368: .word 0x00001C1C
- arm_func_end MOD04_021DD2C4
-
- arm_func_start MOD04_021DD36C
-MOD04_021DD36C: ; 0x021DD36C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #8
- ands r4, r1, #3
- addne sp, sp, #8
- mvnne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, pc}
- mov r6, #0
- mov r5, r6
- cmp r1, #0
- bls _021DD3AC
-_021DD394:
- ldrsb r4, [r0, r5]
- add r5, r5, #1
- cmp r4, #0x2a
- addne r6, r6, #6
- cmp r5, r1
- blo _021DD394
-_021DD3AC:
- cmp r2, #0
- moveq r0, r6, asr #2
- addeq r0, r6, r0, lsr #29
- addeq sp, sp, #8
- moveq r0, r0, asr #3
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- mov r4, r6, asr #2
- add r4, r6, r4, lsr #29
- mov r4, r4, asr #3
- cmp r3, r4
- addlo sp, sp, #8
- mvnlo r0, #0
- ldmloia sp!, {r4, r5, r6, r7, r8, pc}
- cmp r1, #0
- moveq r0, #0
- streqb r0, [r2]
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- mov r6, r2
- add ip, sp, #0
- mov lr, #0
- mov r1, #0x3f
- mov r3, #0x3e
-_021DD408:
- mov r8, lr
- mov r5, ip
-_021DD410:
- ldrsb r7, [r0, r8]
- cmp r7, #0x41
- blt _021DD42C
- cmp r7, #0x5a
- suble r7, r7, #0x41
- strleb r7, [r5]
- ble _021DD474
-_021DD42C:
- cmp r7, #0x61
- blt _021DD444
- cmp r7, #0x7a
- suble r7, r7, #0x47
- strleb r7, [r5]
- ble _021DD474
-_021DD444:
- cmp r7, #0x30
- blt _021DD45C
- cmp r7, #0x39
- addle r7, r7, #4
- strleb r7, [r5]
- ble _021DD474
-_021DD45C:
- cmp r7, #0x2e
- streqb r3, [r5]
- beq _021DD474
- cmp r7, #0x2d
- streqb r1, [r5]
- strneb lr, [r5]
-_021DD474:
- add r8, r8, #1
- cmp r8, #4
- add r5, r5, #1
- blt _021DD410
- ldrsb r8, [sp]
- ldrsb r7, [sp, #1]
- add r5, r6, #1
- mov r8, r8, lsl #2
- orr r7, r8, r7, asr #4
- sub r5, r5, r2
- strb r7, [r6]
- cmp r5, r4
- add r0, r0, #4
- bge _021DD4F0
- ldrsb r8, [sp, #1]
- ldrsb r7, [sp, #2]
- add r5, r6, #2
- mov r8, r8, lsl #4
- orr r7, r8, r7, asr #2
- sub r5, r5, r2
- strb r7, [r6, #1]
- cmp r5, r4
- bge _021DD4F0
- ldrsb r7, [sp, #2]
- ldrsb r5, [sp, #3]
- orr r5, r5, r7, lsl #6
- strb r5, [r6, #2]
- add r6, r6, #3
- sub r5, r6, r2
- cmp r5, r4
- blt _021DD408
-_021DD4F0:
- mov r0, r5
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_end MOD04_021DD36C
-
- 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
- str r2, [sp]
- umull r4, r5, r1, r4
- ldr r6, _021DD6A0 ; =0x00000003
- mov r5, r5, lsr #1
- umull r4, r5, r6, r5
- mov sl, r0
- subs r5, r1, r4
- movne r4, #4
- ldr r2, _021DD69C ; =0xAAAAAAAB
- ldr r0, [sp]
- moveq r4, #0
- cmp r0, #0
- umull r0, r2, r1, r2
- mov r2, r2, lsr #1
- addeq sp, sp, #0xc
- add r0, r4, r2, lsl #2
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r3, r0
- addlo sp, sp, #0xc
- mvnlo r0, #0
- ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r7, sl, r1
- ldr r6, [sp]
- cmp sl, r7
- beq _021DD68C
- mov r0, #1
- mov r5, #0
- str r0, [sp, #4]
- mov fp, #3
- mov r4, #0x2a
-_021DD580:
- sub sb, r7, sl
- ldr r1, _021DD6A4 ; =0x2AAAAAAB
- mov r0, sb, lsl #3
- smull r2, r3, r1, r0
- ldr r1, _021DD6A8 ; =0x00000006
- add r3, r3, r0, lsr #31
- smull r2, r3, r1, r3
- subs r3, r0, r2
- ldr r1, _021DD6A4 ; =0x2AAAAAAB
- ldrne r8, [sp, #4]
- smull r2, r3, r1, r0
- moveq r8, r5
- add r3, r3, r0, lsr #31
- cmp sb, #3
- movge sb, fp
- add r0, sp, #8
- mov r1, r5
- mov r2, fp
- add r8, r3, r8
- bl MI_CpuFill8
- mov r0, sl
- add r1, sp, #8
- mov r2, sb
- bl MI_CpuCopy8
- ldr r0, _021DD6AC ; =UNK04_0220C638
- cmp r8, #2
- ldr r1, [r0]
- ldrb r0, [sp, #8]
- mov r0, r0, asr #2
- ldrsb r0, [r1, r0]
- strb r0, [r6]
- strltb r4, [r6, #1]
- blt _021DD628
- ldrb r2, [sp, #8]
- ldr r0, _021DD6AC ; =UNK04_0220C638
- ldrb r1, [sp, #9]
- mov r2, r2, lsl #4
- and r2, r2, #0x3f
- ldr r0, [r0]
- orr r1, r2, r1, asr #4
- ldrsb r0, [r0, r1]
- strb r0, [r6, #1]
-_021DD628:
- cmp r8, #3
- strltb r4, [r6, #2]
- blt _021DD658
- ldrb r2, [sp, #9]
- ldr r0, _021DD6AC ; =UNK04_0220C638
- ldrb r1, [sp, #0xa]
- mov r2, r2, lsl #2
- and r2, r2, #0x3f
- ldr r0, [r0]
- orr r1, r2, r1, asr #6
- ldrsb r0, [r0, r1]
- strb r0, [r6, #2]
-_021DD658:
- cmp r8, #4
- strltb r4, [r6, #3]
- blt _021DD67C
- ldr r0, _021DD6AC ; =UNK04_0220C638
- ldrb r1, [sp, #0xa]
- ldr r2, [r0]
- and r0, r1, #0x3f
- ldrsb r0, [r2, r0]
- strb r0, [r6, #3]
-_021DD67C:
- add sl, sl, sb
- cmp sl, r7
- add r6, r6, #4
- bne _021DD580
-_021DD68C:
- ldr r0, [sp]
- sub r0, r6, r0
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DD69C: .word 0xAAAAAAAB
-_021DD6A0: .word 0x00000003
-_021DD6A4: .word 0x2AAAAAAB
-_021DD6A8: .word 0x00000006
-_021DD6AC: .word UNK04_0220C638
- arm_func_end MOD04_021DD4FC
-
- arm_func_start MOD04_021DD6B0
-MOD04_021DD6B0: ; 0x021DD6B0
- ldr r3, _021DD6CC ; =UNK04_02210508
- ldr r2, [r3]
- cmp r2, #9
- ldrne r2, _021DD6D0 ; =UNK04_0221050C
- strne r0, [r3]
- strne r1, [r2]
- bx lr
- .align 2, 0
-_021DD6CC: .word UNK04_02210508
-_021DD6D0: .word UNK04_0221050C
- arm_func_end MOD04_021DD6B0
-
- arm_func_start MOD04_021DD6D4
-MOD04_021DD6D4: ; 0x021DD6D4
- ldr r0, _021DD6EC ; =UNK04_02210508
- ldr r0, [r0]
- cmp r0, #0
- movne r0, #1
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DD6EC: .word UNK04_02210508
- arm_func_end MOD04_021DD6D4
-
- arm_func_start MOD04_021DD6F0
-MOD04_021DD6F0: ; 0x021DD6F0
- ldr r1, _021DD710 ; =UNK04_02210508
- ldr r0, [r1]
- cmp r0, #9
- movne r2, #0
- ldrne r0, _021DD714 ; =UNK04_0221050C
- strne r2, [r1]
- strne r2, [r0]
- bx lr
- .align 2, 0
-_021DD710: .word UNK04_02210508
-_021DD714: .word UNK04_0221050C
- arm_func_end MOD04_021DD6F0
-
- arm_func_start MOD04_021DD718
-MOD04_021DD718: ; 0x021DD718
- cmp r0, #0
- ldrne r2, _021DD800 ; =UNK04_0221050C
- ldrne r2, [r2]
- strne r2, [r0]
- cmp r1, #0
- beq _021DD7F4
- ldr r0, _021DD804 ; =UNK04_02210508
- ldr r0, [r0]
- cmp r0, #0x11
- addls pc, pc, r0, lsl #2
- b _021DD7EC
-_021DD744: ; jump table
- b _021DD7EC ; case 0
- b _021DD7BC ; case 1
- b _021DD78C ; case 2
- b _021DD78C ; case 3
- b _021DD78C ; case 4
- b _021DD78C ; case 5
- b _021DD798 ; case 6
- b _021DD7A4 ; case 7
- b _021DD78C ; case 8
- b _021DD7BC ; case 9
- b _021DD7B0 ; case 10
- b _021DD7B0 ; case 11
- b _021DD7B0 ; case 12
- b _021DD7B0 ; case 13
- b _021DD7C8 ; case 14
- b _021DD7D4 ; case 15
- b _021DD7E0 ; case 16
- b _021DD7D4 ; case 17
-_021DD78C:
- mov r0, #6
- str r0, [r1]
- b _021DD7F4
-_021DD798:
- mov r0, #3
- str r0, [r1]
- b _021DD7F4
-_021DD7A4:
- mov r0, #4
- str r0, [r1]
- b _021DD7F4
-_021DD7B0:
- mov r0, #1
- str r0, [r1]
- b _021DD7F4
-_021DD7BC:
- mov r0, #7
- str r0, [r1]
- b _021DD7F4
-_021DD7C8:
- mov r0, #5
- str r0, [r1]
- b _021DD7F4
-_021DD7D4:
- mov r0, #6
- str r0, [r1]
- b _021DD7F4
-_021DD7E0:
- mov r0, #2
- str r0, [r1]
- b _021DD7F4
-_021DD7EC:
- mov r0, #0
- str r0, [r1]
-_021DD7F4:
- ldr r0, _021DD804 ; =UNK04_02210508
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_021DD800: .word UNK04_0221050C
-_021DD804: .word UNK04_02210508
- arm_func_end MOD04_021DD718
-
- arm_func_start MOD04_021DD808
-MOD04_021DD808: ; 0x021DD808
- cmp r0, #0
- ldrne r1, _021DD824 ; =UNK04_0221050C
- ldrne r1, [r1]
- strne r1, [r0]
- ldr r0, _021DD828 ; =UNK04_02210508
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_021DD824: .word UNK04_0221050C
-_021DD828: .word UNK04_02210508
- arm_func_end MOD04_021DD808
-
- 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 MOD04_021DD904
- arm_func_end MOD04_021DD82C
-
- 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 MOD04_021DD8E8
- arm_func_end MOD04_021DD844
-
- 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 MOD04_021DD944
- arm_func_end MOD04_021DD860
-
- arm_func_start MOD04_021DD874
-MOD04_021DD874: ; 0x021DD874
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- ldr ip, _021DD8E0 ; =UNK04_02210514
- mov r4, r2
- mov r7, r3
- mov r5, r1
- ldr r2, [sp, #0x18]
- ldr r3, [ip]
- mov r1, r7
- mov r8, r0
- blx r3
- movs r6, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- cmp r5, #0
- beq _021DD8D8
- mov r0, r5
- mov r1, r6
- mov r2, r7
- bl MI_CpuCopy8
- ldr r1, _021DD8E4 ; =UNK04_02210510
- mov r0, r8
- ldr r3, [r1]
- mov r1, r5
- mov r2, r4
- blx r3
-_021DD8D8:
- mov r0, r6
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DD8E0: .word UNK04_02210514
-_021DD8E4: .word UNK04_02210510
- arm_func_end MOD04_021DD874
-
- arm_func_start MOD04_021DD8E8
-MOD04_021DD8E8: ; 0x021DD8E8
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov ip, #0x20
- str ip, [sp]
- bl MOD04_021DD874
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DD8E8
-
- arm_func_start MOD04_021DD904
-MOD04_021DD904: ; 0x021DD904
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r3, _021DD920 ; =UNK04_02210510
- ldr r3, [r3]
- blx r3
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD920: .word UNK04_02210510
- arm_func_end MOD04_021DD904
-
- arm_func_start MOD04_021DD924
-MOD04_021DD924: ; 0x021DD924
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r3, _021DD940 ; =UNK04_02210514
- ldr r3, [r3]
- blx r3
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD940: .word UNK04_02210514
- arm_func_end MOD04_021DD924
-
- arm_func_start MOD04_021DD944
-MOD04_021DD944: ; 0x021DD944
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r3, _021DD964 ; =UNK04_02210514
- mov r2, #0x20
- ldr r3, [r3]
- blx r3
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD964: .word UNK04_02210514
- arm_func_end MOD04_021DD944
-
- arm_func_start MOD04_021DD968
-MOD04_021DD968: ; 0x021DD968
- ldr r3, _021DD97C ; =UNK04_02210514
- ldr r2, _021DD980 ; =UNK04_02210510
- str r0, [r3]
- str r1, [r2]
- bx lr
- .align 2, 0
-_021DD97C: .word UNK04_02210514
-_021DD980: .word UNK04_02210510
- arm_func_end MOD04_021DD968
-
- arm_func_start MOD04_021DD984
-MOD04_021DD984: ; 0x021DD984
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DDCE8
- bl MOD04_021DDB14
- cmp r0, #0
- beq _021DD9CC
- bl MOD04_021EBAB8
- mov r2, r0
- cmp r2, #0x63
- ldr r1, _021DD9D8 ; =0xFFFF2D10
- movhi r2, #0x63
- mov r0, #8
- sub r1, r1, r2
- bl MOD04_021DD6B0
- bl MOD04_021DDBBC
- add sp, sp, #4
- mov r0, #1
- ldmfd sp!, {pc}
-_021DD9CC:
- mov r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD9D8: .word 0xFFFF2D10
- arm_func_end MOD04_021DD984
-
- arm_func_start MOD04_021DD9DC
-MOD04_021DD9DC: ; 0x021DD9DC
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x18
- mov r1, #0
- mov r2, #0x3c
- mov r4, r0
- bl MI_CpuFill8
- mov r0, #0xff
- str r0, [r4, #4]
- bl MOD04_021DDC1C
- cmp r0, #4
- addne sp, sp, #0x18
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- bl MOD04_021EBAB8
- str r0, [r4]
- bl OS_DisableInterrupts
- mov r6, r0
- bl WCM_GetApMacAddress
- mov r5, r0
- mov r1, #6
- bl DC_InvalidateRange
- cmp r5, #0
- bne _021DDA4C
- mov r0, r6
- bl OS_RestoreInterrupts
- add sp, sp, #0x18
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DDA4C:
- mov r0, r5
- add r1, r4, #0x33
- mov r2, #6
- bl MI_CpuCopy8
- ldr r0, [r4]
- cmp r0, #0
- blt _021DDAB0
- cmp r0, #3
- bge _021DDAB0
- add r0, sp, #0
- bl WCM_GetApEssid
- mov r5, r0
- mov r1, #0x20
- bl DC_InvalidateRange
- cmp r5, #0
- bne _021DDAA0
- mov r0, r6
- bl OS_RestoreInterrupts
- add sp, sp, #0x18
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DDAA0:
- ldrh r2, [sp]
- mov r0, r5
- add r1, r4, #0x12
- bl MI_CpuCopy8
-_021DDAB0:
- mov r0, r6
- bl OS_RestoreInterrupts
- add r0, sp, #2
- mov r1, #0
- mov r2, #0x10
- bl MI_CpuFill8
- add r0, sp, #2
- bl MOD04_021EBA28
- cmp r0, #1
- bne _021DDAFC
- ldrb r1, [sp, #8]
- cmp r1, #0
- beq _021DDAFC
- sub r3, r1, #0x30
- add r0, sp, #9
- add r1, r4, #8
- mov r2, #9
- str r3, [r4, #4]
- bl MI_CpuCopy8
-_021DDAFC:
- mov r0, #1
- add sp, sp, #0x18
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DD9DC
-
- arm_func_start MOD04_021DDB08
-MOD04_021DDB08: ; 0x021DDB08
- ldr ip, _021DDB10 ; =WCM_GetLinkLevel
- bx ip
- .align 2, 0
-_021DDB10: .word WCM_GetLinkLevel
- arm_func_end MOD04_021DDB08
-
- arm_func_start MOD04_021DDB14
-MOD04_021DDB14: ; 0x021DDB14
- ldr r0, _021DDB3C ; =UNK04_02210518
- ldr r0, [r0]
- cmp r0, #0
- beq _021DDB34
- ldrh r0, [r0, #4]
- cmp r0, #6
- moveq r0, #1
- bxeq lr
-_021DDB34:
- mov r0, #0
- bx lr
- .align 2, 0
-_021DDB3C: .word UNK04_02210518
- arm_func_end MOD04_021DDB14
-
- arm_func_start MOD04_021DDB40
-MOD04_021DDB40: ; 0x021DDB40
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDBB8 ; =UNK04_02210518
- ldr r2, [r0]
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- ldrh r1, [r2, #4]
- cmp r1, #8
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- cmp r1, #1
- moveq r1, #0
- streq r1, [r0]
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- mov r0, #5
- strh r0, [r2, #4]
- bl MOD04_021EB9D8
- cmp r0, #0
- ldrne r0, _021DDBB8 ; =UNK04_02210518
- movne r1, #0
- strne r1, [r0]
- movne r0, #1
- moveq r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDBB8: .word UNK04_02210518
- arm_func_end MOD04_021DDB40
-
- arm_func_start MOD04_021DDBBC
-MOD04_021DDBBC: ; 0x021DDBBC
- stmdb sp!, {r4, lr}
- ldr r0, _021DDC18 ; =UNK04_02210518
- ldr r1, [r0]
- cmp r1, #0
- ldmeqia sp!, {r4, pc}
- ldrh r1, [r1, #4]
- cmp r1, #1
- moveq r1, #0
- streq r1, [r0]
- ldmeqia sp!, {r4, pc}
- bl MOD04_021EB9D8
- cmp r0, #0
- bne _021DDC08
- mov r4, #0xa
-_021DDBF4:
- mov r0, r4
- bl OS_Sleep
- bl MOD04_021EB9D8
- cmp r0, #0
- beq _021DDBF4
-_021DDC08:
- ldr r0, _021DDC18 ; =UNK04_02210518
- mov r1, #0
- str r1, [r0]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DDC18: .word UNK04_02210518
- arm_func_end MOD04_021DDBBC
-
- arm_func_start MOD04_021DDC1C
-MOD04_021DDC1C: ; 0x021DDC1C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDCE4 ; =UNK04_02210518
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldrh r0, [r0, #4]
- cmp r0, #1
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021EBAE8
- mov r1, r0
- cmp r1, #5
- bne _021DDC80
- ldr r1, _021DDCE4 ; =UNK04_02210518
- mov r0, #4
- ldr r3, [r1]
- mov r2, #1
- strh r0, [r3, #4]
- ldr r1, [r1]
- add sp, sp, #4
- strh r2, [r1, #6]
- ldmfd sp!, {pc}
-_021DDC80:
- cmp r1, #0
- bge _021DDCD8
- mvn r0, #9
- cmp r1, r0
- blt _021DDCB8
- sub r1, r1, #0x2bc
- mov r0, #9
- bl MOD04_021DD6B0
- ldr r1, _021DDCE4 ; =UNK04_02210518
- mov r0, #8
- ldr r1, [r1]
- add sp, sp, #4
- strh r0, [r1, #4]
- ldmfd sp!, {pc}
-_021DDCB8:
- mov r0, #5
- bl MOD04_021DD6B0
- ldr r1, _021DDCE4 ; =UNK04_02210518
- mov r0, #7
- ldr r1, [r1]
- add sp, sp, #4
- strh r0, [r1, #4]
- ldmfd sp!, {pc}
-_021DDCD8:
- mov r0, #2
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDCE4: .word UNK04_02210518
- arm_func_end MOD04_021DDC1C
-
- arm_func_start MOD04_021DDCE8
-MOD04_021DDCE8: ; 0x021DDCE8
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDD78 ; =UNK04_02210518
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldrh r0, [r1, #4]
- cmp r0, #2
- bne _021DDD28
- bl MOD04_021EBB80
- ldr r1, _021DDD78 ; =UNK04_02210518
- add sp, sp, #4
- ldr r1, [r1]
- str r0, [r1]
- ldmfd sp!, {pc}
-_021DDD28:
- cmp r0, #4
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldrh r0, [r1, #6]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl WCM_GetPhase
- cmp r0, #9
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DDD78 ; =UNK04_02210518
- mov r3, #0
- ldr r2, [r0]
- mov r1, #6
- strh r3, [r2, #6]
- ldr r0, [r0]
- strh r1, [r0, #4]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDD78: .word UNK04_02210518
- arm_func_end MOD04_021DDCE8
-
- arm_func_start MOD04_021DDD7C
-MOD04_021DDD7C: ; 0x021DDD7C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDDC8 ; =UNK04_02210518
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldr r0, [r1]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- mov r0, #3
- strh r0, [r1, #4]
- bl MOD04_021DDC1C
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDDC8: .word UNK04_02210518
- arm_func_end MOD04_021DDD7C
-
- arm_func_start MOD04_021DDDCC
-MOD04_021DDDCC: ; 0x021DDDCC
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r0, _021DDE70 ; =UNK04_02210518
- ldr r0, [r0]
- cmp r0, #0
- beq _021DDE5C
- ldrh r0, [r0, #4]
- cmp r0, #1
- addne sp, sp, #0xc
- ldmneia sp!, {pc}
- add r0, sp, #0
- mov r1, #0
- mov r2, #0xc
- bl MI_CpuFill8
- ldr r0, _021DDE70 ; =UNK04_02210518
- ldr r3, _021DDE74 ; =MOD04_021DD944
- ldr lr, [r0]
- ldr r2, _021DDE78 ; =MOD04_021DD904
- ldrh ip, [lr, #8]
- add r0, sp, #0
- mov r1, #2
- strb ip, [sp, #8]
- ldrh ip, [lr, #0xa]
- strb ip, [sp, #9]
- str r3, [sp]
- str r2, [sp, #4]
- strh r1, [lr, #4]
- bl MOD04_021EBC60
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {pc}
- mov r0, #9
- mvn r1, #5
- bl MOD04_021DD6B0
- add sp, sp, #0xc
- ldmfd sp!, {pc}
-_021DDE5C:
- mov r0, #9
- mvn r1, #3
- bl MOD04_021DD6B0
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDE70: .word UNK04_02210518
-_021DDE74: .word MOD04_021DD944
-_021DDE78: .word MOD04_021DD904
- arm_func_end MOD04_021DDDCC
-
- arm_func_start MOD04_021DDE7C
-MOD04_021DDE7C: ; 0x021DDE7C
- stmdb sp!, {lr}
- sub sp, sp, #4
- cmp r0, #0
- beq _021DDEA4
- cmp r0, #1
- beq _021DDEB4
- cmp r0, #2
- beq _021DDEC4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DDEA4:
- ldr r0, _021DDED4 ; =UNK04_0220D280
- bl MOD04_021D9C1C
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DDEB4:
- ldr r0, _021DDED8 ; =UNK04_0220D2A8
- bl MOD04_021D9C1C
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DDEC4:
- ldr r0, _021DDEDC ; =UNK04_0220D2CC
- bl MOD04_021D9C1C
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDED4: .word UNK04_0220D280
-_021DDED8: .word UNK04_0220D2A8
-_021DDEDC: .word UNK04_0220D2CC
- arm_func_end MOD04_021DDE7C
-
- arm_func_start MOD04_021DDEE0
-MOD04_021DDEE0: ; 0x021DDEE0
- stmdb sp!, {r4, r5, r6, lr}
- ldr r2, _021DDF3C ; =UNK04_02210518
- mov r6, r0
- ldr r2, [r2]
- mov r5, r1
- mov r4, r3
- cmp r2, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r1, #0
- mov r2, #0xc
- bl MI_CpuFill8
- strh r5, [r6, #8]
- mov r0, #1
- strh r0, [r6, #0xa]
- strh r0, [r6, #4]
- mov r0, #0
- ldr r1, _021DDF3C ; =UNK04_02210518
- strh r0, [r6, #6]
- str r6, [r1]
- bl MOD04_021DDE7C
- mov r0, r4
- bl CPS_SetSslHandshakePriority
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DDF3C: .word UNK04_02210518
- arm_func_end MOD04_021DDEE0
-
- arm_func_start MOD04_021DDF40
-MOD04_021DDF40: ; 0x021DDF40
- ldr ip, _021DDF48 ; =MOD04_021D9974
- bx ip
- .align 2, 0
-_021DDF48: .word MOD04_021D9974
- arm_func_end MOD04_021DDF40
-
- arm_func_start MOD04_021DDF4C
-MOD04_021DDF4C: ; 0x021DDF4C
- stmdb sp!, {lr}
- sub sp, sp, #0x1c4
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #0x1c4
- moveq r0, #0
- ldmeqia sp!, {pc}
- add r0, r0, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- addeq sp, sp, #0x1c4
- moveq r0, #1
- ldmeqia sp!, {pc}
- bl MOD04_021D988C
- cmp r0, #0
- beq _021DDFA4
- cmp r0, #0x14
- beq _021DDFE0
- cmp r0, #0x15
- beq _021DDFB0
- b _021DE010
-_021DDFA4:
- add sp, sp, #0x1c4
- mov r0, #2
- ldmfd sp!, {pc}
-_021DDFB0:
- bl MOD04_021D991C
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r2, _021DE058 ; =0x00001E1C
- ldr r1, [r0]
- mov r0, #4
- bl MOD04_021DD904
- ldr r0, _021DE054 ; =UNK04_0221051C
- mov r1, #0
- str r1, [r0]
- add sp, sp, #0x1c4
- mov r0, #3
- ldmfd sp!, {pc}
-_021DDFE0:
- bl MOD04_021D991C
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r2, _021DE058 ; =0x00001E1C
- ldr r1, [r0]
- mov r0, #4
- bl MOD04_021DD904
- ldr r0, _021DE054 ; =UNK04_0221051C
- mov r1, #0
- str r1, [r0]
- add sp, sp, #0x1c4
- mov r0, #5
- ldmfd sp!, {pc}
-_021DE010:
- add r0, sp, #0
- bl MOD04_021D97F8
- bl MOD04_021D991C
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r2, _021DE058 ; =0x00001E1C
- ldr r1, [r0]
- mov r0, #4
- bl MOD04_021DD904
- ldr r1, [sp]
- ldr r2, _021DE054 ; =UNK04_0221051C
- mov r3, #0
- mov r0, #2
- str r3, [r2]
- bl MOD04_021DD6B0
- mov r0, #4
- add sp, sp, #0x1c4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DE054: .word UNK04_0221051C
-_021DE058: .word 0x00001E1C
- arm_func_end MOD04_021DDF4C
-
- arm_func_start MOD04_021DE05C
-MOD04_021DE05C: ; 0x021DE05C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DE130 ; =UNK04_0221051C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DE078
- bl OS_Terminate
-_021DE078:
- ldr r1, _021DE134 ; =0x00001E1C
- mov r0, #4
- bl MOD04_021DD944
- ldr r1, _021DE130 ; =UNK04_0221051C
- cmp r0, #0
- str r0, [r1]
- bne _021DE0AC
- ldr r1, _021DE138 ; =0xFFFFB17C
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #0
- ldmfd sp!, {pc}
-_021DE0AC:
- ldr r2, _021DE134 ; =0x00001E1C
- mov r1, #0
- bl MI_CpuFill8
- ldr r0, _021DE130 ; =UNK04_0221051C
- ldr r1, _021DE13C ; =0x00001C44
- ldr r2, [r0]
- ldr r0, _021DE140 ; =UNK04_0220D2EC
- add r1, r2, r1
- mov r2, #9
- bl MI_CpuCopy8
- ldr r1, _021DE130 ; =UNK04_0221051C
- ldr r2, _021DE144 ; =MOD04_021DD944
- ldr r0, [r1]
- ldr r3, _021DE148 ; =MOD04_021DD904
- add r0, r0, #0x1000
- str r2, [r0, #0xc50]
- ldr r0, [r1]
- ldr r2, _021DE14C ; =0x00001C10
- add r0, r0, #0x1000
- str r3, [r0, #0xc54]
- ldr r1, [r1]
- add r0, r1, r2
- bl MOD04_021D9ACC
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- ldr r1, _021DE138 ; =0xFFFFB17C
- mov r0, #9
- bl MOD04_021DD6B0
- mov r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DE130: .word UNK04_0221051C
-_021DE134: .word 0x00001E1C
-_021DE138: .word 0xFFFFB17C
-_021DE13C: .word 0x00001C44
-_021DE140: .word UNK04_0220D2EC
-_021DE144: .word MOD04_021DD944
-_021DE148: .word MOD04_021DD904
-_021DE14C: .word 0x00001C10
- arm_func_end MOD04_021DE05C
-
- arm_func_start MOD04_021DE150
-MOD04_021DE150: ; 0x021DE150
- stmdb sp!, {r4, lr}
- bl MOD04_021DCF00
- mov r4, r0
- sub r0, r4, #3
- cmp r0, #2
- bhi _021DE16C
- bl MOD04_021DD26C
-_021DE16C:
- mov r0, r4
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DE150
-
- 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 ; =MOD04_021DD944
- ldr r1, _021DE1F0 ; =MOD04_021DD904
- bl MOD04_021DD2C4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- mov r0, r5
- bl strlen
- cmp r0, #0
- bne _021DE1C0
- ldr r0, _021DE1F4 ; =UNK04_0220D2F0
- mov r1, r4
- bl MOD04_021DCFFC
- b _021DE1CC
-_021DE1C0:
- mov r0, r5
- mov r1, r4
- bl MOD04_021DCFFC
-_021DE1CC:
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #1
- ldmneia sp!, {r4, r5, pc}
- bl MOD04_021DD26C
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DE1EC: .word MOD04_021DD944
-_021DE1F0: .word MOD04_021DD904
-_021DE1F4: .word UNK04_0220D2F0
- arm_func_end MOD04_021DE174
-
- arm_func_start MOD04_021DE1F8
-MOD04_021DE1F8: ; 0x021DE1F8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021DE2C4 ; =UNK04_022104F8
- mov r5, r0
- ldr r2, [r2]
- mov r4, r1
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- bl RTC_GetDate
- cmp r0, #0
- bne _021DE23C
- mov r0, r4
- bl RTC_GetTime
- cmp r0, #0
- beq _021DE248
-_021DE23C:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DE248:
- mov r0, r5
- mov r1, r4
- bl RTC_ConvertDateTimeToSecond
- mvn r2, #0
- cmp r1, r2
- cmpeq r0, r2
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, _021DE2C8 ; =UNK04_022104FC
- mov ip, #0
- ldr lr, [r2]
- ldr r3, [r2, #4]
- subs r2, r0, lr
- sbc r3, r1, r3
- subs r0, r2, ip
- sbcs r0, r3, ip
- blt _021DE2A0
- ldr r0, _021DE2CC ; =0xBC19137F
- subs r0, r0, r2
- sbcs r0, ip, r3
- bge _021DE2AC
-_021DE2A0:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DE2AC:
- mov r0, r5
- mov r1, r4
- bl RTC_ConvertSecondToDateTime
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DE2C4: .word UNK04_022104F8
-_021DE2C8: .word UNK04_022104FC
-_021DE2CC: .word 0xBC19137F
- arm_func_end MOD04_021DE1F8
-
- arm_func_start MOD04_021DE2D0
-MOD04_021DE2D0: ; 0x021DE2D0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- 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 MOD04_02207330
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021DE2D0
-
- arm_func_start MOD04_021DE308
-MOD04_021DE308: ; 0x021DE308
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #0
- ldmneia sp!, {pc}
- bl MOD04_02207158
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DE308
-
- arm_func_start MOD04_021DE330
-MOD04_021DE330: ; 0x021DE330
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- 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 MOD04_0220733C
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DE330
-
- arm_func_start MOD04_021DE364
-MOD04_021DE364: ; 0x021DE364
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl MOD04_021DD6D4
- cmp r0, #0
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, #0xb0
- mul r2, r4, r0
- mov r0, r6
- mov r1, #0
- bl MI_CpuFill8
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl MOD04_022074EC
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DE364
-
- arm_func_start MOD04_021DE3AC
-MOD04_021DE3AC: ; 0x021DE3AC
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021DD6D4
- cmp r0, #0
- movne r0, #0
- ldmneia sp!, {r4, pc}
- mov r0, r4
- bl MOD04_022077A8
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DE3AC
-
- arm_func_start MOD04_021DE3D0
-MOD04_021DE3D0: ; 0x021DE3D0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- 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 MOD04_022069DC
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DE3D0
-
- arm_func_start MOD04_021DE404
-MOD04_021DE404: ; 0x021DE404
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DE454 ; =UNK04_02210520
- ldr r2, [r1]
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- str r0, [r2, #4]
- ldr r0, [r1]
- ldr r0, [r0, #0x48]
- cmp r0, #0
- bne _021DE440
- bl MOD04_021DE730
- b _021DE448
-_021DE440:
- ldr r0, _021DE458 ; =MOD04_021DE730
- bl MOD04_02206E6C
-_021DE448:
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DE454: .word UNK04_02210520
-_021DE458: .word MOD04_021DE730
- arm_func_end MOD04_021DE404
-
- 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 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 MOD04_021DE884
- ldr r2, _021DE568 ; =UNK04_02210520
- mov r1, #0
- str r0, [r2]
- str r1, [r0, #0x48]
- ldr r0, [r2]
- mov r2, #0xa80
- bl MI_CpuFill8
- ldr r0, _021DE568 ; =UNK04_02210520
- mov r1, r5
- ldr r3, [r0]
- mov r2, #0x1f
- str r6, [r3]
- ldr r0, [r0]
- add r0, r0, #8
- bl strncpy
- ldr r0, _021DE568 ; =UNK04_02210520
- mov r1, r4
- ldr r0, [r0]
- mov r2, #0x1f
- add r0, r0, #0x28
- bl strncpy
- ldr r1, _021DE568 ; =UNK04_02210520
- ldr r0, _021DE56C ; =UNK04_0220D2F8
- ldr r1, [r1]
- add r1, r1, #0x4c
- bl MOD04_021DE174
- cmp r0, #0
- bne _021DE520
- ldr r0, _021DE568 ; =UNK04_02210520
- ldr r0, [r0]
- bl MOD04_021DE86C
- ldr r1, _021DE568 ; =UNK04_02210520
- mov r0, #0
- str r0, [r1]
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
-_021DE520:
- ldr r0, _021DE568 ; =UNK04_02210520
- mov r2, #0x800
- ldr r0, [r0]
- ldr r1, _021DE570 ; =MOD04_021DE574
- add r0, r0, #0x9c0
- mov r3, r0
- str r2, [sp]
- mov ip, #0x10
- mov r2, #0
- str ip, [sp, #4]
- bl OS_CreateThread
- ldr r0, _021DE568 ; =UNK04_02210520
- ldr r0, [r0]
- add r0, r0, #0x9c0
- bl OS_WakeupThreadDirect
- mov r0, #1
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DE568: .word UNK04_02210520
-_021DE56C: .word UNK04_0220D2F8
-_021DE570: .word MOD04_021DE574
- arm_func_end MOD04_021DE45C
-
- arm_func_start MOD04_021DE574
-MOD04_021DE574: ; 0x021DE574
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0x2a4
- mov r7, #0
- mov r6, #6
- mvn r5, #0
- mov r4, #0x64
-_021DE58C:
- bl MOD04_021DE150
- cmp r0, #3
- bne _021DE6AC
- ldr r0, _021DE718 ; =UNK04_02210520
- ldr r5, [r0]
- add r0, r5, #0x50
- bl strlen
- mov r4, r0
- ldr r0, _021DE71C ; =UNK04_0220D300
- bl strlen
- add r0, r4, r0
- cmp r0, #0xff
- bls _021DE5D8
- mov r0, #0
- mov r1, #8
- mvn r2, #0
- bl MOD04_021DE774
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE5D8:
- ldr r2, _021DE720 ; =UNK04_0220D314
- add r0, sp, #0x10
- add r3, r5, #0x50
- mov r1, #0x100
- bl OS_SNPrintf
- ldr r0, _021DE718 ; =UNK04_02210520
- ldr r4, [r0]
- add r0, r4, #0x91
- bl strlen
- mov r1, r0
- add r2, sp, #0x110
- add r0, r4, #0x91
- mov r3, #0x190
- bl MOD04_021DD4FC
- cmp r0, #0
- bge _021DE630
- mov r0, #0
- mov r1, #8
- mvn r2, #0
- bl MOD04_021DE774
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE630:
- ldr r0, _021DE718 ; =UNK04_02210520
- ldr r4, _021DE724 ; =MOD04_021DE774
- ldr r2, [r0]
- ldr r0, _021DE728 ; =MOD04_021DE884
- add r1, r2, #8
- str r1, [sp]
- add r1, r2, #0x28
- str r1, [sp, #4]
- ldr r1, _021DE72C ; =MOD04_021DE86C
- add r2, sp, #0x10
- add r3, sp, #0x110
- str r4, [sp, #8]
- bl MOD04_02206EFC
- cmp r0, #0
- bne _021DE684
- mov r0, #0
- mov r1, #8
- mvn r2, #0
- bl MOD04_021DE774
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE684:
- ldr r1, _021DE718 ; =UNK04_02210520
- mov r0, #0
- ldr r3, [r1]
- mov r4, #1
- mov r1, r0
- mvn r2, #0
- str r4, [r3, #0x48]
- 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 MOD04_021DD808
- ldr r1, [sp, #0xc]
- mov r0, #0xe
- bl MOD04_021DD6B0
- ldr r1, _021DE718 ; =UNK04_02210520
- mov r0, #0
- ldr r2, [r1]
- mov r1, #3
- ldr r3, [r2]
- mvn r2, #0
- blx r3
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE6EC:
- cmp r0, #5
- bne _021DE704
- mov r0, r7
- mov r1, r6
- mov r2, r5
- bl MOD04_021DE774
-_021DE704:
- mov r0, r4
- bl OS_Sleep
- b _021DE58C
- arm_func_end MOD04_021DE574
-
- arm_func_start MOD04_021DE710
-MOD04_021DE710: ; 0x021DE710
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DE718: .word UNK04_02210520
-_021DE71C: .word UNK04_0220D300
-_021DE720: .word UNK04_0220D314
-_021DE724: .word MOD04_021DE774
-_021DE728: .word MOD04_021DE884
-_021DE72C: .word MOD04_021DE86C
- arm_func_end MOD04_021DE710
-
- arm_func_start MOD04_021DE730
-MOD04_021DE730: ; 0x021DE730
- stmdb sp!, {r4, lr}
- ldr r0, _021DE770 ; =UNK04_02210520
- ldr r0, [r0]
- add r0, r0, #0x9c0
- bl OS_JoinThread
- ldr r0, _021DE770 ; =UNK04_02210520
- ldr r0, [r0]
- ldr r4, [r0, #4]
- bl MOD04_021DE86C
- ldr r0, _021DE770 ; =UNK04_02210520
- mov r1, #0
- str r1, [r0]
- cmp r4, #0
- ldmeqia sp!, {r4, pc}
- blx r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DE770: .word UNK04_02210520
- arm_func_end MOD04_021DE730
-
- arm_func_start MOD04_021DE774
-MOD04_021DE774: ; 0x021DE774
- stmdb sp!, {r4, r5, r6, lr}
- movs r5, r1
- mov r6, r0
- mov r4, r2
- bne _021DE79C
- ldr r3, _021DE854 ; =UNK04_02210520
- ldr r3, [r3]
- ldr r3, [r3]
- blx r3
- ldmia sp!, {r4, r5, r6, pc}
-_021DE79C:
- cmp r5, #8
- addls pc, pc, r5, lsl #2
- b _021DE830
-_021DE7A8: ; jump table
- b _021DE830 ; case 0
- b _021DE7CC ; case 1
- b _021DE7DC ; case 2
- b _021DE7E4 ; case 3
- b _021DE7F4 ; case 4
- b _021DE804 ; case 5
- b _021DE834 ; case 6
- b _021DE818 ; case 7
- b _021DE820 ; case 8
-_021DE7CC:
- ldr r1, _021DE858 ; =0xFFFF86E7
- mov r0, #9
- bl MOD04_021DD6B0
- b _021DE834
-_021DE7DC:
- bl OS_Terminate
- b _021DE834
-_021DE7E4:
- ldr r1, _021DE85C ; =0xFFFF86D4
- mov r0, #0xf
- bl MOD04_021DD6B0
- b _021DE834
-_021DE7F4:
- ldr r1, _021DE860 ; =0xFFFF86CA
- mov r0, #0xe
- bl MOD04_021DD6B0
- b _021DE834
-_021DE804:
- ldr r1, _021DE864 ; =0xFFFF86E8
- mov r0, #0xe
- sub r1, r1, r4
- bl MOD04_021DD6B0
- b _021DE834
-_021DE818:
- bl OS_Terminate
- b _021DE834
-_021DE820:
- ldr r1, _021DE868 ; =0xFFFF86DF
- mov r0, #9
- bl MOD04_021DD6B0
- b _021DE834
-_021DE830:
- bl OS_Terminate
-_021DE834:
- ldr r1, _021DE854 ; =UNK04_02210520
- mov r0, r6
- ldr r2, [r1]
- mov r1, r5
- ldr r3, [r2]
- mov r2, r4
- blx r3
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DE854: .word UNK04_02210520
-_021DE858: .word 0xFFFF86E7
-_021DE85C: .word 0xFFFF86D4
-_021DE860: .word 0xFFFF86CA
-_021DE864: .word 0xFFFF86E8
-_021DE868: .word 0xFFFF86DF
- arm_func_end MOD04_021DE774
-
- 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 MOD04_021DD904
- arm_func_end MOD04_021DE86C
-
- 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 MOD04_021DD924
- arm_func_end MOD04_021DE884
-
- arm_func_start MOD04_021DE89C
-MOD04_021DE89C: ; 0x021DE89C
- ldrh r1, [r0]
- mov r2, #0
- cmp r1, #0
- beq _021DE8C0
-_021DE8AC:
- add r2, r2, #1
- mov r1, r2, lsl #1
- ldrh r1, [r0, r1]
- cmp r1, #0
- bne _021DE8AC
-_021DE8C0:
- mov r0, r2
- bx lr
- arm_func_end MOD04_021DE89C
-
- arm_func_start MOD04_021DE8C8
-MOD04_021DE8C8: ; 0x021DE8C8
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r2, _021DE9E4 ; =UNK04_02210524
- mov r1, #0
- ldr r3, [r2, #4]
- ldr ip, [r2]
- cmp r3, r1
- mov r4, r0
- cmpeq ip, r1
- bne _021DE98C
- ldr r0, [r2, #0xc]
- ldr r3, [r2, #8]
- cmp r0, r1
- cmpeq r3, r1
- bne _021DE98C
- ldr r0, [r2, #0x14]
- ldr r2, [r2, #0x10]
- cmp r0, r1
- cmpeq r2, r1
- bne _021DE98C
- add r0, sp, #0
- bl OS_GetMacAddress
- bl OS_GetTick
- ldr r2, [sp]
- ldr r3, [sp, #4]
- mov lr, r2, lsr #0x18
- mov r2, r1, lsl #0x18
- orr lr, lr, r3, lsl #8
- mvn r1, #0xff000000
- mov ip, r3, lsr #0x18
- and r1, lr, r1
- orr r3, r1, r0, lsl #24
- and r1, ip, #0
- orr r2, r2, r0, lsr #8
- orr r1, r1, r2
- str r1, [sp, #4]
- ldr ip, _021DE9E4 ; =UNK04_02210524
- add r0, sp, #0
- str r3, [sp]
- ldmia r0, {r2, r3}
- stmia ip, {r2, r3}
- ldr r3, _021DE9E8 ; =0x6C078965
- ldr r2, _021DE9EC ; =0x5D588B65
- ldr r1, _021DE9F0 ; =0x00269EC3
- mov r0, #0
- str r3, [ip, #8]
- str r2, [ip, #0xc]
- str r1, [ip, #0x10]
- str r0, [ip, #0x14]
-_021DE98C:
- ldr r1, _021DE9E4 ; =UNK04_02210524
- ldr r3, [r1, #8]
- ldr r2, [r1]
- ldr r0, [r1, #4]
- umull lr, ip, r3, r2
- mla ip, r3, r0, ip
- ldr r0, [r1, #0xc]
- ldr r3, [r1, #0x10]
- mla ip, r0, r2, ip
- adds r2, r3, lr
- ldr r0, [r1, #0x14]
- str r2, [r1]
- adc r0, r0, ip
- cmp r4, #0
- str r0, [r1, #4]
- movne r3, #0
- umullne r2, r1, r0, r4
- mlane r1, r0, r3, r1
- mlane r1, r3, r4, r1
- movne r0, r1
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DE9E4: .word UNK04_02210524
-_021DE9E8: .word 0x6C078965
-_021DE9EC: .word 0x5D588B65
-_021DE9F0: .word 0x00269EC3
- arm_func_end MOD04_021DE8C8
-
- arm_func_start MOD04_021DE9F4
-MOD04_021DE9F4: ; 0x021DE9F4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- movs r4, r1
- mov r7, r0
- mov r6, r3
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r0, r2
- mov r1, r6
- bl strchr
- movs r5, r0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
-_021DEA30:
- mov r0, r7
- bl strlen
- mov r2, r0
- mov r1, r7
- add r0, r5, #1
- bl strncmp
- cmp r0, #0
- bne _021DEA68
- mov r0, r7
- bl strlen
- add r0, r0, r5
- ldrsb r0, [r0, #1]
- cmp r6, r0
- beq _021DEAA4
-_021DEA68:
- mov r1, r6
- add r0, r5, #1
- bl strchr
- cmp r0, #0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r1, r6
- add r0, r0, #1
- bl strchr
- movs r5, r0
- bne _021DEA30
- add sp, sp, #4
- mvn r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DEAA4:
- mov r1, r6
- add r0, r5, #1
- bl strchr
- movs r5, r0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r1, r6
- add r0, r5, #1
- bl strchr
- cmp r0, #0
- addne r1, r5, #1
- subne r6, r0, r1
- bne _021DEAE8
- add r0, r5, #1
- bl strlen
- mov r6, r0
-_021DEAE8:
- mov r0, r4
- mov r2, r6
- add r1, r5, #1
- bl strncpy
- mov r1, #0
- mov r0, r6
- strb r1, [r4, r6]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_end MOD04_021DE9F4
-
- arm_func_start MOD04_021DEB0C
-MOD04_021DEB0C: ; 0x021DEB0C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, r2
- mov r7, r0
- mov r6, r1
- mov r4, r3
- mov r0, r5
- mov r1, #0
- bl strchr
- mov r2, r0
- mov r0, r7
- mov r1, r6
- mov r3, r4
- bl MOD04_021DEB54
- mov r0, r5
- bl strlen
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_end MOD04_021DEB0C
-
- arm_func_start MOD04_021DEB54
-MOD04_021DEB54: ; 0x021DEB54
- stmdb sp!, {r4, lr}
- sub sp, sp, #0x10
- str r0, [sp]
- mov r4, r2
- str r3, [sp, #4]
- str r1, [sp, #8]
- ldr r2, _021DEB8C ; =UNK04_0220D328
- mov r0, r4
- mov r1, #0x1000
- bl OS_SNPrintf
- mov r0, r4
- bl strlen
- add sp, sp, #0x10
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DEB8C: .word UNK04_0220D328
- arm_func_end MOD04_021DEB54
-
- arm_func_start MOD04_021DEB90
-MOD04_021DEB90: ; 0x021DEB90
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD43C
- bl MOD04_021EFB28
- ldr r2, _021DEBCC ; =UNK04_02210540
- ldr r1, _021DEBD0 ; =0xFFFE8515
- str r0, [r2]
- mov r0, #9
- bl MOD04_021DD6B0
- ldr r0, _021DEBD4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DEBCC: .word UNK04_02210540
-_021DEBD0: .word 0xFFFE8515
-_021DEBD4: .word UNK04_0221053C
- arm_func_end MOD04_021DEB90
-
- arm_func_start MOD04_021DEBD8
-MOD04_021DEBD8: ; 0x021DEBD8
- ldr ip, _021DEBE0 ; =MOD04_021EAC1C
- bx ip
- .align 2, 0
-_021DEBE0: .word MOD04_021EAC1C
- arm_func_end MOD04_021DEBD8
-
- 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 MOD04_021E852C
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp sb, #4
- addls pc, pc, sb, lsl #2
- b _021DEC48
-_021DEC18: ; jump table
- b _021DEC2C ; case 0
- b _021DEC2C ; case 1
- b _021DEC34 ; case 2
- b _021DEC34 ; case 3
- b _021DEC40 ; case 4
-_021DEC2C:
- mov r4, r7
- b _021DEC48
-_021DEC34:
- mov r4, #6
- ldr r6, _021DEF4C ; =0xFFFFE250
- b _021DEC48
-_021DEC40:
- ldr r6, _021DEF50 ; =0xFFFFE24F
- mov r4, #9
-_021DEC48:
- cmp r4, #0
- bne _021DED00
- mov r0, fp
- bl MOD04_021FD3C4
- movs r7, r0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldrb r8, [r7, #1]
- ldr r1, [r0]
- mov r5, #1
- mov r0, r5,lsl r8
- ldr r1, [r1, #0x644]
- ands r0, r1, r0
- mov r0, r8
- moveq r5, #0
- bl MOD04_021EA9D8
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- bne _021DECA8
- cmp sb, #0
- beq _021DECBC
-_021DECA8:
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DECC0
- cmp r8, #0
- bne _021DECC0
-_021DECBC:
- mov sl, #1
-_021DECC0:
- mov r0, r8
- bl MOD04_021DF56C
- ldr r1, _021DEF54 ; =UNK04_0221053C
- ldrb r7, [r7]
- ldr r2, _021DEF58 ; =UNK04_02210544
- mov fp, #0
- ldr r3, [r1]
- str fp, [r2, r7, lsl #2]
- ldrb r2, [r3, #0x361]
- mov r7, r0
- sub r0, r2, #1
- strb r0, [r3, #0x361]
- ldr r1, [r1]
- ldrb r0, [r1, #0x368]
- sub r0, r0, #1
- strb r0, [r1, #0x368]
-_021DED00:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DED58
- ldr r0, [r1, #0x24]
- cmp r0, #6
- bne _021DED58
- cmp r5, #0
- bne _021DED58
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r4, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_021E85D4
- mov r0, r7
- 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 MOD04_021E8A74
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r4, #0
- beq _021DED90
- mov r0, r4
- mov r1, r6
- bl MOD04_021DD6B0
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DED90:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEE04
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DEDBC
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DEE04
-_021DEDBC:
- ldr r2, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r2]
- ldrb r0, [r1, #0x361]
- add r6, r0, #2
- add r3, r1, r6, lsl #2
- ldr r3, [r3, #0x448]
- cmp r3, #0
- beq _021DEE04
- add r3, r1, r6
- ldrb r3, [r3, #0x624]
- add r0, r0, #1
- add r0, r1, r0
- strb r3, [r0, #0x624]
- ldr r0, [r2]
- ldrb r1, [r0, #0x361]
- add r0, r1, #1
- add r1, r1, #3
- bl MOD04_021E8830
-_021DEE04:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- bne _021DEE4C
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEE2C
- bl MOD04_021E85D4
- b _021DEE68
-_021DEE2C:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- bne _021DEE68
- ldr r1, _021DEF5C ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- b _021DEE68
-_021DEE4C:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- bne _021DEE68
- ldr r1, _021DEF5C ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
-_021DEE68:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #0
- beq _021DEE88
- ldrb r0, [r1, #0x369]
- cmp r0, #1
- bne _021DEEA4
-_021DEE88:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r2, [r0]
- ldrb r1, [r2, #0x368]
- strb r1, [r2, #0x36a]
- ldr r0, [r0]
- ldr r0, [r0, #0x364]
- bl MOD04_02202308
-_021DEEA4:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r6, [r0]
- ldr r0, [r6, #0x90]
- cmp r0, #0
- beq _021DEF00
- cmp r5, #0
- beq _021DEF00
- cmp sb, #0
- moveq r5, #1
- mov r0, r7
- movne r5, #0
- bl MOD04_021E1F18
- str r0, [sp]
- ldr r1, [r6, #0x94]
- ldr r0, _021DEF54 ; =UNK04_0221053C
- str r1, [sp, #4]
- ldr r1, [r0]
- mov r0, r4
- ldr r4, [r1, #0x90]
- mov r1, r5
- mov r2, sl
- mov r3, r8
- blx r4
-_021DEF00:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEF24
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DEF24:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_02200D6C
- bl MOD04_021E8DC0
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DEF4C: .word 0xFFFFE250
-_021DEF50: .word 0xFFFFE24F
-_021DEF54: .word UNK04_0221053C
-_021DEF58: .word UNK04_02210544
-_021DEF5C: .word UNK04_0220D334
- arm_func_end MOD04_021DEBE4
-
- arm_func_start MOD04_021DEF60
-MOD04_021DEF60: ; 0x021DEF60
- ldr ip, _021DEF68 ; =MOD04_021EAC5C
- bx ip
- .align 2, 0
-_021DEF68: .word MOD04_021EAC5C
- arm_func_end MOD04_021DEF60
-
- arm_func_start MOD04_021DEF6C
-MOD04_021DEF6C: ; 0x021DEF6C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- add r4, sp, #0
- mov r3, #0
- strb r3, [r4]
- strb r3, [r4, #1]
- strb r3, [r4, #2]
- strb r3, [r4, #3]
- strb r3, [r4, #4]
- strb r3, [r4, #5]
- strb r3, [r4, #6]
- strb r3, [r4, #7]
- strb r3, [r4, #8]
- strb r3, [r4, #9]
- strb r3, [r4, #0xa]
- mov r5, r1
- strb r3, [r4, #0xb]
- ldr r4, [r5, #8]
- mov r6, r0
- bl MOD04_021E2068
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0C8 ; =UNK04_0220D338
- bl strlen
- mov r2, r0
- ldr r1, _021DF0C8 ; =UNK04_0220D338
- mov r0, r4
- bl memcmp
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0C8 ; =UNK04_0220D338
- bl strlen
- add r4, r4, r0
- mov r0, r4
- mov r1, #0x76
- bl strchr
- sub r7, r0, r4
- add r0, sp, #0
- mov r1, r4
- mov r2, r7
- bl strncpy
- cmp r7, #0xa
- addhi sp, sp, #0xc
- ldmhiia sp!, {r4, r5, r6, r7, pc}
- add r0, sp, #0
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- cmp r0, #3
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0CC ; =UNK04_0220D340
- add r1, r7, #1
- add r4, r4, r1
- bl strlen
- mov r2, r0
- ldr r1, _021DF0CC ; =UNK04_0220D340
- mov r0, r4
- bl memcmp
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0D0 ; =UNK04_0221053C
- ldr r1, [r0]
- ldr r0, [r1, #0x24]
- cmp r0, #5
- beq _021DF0A8
- cmp r0, #6
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF0A8
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
-_021DF0A8:
- ldr r0, _021DF0CC ; =UNK04_0220D340
- bl strlen
- add r2, r4, r0
- ldr r1, [r5]
- mov r0, r6
- bl MOD04_021E8EF4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DF0C8: .word UNK04_0220D338
-_021DF0CC: .word UNK04_0220D340
-_021DF0D0: .word UNK04_0221053C
- arm_func_end MOD04_021DEF6C
-
- arm_func_start MOD04_021DF0D4
-MOD04_021DF0D4: ; 0x021DF0D4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, [r1, #4]
- ldr r0, _021DF120 ; =0x00000603
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DF124 ; =0x00000901
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DF128 ; =0x00000B01
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- mov r0, #3
- bl MOD04_021DF414
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF120: .word 0x00000603
-_021DF124: .word 0x00000901
-_021DF128: .word 0x00000B01
- arm_func_end MOD04_021DF0D4
-
- arm_func_start MOD04_021DF12C
-MOD04_021DF12C: ; 0x021DF12C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- movs r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bne _021DF174
- cmp r6, #0
- beq _021DF174
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x4f4]
- cmp r0, #0
- bne _021DF1D8
- bl MOD04_021E8DC0
- mov r0, #3
- bl MOD04_021DF5CC
- b _021DF1D8
-_021DF174:
- cmp r7, #0
- bne _021DF1D8
- mov r0, #6
- bl MOD04_021DF5CC
- ldr r1, _021DF2AC ; =UNK04_0221053C
- mov r0, #0
- ldr r3, [r1]
- ldrb r1, [r3, #0x361]
- cmp r1, #0
- blt _021DF1D8
- ldr r2, [r3, #0x64]
-_021DF1A0:
- add r1, r3, r0, lsl #2
- ldr r1, [r1, #0x448]
- cmp r2, r1
- bne _021DF1C8
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r1]
- add r0, r1, r0
- ldrb r0, [r0, #0x624]
- strb r0, [r1, #0x2c]
- b _021DF1D8
-_021DF1C8:
- ldrb r1, [r3, #0x361]
- add r0, r0, #1
- cmp r0, r1
- ble _021DF1A0
-_021DF1D8:
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r0, _021DF2B0 ; =0x00000624
- ldr r2, [r1]
- ldrb r1, [r2, #0x361]
- add r0, r2, r0
- add r1, r1, #1
- bl MOD04_021DF530
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r1]
- str r0, [r1, #0x644]
- bl MOD04_021E8780
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF224
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DF258
-_021DF224:
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r1, [sp, #0x20]
- ldr r3, [r0]
- mov r0, r7
- str r1, [sp]
- ldr r2, [r3, #0x8c]
- mov r1, r6
- str r2, [sp, #4]
- ldr r6, [r3, #0x88]
- mov r2, r5
- mov r3, r4
- blx r6
- b _021DF26C
-_021DF258:
- ldr r2, [r1, #0x84]
- ldr r3, [r1, #0x80]
- mov r0, r7
- mov r1, r6
- blx r3
-_021DF26C:
- cmp r7, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r0, #0x24]
- cmp r0, #5
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DF2AC: .word UNK04_0221053C
-_021DF2B0: .word 0x00000624
- arm_func_end MOD04_021DF12C
-
- arm_func_start MOD04_021DF2B4
-MOD04_021DF2B4: ; 0x021DF2B4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021DF300 ; =UNK04_0221053C
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- ldr r0, [r0, #0x28]
- cmp r0, #4
- beq _021DF2DC
- bl MOD04_021DF5CC
-_021DF2DC:
- ldr r1, _021DF300 ; =UNK04_0221053C
- mov r0, r5
- ldr r3, [r1]
- mov r1, r4
- ldr r2, [r3, #0x7c]
- ldr r3, [r3, #0x78]
- blx r3
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DF300: .word UNK04_0221053C
- arm_func_end MOD04_021DF2B4
-
- arm_func_start MOD04_021DF304
-MOD04_021DF304: ; 0x021DF304
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- movs r5, r0
- mov r4, r1
- bne _021DF334
- ldr r1, _021DF36C ; =UNK04_0221053C
- mov r0, #3
- ldr r1, [r1]
- str r4, [r1, #0x64]
- bl MOD04_021DF5CC
- bl MOD04_021E1ED4
- b _021DF33C
-_021DF334:
- mov r0, #0
- bl MOD04_021DF5CC
-_021DF33C:
- ldr r0, _021DF36C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r3, [r0, #0x70]
- cmp r3, #0
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, [r0, #0x74]
- mov r0, r5
- mov r1, r4
- blx r3
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DF36C: .word UNK04_0221053C
- arm_func_end MOD04_021DF304
-
- arm_func_start MOD04_021DF370
-MOD04_021DF370: ; 0x021DF370
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #7
- addls pc, pc, r4, lsl #2
- b _021DF3F4
-_021DF38C: ; jump table
- b _021DF3F4 ; case 0
- b _021DF3AC ; case 1
- b _021DF3B8 ; case 2
- b _021DF3C8 ; case 3
- b _021DF3D4 ; case 4
- b _021DF3B8 ; case 5
- b _021DF3E0 ; case 6
- b _021DF3EC ; case 7
-_021DF3AC:
- mov r0, #9
- mvn r2, #0
- b _021DF3F4
-_021DF3B8:
- mov r0, #0
- mov r2, r0
- mov r4, r0
- b _021DF3F4
-_021DF3C8:
- mov r0, #6
- mvn r2, #9
- b _021DF3F4
-_021DF3D4:
- mov r0, #6
- mvn r2, #0x1d
- b _021DF3F4
-_021DF3E0:
- mov r0, #6
- mvn r2, #0x45
- b _021DF3F4
-_021DF3EC:
- mov r0, #6
- mvn r2, #0x4f
-_021DF3F4:
- cmp r0, #0
- beq _021DF408
- ldr r1, _021DF410 ; =0xFFFEFA48
- add r1, r2, r1
- bl MOD04_021E0EAC
-_021DF408:
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DF410: .word 0xFFFEFA48
- arm_func_end MOD04_021DF370
-
- arm_func_start MOD04_021DF414
-MOD04_021DF414: ; 0x021DF414
- stmdb sp!, {r4, r5, r6, lr}
- movs r6, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r6, #4
- addls pc, pc, r6, lsl #2
- b _021DF470
-_021DF430: ; jump table
- b _021DF470 ; case 0
- b _021DF444 ; case 1
- b _021DF450 ; case 2
- b _021DF45C ; case 3
- b _021DF468 ; case 4
-_021DF444:
- mov r4, #9
- mvn r5, #0
- b _021DF470
-_021DF450:
- mov r4, #9
- mvn r5, #1
- b _021DF470
-_021DF45C:
- mov r4, #6
- mvn r5, #9
- b _021DF470
-_021DF468:
- mov r4, #6
- mvn r5, #0x13
-_021DF470:
- ldr r0, _021DF51C ; =UNK04_0221053C
- ldr r1, [r0]
- ldr r0, [r1, #0x24]
- cmp r0, #5
- addls pc, pc, r0, lsl #2
- b _021DF500
-_021DF488: ; jump table
- b _021DF500 ; case 0
- b _021DF4A0 ; case 1
- b _021DF4B8 ; case 2
- b _021DF500 ; case 3
- b _021DF4F4 ; case 4
- b _021DF4DC ; case 5
-_021DF4A0:
- ldr r1, _021DF520 ; =0xFFFF11B8
- mov r0, r4
- add r5, r5, r1
- mov r1, r5
- bl MOD04_021E0EAC
- b _021DF508
-_021DF4B8:
- ldr r1, [r1, #0x9c]
- ldr r0, _021DF520 ; =0xFFFF11B8
- cmp r1, #1
- add r5, r5, r0
- bge _021DF508
- mov r0, r4
- mov r1, r5
- bl MOD04_021E0EAC
- b _021DF508
-_021DF4DC:
- ldr r1, _021DF524 ; =0xFFFEC398
- mov r0, r4
- add r5, r5, r1
- mov r1, r5
- bl MOD04_021E8E08
- b _021DF508
-_021DF4F4:
- ldr r0, _021DF528 ; =0xFFFEEAA8
- add r5, r5, r0
- b _021DF508
-_021DF500:
- ldr r0, _021DF52C ; =0xFFFE9C88
- add r5, r5, r0
-_021DF508:
- mov r0, r4
- mov r1, r5
- bl MOD04_021E2114
- mov r0, r6
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF51C: .word UNK04_0221053C
-_021DF520: .word 0xFFFF11B8
-_021DF524: .word 0xFFFEC398
-_021DF528: .word 0xFFFEEAA8
-_021DF52C: .word 0xFFFE9C88
- arm_func_end MOD04_021DF414
-
- arm_func_start MOD04_021DF530
-MOD04_021DF530: ; 0x021DF530
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov lr, #0
- mov ip, lr
- cmp r1, #0
- ble _021DF560
- mov r3, #1
-_021DF54C:
- ldrb r2, [r0, ip]
- add ip, ip, #1
- cmp ip, r1
- orr lr, lr, r3, lsl r2
- blt _021DF54C
-_021DF560:
- mov r0, lr
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF530
-
- arm_func_start MOD04_021DF56C
-MOD04_021DF56C: ; 0x021DF56C
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl MOD04_021E874C
- mov r1, r0
- cmp r1, #0
- mov r0, #0
- ble _021DF5B0
- ldr r3, [sp]
-_021DF594:
- ldrb r2, [r3]
- cmp r4, r2
- beq _021DF5B0
- add r0, r0, #1
- cmp r0, r1
- add r3, r3, #1
- blt _021DF594
-_021DF5B0:
- cmp r0, r1
- addeq sp, sp, #8
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021E8830
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DF56C
-
- arm_func_start MOD04_021DF5CC
-MOD04_021DF5CC: ; 0x021DF5CC
- ldr r1, _021DF5E8 ; =UNK04_0221053C
- ldr r3, [r1]
- ldr r2, [r3, #0x24]
- str r2, [r3, #0x28]
- ldr r1, [r1]
- str r0, [r1, #0x24]
- bx lr
- .align 2, 0
-_021DF5E8: .word UNK04_0221053C
- arm_func_end MOD04_021DF5CC
-
- arm_func_start MOD04_021DF5EC
-MOD04_021DF5EC: ; 0x021DF5EC
- bx lr
- arm_func_end MOD04_021DF5EC
-
- arm_func_start MOD04_021DF5F0
-MOD04_021DF5F0: ; 0x021DF5F0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #0
- ldr r4, _021DF634 ; =UNK04_02210544
-_021DF600:
- ldr r0, [r4, r5, lsl #2]
- cmp r0, #0
- beq _021DF620
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- cmp r6, r0
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, pc}
-_021DF620:
- add r5, r5, #1
- cmp r5, #0x20
- blt _021DF600
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF634: .word UNK04_02210544
- arm_func_end MOD04_021DF5F0
-
- arm_func_start MOD04_021DF638
-MOD04_021DF638: ; 0x021DF638
- ldr r1, _021DF644 ; =UNK04_022105C4
- add r0, r1, r0, lsl #3
- bx lr
- .align 2, 0
-_021DF644: .word UNK04_022105C4
- arm_func_end MOD04_021DF638
-
- arm_func_start MOD04_021DF648
-MOD04_021DF648: ; 0x021DF648
- stmdb sp!, {lr}
- sub sp, sp, #4
- cmp r1, #0
- mov ip, #0
- ble _021DF684
- ldr r2, _021DF6B8 ; =UNK04_0221053C
- ldr r3, [r2]
-_021DF664:
- add r2, r3, ip, lsl #2
- ldr r2, [r2, #0x448]
- cmp r0, r2
- beq _021DF684
- add r2, ip, #1
- and ip, r2, #0xff
- cmp ip, r1
- blt _021DF664
-_021DF684:
- cmp ip, r1
- addge sp, sp, #4
- movge r0, #0
- ldmgeia sp!, {pc}
- ldr r0, _021DF6B8 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, ip
- ldrb r0, [r0, #0x624]
- bl MOD04_021DF760
- bl MOD04_021DF730
- bl MOD04_021DF6BC
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF6B8: .word UNK04_0221053C
- arm_func_end MOD04_021DF648
-
- arm_func_start MOD04_021DF6BC
-MOD04_021DF6BC: ; 0x021DF6BC
- ldr r1, _021DF6C8 ; =UNK04_02210544
- add r0, r1, r0, lsl #2
- bx lr
- .align 2, 0
-_021DF6C8: .word UNK04_02210544
- arm_func_end MOD04_021DF6BC
-
- arm_func_start MOD04_021DF6CC
-MOD04_021DF6CC: ; 0x021DF6CC
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DF6FC ; =UNK04_02210544
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- ldr r1, _021DF700 ; =UNK04_022105C4
- mov r0, #0
- mov r2, #0x100
- bl MIi_CpuClear32
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF6FC: .word UNK04_02210544
-_021DF700: .word UNK04_022105C4
- arm_func_end MOD04_021DF6CC
-
- arm_func_start MOD04_021DF704
-MOD04_021DF704: ; 0x021DF704
- ldr r2, _021DF72C ; =UNK04_02210544
- mov r0, #0
-_021DF70C:
- ldr r1, [r2, r0, lsl #2]
- cmp r1, #0
- bxeq lr
- add r0, r0, #1
- cmp r0, #0x20
- blt _021DF70C
- mvn r0, #0
- bx lr
- .align 2, 0
-_021DF72C: .word UNK04_02210544
- arm_func_end MOD04_021DF704
-
- arm_func_start MOD04_021DF730
-MOD04_021DF730: ; 0x021DF730
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD3C4
- ldrb r0, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF730
-
- arm_func_start MOD04_021DF748
-MOD04_021DF748: ; 0x021DF748
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF748
-
- arm_func_start MOD04_021DF760
-MOD04_021DF760: ; 0x021DF760
- stmdb sp!, {r4, r5, r6, lr}
- ldr r1, _021DF7BC ; =UNK04_0221053C
- mov r6, r0
- ldr r0, [r1]
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r4, _021DF7C0 ; =UNK04_02210544
- mov r5, #0
-_021DF784:
- ldr r0, [r4, r5, lsl #2]
- cmp r0, #0
- beq _021DF7A8
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- cmp r6, r0
- ldreq r0, _021DF7C0 ; =UNK04_02210544
- ldreq r0, [r0, r5, lsl #2]
- ldmeqia sp!, {r4, r5, r6, pc}
-_021DF7A8:
- add r5, r5, #1
- cmp r5, #0x20
- blt _021DF784
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF7BC: .word UNK04_0221053C
-_021DF7C0: .word UNK04_02210544
- arm_func_end MOD04_021DF760
-
- arm_func_start MOD04_021DF7C4
-MOD04_021DF7C4: ; 0x021DF7C4
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #0
- ldmneia sp!, {r4, pc}
- mov r0, #0x4000
- bl MOD04_021DE8C8
- add r0, r0, #0xc000
- mov r1, r0, lsl #0x10
- ldr r3, _021DF87C ; =UNK04_0221053C
- mov r0, #0
- mov r2, r0
- mov r1, r1, lsr #0x10
- ldr r4, [r3]
- bl MOD04_021FFEB0
- ldr r1, _021DF880 ; =MOD04_021DEB90
- ldr r2, _021DF87C ; =UNK04_0221053C
- str r1, [sp]
- mov r1, r0
- ldr r0, [r2]
- ldr r2, [r4, #0x14]
- ldr r3, [r4, #0x18]
- bl MOD04_021FD71C
- mov r4, r0
- bl MOD04_021DF370
- cmp r0, #0
- addne sp, sp, #8
- movne r0, r4
- ldmneia sp!, {r4, pc}
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r1, _021DF884 ; =MOD04_021E9204
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD6C8
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r1, _021DF888 ; =MOD04_021E9464
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD434
- mov r0, r4
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DF87C: .word UNK04_0221053C
-_021DF880: .word MOD04_021DEB90
-_021DF884: .word MOD04_021E9204
-_021DF888: .word MOD04_021E9464
- arm_func_end MOD04_021DF7C4
-
- arm_func_start MOD04_021DF88C
-MOD04_021DF88C: ; 0x021DF88C
- ldr r0, _021DF8A4 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- ldrne r0, [r0, #0x24]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DF8A4: .word UNK04_0221053C
- arm_func_end MOD04_021DF88C
-
- arm_func_start MOD04_021DF8A8
-MOD04_021DF8A8: ; 0x021DF8A8
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DF8F0 ; =UNK04_0221053C
- ldr r2, [r1]
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- mov r1, #1
- mov r1, r1,lsl r0
- ldr r2, [r2, #0x644]
- ands r1, r2, r1
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021DF5F0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF8F0: .word UNK04_0221053C
- arm_func_end MOD04_021DF8A8
-
- arm_func_start MOD04_021DF8F4
-MOD04_021DF8F4: ; 0x021DF8F4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r2, _021DF954 ; =UNK04_0221053C
- ldr r3, [r2]
- cmp r3, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldr r1, _021DF958 ; =0x00000624
- add r1, r3, r1
- str r1, [r0]
- ldr r2, [r2]
- ldrb r1, [r2, #0x369]
- cmp r1, #2
- beq _021DF93C
- ldrb r1, [r2, #0x369]
- cmp r1, #3
- bne _021DF948
-_021DF93C:
- bl MOD04_021E86A4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DF948:
- bl MOD04_021E874C
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF954: .word UNK04_0221053C
-_021DF958: .word 0x00000624
- arm_func_end MOD04_021DF8F4
-
- arm_func_start MOD04_021DF95C
-MOD04_021DF95C: ; 0x021DF95C
- ldr r0, _021DF974 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- ldrneb r0, [r0, #0x2c]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DF974: .word UNK04_0221053C
- arm_func_end MOD04_021DF95C
-
- arm_func_start MOD04_021DF978
-MOD04_021DF978: ; 0x021DF978
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DF9D0 ; =UNK04_0221053C
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF9B0
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DF9C0
-_021DF9B0:
- bl MOD04_021E87D8
- add sp, sp, #4
- add r0, r0, #1
- ldmfd sp!, {pc}
-_021DF9C0:
- bl MOD04_021E8804
- add r0, r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF9D0: .word UNK04_0221053C
- arm_func_end MOD04_021DF978
-
- arm_func_start MOD04_021DF9D4
-MOD04_021DF9D4: ; 0x021DF9D4
- stmdb sp!, {r4, lr}
- ldr r1, _021DFA3C ; =UNK04_0221053C
- mov r4, r0
- ldr r0, [r1]
- cmp r0, #0
- beq _021DFA14
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFA14
- ldr r0, _021DFA3C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #5
- beq _021DFA1C
- cmp r0, #6
- beq _021DFA1C
-_021DFA14:
- mvn r0, #0
- ldmia sp!, {r4, pc}
-_021DFA1C:
- mov r0, r4
- bl MOD04_021DF760
- cmp r0, #0
- mvneq r0, #1
- ldmeqia sp!, {r4, pc}
- bl MOD04_021FD488
- mov r0, #0
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DFA3C: .word UNK04_0221053C
- arm_func_end MOD04_021DF9D4
-
- arm_func_start MOD04_021DFA40
-MOD04_021DFA40: ; 0x021DFA40
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DFA80
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFA80
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r0, [r2, #0x24]
- cmp r0, #5
- beq _021DFA8C
- cmp r0, #6
- beq _021DFA8C
-_021DFA80:
- add sp, sp, #4
- mvn r0, #0
- ldmfd sp!, {pc}
-_021DFA8C:
- ldrb r0, [r2, #0x361]
- cmp r0, #0
- bne _021DFAC0
- ldr r1, _021DFAF4 ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_02200D6C
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #4
- mov r0, #1
- ldmfd sp!, {pc}
-_021DFAC0:
- mov r1, #1
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- strb r1, [r2, #0x2d]
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD45C
- ldr r1, _021DFAF0 ; =UNK04_0221053C
- mov r0, #0
- ldr r1, [r1]
- strb r0, [r1, #0x2d]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DFAF0: .word UNK04_0221053C
-_021DFAF4: .word UNK04_0220D334
- arm_func_end MOD04_021DFA40
-
- arm_func_start MOD04_021DFAF8
-MOD04_021DFAF8: ; 0x021DFAF8
- ldr r2, _021DFB1C ; =UNK04_0221053C
- ldr r3, [r2]
- cmp r3, #0
- moveq r0, #0
- strne r0, [r3, #0x90]
- ldrne r2, [r2]
- movne r0, #1
- strne r1, [r2, #0x94]
- bx lr
- .align 2, 0
-_021DFB1C: .word UNK04_0221053C
- arm_func_end MOD04_021DFAF8
-
- arm_func_start MOD04_021DFB20
-MOD04_021DFB20: ; 0x021DFB20
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0x224
- mvn ip, #0
- mov r7, r0
- mov r6, r1
- mov r4, r2
- mov r5, r3
- str ip, [sp, #8]
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFB60
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #3
- beq _021DFB6C
-_021DFB60:
- add sp, sp, #0x224
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFB6C:
- bl MOD04_021DF6CC
- ldr r1, _021DFD04 ; =UNK04_0221053C
- mov r0, #5
- ldr r2, [r1]
- str r6, [r2, #0x88]
- ldr r1, [r1]
- str r4, [r1, #0x8c]
- bl MOD04_021DF5CC
- mov r0, r7
- bl MOD04_021E1F84
- movs r4, r0
- beq _021DFBB8
- ldr r0, _021DFD04 ; =UNK04_0221053C
- mov r1, r4
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F05F4
- cmp r0, #0
- bne _021DFBC0
-_021DFBB8:
- mov r5, #0xb
- b _021DFC8C
-_021DFBC0:
- ldr r0, _021DFD04 ; =UNK04_0221053C
- add r2, sp, #8
- ldr r0, [r0]
- mov r1, r4
- add r0, r0, #0x1c
- bl MOD04_021F0664
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r1, [sp, #8]
- ldr r0, [r0]
- add r2, sp, #0x10
- add r0, r0, #0x1c
- bl MOD04_021F06E4
- ldr r0, [sp, #0x14]
- cmp r0, #6
- movne r5, #0xb
- bne _021DFC8C
- ldr r0, _021DFD08 ; =UNK04_0220D344
- mov r6, #0x30
- add r1, sp, #0xc
- add r2, sp, #0x18
- mov r3, #0x2f
- strb r6, [sp, #0xc]
- bl MOD04_021DE9F4
- add r0, sp, #0xc
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- and r6, r0, #0xff
- ldr r0, _021DFD0C ; =UNK04_0220D348
- add r1, sp, #0xc
- add r2, sp, #0x18
- mov r3, #0x2f
- bl MOD04_021DE9F4
- add r0, sp, #0xc
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- and r0, r0, #0xff
- cmp r0, r6
- moveq r5, #0xd
- beq _021DFC8C
- ldr r6, [sp, #0x238]
- ldr r1, _021DFD10 ; =MOD04_021DF12C
- mov r0, r4
- mov r3, r5
- mov r2, #0
- str r6, [sp]
- 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 MOD04_021DD6B0
- ldr r0, _021DFD04 ; =UNK04_0221053C
- mov r1, #0
- ldr r4, [r0]
- mov r0, r5
- str r1, [sp]
- ldr r2, [r4, #0x8c]
- mov r3, r1
- str r2, [sp, #4]
- ldr r4, [r4, #0x88]
- mov r2, #1
- blx r4
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DFCF8
- ldr r0, [r0, #0x24]
- cmp r0, #5
- bne _021DFCF8
- mov r0, #3
- bl MOD04_021DF5CC
- ldr r1, _021DFD14 ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
-_021DFCF8:
- mov r0, #1
- add sp, sp, #0x224
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DFD04: .word UNK04_0221053C
-_021DFD08: .word UNK04_0220D344
-_021DFD0C: .word UNK04_0220D348
-_021DFD10: .word MOD04_021DF12C
-_021DFD14: .word UNK04_0220D334
- arm_func_end MOD04_021DFB20
-
- 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 MOD04_021DD6D4
- cmp r0, #0
- bne _021DFD50
- ldr r0, _021DFDB4 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #3
- beq _021DFD5C
-_021DFD50:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFD5C:
- bl MOD04_021DF6CC
- ldr r1, _021DFDB4 ; =UNK04_0221053C
- mov r2, #0
- ldr r3, [r1]
- mov r0, #5
- str r6, [r3, #0x88]
- ldr r3, [r1]
- str r5, [r3, #0x8c]
- ldr r1, [r1]
- strb r2, [r1, #0x2c]
- bl MOD04_021DF5CC
- sub r0, r7, #1
- ldr r5, [sp, #0x18]
- ldr r1, _021DFDB8 ; =MOD04_021DF12C
- mov r3, r4
- and r0, r0, #0xff
- mov r2, #0
- str r5, [sp]
- bl MOD04_021EA138
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DFDB4: .word UNK04_0221053C
-_021DFDB8: .word MOD04_021DF12C
- arm_func_end MOD04_021DFD18
-
- 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 MOD04_021DD6D4
- cmp r0, #0
- bne _021DFDF8
- ldr r0, _021DFE5C ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r1, [r2, #0x24]
- cmp r1, #3
- blt _021DFDF8
- cmp r1, #4
- bne _021DFE04
-_021DFDF8:
- add sp, sp, #0x10
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DFE04:
- str r6, [r2, #0x78]
- ldr r1, [r0]
- mov r0, #4
- str r5, [r1, #0x7c]
- bl MOD04_021DF5CC
- ldr r0, _021DFE5C ; =UNK04_0221053C
- ldr r1, [sp, #0x20]
- ldr r3, [r0]
- ldr r0, [sp, #0x24]
- str r4, [sp]
- str r1, [sp, #4]
- ldr r4, [sp, #0x28]
- str r0, [sp, #8]
- ldr r2, _021DFE60 ; =MOD04_021DF2B4
- add r0, r3, #0xe0
- add r1, r3, #0x1e0
- mov r3, #0
- str r4, [sp, #0xc]
- bl MOD04_021E2174
- mov r0, #1
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DFE5C: .word UNK04_0221053C
-_021DFE60: .word MOD04_021DF2B4
- arm_func_end MOD04_021DFDBC
-
- 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 MOD04_021DD6D4
- cmp r0, #0
- bne _021DFE9C
- ldr r0, _021DFF6C ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r1, [r2, #0x24]
- cmp r1, #0
- beq _021DFEA4
-_021DFE9C:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DFEA4:
- str r6, [r2, #0x70]
- ldr r1, [r0]
- cmp r4, #0
- str r5, [r1, #0x74]
- beq _021DFEC4
- ldrh r1, [r4]
- cmp r1, #0
- bne _021DFECC
-_021DFEC4:
- mov r5, #0
- b _021DFF18
-_021DFECC:
- ldr r1, [r0]
- mov r0, #0
- add r1, r1, #0x2e
- mov r2, #0x34
- bl MIi_CpuClear16
- mov r0, r4
- bl MOD04_021DE89C
- cmp r0, #0x19
- movhi r5, #0x19
- bhi _021DFF00
- mov r0, r4
- bl MOD04_021DE89C
- mov r5, r0
-_021DFF00:
- ldr r1, _021DFF6C ; =UNK04_0221053C
- mov r0, r4
- ldr r1, [r1]
- mov r2, r5, lsl #1
- add r1, r1, #0x2e
- bl MIi_CpuCopy16
-_021DFF18:
- ldr r0, _021DFF6C ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, r5, lsl #1
- strh r1, [r0, #0x2e]
- bl MOD04_021DDC1C
- cmp r0, #4
- beq _021DFF4C
- ldr r1, _021DFF70 ; =0xFFFF1596
- mov r0, #2
- bl MOD04_021E0EAC
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
-_021DFF4C:
- mov r0, #1
- bl MOD04_021DF5CC
- ldr r0, _021DFF6C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x68]
- bl MOD04_021EE898
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DFF6C: .word UNK04_0221053C
-_021DFF70: .word 0xFFFF1596
- arm_func_end MOD04_021DFE64
-
- arm_func_start MOD04_021DFF74
-MOD04_021DFF74: ; 0x021DFF74
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DD984
- cmp r0, #0
- beq _021DFF8C
- bl MOD04_021DF5EC
-_021DFF8C:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x24]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #6
- addls pc, pc, r0, lsl #2
- b _021E0194
-_021DFFD8: ; jump table
- b _021E0194 ; case 0
- b _021DFFF4 ; case 1
- b _021E0124 ; case 2
- b _021E012C ; case 3
- b _021E012C ; case 4
- b _021E013C ; case 5
- b _021E014C ; case 6
-_021DFFF4:
- bl MOD04_021EE6A0
- cmp r0, #1
- beq _021E0014
- cmp r0, #2
- beq _021E00FC
- cmp r0, #3
- beq _021E0110
- b _021E0194
-_021E0014:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- ldr r1, [r0, #0xa0]
- add r0, r0, #0x1c
- bl MOD04_021F0F94
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- ldr r2, _021E01E8 ; =MOD04_021DF0D4
- mov r3, r1
- add r0, r0, #0x1c
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01EC ; =MOD04_021DEF6C
- ldr r0, [r0]
- mov r1, #3
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01F0 ; =MOD04_021E20C8
- ldr r0, [r0]
- mov r1, #1
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01F4 ; =MOD04_021E1FE4
- ldr r0, [r0]
- mov r1, #2
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- mov r0, #2
- bl MOD04_021DF5CC
- bl MOD04_021E1034
- b _021E0194
-_021E00FC:
- ldr r1, _021E01F8 ; =0xFFFFB172
- mov r0, #3
- bl MOD04_021E0EAC
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0110:
- ldr r1, _021E01FC ; =0xFFFFB17B
- mov r0, #4
- bl MOD04_021E0EAC
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0124:
- bl MOD04_021E0F1C
- b _021E0194
-_021E012C:
- bl MOD04_021E2228
- mov r0, #0
- bl MOD04_021E9568
- b _021E0194
-_021E013C:
- mov r0, #1
- bl MOD04_021E9568
- bl MOD04_021E2228
- b _021E0194
-_021E014C:
- bl MOD04_021EAA64
- bl MOD04_021E2228
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021E0174
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021E0180
-_021E0174:
- mov r0, #1
- bl MOD04_021E9568
- b _021E0194
-_021E0180:
- ldr r0, [r1]
- cmp r0, #0
- beq _021E0194
- mov r0, #0
- bl MOD04_021E9568
-_021E0194:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x36c]
- cmp r0, #1
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, [r1, #0x364]
- cmp r0, #0
- beq _021E01CC
- bl MOD04_02202280
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x364]
-_021E01CC:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- strb r1, [r0, #0x36c]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E01E4: .word UNK04_0221053C
-_021E01E8: .word MOD04_021DF0D4
-_021E01EC: .word MOD04_021DEF6C
-_021E01F0: .word MOD04_021E20C8
-_021E01F4: .word MOD04_021E1FE4
-_021E01F8: .word 0xFFFFB172
-_021E01FC: .word 0xFFFFB17B
- arm_func_end MOD04_021DFF74
-
- arm_func_start MOD04_021E0200
-MOD04_021E0200: ; 0x021E0200
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x364]
- cmp r0, #0
- beq _021E023C
- bl MOD04_02202280
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x364]
-_021E023C:
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r1, [r0]
- strb r2, [r1, #0x36c]
- ldr r0, [r0]
- ldr r0, [r0, #0x438]
- cmp r0, #0
- beq _021E0270
- bl MOD04_02203E80
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x438]
-_021E0270:
- bl MOD04_02200D6C
- bl MOD04_021FBE7C
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr ip, [r0]
- ldr r0, [ip, #0x1c]
- cmp r0, #0
- beq _021E0324
- mov r1, #0
- mov r2, r1
- mov r3, r1
- add r0, ip, #0x1c
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r3, r2
- add r0, r0, #0x1c
- mov r1, #3
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r3, r2
- add r0, r0, #0x1c
- mov r1, #1
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r1, #2
- add r0, r0, #0x1c
- mov r3, r2
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F0F18
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F0F64
- mov r1, #0
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- str r1, [r0, #0x1c]
-_021E0324:
- bl MOD04_021E0E48
- bl MOD04_021E1D90
- bl MOD04_021E854C
- bl MOD04_021EA9C4
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, #0
- beq _021E035C
- bl MOD04_021FD704
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0]
-_021E035C:
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E0370: .word UNK04_0221053C
- arm_func_end MOD04_021E0200
-
- arm_func_start MOD04_021E0374
-MOD04_021E0374: ; 0x021E0374
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- ldr ip, _021E05D8 ; =UNK04_0221053C
- mov r6, r1
- mov r5, r2
- mov r4, r3
- str r0, [ip]
- bl MOD04_021DD6F0
- ldr r0, _021E05D8 ; =UNK04_0221053C
- mov r2, #0
- ldr r1, [r0]
- ldr r3, _021E05DC ; =MOD04_021E8F80
- str r2, [r1]
- ldr r1, [r0]
- 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 ; =MOD04_021DEBE4
- ldr r1, _021E05E8 ; =MOD04_021DEBD8
- str r3, [r2, #0xc]
- ldr r0, [r0]
- ldr r3, [sp, #0x28]
- str r1, [r0, #0x10]
- ldr r0, _021E05D8 ; =UNK04_0221053C
- moveq ip, #0x2000
- ldr r0, [r0]
- cmp r3, #0
- str ip, [r0, #0x14]
- moveq r3, #0x2000
- ldr r1, _021E05D8 ; =UNK04_0221053C
- mov r0, #0
- ldr r2, [r1]
- ldr ip, _021E05EC ; =UNK04_02210F94
- str r3, [r2, #0x18]
- ldr r2, [r1]
- ldr r3, _021E05F0 ; =UNK04_02211094
- str r0, [r2, #0x1c]
- ldr r2, [r1]
- str r6, [r2, #0x20]
- ldr r2, [r1]
- str r0, [r2, #0x24]
- ldr r2, [r1]
- str r0, [r2, #0x28]
- ldr r2, [r1]
- strb r0, [r2, #0x2c]
- ldr r2, [r1]
- strb r0, [r2, #0x2d]
- ldr r2, [r1]
- str r0, [r2, #0x64]
- ldr r2, [r1]
- str ip, [r2, #0x68]
- ldr r2, [r1]
- str r3, [r2, #0x6c]
- ldr r2, [r1]
- str r0, [r2, #0x70]
- ldr r2, [r1]
- str r0, [r2, #0x74]
- ldr r2, [r1]
- str r0, [r2, #0x78]
- ldr r2, [r1]
- str r0, [r2, #0x7c]
- ldr r2, [r1]
- str r0, [r2, #0x80]
- ldr r2, [r1]
- str r0, [r2, #0x84]
- ldr r2, [r1]
- str r0, [r2, #0x88]
- ldr r2, [r1]
- str r0, [r2, #0x8c]
- ldr r2, [r1]
- str r0, [r2, #0x90]
- ldr r1, [r1]
- str r0, [r1, #0x94]
- bl MOD04_021DF6CC
- ldr r0, _021E05D8 ; =UNK04_0221053C
- mov r3, r5
- ldr r2, [r0]
- ldr r1, [r6, #0x24]
- ldr r0, _021E05F4 ; =MOD04_021DF304
- str r1, [sp]
- add r1, r2, #0x2e
- str r1, [sp, #4]
- str r0, [sp, #8]
- mov r5, #0
- add r0, r2, #0x98
- mov r1, r6
- add r2, r2, #0x1c
- str r5, [sp, #0xc]
- bl MOD04_021E1074
- ldr r0, _021E05D8 ; =UNK04_0221053C
- ldr r2, [sp, #0x30]
- ldr r5, [r0]
- ldr r3, [sp, #0x2c]
- str r2, [sp]
- add r0, r5, #0x2f8
- add r1, r5, #0x1c
- add r2, r5, #0x2e
- bl MOD04_021E234C
- ldr r0, _021E05D8 ; =UNK04_0221053C
- ldr r1, _021E05EC ; =UNK04_02210F94
- ldr r2, [r0]
- ldr r0, _021E05F0 ; =UNK04_02211094
- str r1, [sp]
- str r0, [sp, #4]
- ldr r1, [sp, #0x2c]
- ldr r0, [sp, #0x30]
- str r1, [sp, #8]
- str r0, [sp, #0xc]
- add r0, r2, #0x354
- add r1, r2, #0x1c
- add r3, r2, #4
- bl MOD04_021EA368
- ldr r1, _021E05D8 ; =UNK04_0221053C
- ldr r0, _021E05F8 ; =0x000007D8
- ldr r1, [r1]
- add r0, r1, r0
- bl MOD04_021EACB4
- mov r0, r4
- bl strlen
- cmp r0, #0x100
- movhs r5, #0xff
- bhs _021E0578
- mov r0, r4
- bl strlen
- mov r5, r0
-_021E0578:
- ldr r1, _021E05EC ; =UNK04_02210F94
- mov r0, r4
- mov r2, r5
- bl MI_CpuCopy8
- ldr r0, [sp, #0x20]
- ldr r1, _021E05EC ; =UNK04_02210F94
- mov r2, #0
- strb r2, [r1, r5]
- bl strlen
- cmp r0, #0x100
- movhs r4, #0xff
- bhs _021E05B4
- ldr r0, [sp, #0x20]
- bl strlen
- mov r4, r0
-_021E05B4:
- ldr r0, [sp, #0x20]
- ldr r1, _021E05F0 ; =UNK04_02211094
- mov r2, r4
- bl MI_CpuCopy8
- ldr r0, _021E05F0 ; =UNK04_02211094
- mov r1, #0
- strb r1, [r0, r4]
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E05D8: .word UNK04_0221053C
-_021E05DC: .word MOD04_021E8F80
-_021E05E0: .word MOD04_021DEF60
-_021E05E4: .word MOD04_021DEBE4
-_021E05E8: .word MOD04_021DEBD8
-_021E05EC: .word UNK04_02210F94
-_021E05F0: .word UNK04_02211094
-_021E05F4: .word MOD04_021DF304
-_021E05F8: .word 0x000007D8
- arm_func_end MOD04_021E0374
-
- arm_func_start MOD04_021E05FC
-MOD04_021E05FC: ; 0x021E05FC
- ldr r0, _021E0624 ; =UNK04_022106C8
- ldr r0, [r0]
- cmp r0, #0
- beq _021E061C
- ldr r0, [r0, #4]
- cmp r0, #5
- moveq r0, #1
- bxeq lr
-_021E061C:
- mov r0, #0
- bx lr
- .align 2, 0
-_021E0624: .word UNK04_022106C8
- arm_func_end MOD04_021E05FC
-
- arm_func_start MOD04_021E0628
-MOD04_021E0628: ; 0x021E0628
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0x4c
- mov r4, r1
- ldr r1, [r4]
- mov r5, r0
- cmp r1, #0
- addne sp, sp, #0x4c
- ldmneia sp!, {r4, r5, pc}
- ldr r1, _021E07CC ; =UNK04_022106C8
- ldr r2, [r1]
- ldr r1, [r2, #4]
- cmp r1, #3
- bne _021E0704
- ldrsb r1, [r4, #0x8e]
- cmp r1, #0
- bne _021E06DC
- ldr r0, [r2, #0x1c]
- ldr r1, [r2, #0xc]
- add r2, sp, #8
- add r0, r0, #4
- bl DWCi_Acc_LoginIdToUserName
- ldr r1, _021E07D0 ; =0x00000705
- add r2, sp, #8
- mov r0, r5
- bl MOD04_021F0B30
- bl MOD04_021E0DB0
- cmp r0, #0
- addne sp, sp, #0x4c
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021E07CC ; =UNK04_022106C8
- mov r3, #4
- ldr r1, [r0]
- ldr r0, _021E07D4 ; =MOD04_021E0628
- str r3, [r1, #4]
- mov r2, #0
- str r0, [sp]
- str r2, [sp, #4]
- ldr r1, [r4, #4]
- mov r0, r5
- mov r3, r2
- bl MOD04_021F0B9C
- bl MOD04_021E0DB0
- add sp, sp, #0x4c
- cmp r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E06DC:
- bl MOD04_021F0D54
- ldr r0, _021E07D8 ; =MOD04_021E0C80
- mov r1, #0
- bl MOD04_021E0A00
- ldr r0, _021E07CC ; =UNK04_022106C8
- mov r1, #1
- ldr r0, [r0]
- add sp, sp, #0x4c
- str r1, [r0, #4]
- ldmia sp!, {r4, r5, pc}
-_021E0704:
- cmp r1, #4
- addne sp, sp, #0x4c
- ldmneia sp!, {r4, r5, pc}
- ldr r0, [r2, #0x1c]
- ldr r1, [r2, #0xc]
- add r2, sp, #0x1d
- add r0, r0, #4
- bl DWCi_Acc_LoginIdToUserName
- add r1, sp, #0x1d
- add r0, r4, #0x8e
- bl strcmp
- cmp r0, #0
- bne _021E079C
- ldr r0, _021E07CC ; =UNK04_022106C8
- add r2, sp, #0x32
- ldr r0, [r0]
- ldr r1, [r0, #0xc]
- add r0, r0, #0x3c
- bl DWCi_Acc_LoginIdToUserName
- ldr r0, _021E07CC ; =UNK04_022106C8
- ldr r2, [r4, #4]
- ldr r1, [r0]
- ldr r0, [r1, #0x1c]
- add r1, r1, #0x3c
- bl DWCi_Acc_SetLoginIdToUserData
- mov r0, r5
- bl MOD04_021F0D54
- ldr r0, _021E07CC ; =UNK04_022106C8
- ldr r1, _021E07DC ; =UNK04_022106C4
- ldr r4, [r0]
- ldr r0, _021E07E0 ; =UNK04_022106CC
- ldr r2, [r1]
- ldr r3, [r0]
- add r0, r4, #0x48
- add r1, r4, #0x148
- blx r3
- add sp, sp, #0x4c
- ldmia sp!, {r4, r5, pc}
-_021E079C:
- 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 MOD04_021F0B9C
- bl MOD04_021E0DB0
- cmp r0, #0
- add sp, sp, #0x4c
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E07CC: .word UNK04_022106C8
-_021E07D0: .word 0x00000705
-_021E07D4: .word MOD04_021E0628
-_021E07D8: .word MOD04_021E0C80
-_021E07DC: .word UNK04_022106C4
-_021E07E0: .word UNK04_022106CC
- arm_func_end MOD04_021E0628
-
- arm_func_start MOD04_021E07E4
-MOD04_021E07E4: ; 0x021E07E4
- stmdb sp!, {lr}
- sub sp, sp, #0x3d4
- bl MOD04_021D988C
- cmp r0, #0x15
- bne _021E08BC
- add r0, sp, #0
- bl MOD04_021D97F8
- ldr r0, _021E09DC ; =UNK04_022106C8
- add r1, sp, #0x4a
- ldr r0, [r0]
- add r0, r0, #0x48
- bl strcpy
- ldr r0, _021E09DC ; =UNK04_022106C8
- add r1, sp, #0x100
- ldr r0, [r0]
- add r1, r1, #0x77
- add r0, r0, #0x148
- bl strcpy
- bl MOD04_021D991C
- ldr r1, _021E09DC ; =UNK04_022106C8
- mov r0, #0
- ldr r1, [r1]
- mov r2, r0
- ldr r1, [r1, #0x24]
- bl MOD04_021DD904
- ldr r0, _021E09DC ; =UNK04_022106C8
- mov r2, #0
- ldr r1, [r0]
- str r2, [r1, #0x24]
- ldr r0, [r0]
- ldr r0, [r0, #0x1c]
- bl DWCi_Acc_IsAuthentic
- cmp r0, #0
- beq _021E0898
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r1, _021E09E0 ; =UNK04_022106C4
- ldr ip, [r0]
- ldr r0, _021E09E4 ; =UNK04_022106CC
- ldr r2, [r1]
- ldr r3, [r0]
- add r0, ip, #0x48
- add r1, ip, #0x148
- blx r3
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
-_021E0898:
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r2, _021E09E8 ; =MOD04_021E0C98
- ldr r1, [r0]
- mov r3, #3
- add r0, r1, #0x48
- add r1, r1, #0x148
- bl MOD04_021E0BE0
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
-_021E08BC:
- bl MOD04_021D988C
- cmp r0, #0
- addeq sp, sp, #0x3d4
- ldmeqia sp!, {pc}
- bl OS_GetTick
- ldr r3, _021E09DC ; =UNK04_022106C8
- ldr r2, _021E09EC ; =0x000082EA
- ldr ip, [r3]
- mov r3, #0
- ldr lr, [ip, #0x28]
- ldr ip, [ip, #0x2c]
- subs lr, r0, lr
- sbc r0, r1, ip
- mov r1, r0, lsl #6
- orr r1, r1, lr, lsr #26
- mov r0, lr, lsl #6
- bl _ll_udiv
- ldr r2, _021E09F0 ; =0x00002710
- cmp r1, #0
- cmpeq r0, r2
- bls _021E0958
- add r0, sp, #0x1c4
- bl MOD04_021D97F8
- bl MOD04_021D991C
- ldr r1, _021E09DC ; =UNK04_022106C8
- mov r0, #0
- ldr r1, [r1]
- mov r2, r0
- ldr r1, [r1, #0x24]
- bl MOD04_021DD904
- ldr r0, _021E09DC ; =UNK04_022106C8
- mov r2, #0
- ldr r1, [r0]
- mov r0, #2
- str r2, [r1, #0x24]
- ldr r1, [sp, #0x1c4]
- bl MOD04_021E0EAC
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
-_021E0958:
- bl MOD04_021D991C
- add r0, sp, #0x388
- mov r1, #0
- mov r2, #0x48
- bl MI_CpuFill8
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x10]
- bl MOD04_021DE89C
- ldr r1, _021E09DC ; =UNK04_022106C8
- mov r2, r0, lsl #1
- ldr r1, [r1]
- add r2, r2, #2
- ldr r0, [r1, #0x10]
- add r1, sp, #0x388
- bl MI_CpuCopy8
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r1, _021E09F4 ; =0x00000251
- ldr r2, [r0]
- add r0, sp, #0x3bc
- add r1, r2, r1
- bl strcpy
- ldr r2, _021E09F8 ; =MOD04_021DD944
- ldr r0, _021E09DC ; =UNK04_022106C8
- str r2, [sp, #0x3c8]
- ldr r2, _021E09FC ; =MOD04_021DD904
- ldr r1, [r0]
- str r2, [sp, #0x3cc]
- ldr r1, [r1, #0x24]
- add r0, sp, #0x388
- bl MOD04_021D9ACC
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E09DC: .word UNK04_022106C8
-_021E09E0: .word UNK04_022106C4
-_021E09E4: .word UNK04_022106CC
-_021E09E8: .word MOD04_021E0C98
-_021E09EC: .word 0x000082EA
-_021E09F0: .word 0x00002710
-_021E09F4: .word 0x00000251
-_021E09F8: .word MOD04_021DD944
-_021E09FC: .word MOD04_021DD904
- arm_func_end MOD04_021E07E4
-
- arm_func_start MOD04_021E0A00
-MOD04_021E0A00: ; 0x021E0A00
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0x4c
- mov r5, r0
- mov r4, r1
- add r0, sp, #0
- mov r1, #0
- mov r2, #0x48
- bl MI_CpuFill8
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r2, _021E0BBC ; =UNK04_022106CC
- ldr r1, _021E0BC0 ; =UNK04_022106C4
- ldr r0, [r0]
- str r5, [r2]
- str r4, [r1]
- ldr r0, [r0, #0x1c]
- bl DWCi_Acc_IsAuthentic
- cmp r0, #0
- beq _021E0A68
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r1, [r0]
- ldr r0, [r1, #0x1c]
- add r2, r1, #0x248
- ldr r1, [r0, #0x24]
- add r0, r0, #0x10
- bl DWCi_Acc_LoginIdToUserName
- b _021E0B1C
-_021E0A68:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- add r0, r0, #0x3c
- bl DWCi_Acc_IsValidLoginId
- cmp r0, #0
- bne _021E0AD0
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x1c]
- add r0, r0, #4
- bl DWCi_Acc_CheckConsoleUserId
- cmp r0, #0
- beq _021E0ABC
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r1, [r0]
- ldr r0, [r1, #0x1c]
- add r3, r1, #0x3c
- add r0, r0, #4
- ldmia r0, {r0, r1, r2}
- stmia r3, {r0, r1, r2}
- b _021E0B04
-_021E0ABC:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- add r0, r0, #0x3c
- bl DWCi_Acc_CreateTempLoginId
- b _021E0B04
-_021E0AD0:
- bl OS_GetTick
- ldr r2, _021E0BC4 ; =0x6C078965
- ldr r3, _021E0BC8 ; =0x5D588B65
- umull ip, r4, r0, r2
- mla r4, r0, r3, r4
- ldr r3, _021E0BB8 ; =UNK04_022106C8
- ldr r0, _021E0BCC ; =0x00269EC3
- mla r4, r1, r2, r4
- adds r0, ip, r0
- ldr r3, [r3]
- adc r1, r4, #0
- add r0, r3, #0x3c
- bl DWCi_Acc_SetPlayerId
-_021E0B04:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r2, [r0]
- ldr r1, [r2, #0xc]
- add r0, r2, #0x3c
- add r2, r2, #0x248
- bl DWCi_Acc_LoginIdToUserName
-_021E0B1C:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x10]
- bl MOD04_021DE89C
- ldr r1, _021E0BB8 ; =UNK04_022106C8
- mov r2, r0, lsl #1
- ldr r1, [r1]
- add r2, r2, #2
- ldr r0, [r1, #0x10]
- add r1, sp, #0
- bl MI_CpuCopy8
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r1, _021E0BD0 ; =0x00000251
- ldr r2, [r0]
- add r0, sp, #0x34
- add r1, r2, r1
- bl strcpy
- 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 MOD04_021DD924
- ldr r1, _021E0BB8 ; =UNK04_022106C8
- mov r4, r0
- ldr r0, [r1]
- str r4, [r0, #0x24]
- bl OS_GetTick
- ldr r2, _021E0BB8 ; =UNK04_022106C8
- ldr r2, [r2]
- str r0, [r2, #0x28]
- str r1, [r2, #0x2c]
- mov r1, r4
- add r0, sp, #0
- bl MOD04_021D9ACC
- add sp, sp, #0x4c
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E0BB8: .word UNK04_022106C8
-_021E0BBC: .word UNK04_022106CC
-_021E0BC0: .word UNK04_022106C4
-_021E0BC4: .word 0x6C078965
-_021E0BC8: .word 0x5D588B65
-_021E0BCC: .word 0x00269EC3
-_021E0BD0: .word 0x00000251
-_021E0BD4: .word MOD04_021DD944
-_021E0BD8: .word MOD04_021DD904
-_021E0BDC: .word 0x00001C10
- arm_func_end MOD04_021E0A00
-
- arm_func_start MOD04_021E0BE0
-MOD04_021E0BE0: ; 0x021E0BE0
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- ldr r4, _021E0C7C ; =UNK04_022106C8
- mov r6, r1
- ldr r4, [r4]
- mov r1, r0
- add r0, r4, #0x48
- mov r5, r2
- mov r4, r3
- bl strcpy
- ldr r0, _021E0C7C ; =UNK04_022106C8
- mov r1, r6
- ldr r0, [r0]
- add r0, r0, #0x148
- bl strcpy
- ldr r0, _021E0C7C ; =UNK04_022106C8
- ldr r6, [r0]
- bl OS_GetTick
- str r0, [r6, #0x34]
- str r1, [r6, #0x38]
- mov r3, #1
- ldr r0, _021E0C7C ; =UNK04_022106C8
- str r3, [r6, #0x30]
- ldr r2, [r0]
- mov r1, #0
- str r1, [sp]
- str r5, [sp, #4]
- str r1, [sp, #8]
- ldr r0, [r2]
- add r1, r2, #0x48
- add r2, r2, #0x148
- bl MOD04_021F0D8C
- bl MOD04_021E0DB0
- cmp r0, #0
- ldreq r0, _021E0C7C ; =UNK04_022106C8
- ldreq r0, [r0]
- streq r4, [r0, #4]
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E0C7C: .word UNK04_022106C8
- arm_func_end MOD04_021E0BE0
-
- 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 MOD04_021E0BE0
-_021E0C94: .word MOD04_021E0C98
- arm_func_end MOD04_021E0C80
-
- arm_func_start MOD04_021E0C98
-MOD04_021E0C98: ; 0x021E0C98
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r3, _021E0DA0 ; =UNK04_022106C8
- mov r2, #0
- ldr ip, [r3]
- mov r4, r1
- str r2, [ip, #0x30]
- ldr r1, [r4]
- cmp r1, #0
- bne _021E0D90
- ldr ip, [r3]
- ldr r1, [ip, #4]
- cmp r1, #2
- bne _021E0D5C
- ldr r1, [ip, #0x1c]
- ldr r0, [r4, #4]
- ldr r1, [r1, #0x1c]
- cmp r1, r0
- bne _021E0D48
- ldr r1, _021E0DA4 ; =UNK04_0220D34C
- mov r3, #5
- mov r0, #1
- str r3, [ip, #4]
- bl MOD04_021E1E30
- bl MOD04_021E0DB0
- cmp r0, #0
- addne sp, sp, #8
- ldmneia sp!, {r4, pc}
- ldr r0, _021E0DA0 ; =UNK04_022106C8
- ldr r1, [r4, #4]
- ldr r3, [r0]
- mov r0, #0
- ldr r2, [r3, #0x18]
- ldr r3, [r3, #0x14]
- blx r3
- bl MOD04_021DF7C4
- cmp r0, #0
- addne sp, sp, #8
- ldmneia sp!, {r4, pc}
- ldr r0, [r4, #4]
- bl MOD04_021EA1E0
- add sp, sp, #8
- cmp r0, #0
- ldmia sp!, {r4, pc}
-_021E0D48:
- ldr r1, _021E0DA8 ; =0xFFFF15A0
- mov r0, #6
- 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 ; =MOD04_021E0628
- mov r3, r2
- str r1, [sp]
- str r2, [sp, #4]
- ldr r1, [r4, #4]
- bl MOD04_021F0B9C
- bl MOD04_021E0DB0
- add sp, sp, #8
- cmp r0, #0
- ldmia sp!, {r4, pc}
-_021E0D90:
- mov r0, r1
- bl MOD04_021E0DB0
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E0DA0: .word UNK04_022106C8
-_021E0DA4: .word UNK04_0220D34C
-_021E0DA8: .word 0xFFFF15A0
-_021E0DAC: .word MOD04_021E0628
- arm_func_end MOD04_021E0C98
-
- arm_func_start MOD04_021E0DB0
-MOD04_021E0DB0: ; 0x021E0DB0
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #4
- addls pc, pc, r4, lsl #2
- b _021E0E0C
-_021E0DCC: ; jump table
- b _021E0E0C ; case 0
- b _021E0DE0 ; case 1
- b _021E0DEC ; case 2
- b _021E0DF8 ; case 3
- b _021E0E04 ; case 4
-_021E0DE0:
- mov r0, #9
- mvn r2, #0
- b _021E0E0C
-_021E0DEC:
- mov r0, #9
- mvn r2, #1
- b _021E0E0C
-_021E0DF8:
- mov r0, #6
- mvn r2, #9
- b _021E0E0C
-_021E0E04:
- mov r0, #6
- mvn r2, #0x13
-_021E0E0C:
- ldr r1, _021E0E20 ; =0xFFFF11B8
- add r1, r2, r1
- bl MOD04_021E0EAC
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E0E20: .word 0xFFFF11B8
- arm_func_end MOD04_021E0DB0
-
- arm_func_start MOD04_021E0E24
-MOD04_021E0E24: ; 0x021E0E24
- ldr r0, _021E0E44 ; =UNK04_022106C8
- ldr r2, [r0]
- cmp r2, #0
- movne r1, #0
- strne r1, [r2, #4]
- ldrne r0, [r0]
- strne r1, [r0, #0x30]
- bx lr
- .align 2, 0
-_021E0E44: .word UNK04_022106C8
- arm_func_end MOD04_021E0E24
-
- arm_func_start MOD04_021E0E48
-MOD04_021E0E48: ; 0x021E0E48
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E0EA8 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #0
- beq _021E0E94
- bl MOD04_021D9974
- bl MOD04_021D991C
- ldr r1, _021E0EA8 ; =UNK04_022106C8
- mov r0, #0
- ldr r1, [r1]
- mov r2, r0
- ldr r1, [r1, #0x24]
- bl MOD04_021DD904
- ldr r0, _021E0EA8 ; =UNK04_022106C8
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x24]
-_021E0E94:
- ldr r0, _021E0EA8 ; =UNK04_022106C8
- mov r1, #0
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E0EA8: .word UNK04_022106C8
- arm_func_end MOD04_021E0E48
-
- arm_func_start MOD04_021E0EAC
-MOD04_021E0EAC: ; 0x021E0EAC
- stmdb sp!, {r4, lr}
- ldr r2, _021E0EFC ; =UNK04_022106C8
- mov r4, r0
- ldr r2, [r2]
- cmp r2, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021DD6B0
- ldr r0, _021E0EFC ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r3, [r0, #0x14]
- cmp r3, #0
- beq _021E0EF4
- ldr r2, [r0, #0x18]
- mov r0, r4
- mov r1, #0
- blx r3
-_021E0EF4:
- bl MOD04_021E0E24
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E0EFC: .word UNK04_022106C8
- arm_func_end MOD04_021E0EAC
-
- arm_func_start MOD04_021E0F00
-MOD04_021E0F00: ; 0x021E0F00
- ldr r0, _021E0F18 ; =UNK04_022106C8
- ldr r0, [r0]
- cmp r0, #0
- ldrne r0, [r0, #0x1c]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021E0F18: .word UNK04_022106C8
- arm_func_end MOD04_021E0F00
-
- arm_func_start MOD04_021E0F1C
-MOD04_021E0F1C: ; 0x021E0F1C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E1024 ; =UNK04_022106C8
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E1024 ; =UNK04_022106C8
- ldr r1, [r0]
- ldr r0, [r1, #4]
- cmp r0, #5
- addls pc, pc, r0, lsl #2
- b _021E101C
-_021E0F60: ; jump table
- b _021E101C ; case 0
- b _021E0F78 ; case 1
- b _021E0F84 ; case 2
- b _021E0F84 ; case 3
- b _021E0F84 ; case 4
- b _021E101C ; case 5
-_021E0F78:
- bl MOD04_021E07E4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0F84:
- ldr r0, [r1]
- cmp r0, #0
- beq _021E0FA0
- ldr r1, [r0]
- cmp r1, #0
- beq _021E0FA0
- bl MOD04_021F0F18
-_021E0FA0:
- ldr r0, _021E1024 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x30]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl OS_GetTick
- ldr r3, _021E1024 ; =UNK04_022106C8
- ldr r2, _021E1028 ; =0x000082EA
- ldr ip, [r3]
- mov r3, #0
- ldr lr, [ip, #0x34]
- ldr ip, [ip, #0x38]
- subs lr, r0, lr
- sbc r0, r1, ip
- mov r1, r0, lsl #6
- orr r1, r1, lr, lsr #26
- mov r0, lr, lsl #6
- bl _ll_udiv
- ldr r2, _021E102C ; =0x0000EA60
- cmp r1, #0
- cmpeq r0, r2
- addls sp, sp, #4
- ldmlsia sp!, {pc}
- ldr r1, _021E1030 ; =0xFFFF1172
- mov r0, #6
- bl MOD04_021E0EAC
- ldr r0, _021E1024 ; =UNK04_022106C8
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x30]
-_021E101C:
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E1024: .word UNK04_022106C8
-_021E1028: .word 0x000082EA
-_021E102C: .word 0x0000EA60
-_021E1030: .word 0xFFFF1172
- arm_func_end MOD04_021E0F1C
-
- arm_func_start MOD04_021E1034
-MOD04_021E1034: ; 0x021E1034
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E106C ; =MOD04_021E0C80
- mov r1, #0
- bl MOD04_021E0A00
- ldr r0, _021E1070 ; =UNK04_022106C8
- mov r3, #1
- ldr r2, [r0]
- mov r1, #0
- str r3, [r2, #4]
- ldr r0, [r0]
- str r1, [r0, #0x30]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E106C: .word MOD04_021E0C80
-_021E1070: .word UNK04_022106C8
- arm_func_end MOD04_021E1034
-
- arm_func_start MOD04_021E1074
-MOD04_021E1074: ; 0x021E1074
- stmdb sp!, {r4, r5, r6, lr}
- ldr ip, _021E10F4 ; =UNK04_022106C8
- mov r6, r1
- mov r5, r2
- mov r1, #0
- mov r2, #0x260
- mov r4, r3
- str r0, [ip]
- bl MI_CpuFill8
- ldr r0, _021E10F4 ; =UNK04_022106C8
- mov r2, #0
- ldr r1, [r0]
- ldr ip, [sp, #0x10]
- str r5, [r1]
- ldr r1, [r0]
- ldr r5, [sp, #0x14]
- str r2, [r1, #4]
- ldr r1, [r0]
- ldr r3, [sp, #0x18]
- str r4, [r1, #8]
- ldr r1, [r0]
- ldr r2, [sp, #0x1c]
- str ip, [r1, #0xc]
- ldr r1, [r0]
- str r5, [r1, #0x10]
- ldr r1, [r0]
- str r3, [r1, #0x14]
- ldr r1, [r0]
- str r2, [r1, #0x18]
- ldr r0, [r0]
- str r6, [r0, #0x1c]
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E10F4: .word UNK04_022106C8
- arm_func_end MOD04_021E1074
-
- arm_func_start MOD04_021E10F8
-MOD04_021E10F8: ; 0x021E10F8
- ldr r0, _021E1108 ; =UNK04_022106D0
- ldr r0, [r0]
- ldr r0, [r0, #0x20]
- bx lr
- .align 2, 0
-_021E1108: .word UNK04_022106D0
- arm_func_end MOD04_021E10F8
-
- 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
- ldr r0, [sl]
- mov r8, #0
- cmp r0, #0
- mov r0, #1
- str r0, [sp]
- addne sp, sp, #0x24
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r4, _021E12B4 ; =UNK04_022106D0
- mov sb, r8
- ldr r2, [r4]
- ldr r1, [r2, #0x14]
- cmp r1, #0
- ble _021E1274
- mov r7, r8
- str r0, [sp, #4]
- mov fp, r8
- mov r5, r0
-_021E115C:
- ldr r0, [r2, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #1
- bne _021E11C8
- bl MOD04_021E0F00
- ldr r1, [r4]
- add r2, sp, #8
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_LoginIdToUserName
- add r0, sp, #8
- add r1, sl, #0x8e
- bl strcmp
- cmp r0, #0
- bne _021E125C
- ldr r0, [r4]
- ldr r1, [sl, #4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_SetGsProfileId
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWCi_SetBuddyFriendData
- mov r8, r5
- b _021E125C
-_021E11C8:
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #3
- beq _021E11F8
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #2
- bne _021E125C
-_021E11F8:
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_IsBuddyFriendData
- cmp r0, #1
- streq fp, [sp]
- beq _021E125C
- ldr r6, [sl, #4]
- bl MOD04_021E0F00
- ldr r1, [r4]
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_GetGsProfileId
- cmp r6, r0
- bne _021E125C
- ldr r0, [r4]
- mov r1, r6
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_SetGsProfileId
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWCi_SetBuddyFriendData
- ldr r8, [sp, #4]
-_021E125C:
- ldr r2, [r4]
- add sb, sb, #1
- ldr r1, [r2, #0x14]
- add r7, r7, #0xc
- cmp sb, r1
- blt _021E115C
-_021E1274:
- cmp r8, #0
- addeq sp, sp, #0x24
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, [r2, #0x18]
- ldr r2, [sl, #4]
- bl MOD04_021E17F0
- ldr r1, [sp]
- cmp r1, #0
- beq _021E129C
- bl MOD04_021E1DA4
-_021E129C:
- ldr r0, _021E12B4 ; =UNK04_022106D0
- mov r1, #1
- ldr r0, [r0]
- strb r1, [r0, #0x1d]
- add sp, sp, #0x24
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E12B4: .word UNK04_022106D0
- arm_func_end MOD04_021E110C
-
- 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
- ldr r1, [sb]
- mov sl, r0
- cmp r1, #0
- mov fp, #0
- addne sp, sp, #0x1c
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r4, _021E1410 ; =UNK04_022106D0
- mov r8, fp
- ldr r1, [r4]
- ldr r0, [r1, #0x14]
- cmp r0, #0
- ble _021E13E4
- add r0, sb, #0x8e
- mov r7, fp
- mov r5, #1
- str r0, [sp]
-_021E1304:
- ldr r0, [r1, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #1
- bne _021E136C
- bl MOD04_021E0F00
- ldr r1, [r4]
- add r2, sp, #4
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_LoginIdToUserName
- ldr r1, [sp]
- add r0, sp, #4
- bl strcmp
- cmp r0, #0
- bne _021E13CC
- ldr r1, [sb, #4]
- mov r0, sl
- bl MOD04_021F0944
- ldr r0, [r4]
- ldr r1, [sb, #4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_SetGsProfileId
- mov fp, r5
- b _021E13CC
-_021E136C:
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #3
- beq _021E139C
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #2
- bne _021E13CC
-_021E139C:
- ldr r6, [sb, #4]
- bl MOD04_021E0F00
- ldr r1, [r4]
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_GetGsProfileId
- cmp r6, r0
- bne _021E13CC
- mov r0, sl
- mov r1, r6
- bl MOD04_021F0944
- mov fp, r5
-_021E13CC:
- ldr r1, [r4]
- add r8, r8, #1
- ldr r0, [r1, #0x14]
- add r7, r7, #0xc
- cmp r8, r0
- blt _021E1304
-_021E13E4:
- cmp fp, #0
- beq _021E13FC
- ldr r0, [sb, #4]
- 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 MOD04_021F0864
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E1410: .word UNK04_022106D0
- arm_func_end MOD04_021E12B8
-
- 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
- ldr r1, [sb]
- mov sl, r0
- mov r8, r2
- cmp r1, #0
- bne _021E15FC
- ldr r0, [sb, #4]
- cmp r0, #0
- beq _021E15FC
- mov r0, #0xc
- ldr r1, _021E1670 ; =UNK04_022106D0
- mul r6, r8, r0
- ldr r0, [r1]
- ldr r0, [r0, #0x18]
- add r0, r0, r6
- bl DWC_GetFriendDataType
- cmp r0, #0
- beq _021E15FC
- ldr r7, _021E1670 ; =UNK04_022106D0
- ldr r1, [r7]
- ldr r0, [r1]
- cmp r0, #1
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- mov r0, #1
- strb r0, [r1, #0x1d]
- ldr r0, [sb, #4]
- mov r5, #0
- cmp r0, #0
- ble _021E14FC
- mov r4, r5
-_021E1498:
- ldr r0, [r7]
- ldr r1, [sb, #0xc]
- ldr r0, [r0, #0x18]
- ldr r2, [r1, r4]
- mov r1, r8
- bl MOD04_021E1900
- cmp r0, #0
- beq _021E14E8
- ldr r0, _021E1670 ; =UNK04_022106D0
- mov r2, #1
- ldr r4, [r0]
- ldr r1, _021E1674 ; =0x00000601
- ldrb r3, [r4, #0x1c]
- add sp, sp, #4
- add r3, r3, #1
- strb r3, [r4, #0x1c]
- ldr r0, [r0]
- strb r2, [r0, #0x1e]
- str r1, [sb, #8]
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E14E8:
- ldr r0, [sb, #4]
- add r5, r5, #1
- cmp r5, r0
- add r4, r4, #0xac
- blt _021E1498
-_021E14FC:
- cmp r0, #0
- mov r5, #0
- ble _021E15C4
- mov r7, r5
- add fp, sp, #0
- mvn r4, #0
-_021E1514:
- ldr r1, [sb, #0xc]
- mov r0, sl
- ldr r1, [r1, r7]
- mov r2, fp
- bl MOD04_021F0664
- bl MOD04_021E1678
- ldr r0, [sp]
- cmp r0, r4
- bne _021E1548
- ldr r0, [sb, #0xc]
- ldr r0, [r0, r7]
- bl MOD04_021E17BC
- b _021E15B0
-_021E1548:
- ldr r0, _021E1670 ; =UNK04_022106D0
- ldr r1, [sb, #0xc]
- ldr r0, [r0]
- ldr r1, [r1]
- ldr r0, [r0, #0x18]
- add r0, r0, r6
- bl DWC_SetGsProfileId
- ldr r0, _021E1670 ; =UNK04_022106D0
- ldr r0, [r0]
- ldr r0, [r0, #0x18]
- add r0, r0, r6
- bl DWCi_SetBuddyFriendData
- mov r0, r8
- bl MOD04_021E1DA4
- ldr r0, _021E1670 ; =UNK04_022106D0
- mov r2, #1
- ldr r4, [r0]
- ldr r1, _021E1674 ; =0x00000601
- ldrb r3, [r4, #0x1c]
- add sp, sp, #4
- add r3, r3, #1
- strb r3, [r4, #0x1c]
- ldr r0, [r0]
- strb r2, [r0, #0x1e]
- str r1, [sb, #8]
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E15B0:
- ldr r0, [sb, #4]
- add r5, r5, #1
- cmp r5, r0
- add r7, r7, #0xac
- blt _021E1514
-_021E15C4:
- ldr r0, [sb, #8]
- cmp r0, #0x600
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, _021E1670 ; =UNK04_022106D0
- mov r1, #1
- ldr r3, [r0]
- add sp, sp, #4
- ldrb r2, [r3, #0x1c]
- add r2, r2, #1
- strb r2, [r3, #0x1c]
- ldr r0, [r0]
- strb r1, [r0, #0x1e]
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E15FC:
- ldr r0, [sb]
- cmp r0, #0
- beq _021E1618
- bl MOD04_021E1678
- add sp, sp, #4
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E1618:
- ldr r0, _021E1670 ; =UNK04_022106D0
- ldr r1, [r0]
- ldr r0, [r1]
- cmp r0, #1
- beq _021E1648
- ldr r1, [r1, #0x18]
- mov r0, #0xc
- mla r0, r8, r0, r1
- bl DWC_GetFriendDataType
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E1648:
- ldr r0, _021E1670 ; =UNK04_022106D0
- mov r1, #1
- ldr r3, [r0]
- ldrb r2, [r3, #0x1c]
- add r2, r2, #1
- strb r2, [r3, #0x1c]
- ldr r0, [r0]
- strb r1, [r0, #0x1e]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E1670: .word UNK04_022106D0
-_021E1674: .word 0x00000601
- arm_func_end MOD04_021E1414
-
- arm_func_start MOD04_021E1678
-MOD04_021E1678: ; 0x021E1678
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #4
- addls pc, pc, r4, lsl #2
- b _021E16D4
-_021E1694: ; jump table
- b _021E16D4 ; case 0
- b _021E16A8 ; case 1
- b _021E16B4 ; case 2
- b _021E16C0 ; case 3
- b _021E16CC ; case 4
-_021E16A8:
- mov r0, #9
- mvn r2, #0
- b _021E16D4
-_021E16B4:
- mov r0, #9
- mvn r2, #1
- b _021E16D4
-_021E16C0:
- mov r0, #6
- mvn r2, #9
- b _021E16D4
-_021E16CC:
- mov r0, #6
- mvn r2, #0x13
-_021E16D4:
- ldr r1, _021E16E8 ; =0xFFFEEAA8
- add r1, r2, r1
- bl MOD04_021E2114
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E16E8: .word 0xFFFEEAA8
- arm_func_end MOD04_021E1678
-
- arm_func_start MOD04_021E16EC
-MOD04_021E16EC: ; 0x021E16EC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021E17B8 ; =UNK04_022106D0
- mov r3, #0
- ldr r2, [r2]
- mov r5, r0
- mov r4, r1
- str r3, [sp]
- cmp r2, #0
- beq _021E1720
- bl MOD04_021E05FC
- cmp r0, #0
- bne _021E172C
-_021E1720:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E172C:
- bl MOD04_021E0F00
- mov r1, r5
- bl DWC_GetGsProfileId
- mov r5, r0
- cmp r5, #0
- ble _021E176C
- ldr r0, _021E17B8 ; =UNK04_022106D0
- add r2, sp, #0
- ldr r0, [r0]
- mov r1, r5
- ldr r0, [r0, #4]
- bl MOD04_021F0664
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #0
- ldmneia sp!, {r4, r5, pc}
-_021E176C:
- cmp r5, #0
- ble _021E1784
- ldr r1, [sp]
- mvn r0, #0
- cmp r1, r0
- bne _021E1790
-_021E1784:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E1790:
- ldr r0, _021E17B8 ; =UNK04_022106D0
- mov r2, r4
- ldr r0, [r0]
- ldr r0, [r0, #4]
- bl MOD04_021F06E4
- cmp r0, #0
- movne r0, #0
- moveq r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E17B8: .word UNK04_022106D0
- arm_func_end MOD04_021E16EC
-
- arm_func_start MOD04_021E17BC
-MOD04_021E17BC: ; 0x021E17BC
- stmdb sp!, {r4, lr}
- ldr r2, _021E17E8 ; =UNK04_022106D0
- mov r1, r0
- ldr r0, [r2]
- ldr r2, _021E17EC ; =UNK04_0220D350
- ldr r0, [r0, #4]
- bl MOD04_021F09B0
- mov r4, r0
- bl MOD04_021E1678
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E17E8: .word UNK04_022106D0
-_021E17EC: .word UNK04_0220D350
- arm_func_end MOD04_021E17BC
-
- 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
- mov fp, r0
- mvn r0, #0
- str r2, [sp]
- cmp sl, #0
- str r0, [sp, #4]
- mov r8, #0
- ble _021E18F0
- mov r6, fp
- mov r5, fp
- mov r0, #1
- str r0, [sp, #8]
-_021E1828:
- mov r0, r8
- bl MOD04_021E1F84
- movs sb, r0
- beq _021E18DC
- ldr r0, [sp]
- add r7, r8, #1
- cmp sb, r0
- streq r8, [sp, #4]
- cmp r7, sl
- bge _021E18DC
- mov r0, #0xc
- mla r4, r7, r0, fp
-_021E1858:
- mov r0, r7
- bl MOD04_021E1F84
- cmp sb, r0
- bne _021E18CC
- mov r0, r6
- bl DWC_GetFriendDataType
- cmp r0, #2
- bne _021E1894
- mov r0, r4
- bl DWC_GetFriendDataType
- cmp r0, #3
- bne _021E1894
- mov r0, r5
- mov r1, sb
- bl DWC_SetGsProfileId
-_021E1894:
- mov r0, r4
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- beq _021E18AC
- mov r0, r5
- bl DWCi_SetBuddyFriendData
-_021E18AC:
- mov r0, fp
- mov r1, r7
- mov r2, r8
- bl MOD04_021E19B8
- ldr r0, _021E18FC ; =UNK04_022106D0
- ldr r1, [r0]
- ldr r0, [sp, #8]
- strb r0, [r1, #0x1d]
-_021E18CC:
- add r7, r7, #1
- cmp r7, sl
- add r4, r4, #0xc
- blt _021E1858
-_021E18DC:
- add r8, r8, #1
- cmp r8, sl
- add r6, r6, #0xc
- add r5, r5, #0xc
- blt _021E1828
-_021E18F0:
- ldr r0, [sp, #4]
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E18FC: .word UNK04_022106D0
- arm_func_end MOD04_021E17F0
-
- arm_func_start MOD04_021E1900
-MOD04_021E1900: ; 0x021E1900
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r1
- mov r7, r0
- mov r5, r2
- cmp r6, #0
- mov r4, #0
- ble _021E19A8
-_021E1920:
- mov r0, r4
- bl MOD04_021E1F84
- cmp r0, #0
- beq _021E199C
- cmp r0, r5
- bne _021E199C
- mov r0, #0xc
- mla r0, r6, r0, r7
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- beq _021E1974
- mov r0, #0xc
- mla r0, r4, r0, r7
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- bne _021E1974
- mov r0, r7
- mov r1, r4
- mov r2, r6
- bl MOD04_021E19B8
- b _021E1984
-_021E1974:
- mov r0, r7
- mov r1, r6
- mov r2, r4
- bl MOD04_021E19B8
-_021E1984:
- ldr r1, _021E19B4 ; =UNK04_022106D0
- mov r0, #1
- ldr r1, [r1]
- add sp, sp, #4
- strb r0, [r1, #0x1d]
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E199C:
- add r4, r4, #1
- cmp r4, r6
- blt _021E1920
-_021E19A8:
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E19B4: .word UNK04_022106D0
- arm_func_end MOD04_021E1900
-
- arm_func_start MOD04_021E19B8
-MOD04_021E19B8: ; 0x021E19B8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r3, _021E1A1C ; =UNK04_022106D0
- mov r5, r1
- ldr r1, [r3]
- mov r4, r2
- cmp r1, #0
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, pc}
- mov r2, #0xc
- mla r0, r5, r2, r0
- mov r1, #0
- bl MI_CpuFill8
- ldr r0, _021E1A1C ; =UNK04_022106D0
- ldr r0, [r0]
- ldr r3, [r0, #0x3c]
- cmp r3, #0
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, [r0, #0x40]
- mov r0, r5
- mov r1, r4
- blx r3
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E1A1C: .word UNK04_022106D0
- arm_func_end MOD04_021E19B8
-
- arm_func_start MOD04_021E1A20
-MOD04_021E1A20: ; 0x021E1A20
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021E1A5C ; =UNK04_022106D0
- mov r0, #0
- ldr r3, [r1]
- ldrb r1, [r3, #0x1d]
- ldr r2, [r3, #0x30]
- ldr r3, [r3, #0x2c]
- blx r3
- ldr r0, _021E1A5C ; =UNK04_022106D0
- mov r1, #2
- ldr r0, [r0]
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E1A5C: .word UNK04_022106D0
- arm_func_end MOD04_021E1A20
-
- 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 ; =UNK04_022106D0
- mov r6, r0
- ldr r2, [r2]
- mov r5, r1
- ldrb r0, [r2, #0x1e]
- cmp r0, #0
- bne _021E1B8C
- ldr r0, [r2, #4]
- add r1, sp, #0x18
- bl MOD04_021F0828
- bl MOD04_021E1678
- ldr r0, [sp, #0x18]
- mov fp, #0
- str fp, [sp, #0x1c]
- cmp r0, #0
- ble _021E1B7C
- ldr r8, _021E1CC4 ; =UNK04_022106D0
- mov sb, #1
- mov r7, #0xc
-_021E1AB4:
- ldr r0, [r8]
- ldr r1, [sp, #0x1c]
- ldr r0, [r0, #4]
- add r2, sp, #0x38
- bl MOD04_021F06E4
- bl MOD04_021E1678
- mov r4, fp
- cmp r5, #0
- ble _021E1B30
-_021E1AD8:
- mov r0, r4
- bl MOD04_021E1F84
- ldr r1, [sp, #0x38]
- cmp r1, r0
- bne _021E1B24
- mul sl, r4, r7
- add r0, r6, sl
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- bne _021E1B30
- add sl, r6, sl
- ldr r1, [sp, #0x38]
- mov r0, sl
- bl DWC_SetGsProfileId
- mov r0, sl
- bl DWCi_SetBuddyFriendData
- ldr r0, [r8]
- strb sb, [r0, #0x1d]
- b _021E1B30
-_021E1B24:
- add r4, r4, #1
- cmp r4, r5
- blt _021E1AD8
-_021E1B30:
- cmp r4, r5
- bne _021E1B64
- ldr r0, [r8]
- ldr r1, [sp, #0x38]
- ldr r0, [r0, #4]
- bl MOD04_021F0580
- bl MOD04_021E1678
- ldr r1, [sp, #0x18]
- ldr r0, [sp, #0x1c]
- sub r1, r1, #1
- sub r0, r0, #1
- str r1, [sp, #0x18]
- str r0, [sp, #0x1c]
-_021E1B64:
- ldr r1, [sp, #0x1c]
- ldr r0, [sp, #0x18]
- add r1, r1, #1
- str r1, [sp, #0x1c]
- cmp r1, r0
- blt _021E1AB4
-_021E1B7C:
- ldr r0, _021E1CC4 ; =UNK04_022106D0
- mov r1, #1
- ldr r0, [r0]
- strb r1, [r0, #0x1e]
-_021E1B8C:
- ldr sl, _021E1CC4 ; =UNK04_022106D0
- ldr r0, [sl]
- ldrb r0, [r0, #0x1c]
- cmp r0, r5
- addge sp, sp, #0x24c
- ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r4, sp, #0x1c
- mov r8, #0xc
- mvn sb, #0
-_021E1BB0:
- bl MOD04_021E1F84
- movs r7, r0
- beq _021E1C08
- ldr r1, [sl]
- mov r0, r6
- ldrb r1, [r1, #0x1c]
- mov r2, r7
- bl MOD04_021E1900
- cmp r0, #0
- bne _021E1C9C
- ldr r0, [sl]
- mov r1, r7
- ldr r0, [r0, #4]
- mov r2, r4
- bl MOD04_021F0664
- bl MOD04_021E1678
- ldr r0, [sp, #0x1c]
- cmp r0, sb
- bne _021E1C9C
- mov r0, r7
- bl MOD04_021E17BC
- b _021E1C9C
-_021E1C08:
- bl MOD04_021E0F00
- ldr r1, [sl]
- ldrb r2, [r1, #0x1c]
- mla r1, r2, r8, r6
- bl DWC_GetGsProfileId
- cmp r0, sb
- bne _021E1C9C
- bl MOD04_021E0F00
- ldr r2, _021E1CC4 ; =UNK04_022106D0
- mov r1, #0xc
- ldr r3, [r2]
- add r2, sp, #0x20
- ldrb r3, [r3, #0x1c]
- mla r1, r3, r1, r6
- bl DWC_LoginIdToUserName
- ldr r0, _021E1CC4 ; =UNK04_022106D0
- mov r1, #0
- ldr r4, [r0]
- add r2, sp, #0x20
- str r1, [sp]
- str r2, [sp, #4]
- str r1, [sp, #8]
- ldr r0, _021E1CC8 ; =MOD04_021E1414
- str r1, [sp, #0xc]
- str r0, [sp, #0x10]
- ldrb r0, [r4, #0x1c]
- mov r2, r1
- mov r3, r1
- str r0, [sp, #0x14]
- ldr r0, [r4, #4]
- bl MOD04_021F0C84
- ldr r0, _021E1CC4 ; =UNK04_022106D0
- mov r1, #2
- ldr r0, [r0]
- add sp, sp, #0x24c
- strb r1, [r0, #0x1e]
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E1C9C:
- ldr r1, [sl]
- ldrb r0, [r1, #0x1c]
- add r0, r0, #1
- strb r0, [r1, #0x1c]
- ldr r0, [sl]
- ldrb r0, [r0, #0x1c]
- cmp r0, r5
- blt _021E1BB0
- add sp, sp, #0x24c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E1CC4: .word UNK04_022106D0
-_021E1CC8: .word MOD04_021E1414
- arm_func_end MOD04_021E1A60
-
- arm_func_start MOD04_021E1CCC
-MOD04_021E1CCC: ; 0x021E1CCC
- ldr r0, _021E1CF8 ; =UNK04_022106D0
- ldr r1, [r0]
- cmp r1, #0
- bxeq lr
- mov r2, #0
- str r2, [r1]
- ldr r1, [r0]
- strb r2, [r1, #0x1e]
- ldr r0, [r0]
- strb r2, [r0, #0x1f]
- bx lr
- .align 2, 0
-_021E1CF8: .word UNK04_022106D0
- arm_func_end MOD04_021E1CCC
-
- arm_func_start MOD04_021E1CFC
-MOD04_021E1CFC: ; 0x021E1CFC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021E1D88 ; =UNK04_022106D0
- mov r5, #0
- ldr r4, [r0]
- bl OS_GetTick
- ldr r3, [r4, #0xc]
- ldr r2, [r4, #0x10]
- subs r3, r0, r3
- sbc r0, r1, r2
- mov r1, r0, lsl #6
- ldr r2, _021E1D8C ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, r5
- bl _ll_udiv
- cmp r1, #0
- cmpeq r0, #0x12c
- blo _021E1D7C
- ldr r1, [r4, #8]
- ldr r0, _021E1D88 ; =UNK04_022106D0
- add r1, r1, #1
- str r1, [r4, #8]
- ldr r0, [r0]
- ldr r0, [r0, #4]
- bl MOD04_021F0F18
- mov r5, r0
- bl OS_GetTick
- ldr r2, _021E1D88 ; =UNK04_022106D0
- ldr r2, [r2]
- str r0, [r2, #0xc]
- str r1, [r2, #0x10]
-_021E1D7C:
- mov r0, r5
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E1D88: .word UNK04_022106D0
-_021E1D8C: .word 0x000082EA
- arm_func_end MOD04_021E1CFC
-
- arm_func_start MOD04_021E1D90
-MOD04_021E1D90: ; 0x021E1D90
- ldr r0, _021E1DA0 ; =UNK04_022106D0
- mov r1, #0
- str r1, [r0]
- bx lr
- .align 2, 0
-_021E1DA0: .word UNK04_022106D0
- arm_func_end MOD04_021E1D90
-
- arm_func_start MOD04_021E1DA4
-MOD04_021E1DA4: ; 0x021E1DA4
- stmdb sp!, {r4, lr}
- sub sp, sp, #0x210
- ldr r1, _021E1E2C ; =UNK04_022106D0
- mov r4, r0
- ldr r3, [r1]
- ldr r2, [r3, #0x44]
- cmp r2, #0
- beq _021E1DD8
- ldr r1, [r3]
- cmp r1, #1
- beq _021E1DD8
- ldr r1, [r3, #0x48]
- blx r2
-_021E1DD8:
- ldr r0, _021E1E2C ; =UNK04_022106D0
- ldr r1, [r0]
- ldr r0, [r1, #0x34]
- cmp r0, #0
- addeq sp, sp, #0x210
- ldmeqia sp!, {r4, pc}
- ldr r1, [r1, #0x18]
- mov r0, #0xc
- mla r0, r4, r0, r1
- add r1, sp, #0x108
- bl MOD04_021E26B8
- ldr r2, _021E1E2C ; =UNK04_022106D0
- mov r1, r0
- ldr r0, [r2]
- add r2, sp, #0x108
- ldr r3, [r0, #0x38]
- ldr ip, [r0, #0x34]
- mov r0, r4
- blx ip
- add sp, sp, #0x210
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E1E2C: .word UNK04_022106D0
- arm_func_end MOD04_021E1DA4
-
- arm_func_start MOD04_021E1E30
-MOD04_021E1E30: ; 0x021E1E30
- stmdb sp!, {r4, r5, r6, lr}
- ldr r3, _021E1ED0 ; =UNK04_022106D0
- mov r6, r0
- ldr r0, [r3]
- mov r5, r1
- mov r4, r2
- cmp r0, #0
- beq _021E1E5C
- bl MOD04_021E05FC
- cmp r0, #0
- bne _021E1E64
-_021E1E5C:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E1E64:
- mvn r0, #0
- cmp r6, r0
- ldreq r0, _021E1ED0 ; =UNK04_022106D0
- ldreq r0, [r0]
- ldreq r0, [r0, #4]
- ldreq r0, [r0]
- ldreq r6, [r0, #0x214]
- cmp r5, #0
- ldreq r0, _021E1ED0 ; =UNK04_022106D0
- mov r1, r6
- ldreq r0, [r0]
- ldreq r0, [r0, #4]
- ldreq r0, [r0]
- addeq r5, r0, #0x218
- cmp r4, #0
- ldreq r0, _021E1ED0 ; =UNK04_022106D0
- mov r2, r5
- ldreq r0, [r0]
- ldreq r0, [r0, #4]
- ldreq r0, [r0]
- addeq r4, r0, #0x318
- ldr r0, _021E1ED0 ; =UNK04_022106D0
- mov r3, r4
- ldr r0, [r0]
- ldr r0, [r0, #4]
- bl MOD04_021F034C
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E1ED0: .word UNK04_022106D0
- arm_func_end MOD04_021E1E30
-
- arm_func_start MOD04_021E1ED4
-MOD04_021E1ED4: ; 0x021E1ED4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E1F14 ; =UNK04_022106D0
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- mov r0, #0
- str r0, [r1, #8]
- bl OS_GetTick
- ldr r2, _021E1F14 ; =UNK04_022106D0
- ldr r2, [r2]
- str r0, [r2, #0xc]
- str r1, [r2, #0x10]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E1F14: .word UNK04_022106D0
- arm_func_end MOD04_021E1ED4
-
- arm_func_start MOD04_021E1F18
-MOD04_021E1F18: ; 0x021E1F18
- stmdb sp!, {r4, r5, r6, lr}
- ldr r4, _021E1F80 ; =UNK04_022106D0
- mov r6, r0
- ldr r0, [r4]
- cmp r0, #0
- beq _021E1F38
- cmp r6, #0
- bne _021E1F40
-_021E1F38:
- mvn r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E1F40:
- ldr r0, [r0, #0x14]
- mov r5, #0
- cmp r0, #0
- ble _021E1F78
-_021E1F50:
- mov r0, r5
- bl MOD04_021E1F84
- cmp r6, r0
- moveq r0, r5
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, [r4]
- add r5, r5, #1
- ldr r0, [r0, #0x14]
- cmp r5, r0
- blt _021E1F50
-_021E1F78:
- mvn r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E1F80: .word UNK04_022106D0
- arm_func_end MOD04_021E1F18
-
- arm_func_start MOD04_021E1F84
-MOD04_021E1F84: ; 0x021E1F84
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r1, _021E1FE0 ; =UNK04_022106D0
- mov r5, r0
- ldr r0, [r1]
- ldr r4, [r0, #0x18]
- cmp r4, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- bl MOD04_021E0F00
- mov r1, #0xc
- mla r1, r5, r1, r4
- bl DWC_GetGsProfileId
- cmp r0, #0
- beq _021E1FD4
- mvn r1, #0
- cmp r0, r1
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, pc}
-_021E1FD4:
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E1FE0: .word UNK04_022106D0
- arm_func_end MOD04_021E1F84
-
- arm_func_start MOD04_021E1FE4
-MOD04_021E1FE4: ; 0x021E1FE4
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x210
- ldr r2, _021E2064 ; =UNK04_022106D0
- mov r6, r0
- ldr r0, [r2]
- mov r5, r1
- ldr r0, [r0, #0x34]
- cmp r0, #0
- addeq sp, sp, #0x210
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, [r5]
- bl MOD04_021E1F18
- mov r4, r0
- mvn r0, #0
- cmp r4, r0
- addeq sp, sp, #0x210
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r1, [r5, #8]
- add r2, sp, #0
- mov r0, r6
- bl MOD04_021F06E4
- ldr r0, _021E2064 ; =UNK04_022106D0
- ldr r1, [sp, #4]
- ldr r0, [r0]
- add r2, sp, #0x108
- ldr r3, [r0, #0x38]
- ldr ip, [r0, #0x34]
- mov r0, r4
- and r1, r1, #0xff
- blx ip
- add sp, sp, #0x210
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E2064: .word UNK04_022106D0
- arm_func_end MOD04_021E1FE4
-
- arm_func_start MOD04_021E2068
-MOD04_021E2068: ; 0x021E2068
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xc
- mov r4, r1
- mov r5, r0
- ldr r0, [r4, #8]
- ldr r1, _021E20C0 ; =UNK04_0220D354
- bl strcmp
- cmp r0, #0
- addne sp, sp, #0xc
- movne r0, #0
- ldmneia sp!, {r4, r5, pc}
- 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 MOD04_021F0B9C
- mov r0, #1
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E20C0: .word UNK04_0220D354
-_021E20C4: .word MOD04_021E110C
- arm_func_end MOD04_021E2068
-
- arm_func_start MOD04_021E20C8
-MOD04_021E20C8: ; 0x021E20C8
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r2, _021E210C ; =UNK04_022106D0
- ldr r2, [r2]
- ldr r2, [r2, #0x18]
- cmp r2, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {pc}
- ldr r3, _021E2110 ; =MOD04_021E12B8
- mov r2, #0
- str r3, [sp]
- str r2, [sp, #4]
- ldr r1, [r1]
- mov r3, r2
- bl MOD04_021F0B9C
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021E210C: .word UNK04_022106D0
-_021E2110: .word MOD04_021E12B8
- arm_func_end MOD04_021E20C8
-
- arm_func_start MOD04_021E2114
-MOD04_021E2114: ; 0x021E2114
- stmdb sp!, {r4, lr}
- ldr r2, _021E2170 ; =UNK04_022106D0
- mov r4, r0
- ldr r2, [r2]
- cmp r2, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021DD6B0
- ldr r0, _021E2170 ; =UNK04_022106D0
- ldr r3, [r0]
- ldr r0, [r3]
- cmp r0, #0
- beq _021E2168
- cmp r0, #2
- beq _021E2168
- ldrb r1, [r3, #0x1d]
- ldr r2, [r3, #0x30]
- ldr r3, [r3, #0x2c]
- mov r0, r4
- blx r3
-_021E2168:
- bl MOD04_021E1CCC
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E2170: .word UNK04_022106D0
- arm_func_end MOD04_021E2114
-
- arm_func_start MOD04_021E2174
-MOD04_021E2174: ; 0x021E2174
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021E2224 ; =UNK04_022106D0
- ldr r5, [sp, #0x10]
- ldr r1, [r0]
- ldr r4, [sp, #0x14]
- str r2, [r1, #0x2c]
- ldr r1, [r0]
- ldr lr, [sp, #0x18]
- str r3, [r1, #0x30]
- ldr r1, [r0]
- ldr ip, [sp, #0x1c]
- str r5, [r1, #0x34]
- ldr r1, [r0]
- mov r3, #0
- str r4, [r1, #0x38]
- ldr r1, [r0]
- mov r2, #1
- str lr, [r1, #0x3c]
- ldr r1, [r0]
- str ip, [r1, #0x40]
- ldr r1, [r0]
- strb r3, [r1, #0x1d]
- ldr r1, [r0]
- strb r3, [r1, #0x1e]
- ldr r1, [r0]
- strb r3, [r1, #0x1f]
- ldr r1, [r0]
- strb r3, [r1, #0x1c]
- ldr r1, [r0]
- str r2, [r1]
- ldr r1, [r0]
- ldr r0, [r1, #0x18]
- cmp r0, #0
- ldreqb r0, [r1, #0x1f]
- addeq r0, r0, #1
- streqb r0, [r1, #0x1f]
- ldr r0, _021E2224 ; =UNK04_022106D0
- ldr r1, [r0]
- ldrb r0, [r1, #0x1f]
- add r0, r0, #1
- strb r0, [r1, #0x1f]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E2224: .word UNK04_022106D0
- arm_func_end MOD04_021E2174
-
- arm_func_start MOD04_021E2228
-MOD04_021E2228: ; 0x021E2228
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E2348 ; =UNK04_022106D0
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x18]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- bl MOD04_021E10F8
- cmp r0, #0
- bne _021E227C
- bl MOD04_021FBE5C
- cmp r0, #0
- beq _021E2280
-_021E227C:
- bl MOD04_021FBD00
-_021E2280:
- ldr r0, _021E2348 ; =UNK04_022106D0
- ldr r0, [r0]
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021E231C
- ldr r0, [r0]
- cmp r0, #0
- beq _021E231C
- bl MOD04_021E1CFC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E2348 ; =UNK04_022106D0
- ldr r3, [r0]
- ldr r0, [r3, #0x18]
- cmp r0, #0
- beq _021E231C
- ldrb r2, [r3, #0x1e]
- cmp r2, #3
- beq _021E231C
- ldr r1, [r3, #8]
- cmp r1, #7
- bls _021E231C
- cmp r2, #1
- bhi _021E22EC
- ldr r1, [r3, #0x14]
- bl MOD04_021E1A60
-_021E22EC:
- ldr r0, _021E2348 ; =UNK04_022106D0
- ldr r3, [r0]
- ldrb r2, [r3, #0x1c]
- ldr r1, [r3, #0x14]
- cmp r2, r1
- blt _021E231C
- mov r1, #3
- strb r1, [r3, #0x1e]
- ldr r1, [r0]
- ldrb r0, [r1, #0x1f]
- add r0, r0, #1
- strb r0, [r1, #0x1f]
-_021E231C:
- ldr r0, _021E2348 ; =UNK04_022106D0
- ldr r1, [r0]
- ldrb r0, [r1, #0x1f]
- cmp r0, #2
- addlo sp, sp, #4
- ldmloia sp!, {pc}
- mov r0, #0
- strb r0, [r1, #0x1f]
- bl MOD04_021E1A20
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E2348: .word UNK04_022106D0
- arm_func_end MOD04_021E2228
-
- arm_func_start MOD04_021E234C
-MOD04_021E234C: ; 0x021E234C
- stmdb sp!, {r4, lr}
- ldr lr, _021E2428 ; =UNK04_022106D0
- mov ip, #0
- str r0, [lr]
- str ip, [r0]
- ldr r4, [lr]
- ldr r0, [sp, #8]
- str r1, [r4, #4]
- ldr r1, [lr]
- str ip, [r1, #8]
- ldr r1, [lr]
- str ip, [r1, #0xc]
- str ip, [r1, #0x10]
- str r0, [r1, #0x14]
- ldr r0, [lr]
- str r3, [r0, #0x18]
- ldr r0, [lr]
- strb ip, [r0, #0x1c]
- ldr r0, [lr]
- strb ip, [r0, #0x1d]
- ldr r0, [lr]
- strb ip, [r0, #0x1e]
- ldr r0, [lr]
- strb ip, [r0, #0x1f]
- ldr r0, [lr]
- str ip, [r0, #0x20]
- ldr r0, [lr]
- str ip, [r0, #0x24]
- ldr r0, [lr]
- str r2, [r0, #0x28]
- ldr r0, [lr]
- str ip, [r0, #0x2c]
- ldr r0, [lr]
- str ip, [r0, #0x30]
- ldr r0, [lr]
- str ip, [r0, #0x34]
- ldr r0, [lr]
- str ip, [r0, #0x38]
- ldr r0, [lr]
- str ip, [r0, #0x3c]
- ldr r0, [lr]
- str ip, [r0, #0x40]
- ldr r0, [lr]
- str ip, [r0, #0x44]
- ldr r0, [lr]
- str ip, [r0, #0x48]
- ldr r0, [lr]
- str ip, [r0, #0x4c]
- ldr r0, [lr]
- str ip, [r0, #0x50]
- ldr r0, [lr]
- str ip, [r0, #0x54]
- ldr r0, [lr]
- str ip, [r0, #0x58]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E2428: .word UNK04_022106D0
- arm_func_end MOD04_021E234C
-
- arm_func_start MOD04_021E242C
-MOD04_021E242C: ; 0x021E242C
- ldr r2, _021E2450 ; =UNK04_022106D0
- ldr r3, [r2]
- cmp r3, #0
- moveq r0, #0
- strne r0, [r3, #0x44]
- ldrne r2, [r2]
- movne r0, #1
- strne r1, [r2, #0x48]
- bx lr
- .align 2, 0
-_021E2450: .word UNK04_022106D0
- arm_func_end MOD04_021E242C
-
- arm_func_start MOD04_021E2454
-MOD04_021E2454: ; 0x021E2454
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0x104
- ldr r2, _021E24DC ; =UNK04_022106D0
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- cmp r0, #0
- beq _021E2480
- bl MOD04_021E05FC
- cmp r0, #0
- bne _021E248C
-_021E2480:
- add sp, sp, #0x104
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E248C:
- add r2, sp, #0
- mov r0, r5
- mov r1, r4
- mov r3, #0xff
- bl MOD04_021DD4FC
- mvn r3, #0
- cmp r0, r3
- addeq sp, sp, #0x104
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- add r2, sp, #0
- mov r1, #0
- strb r1, [r2, r0]
- mov r0, r3
- bl MOD04_021E1E30
- cmp r0, #0
- moveq r0, #1
- movne r0, #0
- add sp, sp, #0x104
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E24DC: .word UNK04_022106D0
- arm_func_end MOD04_021E2454
-
- 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 MOD04_021E259C
- movs r5, r0
- mvneq r1, #0
- addeq sp, sp, #0x100
- streq r1, [r4]
- ldmeqia sp!, {r4, r5, r6, pc}
- add r0, sp, #0
- bl strlen
- mov r2, #0
- mov r1, r0
- add r0, sp, #0
- mov r3, r2
- bl MOD04_021DD36C
- str r0, [r4]
- cmp r6, #0
- beq _021E2544
- ldr r4, [r4]
- mvn r0, #0
- cmp r4, r0
- bne _021E2550
-_021E2544:
- add sp, sp, #0x100
- mov r0, r5
- ldmia sp!, {r4, r5, r6, pc}
-_021E2550:
- add r0, sp, #0
- bl strlen
- mov r1, r0
- add r0, sp, #0
- mov r2, r6
- mov r3, r4
- bl MOD04_021DD36C
- mov r0, r5
- add sp, sp, #0x100
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E24E0
-
- 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 MOD04_021E24E0
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E2578
-
- 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 MOD04_021E16EC
- cmp r0, #0
- beq _021E268C
- ldr r0, [sp, #8]
- cmp r0, #6
- bne _021E2650
- cmp r6, #0
- beq _021E260C
- ldr r0, _021E26B0 ; =UNK04_0220D38C
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DE9F4
- cmp r0, #0
- movle r0, #0
- strleb r0, [r6]
- ble _021E260C
- add r0, sp, #0
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- strb r0, [r6]
-_021E260C:
- cmp r4, #0
- beq _021E2668
- ldr r0, _021E26B4 ; =UNK04_0220D390
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DE9F4
- cmp r0, #0
- movle r0, #0
- strleb r0, [r4]
- ble _021E2668
- add r0, sp, #0
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- strb r0, [r4]
- b _021E2668
-_021E2650:
- cmp r6, #0
- movne r0, #0
- strneb r0, [r6]
- cmp r4, #0
- movne r0, #0
- strneb r0, [r4]
-_021E2668:
- cmp r5, #0
- beq _021E267C
- add r1, sp, #0x10c
- mov r0, r5
- bl strcpy
-_021E267C:
- ldr r0, [sp, #8]
- add sp, sp, #0x218
- and r0, r0, #0xff
- ldmia sp!, {r4, r5, r6, pc}
-_021E268C:
- cmp r6, #0
- movne r0, #0
- strneb r0, [r6]
- cmp r4, #0
- movne r0, #0
- strneb r0, [r4]
- mov r0, #0
- add sp, sp, #0x218
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E26B0: .word UNK04_0220D38C
-_021E26B4: .word UNK04_0220D390
- arm_func_end MOD04_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 MOD04_021E259C
- arm_func_end MOD04_021E26B8
-
- arm_func_start MOD04_021E26D0
-MOD04_021E26D0: ; 0x021E26D0
- ldr r1, _021E26E0 ; =UNK04_022106D8
- ldr r1, [r1]
- str r0, [r1, #0x1a0]
- bx lr
- .align 2, 0
-_021E26E0: .word UNK04_022106D8
- arm_func_end MOD04_021E26D0
-
- arm_func_start MOD04_021E26E4
-MOD04_021E26E4: ; 0x021E26E4
- ldr r0, _021E26F0 ; =UNK04_022106D8
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_021E26F0: .word UNK04_022106D8
- arm_func_end MOD04_021E26E4
-
- arm_func_start MOD04_021E26F4
-MOD04_021E26F4: ; 0x021E26F4
- ldr r1, _021E2700 ; =UNK04_022106D8
- str r0, [r1]
- bx lr
- .align 2, 0
-_021E2700: .word UNK04_022106D8
- arm_func_end MOD04_021E26F4
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E273C
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x17d]
- add r1, r1, #1
- strb r1, [r0, #0x17d]
-_021E273C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E275C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17d]
- cmp r0, #5
- blo _021E2774
-_021E275C:
- ldr r1, _021E2780 ; =0xFFFEAE6C
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- mov r0, #0
- ldmfd sp!, {pc}
-_021E2774:
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E2780: .word 0xFFFEAE6C
- arm_func_end MOD04_021E2704
-
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E27BC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- addne sp, sp, #0x20
- ldmneia sp!, {r4, r5, r6, pc}
-_021E27BC:
- cmp r4, #0
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r5, #0
- bne _021E29B8
- mov r0, #0
- str r0, [r4, #8]
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x14]
- add r1, r1, #1
- strb r1, [r0, #0x14]
- bl MOD04_021E26E4
- ldrb r1, [r4]
- ldrb r5, [r0, #0x14]
- cmp r1, #0
- beq _021E2950
- bl MOD04_021E26E4
- ldr r1, [r6, #4]
- add r0, r0, r5, lsl #2
- str r1, [r0, #0x210]
- ldrh r4, [r6, #2]
- bl MOD04_021E26E4
- mov r2, r4, asr #8
- mov r1, r4, lsl #8
- add r0, r0, r5, lsl #1
- and r2, r2, #0xff
- and r1, r1, #0xff00
- orr r1, r2, r1
- add r0, r0, #0x200
- strh r1, [r0, #0x90]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x180]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x184]
- str r1, [r0, #0x188]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- bne _021E2878
- mov r0, #0xc
- bl MOD04_021E26D0
- b _021E2880
-_021E2878:
- mov r0, #7
- bl MOD04_021E26D0
-_021E2880:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- ldr r3, [r0, #0x200]
- ldr r2, _021E2B58 ; =UNK04_0220D394
- add r0, sp, #0x10
- mov r1, #0xc
- bl OS_SNPrintf
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- add r1, r6, r5, lsl #2
- mov r2, r0
- ldr r0, [r1, #0x210]
- add r1, r2, r5, lsl #1
- add r1, r1, #0x200
- ldrh r1, [r1, #0x90]
- mov r2, #0
- bl MOD04_021FFEB0
- mov r6, r0
- bl MOD04_021E26E4
- mvn r1, #0
- str r1, [sp]
- ldr r3, _021E2B5C ; =0x00001388
- mov r1, #0
- str r3, [sp, #4]
- ldr r0, [r0, #8]
- mov r2, r6
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- ldr r0, [r4, #4]
- add r3, sp, #0x10
- ldr r0, [r0]
- bl MOD04_021FD52C
- cmp r0, #1
- bne _021E2928
- 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 MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- add sp, sp, #0x20
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E2950:
- cmp r6, #0
- beq _021E2994
- sub r4, r5, #1
- bl MOD04_021E26E4
- ldr r1, [r6, #4]
- add r0, r0, r4, lsl #2
- str r1, [r0, #0x210]
- ldrh r5, [r6, #2]
- bl MOD04_021E26E4
- mov r2, r5, asr #8
- mov r1, r5, lsl #8
- add r0, r0, r4, lsl #1
- and r2, r2, #0xff
- and r1, r1, #0xff00
- orr r1, r2, r1
- add r0, r0, #0x200
- strh r1, [r0, #0x90]
-_021E2994:
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x18c]
- mov r0, #7
- str r1, [r4, #0x190]
- bl MOD04_021E26D0
- add sp, sp, #0x20
- ldmia sp!, {r4, r5, r6, pc}
-_021E29B8:
- ldr r0, [r4, #8]
- cmp r0, #0
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, pc}
- mov r0, r5
- bl MOD04_021E3754
- mov r6, r0
- cmp r6, #2
- beq _021E29E8
- cmp r6, #1
- addne sp, sp, #0x20
- ldmneia sp!, {r4, r5, r6, pc}
-_021E29E8:
- ldrb r0, [r4]
- cmp r0, #0
- bne _021E2A74
- cmp r6, #1
- beq _021E2A10
- cmp r6, #2
- bne _021E2A50
- ldrb r0, [r4, #1]
- cmp r0, #1
- blo _021E2A50
-_021E2A10:
- mov r0, #0
- str r0, [r4, #8]
- bl MOD04_021E2704
- cmp r0, #0
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- add sp, sp, #0x20
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E2A50:
- ldrb r1, [r4, #1]
- mov r0, r4
- add r1, r1, #1
- strb r1, [r4, #1]
- bl MOD04_021E7A44
- bl MOD04_021E37A4
- add sp, sp, #0x20
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E2A74:
- bl MOD04_021E26E4
- mov r5, r0
- bl OS_GetTick
- str r0, [r5, #0x184]
- str r1, [r5, #0x188]
- cmp r6, #1
- beq _021E2AB0
- cmp r6, #2
- addne sp, sp, #0x20
- ldmneia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17c]
- cmp r0, #1
- addlo sp, sp, #0x20
- ldmloia sp!, {r4, r5, r6, pc}
-_021E2AB0:
- mov r0, #0
- str r0, [r4, #8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E2AD8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E2AF0
-_021E2AD8:
- mov r0, #1
- bl MOD04_021E2704
- cmp r0, #0
- bne _021E2B04
- add sp, sp, #0x20
- ldmia sp!, {r4, r5, r6, pc}
-_021E2AF0:
- mov r0, #0
- bl MOD04_021E2704
- cmp r0, #0
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, pc}
-_021E2B04:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x180]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x184]
- str r1, [r0, #0x188]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- cmp r0, #0
- add sp, sp, #0x20
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E2B58: .word UNK04_0220D394
-_021E2B5C: .word 0x00001388
- arm_func_end MOD04_021E2784
-
- arm_func_start MOD04_021E2B60
-MOD04_021E2B60: ; 0x021E2B60
- bx lr
- arm_func_end MOD04_021E2B60
-
- 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 MOD04_021DF88C
- cmp r0, #5
- beq _021E2BB8
- bl MOD04_021DF88C
- cmp r0, #6
- addne sp, sp, #0x9c
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E2BB8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- addne sp, sp, #0x9c
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E2BB8:
- cmp sb, #0x14
- addlo sp, sp, #0x9c
- ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r4, sp, #0x1c
- add fp, sp, #8
- add r5, sl, #0x14
- mov r7, #0x14
- mov r6, #4
-_021E2BD8:
- mov r0, sl
- mov r1, fp
- mov r2, r7
- bl MI_CpuCopy8
- ldr r1, _021E2C74 ; =UNK04_0220D398
- mov r0, fp
- mov r2, r6
- bl strncmp
- cmp r0, #0
- addne sp, sp, #0x9c
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, [sp, #0xc]
- cmp r0, #3
- addne sp, sp, #0x9c
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldrb r2, [sp, #0x11]
- mov r0, r5
- mov r1, r4
- bl MI_CpuCopy8
- str r4, [sp]
- ldrb r0, [sp, #0x11]
- mov r0, r0, asr #2
- str r0, [sp, #4]
- ldrb r0, [sp, #0x10]
- ldrh r3, [sp, #0x12]
- ldr r1, [sp, #0x18]
- ldr r2, [sp, #0x14]
- bl MOD04_021E6730
- cmp r0, #0
- addeq sp, sp, #0x9c
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldrb r0, [sp, #0x11]
- add r0, r0, #0x14
- add r8, r8, r0
- add r0, r8, #0x14
- cmp r0, sb
- bls _021E2BD8
- add sp, sp, #0x9c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E2C74: .word UNK04_0220D398
- arm_func_end MOD04_021E2B64
-
- arm_func_start MOD04_021E2C78
-MOD04_021E2C78: ; 0x021E2C78
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E2C9C
- mov r0, #6
- bl MOD04_021E26D0
- b _021E2CBC
-_021E2C9C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E2CBC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- ldmneia sp!, {r4, pc}
-_021E2CBC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x180]
- cmp r4, r0
- bne _021E2CE0
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x17c]
- add r1, r1, #1
- strb r1, [r0, #0x17c]
- b _021E2CF4
-_021E2CE0:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- str r4, [r0, #0x180]
-_021E2CF4:
- bl MOD04_021E26E4
- mov r2, #0
- str r2, [r0, #0x184]
- str r2, [r0, #0x188]
- mov r1, r4
- mov r0, #1
- bl MOD04_021E7B04
- bl MOD04_021E37A4
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E2C78
-
- arm_func_start MOD04_021E2D2C
-MOD04_021E2D2C: ; 0x021E2D2C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl MOD04_021E26E4
- str r5, [r0, #0x1c]
- bl MOD04_021E26E4
- strh r4, [r0, #0x1a]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E2D2C
-
- arm_func_start MOD04_021E2D54
-MOD04_021E2D54: ; 0x021E2D54
- ldr ip, _021E2D5C ; =MOD04_021E3800
- bx ip
- .align 2, 0
-_021E2D5C: .word MOD04_021E3800
- arm_func_end MOD04_021E2D54
-
- arm_func_start MOD04_021E2D60
-MOD04_021E2D60: ; 0x021E2D60
- mov r0, #0
- bx lr
- arm_func_end MOD04_021E2D60
-
- arm_func_start MOD04_021E2D68
-MOD04_021E2D68: ; 0x021E2D68
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r1
- cmp r0, #0
- beq _021E2D88
- cmp r0, #1
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r0, #2
- ldmia sp!, {r4, r5, r6, pc}
-_021E2D88:
- mov r0, r6
- mov r1, #8
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0xa
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x32
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x33
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x34
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x35
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x36
- bl MOD04_02202254
- ldr r4, _021E2E0C ; =UNK04_02210704
- mov r5, #0
-_021E2DE4:
- ldrb r1, [r4]
- cmp r1, #0
- beq _021E2DF8
- mov r0, r6
- bl MOD04_02202254
-_021E2DF8:
- add r5, r5, #1
- cmp r5, #0x9a
- add r4, r4, #0xc
- blt _021E2DE4
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E2E0C: .word UNK04_02210704
- arm_func_end MOD04_021E2D68
-
- arm_func_start MOD04_021E2E10
-MOD04_021E2E10: ; 0x021E2E10
- bx lr
- arm_func_end MOD04_021E2E10
-
- arm_func_start MOD04_021E2E14
-MOD04_021E2E14: ; 0x021E2E14
- bx lr
- arm_func_end MOD04_021E2E14
-
- arm_func_start MOD04_021E2E18
-MOD04_021E2E18: ; 0x021E2E18
- stmdb sp!, {r4, lr}
- mov r4, r1
- cmp r0, #0x32
- bgt _021E2E54
- cmp r0, #0x32
- bge _021E2E9C
- cmp r0, #0xa
- bgt _021E2EF8
- cmp r0, #8
- blt _021E2EF8
- cmp r0, #8
- beq _021E2E74
- cmp r0, #0xa
- beq _021E2E88
- b _021E2EF8
-_021E2E54:
- sub r1, r0, #0x33
- cmp r1, #3
- addls pc, pc, r1, lsl #2
- b _021E2EF8
-_021E2E64: ; jump table
- b _021E2EB0 ; case 0
- b _021E2EC4 ; case 1
- b _021E2ED8 ; case 2
- b _021E2EE8 ; case 3
-_021E2E74:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x14]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2E88:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x16]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2E9C:
- bl MOD04_021E26E4
- ldr r1, [r0, #0x200]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2EB0:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x15]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2EC4:
- bl MOD04_021E26E4
- ldr r1, [r0, #0x20]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2ED8:
- mov r0, r4
- mov r1, #3
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2EE8:
- mov r0, r4
- mov r1, #1
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2EF8:
- subs r1, r0, #0x64
- ldmmiia sp!, {r4, pc}
- cmp r1, #0x9a
- ldmgeia sp!, {r4, pc}
- mov r0, #0xc
- mul r2, r1, r0
- ldr r0, _021E2F5C ; =UNK04_02210704
- ldrb r0, [r0, r2]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r0, _021E2F60 ; =UNK04_02210705
- ldrb r0, [r0, r2]
- cmp r0, #0
- beq _021E2F44
- ldr r1, _021E2F64 ; =UNK04_0221070C
- mov r0, r4
- ldr r1, [r1, r2]
- bl MOD04_022021C0
- ldmia sp!, {r4, pc}
-_021E2F44:
- ldr r1, _021E2F64 ; =UNK04_0221070C
- mov r0, r4
- ldr r1, [r1, r2]
- ldr r1, [r1]
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E2F5C: .word UNK04_02210704
-_021E2F60: .word UNK04_02210705
-_021E2F64: .word UNK04_0221070C
- arm_func_end MOD04_021E2E18
-
- 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 MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- 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 MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E2FF8
- ldr r4, _021E30D8 ; =UNK04_0220BAC4
- ldr r6, _021E30DC ; =UNK04_0220D3A0
- mvn r5, #0
-_021E2FB4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, sb
- bl MOD04_02203BF4
- mov r1, r6
- mov r2, r5
- bl MOD04_0220394C
- cmp r0, r8
- movgt r8, r0
- ldr r0, [r4, sb, lsl #2]
- add sb, sb, #1
- add r7, r7, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp sb, r0
- blt _021E2FB4
-_021E2FF8:
- mov r0, #0x64
- bl MOD04_021DE8C8
- mov sb, r0
- mov r6, #0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E3090
- add r5, sp, #0
- mov fp, r6
- mov r4, #0x64
-_021E3028:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- sub r0, r0, #1
- cmp r6, r0
- beq _021E3090
- cmp r6, #0
- subgt r0, r6, #1
- ldrgt sl, [r5, r0, lsl #2]
- ldr r0, _021E30D8 ; =UNK04_0220BAC4
- movle sl, fp
- ldr r2, [r0, r6, lsl #2]
- mov r1, r7
- mul r0, r2, r4
- bl _s32_div_f
- add r0, r0, sl
- str r0, [r5, r6, lsl #2]
- ldr r0, [r5, r6, lsl #2]
- cmp sb, r0
- blo _021E3090
- add r6, r6, #1
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r6, r0
- blt _021E3028
-_021E3090:
- mvn r0, #0x80000000
- cmp r8, r0
- addlt r8, r8, #1
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r6
- bl MOD04_02203BF4
- ldr r1, _021E30DC ; =UNK04_0220D3A0
- mov r2, r8
- bl MOD04_02203A48
- bl MOD04_021E26E4
- mov r1, #0
- ldr r0, [r0, #0xe4]
- ldr r2, _021E30DC ; =UNK04_0220D3A0
- mov r3, r1
- bl MOD04_02203BD4
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E30D8: .word UNK04_0220BAC4
-_021E30DC: .word UNK04_0220D3A0
- arm_func_end MOD04_021E2F68
-
- 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 MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E3268
- mov r0, #0x80
- mov r4, #1
- mov r5, r8
- str r0, [sp, #8]
- mov fp, #0x100
-_021E3120:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r8
- bl MOD04_02203BF4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E31BC
- ldr r1, _021E32D4 ; =UNK04_0220D3AC
- mov r0, r6
- mov r2, r5
- bl MOD04_0220394C
- mov sb, r0
- mov sl, r5
- mov r7, r4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E31B4
-_021E3170:
- bl MOD04_021E26E4
- add r0, r0, r7, lsl #2
- ldr r0, [r0, #0xf4]
- cmp sb, r0
- bne _021E31A0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r6
- bl MOD04_02203C50
- mov sl, r4
- sub r8, r8, #1
- b _021E31B4
-_021E31A0:
- add r7, r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r7, r0
- ble _021E3170
-_021E31B4:
- cmp sl, #0
- bne _021E3250
-_021E31BC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x474]
- cmp r0, #0
- beq _021E3238
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldr r1, [r0, #0x478]
- ldr r2, [r7, #0x474]
- mov r0, r8
- blx r2
- mov r7, r0
- cmp r7, #0
- ble _021E321C
- ldr r0, _021E32D8 ; =0x007FFFFF
- cmp r7, r0
- movgt r7, r0
- mov r0, fp
- bl MOD04_021DE8C8
- orr r2, r0, r7, lsl #8
- ldr r1, _021E32DC ; =UNK04_0220D3A0
- mov r0, r6
- bl MOD04_02203A48
- b _021E3250
-_021E321C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r6
- bl MOD04_02203C50
- str r4, [sp, #4]
- sub r8, r8, #1
- b _021E3250
-_021E3238:
- ldr r0, [sp, #8]
- bl MOD04_021DE8C8
- mov r2, r0
- ldr r1, _021E32DC ; =UNK04_0220D3A0
- mov r0, r6
- bl MOD04_02203A48
-_021E3250:
- add r8, r8, #1
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r8, r0
- blt _021E3120
-_021E3268:
- ldr r0, [sp]
- cmp r0, #0
- beq _021E32A0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- beq _021E32A0
- bl MOD04_021E26E4
- mov r1, #0
- ldr r0, [r0, #0xe4]
- ldr r2, _021E32DC ; =UNK04_0220D3A0
- mov r3, r1
- bl MOD04_02203BD4
-_021E32A0:
- ldr r0, [sp, #4]
- cmp r0, #0
- beq _021E32C8
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- addeq sp, sp, #0xc
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E32C8:
- mov r0, #1
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E32D4: .word UNK04_0220D3AC
-_021E32D8: .word 0x007FFFFF
-_021E32DC: .word UNK04_0220D3A0
- arm_func_end MOD04_021E30E0
-
- arm_func_start MOD04_021E32E0
-MOD04_021E32E0: ; 0x021E32E0
- bx lr
- arm_func_end MOD04_021E32E0
-
- arm_func_start MOD04_021E32E4
-MOD04_021E32E4: ; 0x021E32E4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r0
- cmp r1, #0
- beq _021E330C
- cmp r1, #4
- beq _021E331C
- add sp, sp, #4
- cmp r1, #5
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E330C:
- mov r0, r2
- bl MOD04_021E32E0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E331C:
- mov r5, #0
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E336C
-_021E332C:
- mov r0, r6
- mov r1, r5
- bl MOD04_02203BF4
- mov r4, r0
- bl MOD04_021E3F98
- cmp r0, #0
- bne _021E3358
- mov r0, r6
- mov r1, r4
- bl MOD04_02203C50
- sub r5, r5, #1
-_021E3358:
- mov r0, r6
- add r5, r5, #1
- bl MOD04_02203BE4
- cmp r5, r0
- blt _021E332C
-_021E336C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #2
- beq _021E3394
- cmp r0, #3
- beq _021E348C
- cmp r0, #5
- beq _021E3508
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3394:
- mov r0, r6
- mov r5, #0
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E3424
-_021E33A8:
- mov r0, r6
- mov r1, r5
- bl MOD04_02203BF4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- beq _021E3410
- bl MOD04_021E26E4
- mov r7, r0
- mov r0, r4
- bl MOD04_02203908
- ldr r1, [r7, #0x1c]
- cmp r1, r0
- bne _021E3410
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- cmp r0, #0
- beq _021E3410
- bl MOD04_021E26E4
- mov r7, r0
- mov r0, r4
- bl MOD04_022038E4
- ldrh r1, [r7, #0x1a]
- cmp r1, r0
- beq _021E3424
-_021E3410:
- mov r0, r6
- add r5, r5, #1
- bl MOD04_02203BE4
- cmp r5, r0
- blt _021E33A8
-_021E3424:
- mov r0, r6
- bl MOD04_02203BE4
- cmp r5, r0
- bge _021E3464
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E7E5C
- bl MOD04_021E38E8
- add sp, sp, #4
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3464:
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- add sp, sp, #4
- str r1, [r4, #0xf0]
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E348C:
- mov r0, #1
- bl MOD04_021E30E0
- bl MOD04_021E2F68
- mov r0, r6
- bl MOD04_02203BE4
- cmp r0, #0
- beq _021E34E0
- mov r0, #0
- mov r1, r0
- bl MOD04_021E6038
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, r6, r7, pc}
- mov r0, #4
- 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 MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- add sp, sp, #4
- str r1, [r4, #0xf0]
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3508:
- mov r0, r6
- bl MOD04_02203BE4
- cmp r0, #0
- beq _021E3580
- mov r4, #0
-_021E351C:
- mov r0, r6
- mov r1, r4
- bl MOD04_02203BF4
- mov r5, r0
- bl MOD04_02203908
- mov r7, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1b8]
- cmp r7, r0
- bne _021E3564
- mov r0, r5
- bl MOD04_022038E4
- mov r7, r0
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb4]
- cmp r7, r0
- beq _021E3580
-_021E3564:
- mov r0, r6
- mov r1, r5
- bl MOD04_02203C50
- mov r0, r6
- bl MOD04_02203BE4
- cmp r0, #0
- bne _021E351C
-_021E3580:
- mov r0, r6
- bl MOD04_02203BE4
- cmp r0, #0
- beq _021E3684
- mov r0, r6
- mov r1, #0
- bl MOD04_02203BF4
- ldr r1, _021E36AC ; =UNK04_0220D3AC
- mov r2, #0
- bl MOD04_0220394C
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E3650
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r4, r0
- bne _021E3650
- mov r0, #0
- bl MOD04_021E30E0
- cmp r0, #0
- beq _021E3604
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E3650
- bl MOD04_021E5824
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E3650
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3604:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, r6, r7, pc}
- mov r0, #4
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, r0
- mov r0, #0
- ldr r2, [r1, #0xf4]
- mov r1, r0
- 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 MOD04_021E26D0
- mov r0, r6
- mov r1, #0
- bl MOD04_02203BF4
- mov r2, r0
- mov r0, #0
- mov r1, r0
- bl MOD04_021E7B04
- bl MOD04_021E37A4
- add sp, sp, #4
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3684:
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- str r1, [r4, #0xf0]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E36AC: .word UNK04_0220D3AC
- arm_func_end MOD04_021E32E4
-
- arm_func_start MOD04_021E36B0
-MOD04_021E36B0: ; 0x021E36B0
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #7
- addls pc, pc, r4, lsl #2
- b _021E3734
-_021E36CC: ; jump table
- b _021E3734 ; case 0
- b _021E36EC ; case 1
- b _021E36F8 ; case 2
- b _021E3708 ; case 3
- b _021E3714 ; case 4
- b _021E36F8 ; case 5
- b _021E3720 ; case 6
- b _021E372C ; case 7
-_021E36EC:
- mov r0, #9
- mvn r2, #0
- b _021E3734
-_021E36F8:
- mov r0, #0
- mov r2, r0
- mov r4, r0
- b _021E3734
-_021E3708:
- mov r0, #6
- mvn r2, #9
- b _021E3734
-_021E3714:
- mov r0, #6
- mvn r2, #0x1d
- b _021E3734
-_021E3720:
- mov r0, #6
- mvn r2, #0x45
- b _021E3734
-_021E372C:
- mov r0, #6
- mvn r2, #0x4f
-_021E3734:
- cmp r0, #0
- beq _021E3748
- ldr r1, _021E3750 ; =0xFFFEAC28
- add r1, r2, r1
- bl MOD04_021E8E08
-_021E3748:
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E3750: .word 0xFFFEAC28
- arm_func_end MOD04_021E36B0
-
- arm_func_start MOD04_021E3754
-MOD04_021E3754: ; 0x021E3754
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #1
- beq _021E3778
- cmp r4, #2
- beq _021E3780
- b _021E3788
-_021E3778:
- mov r0, #1
- ldmia sp!, {r4, pc}
-_021E3780:
- mov r0, #2
- ldmia sp!, {r4, pc}
-_021E3788:
- movs r0, #6
- beq _021E3798
- ldr r1, _021E37A0 ; =0xFFFEB007
- bl MOD04_021E8E08
-_021E3798:
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E37A0: .word 0xFFFEB007
- arm_func_end MOD04_021E3754
-
- arm_func_start MOD04_021E37A4
-MOD04_021E37A4: ; 0x021E37A4
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #1
- beq _021E37D4
- cmp r4, #2
- beq _021E37E0
- cmp r4, #3
- moveq r0, #6
- mvneq r2, #0x1d
- b _021E37E8
-_021E37D4:
- mov r0, #9
- mvn r2, #0
- b _021E37E8
-_021E37E0:
- mov r0, #6
- mvn r2, #0x31
-_021E37E8:
- ldr r1, _021E37FC ; =0xFFFEB010
- add r1, r2, r1
- bl MOD04_021E8E08
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E37FC: .word 0xFFFEB010
- arm_func_end MOD04_021E37A4
-
- arm_func_start MOD04_021E3800
-MOD04_021E3800: ; 0x021E3800
- stmdb sp!, {r4, r5, r6, lr}
- movs r6, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r6, #5
- addls pc, pc, r6, lsl #2
- b _021E386C
-_021E381C: ; jump table
- b _021E386C ; case 0
- b _021E3834 ; case 1
- b _021E3840 ; case 2
- b _021E384C ; case 3
- b _021E3858 ; case 4
- b _021E3864 ; case 5
-_021E3834:
- mov r4, #6
- mvn r5, #0x31
- b _021E386C
-_021E3840:
- mov r4, #6
- mvn r5, #0x3b
- b _021E386C
-_021E384C:
- mov r4, #6
- mvn r5, #0x1d
- b _021E386C
-_021E3858:
- mov r4, #6
- mvn r5, #0x4f
- b _021E386C
-_021E3864:
- mov r4, #6
- mvn r5, #0x13
-_021E386C:
- bl MOD04_021DF88C
- cmp r0, #2
- beq _021E388C
- cmp r0, #4
- beq _021E389C
- cmp r0, #5
- beq _021E38B0
- b _021E38C4
-_021E388C:
- mov r0, r4
- sub r1, r5, #0xfa00
- bl MOD04_021E0EAC
- b _021E38D4
-_021E389C:
- ldr r1, _021E38DC ; =0xFFFEDEF0
- mov r0, r4
- add r1, r5, r1
- bl MOD04_021E2114
- b _021E38D4
-_021E38B0:
- ldr r1, _021E38E0 ; =0xFFFEB7E0
- mov r0, r4
- add r1, r5, r1
- bl MOD04_021E8E08
- b _021E38D4
-_021E38C4:
- ldr r1, _021E38E4 ; =0xFFFE90D0
- mov r0, r4
- add r1, r5, r1
- bl MOD04_021DD6B0
-_021E38D4:
- mov r0, r6
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E38DC: .word 0xFFFEDEF0
-_021E38E0: .word 0xFFFEB7E0
-_021E38E4: .word 0xFFFE90D0
- arm_func_end MOD04_021E3800
-
- arm_func_start MOD04_021E38E8
-MOD04_021E38E8: ; 0x021E38E8
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #6
- addls pc, pc, r4, lsl #2
- b _021E3964
-_021E3904: ; jump table
- b _021E3964 ; case 0
- b _021E3920 ; case 1
- b _021E392C ; case 2
- b _021E3938 ; case 3
- b _021E3944 ; case 4
- b _021E3950 ; case 5
- b _021E395C ; case 6
-_021E3920:
- mov r0, #6
- mvn r2, #0x31
- b _021E3964
-_021E392C:
- mov r0, #6
- mvn r2, #0x1d
- b _021E3964
-_021E3938:
- mov r0, #6
- mvn r2, #0x13
- b _021E3964
-_021E3944:
- mov r0, #6
- mvn r2, #0x27
- b _021E3964
-_021E3950:
- mov r0, #9
- mvn r2, #0
- b _021E3964
-_021E395C:
- mov r0, #9
- mvn r2, #1
-_021E3964:
- ldr r1, _021E3978 ; =0xFFFEB3F8
- add r1, r2, r1
- bl MOD04_021E8E08
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E3978: .word 0xFFFEB3F8
- arm_func_end MOD04_021E38E8
-
- arm_func_start MOD04_021E397C
-MOD04_021E397C: ; 0x021E397C
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #4
- addls pc, pc, r4, lsl #2
- b _021E39D8
-_021E3998: ; jump table
- b _021E39D8 ; case 0
- b _021E39AC ; case 1
- b _021E39B8 ; case 2
- b _021E39C4 ; case 3
- b _021E39D0 ; case 4
-_021E39AC:
- mov r0, #9
- mvn r2, #0
- b _021E39D8
-_021E39B8:
- mov r0, #9
- mvn r2, #1
- b _021E39D8
-_021E39C4:
- mov r0, #6
- mvn r2, #9
- b _021E39D8
-_021E39D0:
- mov r0, #6
- mvn r2, #0x13
-_021E39D8:
- ldr r1, _021E39EC ; =0xFFFEC398
- add r1, r2, r1
- bl MOD04_021E8E08
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E39EC: .word 0xFFFEC398
- arm_func_end MOD04_021E397C
-
- 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 ; =UNK04_022106D4
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- ldrb r0, [r0]
- cmp r0, #0
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x13
- bne _021E3C58
- mov r0, #0
- bl MOD04_021E3EC4
- ldr r1, _021E3E1C ; =UNK04_022106D4
- ldr r5, [r1]
- ldr r1, [r5, #8]
- cmp r1, r0
- bne _021E3B2C
- ldr r1, [r5, #0xc]
- cmp r1, r0
- bne _021E3AB8
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x16]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- mov r0, #0
- sub r1, r1, #1
- strb r1, [r4, #0x1a4]
- bl MOD04_021E51C0
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3AB8:
- bl OS_GetTick
- str r0, [r5, #0x18]
- str r1, [r5, #0x1c]
- mov r0, #0
- str r0, [r5, #8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E3B0C
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- add sp, sp, #8
- str r1, [r4, #0xf0]
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3B0C:
- mov r0, #4
- bl MOD04_021E26D0
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_021E5D30
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3B2C:
- ldrb r4, [r5, #2]
- bl OS_GetTick
- ldr r3, [r5, #0x18]
- ldr r2, [r5, #0x1c]
- subs r3, r0, r3
- sbc r0, r1, r2
- mov r1, r0, lsl #6
- ldr r2, _021E3E20 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E3E24 ; =0x00001770
- mul r2, r4, r2
- cmp r1, r2, asr #31
- cmpeq r0, r2
- addlo sp, sp, #8
- ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- cmp r4, #5
- bls _021E3B98
- mov r0, #1
- bl MOD04_021E3E28
- bl MOD04_021E4B40
- mov r0, #1
- bl MOD04_021E4CF8
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3B98:
- mov r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E3C3C
- ldr r8, _021E3E1C ; =UNK04_022106D4
- mov r5, #0
- mov r4, #0x11
- mov r6, r7
-_021E3BBC:
- bl MOD04_021E26E4
- add r0, r0, r7
- ldrb r0, [r0, #0x2d0]
- ldr r1, [r8]
- mov r0, r6,lsl r0
- ldr r1, [r1, #8]
- ands r0, r1, r0
- bne _021E3C28
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- str r5, [sp]
- str r5, [sp, #4]
- add r0, r0, r7, lsl #1
- add r1, sl, r7, lsl #2
- add r2, sb, r7, lsl #2
- ldrh r3, [r0, #0xa4]
- ldr r1, [r1, #0xf4]
- ldr r2, [r2, #0x24]
- mov r0, r4
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r7, r0
- ble _021E3BBC
-_021E3C3C:
- ldr r0, _021E3E1C ; =UNK04_022106D4
- add sp, sp, #8
- ldr r1, [r0]
- ldrb r0, [r1, #2]
- add r0, r0, #1
- strb r0, [r1, #2]
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3C58:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- beq _021E3C7C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #3
- addne sp, sp, #8
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3C7C:
- ldr r0, _021E3E1C ; =UNK04_022106D4
- ldr r4, [r0]
- bl MOD04_021E26E4
- ldrb r1, [r4, #1]
- ldrb r2, [r0, #0xd]
- sub r0, r1, #1
- cmp r2, r0
- addlt sp, sp, #8
- ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- ldrb r0, [r4, #2]
- cmp r0, #0
- bne _021E3CF0
- ldr r0, _021E3E1C ; =UNK04_022106D4
- ldr r4, [r0]
- bl OS_GetTick
- ldr r3, [r4, #0x10]
- ldr r2, [r4, #0x14]
- subs r3, r0, r3
- sbc r0, r1, r2
- mov r1, r0, lsl #6
- ldr r2, _021E3E20 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, [r4, #4]
- cmp r1, #0
- cmpeq r0, r2
- bhs _021E3D48
-_021E3CF0:
- ldrb r0, [r4, #2]
- cmp r0, #0
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- ldr r0, _021E3E1C ; =UNK04_022106D4
- ldr r4, [r0]
- bl OS_GetTick
- ldr r3, [r4, #0x18]
- ldr r2, [r4, #0x1c]
- subs r3, r0, r3
- sbc r0, r1, r2
- mov r1, r0, lsl #6
- ldr r2, _021E3E20 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, [r4, #4]
- cmp r1, #0
- cmpeq r0, r2, lsr #2
- addlo sp, sp, #8
- ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3D48:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r0, #0
- beq _021E3D74
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- 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 MOD04_021E26D0
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E3DF8
- mov r6, #0
- mov r5, #0x11
-_021E3D98:
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- str r6, [sp]
- str r6, [sp, #4]
- add r0, r0, r4, lsl #1
- add r1, r8, r4, lsl #2
- add r2, r7, r4, lsl #2
- ldrh r3, [r0, #0xa4]
- ldr r1, [r1, #0xf4]
- ldr r2, [r2, #0x24]
- mov r0, r5
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E3D98
-_021E3DF8:
- ldr r0, _021E3E1C ; =UNK04_022106D4
- ldr r4, [r0]
- bl OS_GetTick
- str r0, [r4, #0x18]
- str r1, [r4, #0x1c]
- mov r0, #1
- strb r0, [r4, #2]
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- .align 2, 0
-_021E3E1C: .word UNK04_022106D4
-_021E3E20: .word 0x000082EA
-_021E3E24: .word 0x00001770
- arm_func_end MOD04_021E39F0
-
- arm_func_start MOD04_021E3E28
-MOD04_021E3E28: ; 0x021E3E28
- stmdb sp!, {r4, lr}
- ldr r1, _021E3E98 ; =UNK04_022106D4
- mov r4, r0
- ldr r3, [r1]
- cmp r3, #0
- ldmeqia sp!, {r4, pc}
- ldrb r0, [r3]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- mov r2, #0
- str r2, [r3, #8]
- ldr r0, [r1]
- str r2, [r0, #0xc]
- ldr r0, [r1]
- strb r2, [r0, #2]
- bl OS_GetTick
- ldr r2, _021E3E98 ; =UNK04_022106D4
- cmp r4, #0
- ldr r2, [r2]
- str r0, [r2, #0x18]
- str r1, [r2, #0x1c]
- ldmneia sp!, {r4, pc}
- bl OS_GetTick
- ldr r2, _021E3E98 ; =UNK04_022106D4
- ldr r2, [r2]
- str r0, [r2, #0x10]
- str r1, [r2, #0x14]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E3E98: .word UNK04_022106D4
- arm_func_end MOD04_021E3E28
-
- arm_func_start MOD04_021E3E9C
-MOD04_021E3E9C: ; 0x021E3E9C
- stmdb sp!, {r4, lr}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ad]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1f8]
- str r1, [r4, #0x1fc]
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E3E9C
-
- arm_func_start MOD04_021E3EC4
-MOD04_021E3EC4: ; 0x021E3EC4
- stmdb sp!, {r4, r5, r6, lr}
- cmp r0, #0
- mov r6, #0
- beq _021E3EE4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x2f0]
- bic r0, r0, #1
- ldmia sp!, {r4, r5, r6, pc}
-_021E3EE4:
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E3F20
- mov r4, r5
-_021E3EFC:
- bl MOD04_021E26E4
- add r0, r0, r5
- ldrb r0, [r0, #0x2d0]
- add r5, r5, #1
- orr r6, r6, r4, lsl r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E3EFC
-_021E3F20:
- mov r0, r6
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E3EC4
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- bgt _021E3F8C
-_021E3F50:
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r5, r0
- bne _021E3F78
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E3F50
-_021E3F8C:
- mov r0, #0xff
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E3F28
-
- arm_func_start MOD04_021E3F98
-MOD04_021E3F98: ; 0x021E3F98
- stmdb sp!, {r4, lr}
- ldr r1, _021E405C ; =UNK04_0220D3B4
- mvn r2, #0
- mov r4, r0
- bl MOD04_0220394C
- mvn r2, #0
- cmp r0, r2
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4060 ; =UNK04_0220D3C0
- mov r0, r4
- bl MOD04_0220394C
- mvn r2, #0
- cmp r0, r2
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4064 ; =UNK04_0220D3CC
- mov r0, r4
- bl MOD04_0220394C
- mvn r2, #0
- cmp r0, r2
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4068 ; =UNK04_0220D3D8
- mov r0, r4
- bl MOD04_0220394C
- mvn r1, #0
- cmp r0, r1
- bne _021E4028
- ldr r1, _021E4068 ; =UNK04_0220D3D8
- mov r0, r4
- mov r2, #0
- bl MOD04_0220394C
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
-_021E4028:
- ldr r1, _021E406C ; =UNK04_0220D3E4
- mov r0, r4
- mvn r2, #0
- bl MOD04_0220394C
- mvn r1, #0
- cmp r0, r1
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4070 ; =UNK04_0220D3AC
- mov r0, r4
- mov r2, #0
- bl MOD04_0220394C
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E405C: .word UNK04_0220D3B4
-_021E4060: .word UNK04_0220D3C0
-_021E4064: .word UNK04_0220D3CC
-_021E4068: .word UNK04_0220D3D8
-_021E406C: .word UNK04_0220D3E4
-_021E4070: .word UNK04_0220D3AC
- arm_func_end MOD04_021E3F98
-
- arm_func_start MOD04_021E4074
-MOD04_021E4074: ; 0x021E4074
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x344]
- cmp r0, #0
- ble _021E40E8
-_021E40AC:
- bl MOD04_021E26E4
- add r0, r0, r4
- ldrb r0, [r0, #0x304]
- bl MOD04_021E1F84
- cmp r0, #0
- ble _021E40D4
- cmp r0, r5
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, pc}
-_021E40D4:
- add r4, r4, #1
- bl MOD04_021E26E4
- ldr r0, [r0, #0x344]
- cmp r4, r0
- blt _021E40AC
-_021E40E8:
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E4074
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r0, #0
- blt _021E413C
-_021E4114:
- bl MOD04_021E26E4
- add r0, r0, r5
- ldrb r0, [r0, #0x2d0]
- cmp r6, r0
- beq _021E413C
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r5, r0
- ble _021E4114
-_021E413C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r5, r0
- bgt _021E415C
- add r0, r6, #1
- and r6, r0, #0xff
- cmp r6, #0x20
- blo _021E4100
-_021E415C:
- mov r0, r6
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E40F4
-
- arm_func_start MOD04_021E4164
-MOD04_021E4164: ; 0x021E4164
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- ldr r6, _021E41BC ; =UNK04_02210704
- mov r7, #0
- mov r4, r7
- mov r5, #4
-_021E417C:
- ldr r1, [r6, #4]
- cmp r1, #0
- beq _021E4194
- mov r0, r5
- mov r2, r4
- bl MOD04_021DD904
-_021E4194:
- add r7, r7, #1
- cmp r7, #0x9a
- add r6, r6, #0xc
- blt _021E417C
- ldr r1, _021E41BC ; =UNK04_02210704
- ldr r2, _021E41C0 ; =0x00000738
- mov r0, #0
- bl MIi_CpuClear32
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E41BC: .word UNK04_02210704
-_021E41C0: .word 0x00000738
- arm_func_end MOD04_021E4164
-
- arm_func_start MOD04_021E41C4
-MOD04_021E41C4: ; 0x021E41C4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #8
- beq _021E41FC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xe
- beq _021E41FC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xf
- bne _021E4240
-_021E41FC:
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1e8]
- ldr r0, [r0, #0x1ec]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E43D8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- mov r4, r0
- mov r5, r1
- b _021E424C
-_021E4240:
- add sp, sp, #4
- mov r0, #1
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E424C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #8
- beq _021E4270
- cmp r0, #0xe
- beq _021E42A4
- cmp r0, #0xf
- beq _021E43AC
- b _021E43CC
-_021E4270:
- ldr r0, _021E43DC ; =0x00001770
- cmp r5, #0
- cmpeq r4, r0
- bls _021E43CC
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0xe
- bl MOD04_021E4604
- cmp r0, #0
- bne _021E43CC
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E42A4:
- ldr r0, _021E43DC ; =0x00001770
- cmp r5, #0
- cmpeq r4, r0
- bls _021E43CC
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1ac]
- add r1, r1, #1
- strb r1, [r0, #0x1ac]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ac]
- cmp r0, #5
- bls _021E4330
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d8]
- bl MOD04_021E4A00
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E4324
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ac]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1e8]
- str r1, [r4, #0x1ec]
- b _021E43CC
-_021E4324:
- mov r0, #2
- bl MOD04_021E4CF8
- b _021E43CC
-_021E4330:
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E43CC
- mov r5, #0xd
- mov r6, r4
-_021E434C:
- bl MOD04_021E26E4
- mov r7, r0
- 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 MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- mov r1, r5
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E434C
- b _021E43CC
-_021E43AC:
- 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 MOD04_021E4CF8
-_021E43CC:
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E43D8: .word 0x000082EA
-_021E43DC: .word 0x00001770
- arm_func_end MOD04_021E41C4
-
- arm_func_start MOD04_021E43E0
-MOD04_021E43E0: ; 0x021E43E0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl MOD04_021DF88C
- cmp r0, #6
- movne r0, #1
- ldmneia sp!, {r4, r5, r6, pc}
- cmp r5, #0xd
- beq _021E441C
- cmp r5, #0xe
- beq _021E4458
- cmp r5, #0xf
- beq _021E45E0
- b _021E45F8
-_021E441C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #8
- beq _021E443C
- mov r0, #8
- bl MOD04_021E26D0
- mov r0, r4
- bl MOD04_021E4B78
-_021E443C:
- mov r0, r6
- mov r1, #0xe
- bl MOD04_021E4604
- cmp r0, #0
- bne _021E45F8
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E4458:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xe
- bne _021E45C4
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1e8]
- ldr r0, [r0, #0x1ec]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E4600 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- mov r2, r0, lsr #1
- mov r0, r1, lsr #1
- cmp r0, #0
- orr r2, r2, r1, lsl #31
- cmpeq r2, #0x12c
- bls _021E4524
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1e8]
- ldr r0, [r0, #0x1ec]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E4600 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- mov r3, r0, lsr #1
- mov r0, #0x12c
- orr r3, r3, r1, lsl #31
- rsb r0, r0, #0
- mvn r2, #0
- adds r5, r3, r0
- adc r4, r2, r1, lsr #1
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb2]
- cmp r4, r0, asr #31
- cmpeq r5, r0
- bls _021E4524
- bl MOD04_021E26E4
- add r0, r0, #0x100
- strh r5, [r0, #0xb2]
-_021E4524:
- mov r0, r6
- mov r1, #0
- bl MOD04_021E3F28
- mov r4, r0
- cmp r4, #0xff
- beq _021E4550
- 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 MOD04_021E3EC4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d8]
- cmp r4, r0
- bne _021E45F8
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E45B8
- mov r4, #0xf
-_021E4584:
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- mov r1, r4
- bl MOD04_021E4604
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E4584
-_021E45B8:
- mov r0, #0xf
- bl MOD04_021E26D0
- b _021E45F8
-_021E45C4:
- mov r0, r6
- mov r1, #0xf
- bl MOD04_021E4604
- cmp r0, #0
- bne _021E45F8
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E45E0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #8
- bne _021E45F8
- mov r0, #2
- bl MOD04_021E4CF8
-_021E45F8:
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E4600: .word 0x000082EA
- arm_func_end MOD04_021E43E0
-
- arm_func_start MOD04_021E4604
-MOD04_021E4604: ; 0x021E4604
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- mov r5, r1
- cmp r5, #0xd
- mov r6, r0
- movne r4, #0
- bne _021E4630
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- mov r4, #1
- str r0, [sp, #8]
-_021E4630:
- add r0, sp, #8
- str r0, [sp]
- mov r2, #0
- mov r0, r5
- mov r1, r6
- mov r3, r2
- str r4, [sp, #4]
- bl MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x10
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1e8]
- str r1, [r4, #0x1ec]
- mov r0, #1
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E4604
-
- arm_func_start MOD04_021E4684
-MOD04_021E4684: ; 0x021E4684
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #9
- beq _021E46BC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x10
- beq _021E46BC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x11
- bne _021E4700
-_021E46BC:
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1e0]
- ldr r0, [r0, #0x1e4]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E4908 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- mov r4, r0
- mov r5, r1
- b _021E470C
-_021E4700:
- add sp, sp, #4
- mov r0, #1
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E470C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #9
- beq _021E4730
- cmp r0, #0x10
- beq _021E47A0
- cmp r0, #0x11
- beq _021E48DC
- b _021E48FC
-_021E4730:
- ldr r0, _021E490C ; =0x00001770
- cmp r5, #0
- cmpeq r4, r0
- bls _021E48FC
- bl MOD04_021DF88C
- cmp r0, #5
- bne _021E477C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ad]
- cmp r0, #5
- blo _021E477C
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E48FC
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E477C:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1ad]
- add r1, r1, #1
- strb r1, [r0, #0x1ad]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x2d0]
- mov r1, #3
- bl MOD04_021E4910
- b _021E48FC
-_021E47A0:
- ldr r0, _021E490C ; =0x00001770
- cmp r5, #0
- cmpeq r4, r0
- bls _021E48FC
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1ab]
- add r1, r1, #1
- strb r1, [r0, #0x1ab]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ab]
- cmp r0, #5
- bls _021E4870
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E47F0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E4800
-_021E47F0:
- bl MOD04_021E4B40
- mov r0, #1
- bl MOD04_021E4CF8
- b _021E48FC
-_021E4800:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d4]
- bl MOD04_021E4A00
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E4850
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ab]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1e0]
- str r1, [r4, #0x1e4]
- b _021E48FC
-_021E4850:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E59D4
- cmp r0, #0
- bne _021E48FC
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E4870:
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E48FC
- mov r5, #2
- mov r6, r4
-_021E488C:
- bl MOD04_021E26E4
- mov r7, r0
- 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 MOD04_021E26E4
- add r0, r0, r4
- ldrb r0, [r0, #0x2d0]
- mov r1, r5
- bl MOD04_021E4910
-_021E48C4:
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E488C
- b _021E48FC
-_021E48DC:
- 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 MOD04_021E51C0
-_021E48FC:
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E4908: .word 0x000082EA
-_021E490C: .word 0x00001770
- arm_func_end MOD04_021E4684
-
- arm_func_start MOD04_021E4910
-MOD04_021E4910: ; 0x021E4910
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #8
- mov r4, r1
- mov r5, r0
- cmp r4, #2
- beq _021E4934
- cmp r4, #3
- beq _021E49AC
- b _021E49D0
-_021E4934:
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r6, r0
- ldrb r0, [r0, #0x2d0]
- mov r6, #1
- cmp r5, r0
- moveq r0, #1
- streqb r0, [sp]
- movne r0, #0
- strneb r0, [sp]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blo _021E49D0
-_021E4974:
- bl MOD04_021E26E4
- add r0, r0, r6
- ldrb r0, [r0, #0x2d0]
- cmp r5, r0
- streqb r6, [sp, #1]
- streqb r5, [sp, #2]
- beq _021E49D0
- add r0, r6, #1
- and r6, r0, #0xff
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r6, r0
- bls _021E4974
- b _021E49D0
-_021E49AC:
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb0]
- strb r0, [sp]
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb0]
- mov r0, r0, asr #8
- strb r0, [sp, #1]
-_021E49D0:
- add r2, sp, #0
- mov r0, r4
- mov r1, r5
- mov r3, #4
- bl MOD04_021EAF20
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1e0]
- str r1, [r4, #0x1e4]
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E4910
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E4A8C
- add r4, sp, #8
- add r5, sp, #0x88
- mov r6, r7
-_021E4A34:
- bl MOD04_021E26E4
- add r0, r0, r7
- ldrb r0, [r0, #0x2d0]
- mov r0, r6,lsl r0
- ands r0, sl, r0
- beq _021E4A64
- 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 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r7, r0
- ble _021E4A34
-_021E4A8C:
- cmp r8, #0
- mov sl, #0
- ble _021E4AE4
- add r7, sp, #8
- add r5, sp, #0x88
- mov r4, sl
- mov r6, #0x10
-_021E4AA8:
- str r7, [sp]
- str sb, [sp, #4]
- ldr r1, [r5, sl, lsl #2]
- mov r0, r6
- mov r2, r4
- mov r3, r4
- bl MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x108
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- add sl, sl, #1
- cmp sl, r8
- blt _021E4AA8
-_021E4AE4:
- bl MOD04_021E26E4
- mov r1, #2
- strb r1, [r0, #0x1a8]
- cmp sb, #0
- mov r6, #0
- ble _021E4B28
- add r5, sp, #8
- mov r4, r6
-_021E4B04:
- ldr r0, [r5, r6, lsl #2]
- mov r1, r4
- bl MOD04_021E3F28
- cmp r0, #0xff
- beq _021E4B1C
- bl MOD04_021DF9D4
-_021E4B1C:
- add r6, r6, #1
- cmp r6, sb
- blt _021E4B04
-_021E4B28:
- 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_end MOD04_021E4A00
-
- arm_func_start MOD04_021E4B40
-MOD04_021E4B40: ; 0x021E4B40
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- mov r1, #2
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a8]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E4B40
-
- arm_func_start MOD04_021E4B78
-MOD04_021E4B78: ; 0x021E4B78
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl MOD04_021E26E4
- str r5, [r0, #0x20c]
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- mov r0, r5
- add r1, r1, #1
- bl MOD04_021DF648
- movs r4, r0
- beq _021E4BD4
- bl MOD04_021E26E4
- mov r1, #2
- strb r1, [r0, #0x1a8]
- ldr r0, [r4]
- 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 MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- mov r0, r5
- add r1, r1, #1
- bl MOD04_021E89EC
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E4B78
-
- arm_func_start MOD04_021E4BF4
-MOD04_021E4BF4: ; 0x021E4BF4
- stmdb sp!, {r4, lr}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- beq _021E4CA4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E4C64
- mov r0, #3
- bl MOD04_021E26D0
- mov r0, #0
- bl MOD04_021E7E5C
- mov r4, r0
- bl MOD04_021E38E8
- cmp r0, #0
- beq _021E4CAC
- mov r0, r4
- ldmia sp!, {r4, pc}
-_021E4C64:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E4CAC
- mov r0, #4
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- mov r1, #0
- bl MOD04_021E6038
- mov r4, r0
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E4CAC
- mov r0, r4
- ldmia sp!, {r4, pc}
-_021E4CA4:
- mov r0, #1
- bl MOD04_021E4CF8
-_021E4CAC:
- mov r0, #0
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E4BF4
-
- arm_func_start MOD04_021E4CB4
-MOD04_021E4CB4: ; 0x021E4CB4
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E4B40
- mov r0, #1
- bl MOD04_021E4CF8
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E4CB4
-
- arm_func_start MOD04_021E4CF8
-MOD04_021E4CF8: ; 0x021E4CF8
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #8
- movs r4, r0
- bne _021E4D14
- bl MOD04_021E4ED4
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
-_021E4D14:
- bl MOD04_021E8174
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E4D38
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E4D94
-_021E4D38:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r6, #1
- movne r6, #0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_021E26E4
- str r4, [sp]
- ldr r1, [r0, #0x468]
- mov r0, #0
- str r1, [sp, #4]
- ldr ip, [r5, #0x464]
- mov r2, r6
- mov r1, #1
- mov r3, r0
- blx ip
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
-_021E4D94:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E4DC8
- cmp r4, #1
- addne sp, sp, #8
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, #0
- bl MOD04_021E7E5C
- bl MOD04_021E38E8
- add sp, sp, #8
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E4DC8:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- addne sp, sp, #8
- ldmneia sp!, {r4, r5, r6, pc}
- cmp r4, #1
- addne sp, sp, #8
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, #0
- mov r1, r0
- mov r2, r0
- bl MOD04_021E5D30
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E4CF8
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E4EC8
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20]
- cmp r0, #0
- beq _021E4EC8
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r1, [r5, #0x20]
- ldr r0, [r0, #0x200]
- cmp r1, r0
- beq _021E4EC8
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- add r2, sp, #8
- mov r1, #1
- str r2, [sp]
- str r1, [sp, #4]
- ldrb r3, [r0, #0xd]
- ldrb r2, [r6, #0xd]
- ldr r1, [r7, #0x20]
- add r3, r3, #1
- add r2, r2, #1
- add r3, r4, r3, lsl #1
- add r2, r5, r2, lsl #2
- ldrh r3, [r3, #0xa4]
- ldr r2, [r2, #0x24]
- mov r0, #0xc
- bl MOD04_021E7884
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
-_021E4EC8:
- mov r0, r4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_end MOD04_021E4E00
-
- arm_func_start MOD04_021E4ED4
-MOD04_021E4ED4: ; 0x021E4ED4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- ldr r1, _021E4F90 ; =UNK04_0220D3F0
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_021E397C
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E8034
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- movne r6, #1
- bne _021E4F28
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- moveq r6, #1
- movne r6, #0
-_021E4F28:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r7, #1
- movne r7, #0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_021E26E4
- str r4, [sp]
- ldr r1, [r0, #0x468]
- mov r2, r7
- str r1, [sp, #4]
- ldr ip, [r5, #0x464]
- mov r3, r6
- mov r0, #0
- mov r1, #1
- blx ip
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a9]
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E4F90: .word UNK04_0220D3F0
- arm_func_end MOD04_021E4ED4
-
- arm_func_start MOD04_021E4F94
-MOD04_021E4F94: ; 0x021E4F94
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #2
- bne _021E4FC4
- bl MOD04_021E4ED4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E4FC4:
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E5038
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E5010
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- b _021E502C
-_021E5010:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
-_021E502C:
- bl MOD04_021E4ED4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E5038:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #5
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #7
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xc
- bne _021E50D8
-_021E5098:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r0, #0
- beq _021E50C4
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
-_021E50C4:
- bl MOD04_021E4E00
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
-_021E50D8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E5100
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E5100:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E512C
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
-_021E512C:
- bl MOD04_021E4ED4
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E4F94
-
- arm_func_start MOD04_021E5138
-MOD04_021E5138: ; 0x021E5138
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- beq _021E5168
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, pc}
-_021E5168:
- cmp r5, #0
- mov r4, #0
- bls _021E51B8
-_021E5174:
- ldr r0, [r6, r4, lsl #2]
- bl MOD04_021E4074
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- beq _021E51AC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, pc}
-_021E51AC:
- add r4, r4, #1
- cmp r4, r5
- blo _021E5174
-_021E51B8:
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E5138
-
- 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
- mov r5, #3
- mov r4, #0
- addls pc, pc, r0, lsl #2
- b _021E57E8
-_021E51DC: ; jump table
- b _021E51F0 ; case 0
- b _021E5594 ; case 1
- b _021E55D8 ; case 2
- b _021E569C ; case 3
- b _021E56BC ; case 4
-_021E51F0:
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- ldrb r1, [r6, #0x1a4]
- sub r0, r0, #1
- cmp r1, r0
- bge _021E52B0
- mov r0, #0xd
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r5, r0
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- add r0, r0, #1
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- add r0, r0, #1
- add r0, r5, r0
- ldrb r0, [r0, #0x2d0]
- str r0, [sp, #0x10]
- bl MOD04_021E26E4
- mov r5, r0
- 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 MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- mov r5, #5
- add r0, r0, #1
- add r0, r6, r0, lsl #1
- ldrh r0, [r0, #0xa4]
- str r0, [sp, #0x18]
- b _021E54FC
-_021E52B0:
- bl MOD04_021E26E4
- mov r1, r4
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, r4
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E52F0
- mov r0, r5
- bl MOD04_021E26D0
- b _021E5314
-_021E52F0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E530C
- mov r0, #4
- bl MOD04_021E26D0
- b _021E5314
-_021E530C:
- mov r0, #0xa
- bl MOD04_021E26D0
-_021E5314:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E534C
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r1, [r6, #0xd]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- bne _021E53FC
-_021E534C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E5384
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- 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 MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r6, #0xf4]
-_021E53A4:
- mov r0, #0x10
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1d4]
- mov r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E54EC
- mov r6, #2
-_021E53D0:
- bl MOD04_021E26E4
- add r0, r0, r7
- ldrb r0, [r0, #0x2d0]
- mov r1, r6
- bl MOD04_021E4910
- add r7, r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r7, r0
- ble _021E53D0
- b _021E54EC
-_021E53FC:
- mov r0, #0
- str r0, [sp, #8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r6, r0
- ldrb r0, [r0, #0x2d0]
- str r0, [sp, #0x10]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E5460
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r6, r0
- bl OS_GetTick
- str r0, [r6, #0xec]
- str r1, [r6, #0xf0]
- b _021E54EC
-_021E5460:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E54EC
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_021E5D30
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- bne _021E54EC
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #2
- blo _021E54EC
- bl MOD04_021E26E4
- mov r8, r0
- mov r0, #0
- bl MOD04_021E3EC4
- mov r6, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- mov r1, #1
- ldr r2, [r8, #0x1dc]
- add r0, r7, r0
- ldrb r0, [r0, #0x2d0]
- mvn r0, r1, lsl r0
- and r0, r6, r0
- cmp r2, r0
- beq _021E54EC
- bl MOD04_021E4CB4
- b _021E57E8
-_021E54EC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- movne r4, #1
-_021E54FC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x10
- beq _021E57E8
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- add r1, sp, #8
- str r1, [sp]
- str r5, [sp, #4]
- mov ip, r0
- ldrb r3, [sb, #0xd]
- ldrb r2, [r7, #0xd]
- ldrb r1, [ip, #0xd]
- add r5, sl, r3, lsl #2
- add r2, r8, r2, lsl #2
- add r3, r6, r1, lsl #1
- ldrh r3, [r3, #0xa4]
- ldr r1, [r5, #0xf4]
- ldr r2, [r2, #0x24]
- mov r0, #8
- bl MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x20
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x3cd]
- b _021E57E8
-_021E5594:
- mov r0, #1
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E55D0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- str r0, [r5, #0x20c]
-_021E55D0:
- mov r4, #1
- b _021E57E8
-_021E55D8:
- mov r0, #1
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E5600
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5620
-_021E5600:
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r5, #0x20]
-_021E5620:
- bl MOD04_021E3E9C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- bls _021E57E8
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- add r3, r8, #0xf4
- ldrb r2, [r0, #0xd]
- mov r1, #1
- mov r0, #9
- sub r2, r2, #1
- add r2, r3, r2, lsl #2
- str r2, [sp]
- str r1, [sp, #4]
- ldr r1, [r7, #0xf4]
- ldr r2, [r6, #0x24]
- ldrh r3, [r5, #0xa4]
- 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 MOD04_021E26D0
- bl MOD04_021E3E9C
- bl MOD04_021E26E4
- mov r1, r4
- str r1, [r0, #0x20c]
- mov r4, #1
- b _021E57E8
-_021E56BC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E56DC
- ldr r1, _021E581C ; =UNK04_0220D3F0
- mov r0, #2
- mov r2, r4
- bl MOD04_021E1E30
-_021E56DC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r7, #1
- movne r7, #0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r5, r0
- bl MOD04_021E26E4
- str r5, [sp]
- ldr r1, [r0, #0x468]
- mov r0, #0
- str r1, [sp, #4]
- ldr r5, [r6, #0x464]
- mov r2, r7
- mov r1, r0
- mov r3, r0
- blx r5
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E5750
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5758
-_021E5750:
- bl MOD04_021E8034
- b _021E57DC
-_021E5758:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- beq _021E5780
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203E80
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe4]
-_021E5780:
- bl MOD04_02200D6C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E57C8
- bl MOD04_021E85D4
- bl MOD04_021E397C
- cmp r0, #0
- addne sp, sp, #0x20
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- ldr r0, _021E5820 ; =UNK04_022106DC
- ldrb r1, [r0]
- cmp r1, #1
- moveq r1, #1
- streqb r1, [r0, #1]
- mov r0, #0xa
- bl MOD04_021E26D0
- b _021E57D0
-_021E57C8:
- mov r0, #1
- bl MOD04_021E26D0
-_021E57D0:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
-_021E57DC:
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203C04
- add sp, sp, #0x20
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- .align 2, 0
-_021E581C: .word UNK04_0220D3F0
-_021E5820: .word UNK04_022106DC
- arm_func_end MOD04_021E51C0
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E58BC
- mov r5, #0xa
-_021E5844:
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- add r1, r6, #0x348
- str r1, [sp]
- ldr ip, [r0, #0x348]
- add r3, r7, r4, lsl #1
- add ip, ip, #1
- str ip, [sp, #4]
- add r1, sb, r4, lsl #2
- add r2, r8, r4, lsl #2
- ldrh r3, [r3, #0xa4]
- ldr r1, [r1, #0xf4]
- ldr r2, [r2, #0x24]
- mov r0, r5
- bl MOD04_021E7884
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E5844
-_021E58BC:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- 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_end MOD04_021E5824
-
- arm_func_start MOD04_021E5908
-MOD04_021E5908: ; 0x021E5908
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E5950
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E5938
- bl MOD04_021E4B40
-_021E5938:
- ldr r1, _021E59D0 ; =0xFFFEC5D2
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E5950:
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r5, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E5998
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E5998:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E59B0
- bl MOD04_021E4CB4
- b _021E59C4
-_021E59B0:
- mov r0, #4
- bl MOD04_021E26D0
- mov r0, #0
- bl MOD04_021E5C44
- mov r4, r0
-_021E59C4:
- mov r0, r4
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E59D0: .word 0xFFFEC5D2
- arm_func_end MOD04_021E5908
-
- arm_func_start MOD04_021E59D4
-MOD04_021E59D4: ; 0x021E59D4
- stmdb sp!, {r4, r5, r6, lr}
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E5A0C
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r4, #0x20]
- ldr r0, [r0, #0x200]
- cmp r1, r0
- moveq r4, #0
- beq _021E5A10
-_021E5A0C:
- mov r4, #1
-_021E5A10:
- cmp r4, #0
- beq _021E5A3C
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
-_021E5A3C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0x1f
- bhs _021E5A6C
- bl MOD04_021E26E4
- mov r6, r0
- 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 MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E5AA0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E5AA0:
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r6, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- cmp r4, #0
- bne _021E5AE0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E5BE8
- bl MOD04_021E4CB4
- b _021E5BE8
-_021E5AE0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E5B1C
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- str r1, [r4, #0xf0]
- b _021E5BE8
-_021E5B1C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5B48
- mov r0, #4
- bl MOD04_021E26D0
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_021E5D30
- b _021E5BE8
-_021E5B48:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E5BE8
- mov r0, #0xe
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1d8]
- bl MOD04_021E26E4
- add r1, r0, #0x100
- mov r2, #0
- mov r0, r5
- strh r2, [r1, #0xb2]
- bl MOD04_021E4B78
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E5BD0
- mov r4, #0xd
-_021E5B9C:
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- mov r1, r4
- bl MOD04_021E4604
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E5B9C
-_021E5BD0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- bne _021E5BE8
- mov r0, #2
- bl MOD04_021E4CF8
-_021E5BE8:
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E59D4
-
- arm_func_start MOD04_021E5BF0
-MOD04_021E5BF0: ; 0x021E5BF0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xc
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [sp]
- str r1, [sp, #4]
- ldrh r3, [r0, #0xa4]
- ldr r2, [r4, #0x24]
- mov r1, r5
- mov r0, #5
- bl MOD04_021E7884
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- mov r0, r4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E5BF0
-
- arm_func_start MOD04_021E5C44
-MOD04_021E5C44: ; 0x021E5C44
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1cc]
- str r1, [r4, #0x1d0]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E5CC0
- mov r0, #3
- bl MOD04_021E26D0
- mov r0, #0
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5CF8
- mov r0, #0
- mov r1, r0
- mov r2, r5
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E5D20
- ldr r1, _021E5D2C ; =0xFFFEC5E6
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E5D20:
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E5D2C: .word 0xFFFEC5E6
- arm_func_end MOD04_021E5C44
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x1a5]
- str r0, [sp, #0xc]
- b _021E5D90
-_021E5D58:
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x344]
- ldrb r1, [r5, #0x1a5]
- sub r0, r0, #1
- cmp r1, r0
- movge r0, #0
- strge r0, [sp, #0xc]
- bge _021E5D90
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a5]
- add r0, r0, #1
- str r0, [sp, #0xc]
-_021E5D90:
- cmp r4, #0
- moveq r0, #1
- mov sb, #0
- streq r0, [sp, #8]
- strne sb, [sp, #8]
- mov r7, #1
- mov r8, #0
- mov r5, #0x2f
- mov r4, #0xa
-_021E5DB4:
- ldr r0, [sp, #8]
- cmp r0, #0
- bne _021E5DC8
- cmp sb, #0
- beq _021E5DFC
-_021E5DC8:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1a5]
- add r1, r1, #1
- strb r1, [r0, #0x1a5]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r1, [r6, #0x1a5]
- ldr r0, [r0, #0x344]
- cmp r1, r0
- blt _021E5DFC
- bl MOD04_021E26E4
- strb r8, [r0, #0x1a5]
-_021E5DFC:
- cmp sb, #0
- beq _021E5E50
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1a5]
- ldr r0, [sp, #0xc]
- cmp r0, r1
- bne _021E5E50
- bl MOD04_021E26E4
- ldr r1, _021E6028 ; =0x00000BB8
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1cc]
- str r1, [r4, #0x1d0]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- add sp, sp, #0x23c
- mov r0, r1
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E5E50:
- mov sb, r7
- bl MOD04_021E0F00
- mov fp, r0
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r1, r0
- ldrb r2, [r1, #0x1a5]
- ldr r3, [sl, #0x2fc]
- mov r1, #0xc
- add r2, r6, r2
- ldrb r2, [r2, #0x304]
- mov r0, fp
- mla r1, r2, r1, r3
- bl DWC_GetGsProfileId
- movs sl, r0
- beq _021E5DB4
- mvn r0, #0
- cmp sl, r0
- beq _021E5DB4
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov fp, r0
- bl MOD04_021E26E4
- ldr r2, [r6, #0x2fc]
- ldrb r1, [r0, #0x1a5]
- mov r0, #0xc
- add r1, fp, r1
- ldrb r1, [r1, #0x304]
- mla r0, r1, r0, r2
- bl DWCi_Acc_IsValidFriendData
- cmp r0, #0
- beq _021E5DB4
- mov r6, r7
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E5F1C
-_021E5EF4:
- bl MOD04_021E26E4
- add r0, r0, r6, lsl #2
- ldr r0, [r0, #0xf4]
- cmp sl, r0
- beq _021E5F1C
- add r6, r6, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r6, r0
- ble _021E5EF4
-_021E5F1C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r6, r0
- ble _021E5DB4
- bl MOD04_021E26E4
- ldr r0, [r0]
- mov r1, sl
- add r2, sp, #0x18
- bl MOD04_021F0664
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0]
- ldr r1, [sp, #0x18]
- add r2, sp, #0x28
- bl MOD04_021F06E4
- orrs r0, r6, r0
- bne _021E5DB4
- ldr r0, [sp, #0x2c]
- cmp r0, #4
- bne _021E5DB4
- ldr r0, _021E602C ; =UNK04_0220D3F4
- add r1, sp, #0x1c
- add r2, sp, #0x30
- mov r3, r5
- bl MOD04_021DE9F4
- mov r6, r0
- ldr r0, _021E6030 ; =UNK04_0220D3F8
- add r1, sp, #0x12
- add r2, sp, #0x30
- mov r3, r5
- bl MOD04_021DE9F4
- mov fp, r0
- ldr r0, _021E6034 ; =UNK04_0220D3FC
- add r1, sp, #0x10
- add r2, sp, #0x30
- mov r3, r5
- bl MOD04_021DE9F4
- cmp r6, #0
- ble _021E5DB4
- cmp fp, #0
- ble _021E5DB4
- cmp r0, #0
- ble _021E5DB4
- add r0, sp, #0x1c
- mov r1, r8
- mov r2, r4
- bl strtoul
- cmp r0, #3
- bne _021E5DB4
- add r0, sp, #0x12
- mov r1, r8
- mov r2, r4
- bl strtoul
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x16]
- cmp r6, r0
- bne _021E5DB4
- ldr r0, [sp, #4]
- cmp sl, r0
- moveq r0, #1
- streq r0, [sp]
- ldr r1, [sp]
- mov r0, sl
- bl MOD04_021E6038
- add sp, sp, #0x23c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E6028: .word 0x00000BB8
-_021E602C: .word UNK04_0220D3F4
-_021E6030: .word UNK04_0220D3F8
-_021E6034: .word UNK04_0220D3FC
- arm_func_end MOD04_021E5D30
-
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- bne _021E60A0
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- cmp r0, #0
- bne _021E60A0
-_021E606C:
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1c0]
- str r1, [r4, #0x1c4]
- bl MOD04_021E26E4
- str r5, [r0, #0xf4]
- add sp, sp, #0x14
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E60A0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6124
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, #0
- bl MOD04_02203BF4
- mov r6, r0
- bl MOD04_021E26E4
- mov r4, r0
- ldr r1, _021E61E4 ; =UNK04_0220D3AC
- mov r0, r6
- mov r2, #0
- bl MOD04_0220394C
- str r0, [r4, #0xf4]
- bl MOD04_021E26E4
- mov r4, r0
- mov r0, r6
- bl MOD04_02203908
- str r0, [r4, #0x24]
- bl MOD04_021E26E4
- mov r4, r0
- mov r0, r6
- bl MOD04_022038E4
- strh r0, [r4, #0xa4]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r4, #1
- str r0, [r6, #0x204]
- b _021E6160
-_021E6124:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E613C
- bl MOD04_021E26E4
- str r5, [r0, #0xf4]
-_021E613C:
- bl MOD04_021E26E4
- str r5, [r0, #0x204]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- mov r4, #3
- str r0, [sp, #0x10]
-_021E6160:
- bl MOD04_021E26E4
- ldr r1, _021E61E8 ; =0x00001770
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r6, r0
- bl OS_GetTick
- str r0, [r6, #0x1cc]
- str r1, [r6, #0x1d0]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- movne r7, #0xb
- moveq r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- str r0, [sp, #8]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- add r2, sp, #8
- str r2, [sp]
- mov r3, r0
- str r4, [sp, #4]
- ldrh r3, [r3, #0xa4]
- ldr r2, [r6, #0x24]
- mov r1, r5
- mov r0, r7
- bl MOD04_021E7884
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E61E4: .word UNK04_0220D3AC
-_021E61E8: .word 0x00001770
- arm_func_end MOD04_021E6038
-
- arm_func_start MOD04_021E61EC
-MOD04_021E61EC: ; 0x021E61EC
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6210
- mov r0, r4
- bl MOD04_021E38E8
- ldmia sp!, {r4, pc}
-_021E6210:
- mov r0, r4
- bl MOD04_021E397C
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E61EC
-
- arm_func_start MOD04_021E621C
-MOD04_021E621C: ; 0x021E621C
- stmdb sp!, {r4, r5, r6, lr}
- mov r5, r1
- ldr r1, [r5]
- mov r6, r0
- add r4, r1, #2
- cmp r4, #2
- bls _021E6250
- 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 MOD04_021E26E4
- sub r1, r4, #1
- str r1, [r0, #0x348]
- bl MOD04_021E26E4
- str r6, [r0, #0x34c]
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E621C
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E62A4
- 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 MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- str r6, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r7, r0, lsl #2
- str r6, [r0, #0xf4]
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r7, r0, lsl #2
- str r5, [r0, #0x24]
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r7, r0, lsl #1
- strh r4, [r0, #0xa4]
- bl MOD04_021E26E4
- str r5, [r0, #0x1b8]
- bl MOD04_021E26E4
- add r0, r0, #0x100
- strh r4, [r0, #0xb4]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E40F4
- ldrb r1, [r4, #0x14]
- add r1, r1, #1
- add r1, r5, r1
- strb r0, [r1, #0x2d0]
- str r6, [sp, #8]
- bl MOD04_021E26E4
- mov r4, r0
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r0, #1
- blt _021E6414
- add r6, sp, #8
- mov r5, #2
- mov r4, #7
-_021E63B8:
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- str r6, [sp]
- str r5, [sp, #4]
- add r0, r0, r7, lsl #1
- add r1, sb, r7, lsl #2
- add r2, r8, r7, lsl #2
- ldrh r3, [r0, #0xa4]
- ldr r1, [r1, #0xf4]
- ldr r2, [r2, #0x24]
- mov r0, r4
- bl MOD04_021E7884
- cmp r0, #0
- addne sp, sp, #0x14
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
- add r7, r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r7, r0
- ble _021E63B8
-_021E6414:
- mov r0, #1
- bl MOD04_021E3E28
- mov r0, #0
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_end MOD04_021E6268
-
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E6490
- cmp r0, #1
- beq _021E6460
- cmp r0, #2
- beq _021E6670
- b _021E6724
-_021E6460:
- bl MOD04_021E26E4
- ldr r0, [r0]
- mov r1, r7
- bl MOD04_021F05F4
- cmp r0, #0
- moveq r4, #0xff
- beq _021E6724
- mov r0, r7
- bl MOD04_021E4074
- cmp r0, #0
- moveq r4, #3
- beq _021E6724
-_021E6490:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r8, r0
- bne _021E64F8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a9]
- cmp r0, #0
- bne _021E64F8
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r4, #0x14]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- beq _021E64F8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E655C
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r4, #0x20]
- ldr r0, [r0, #0x200]
- cmp r1, r0
- bne _021E655C
-_021E64F8:
- mov r4, #3
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6724
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r0, [r0, #0xb4]
- cmp r0, #0
- bne _021E6724
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E6724
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r1, [r5, #0x20]
- ldr r0, [r0, #0x200]
- cmp r1, r0
- bne _021E6724
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- b _021E6724
-_021E655C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #3
- beq _021E657C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E65AC
-_021E657C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- bne _021E659C
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- cmp r0, #0
- beq _021E65AC
-_021E659C:
- cmp r6, #0
- bne _021E65B4
- cmp r5, #0
- bne _021E65B4
-_021E65AC:
- mov r4, #4
- b _021E6724
-_021E65B4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r0, #0
- beq _021E6668
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r7, r0
- bne _021E6610
- ldr r0, [sp, #0x18]
- cmp r0, #0
- bne _021E6600
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- cmp r0, r7
- bge _021E6608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r7, r0
- beq _021E6608
-_021E6600:
- mov r4, #2
- b _021E6724
-_021E6608:
- mov r4, #0xff
- b _021E6724
-_021E6610:
- ldr r0, [sp, #0x18]
- cmp r0, #0
- bne _021E663C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- cmp r0, r7
- bge _021E6660
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- bne _021E6660
-_021E663C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- movne r0, #0xff
- ldmneia sp!, {r4, r5, r6, r7, r8, pc}
- mov r4, #2
- b _021E6724
-_021E6660:
- mov r4, #3
- b _021E6724
-_021E6668:
- mov r4, #2
- b _021E6724
-_021E6670:
- bl MOD04_021E26E4
- ldr r0, [r0]
- mov r1, r7
- bl MOD04_021F05F4
- cmp r0, #0
- moveq r4, #0xff
- beq _021E6724
- cmp r8, #3
- bne _021E66B0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r4, #0x14]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- bne _021E66B8
-_021E66B0:
- mov r4, #3
- b _021E6724
-_021E66B8:
- ldr r0, _021E672C ; =UNK04_022106DC
- ldrb r1, [r0]
- cmp r1, #1
- bne _021E66D8
- ldrb r0, [r0, #1]
- cmp r0, #1
- moveq r4, #0x13
- beq _021E6724
-_021E66D8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xa
- bne _021E6718
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- bne _021E6708
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- cmp r0, #0
- beq _021E6718
-_021E6708:
- cmp r6, #0
- bne _021E6720
- cmp r5, #0
- bne _021E6720
-_021E6718:
- mov r4, #4
- b _021E6724
-_021E6720:
- mov r4, #2
-_021E6724:
- mov r0, r4
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021E672C: .word UNK04_022106DC
- arm_func_end MOD04_021E6428
-
- 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
- mov r8, r1
- mov r7, r2
- mov sl, r3
- ldr r6, [sp, #0x138]
- ldr r5, [sp, #0x13c]
- mov r4, #0
- bl MOD04_021E26E4
- cmp r0, #0
- beq _021E6770
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0
- bne _021E677C
-_021E6770:
- add sp, sp, #0x118
- mov r0, #1
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E677C:
- bl MOD04_021DF88C
- cmp r0, #5
- bne _021E67AC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E67AC
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E67AC
- bl MOD04_021E3E9C
-_021E67AC:
- cmp sb, #0x40
- bgt _021E684C
- cmp sb, #0x40
- bge _021E7594
- cmp sb, #0x20
- addls pc, pc, sb, lsl #2
- b _021E7608
-_021E67C8: ; jump table
- b _021E7608 ; case 0
- b _021E6854 ; case 1
- b _021E6A20 ; case 2
- b _021E6BF8 ; case 3
- b _021E6C58 ; case 4
- b _021E6D78 ; case 5
- b _021E6DF4 ; case 6
- b _021E6F04 ; case 7
- b _021E701C ; case 8
- b _021E719C ; case 9
- b _021E71F0 ; case 10
- b _021E6854 ; case 11
- b _021E7298 ; case 12
- b _021E730C ; case 13
- b _021E730C ; case 14
- b _021E730C ; case 15
- b _021E7330 ; case 16
- b _021E7380 ; case 17
- b _021E7424 ; case 18
- b _021E7480 ; case 19
- b _021E7608 ; case 20
- b _021E7608 ; case 21
- b _021E7608 ; case 22
- b _021E7608 ; case 23
- b _021E7608 ; case 24
- b _021E7608 ; case 25
- b _021E7608 ; case 26
- b _021E7608 ; case 27
- b _021E7608 ; case 28
- b _021E7608 ; case 29
- b _021E7608 ; case 30
- b _021E7608 ; case 31
- b _021E7498 ; case 32
-_021E684C:
- cmp sb, #0x41
- b _021E7608
-_021E6854:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- ldrne r0, [r6, #8]
- ldrne r7, [r6, #4]
- movne r0, r0, lsl #0x10
- movne sl, r0, lsr #0x10
- cmp sb, #0xb
- moveq r0, #1
- movne r0, #0
- str r0, [sp]
- ldr r3, [r6]
- mov r0, r8
- mov r1, r7
- mov r2, sl
- bl MOD04_021E6428
- mov r5, r0
- cmp r5, #2
- bne _021E6994
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1dc]
- mov r0, r8
- mov r1, r7
- mov r2, sl
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E6918
- bl MOD04_021E26E4
- ldr r0, [r0, #0x46c]
- cmp r0, #0
- beq _021E6918
- bl MOD04_021E26E4
- mov r6, r0
- mov r0, r8
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r0, #0x470]
- ldr r2, [r6, #0x46c]
- mov r0, r4
- blx r2
-_021E6918:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- mov r4, #1
- str r0, [sp, #0x14]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r0, #1
- blt _021E6960
- add r6, sp, #0x14
-_021E693C:
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- str r0, [r6, r4, lsl #2]
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r4, r0
- ble _021E693C
-_021E6960:
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1c]
- add r0, sp, #0x14
- str r1, [r0, r4, lsl #2]
- 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 MOD04_021E26D0
- b _021E69E0
-_021E6994:
- cmp r5, #3
- bne _021E69E0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x16]
- cmp r0, #0
- beq _021E69E0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r1, [r6, #0x14]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- bne _021E69E0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- moveq r0, #0x10
- streq r0, [sp, #0x14]
- moveq r4, #1
-_021E69E0:
- cmp r5, #0xff
- beq _021E7608
- add r1, sp, #0x14
- str r1, [sp]
- mov r0, r5
- mov r1, r8
- mov r2, r7
- mov r3, sl
- str r4, [sp, #4]
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- ldr r1, [r6]
- add r1, r6, r1, lsl #2
- ldr r1, [r1, #4]
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- ldr r1, [r6]
- add r1, r6, r1, lsl #2
- ldr r1, [r1, #8]
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- ldr r1, [r6]
- add r1, r6, r1, lsl #2
- ldr r1, [r1, #4]
- str r1, [r0, #0x1b8]
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E6B4C
- ldr r1, [r6]
- add r0, r6, #4
- bl MOD04_021E5138
- cmp r0, #0
- beq _021E6B08
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E6B4C
- mov r0, r8
- mov r1, r6
- bl MOD04_021E621C
- b _021E6B4C
-_021E6B08:
- mov r0, r8
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x118
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- mov r0, #0
- mov r1, r0
- mov r2, r8
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6BD0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E6B90
- mov r0, r8
- mov r1, r6
- 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 MOD04_021E26D0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, #0
- bl MOD04_02203BF4
- mov r2, r0
- mov r0, #0
- mov r1, r0
- bl MOD04_021E7B04
- bl MOD04_021E37A4
- cmp r0, #0
- beq _021E7608
- add sp, sp, #0x118
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E6BD0:
- mov r0, #5
- bl MOD04_021E26D0
- mov r0, r8
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r8, r0
- bne _021E7608
- cmp r5, #0
- ble _021E6C44
- ldr r0, [r6]
- cmp r0, #0x10
- bne _021E6C44
- mov r0, #0xd
- mov r1, #0
- bl MOD04_021E8E08
- add sp, sp, #0x118
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E6C44:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E5C44
- add sp, sp, #0x118
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E6C58:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1cc]
- str r1, [r4, #0x1d0]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- beq _021E6CAC
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a7]
- cmp r0, #0x10
- blo _021E6CBC
-_021E6CAC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E6D00
-_021E6CBC:
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1c0]
- str r1, [r4, #0x1c4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E7608
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1a7]
- add r1, r1, #1
- strb r1, [r0, #0x1a7]
- b _021E7608
-_021E6D00:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6D54
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- str r1, [r4, #0xf0]
- b _021E7608
-_021E6D54:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E7608
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_021E5D30
- b _021E7608
-_021E6D78:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E6DD8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- bne _021E6DD8
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf8]
- cmp r8, r0
- bne _021E6DD8
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
-_021E6DD8:
- mov r0, r8
- bl MOD04_021E59D4
- cmp r0, #0
- bne _021E7608
- add sp, sp, #0x118
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E6DF4:
- ldr r0, [r6, #4]
- ldr r4, [r6]
- mov r0, r0, lsl #0x10
- mov r5, r0, lsr #0x10
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E6E20
- mov r0, #6
- bl MOD04_021E26D0
- b _021E6E50
-_021E6E20:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E6E40
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- bne _021E7608
-_021E6E40:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20]
- cmp r8, r0
- bne _021E7608
-_021E6E50:
- bl MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- bl MOD04_021E26E4
- mov r6, r0
- 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 MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- add r0, r6, r0, lsl #2
- str r8, [r0, #0xf4]
-_021E6E9C:
- mov r1, r5, asr #8
- mov r0, r5, lsl #8
- and r1, r1, #0xff
- and r0, r0, #0xff00
- orr r0, r1, r0
- str r4, [sp, #0x10]
- strh r0, [sp, #0xe]
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x194]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- mov r4, r0
- bl MOD04_021E26E4
- add r3, r0, #0x194
- mov r1, r4
- mov r0, #0
- add r2, sp, #0xc
- bl MOD04_021E2784
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- b _021E7608
-_021E6F04:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E7608
- ldr r0, [r6]
- str r0, [sp, #8]
- ldr r0, [r6, #4]
- and r4, r0, #0xff
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E6F98
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- bne _021E6F98
- ldr r0, [sp, #8]
- bl MOD04_021E4074
- str r0, [sp, #0x14]
- add r0, sp, #0x14
- str r0, [sp]
- mov r5, #1
- mov r1, r8
- mov r2, r7
- mov r3, sl
- mov r0, #0x20
- str r5, [sp, #4]
- 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 MOD04_021E26E4
- mov r5, r0
- 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 MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r5, r0
- strb r4, [r0, #0x2d0]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- bl MOD04_021E26E4
- ldr r0, [r0, #0x46c]
- cmp r0, #0
- beq _021E7608
- bl MOD04_021E26E4
- mov r5, r0
- ldr r0, [sp, #8]
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r0, #0x470]
- ldr r2, [r5, #0x46c]
- mov r0, r4
- blx r2
- b _021E7608
-_021E701C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E7608
- ldr r0, [r6]
- str r0, [sp, #8]
- cmp r0, #0
- bne _021E7084
- ldr r5, [r6, #4]
- ldr r4, [r6, #8]
- bl MOD04_021E26E4
- add r0, r5, r0
- strb r4, [r0, #0x2d0]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r2, [r0, #0x200]
- add r1, r4, r5, lsl #2
- mov r0, #3
- str r2, [r1, #0xf4]
- bl MOD04_021E51C0
- b _021E7608
-_021E7084:
- ldr r0, [r6, #8]
- ldr r4, [r6, #4]
- and r5, r0, #0xff
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r1, [sp, #8]
- ldr r0, [r0, #0xf4]
- cmp r1, r0
- bne _021E7104
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- sub r0, r0, #1
- cmp r4, r0
- bne _021E7104
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- add r1, sp, #8
- str r1, [sp]
- mov r1, #1
- str r1, [sp, #4]
- ldrh r3, [r0, #0xa4]
- ldr r2, [r4, #0x24]
- mov r1, r8
- mov r0, #9
- 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 MOD04_021E26E4
- ldr r1, [sp, #8]
- add r0, r0, r4, lsl #2
- str r1, [r0, #0xf4]
- bl MOD04_021E26E4
- add r0, r4, r0
- strb r5, [r0, #0x2d0]
- bl MOD04_021E26E4
- ldr r1, [r6, #0xc]
- add r0, r0, r4, lsl #2
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- ldr r1, [r6, #0x10]
- add r0, r0, r4, lsl #1
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- ldr r1, [r6, #0xc]
- str r1, [r0, #0x1b8]
- bl MOD04_021E26E4
- add r1, r0, #0x100
- ldr r2, [r6, #0x10]
- mov r0, #5
- strh r2, [r1, #0xb4]
- bl MOD04_021E26D0
- ldr r0, [sp, #8]
- 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 MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- b _021E7608
-_021E719C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xd
- bne _021E7608
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- ldr r1, [r6]
- add r0, r0, #1
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r1, r0
- bne _021E7608
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1a4]
- add r1, r1, #1
- strb r1, [r0, #0x1a4]
- mov r0, #0
- bl MOD04_021E51C0
- b _021E7608
-_021E71F0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- beq _021E7210
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x12
- bne _021E7608
-_021E7210:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E7234
- ldr r1, [r6]
- add r0, r6, #4
- bl MOD04_021E5138
- cmp r0, #0
- beq _021E7250
-_021E7234:
- bl MOD04_021E26E4
- ldr r1, [r6, #4]
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- b _021E725C
-_021E7250:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
-_021E725C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E7280
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- b _021E7608
-_021E7280:
- 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 MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E72C8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E72E4
-_021E72C8:
- mov r0, r8
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E7608
- bl MOD04_021E26E4
- str r8, [r0, #0x20c]
- bl MOD04_021E4B40
- mov r0, #0
- bl MOD04_021E4CF8
- b _021E7608
-_021E730C:
- ldr r2, [r6]
- mov r0, r8
- mov r1, sb
- 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 MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- addne sp, sp, #0x118
- movne r0, #1
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- cmp r5, #0
- mov r7, #0
- ble _021E7608
- mov r4, r7
-_021E7358:
- ldr r0, [r6, r7, lsl #2]
- mov r1, r4
- bl MOD04_021E3F28
- cmp r0, #0xff
- beq _021E7370
- bl MOD04_021DF9D4
-_021E7370:
- add r7, r7, #1
- cmp r7, r5
- blt _021E7358
- b _021E7608
-_021E7380:
- ldr r0, _021E7614 ; =UNK04_022106D4
- ldr r4, [r0]
- cmp r4, #0
- beq _021E73E0
- ldrb r0, [r4]
- cmp r0, #0
- beq _021E73E0
- bl OS_GetTick
- ldr r3, [r4, #0x10]
- ldr r2, [r4, #0x14]
- subs r3, r0, r3
- sbc r0, r1, r2
- mov r1, r0, lsl #6
- ldr r2, _021E7618 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, [r4, #4]
- cmp r1, #0
- cmpeq r0, r2
- movhs r0, #1
- strhs r0, [sp, #0x14]
- bhs _021E73E8
-_021E73E0:
- mov r0, #0
- str r0, [sp, #0x14]
-_021E73E8:
- add r0, sp, #0x14
- str r0, [sp]
- mov r4, #1
- mov r1, r8
- mov r2, r7
- mov r3, sl
- mov r0, #0x12
- str r4, [sp, #4]
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x13
- bne _021E7608
- mov r0, r8
- mov r1, #0
- bl MOD04_021E3F28
- cmp r0, #0xff
- beq _021E7608
- ldr r1, _021E7614 ; =UNK04_022106D4
- mov r4, #1
- ldr r3, [r1]
- mov r5, r4,lsl r0
- ldr r2, [r3, #8]
- orr r0, r2, r4, lsl r0
- str r0, [r3, #8]
- ldr r0, [r6]
- cmp r0, #0
- ldrne r1, [r1]
- ldrne r0, [r1, #0xc]
- orrne r0, r0, r5
- strne r0, [r1, #0xc]
- b _021E7608
-_021E7480:
- mov r0, #0xc
- mov r1, #0
- bl MOD04_021E8E08
- add sp, sp, #0x118
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E7498:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E7608
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- bne _021E7608
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E7608
-_021E74CC:
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E757C
- ldr r0, [r6]
- cmp r0, #0
- bne _021E7554
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- beq _021E750C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xc
- bne _021E7524
-_021E750C:
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E754C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E754C:
- bl MOD04_021E4CB4
- b _021E7608
-_021E7554:
- bl MOD04_021E26E4
- mov r4, r0
- mov r0, r8
- mov r1, #0
- bl MOD04_021E3F28
- ldr r2, [r4, #0x1dc]
- mov r1, #1
- orr r0, r2, r1, lsl r0
- str r0, [r4, #0x1dc]
- b _021E7608
-_021E757C:
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E74CC
- b _021E7608
-_021E7594:
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E7608
-_021E75A8:
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E75F4
- mov r4, #0
- str r4, [sp]
- mov r1, r8
- mov r2, r7
- mov r3, sl
- mov r0, #0x41
- str r4, [sp, #4]
- bl MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E7608
- add sp, sp, #0x118
- mov r0, r4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E75F4:
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E75A8
-_021E7608:
- mov r0, #1
- add sp, sp, #0x118
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- .align 2, 0
-_021E7614: .word UNK04_022106D4
-_021E7618: .word 0x000082EA
- arm_func_end MOD04_021E6730
-
- arm_func_start MOD04_021E761C
-MOD04_021E761C: ; 0x021E761C
- stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
- sub sp, sp, #4
- mov sb, r1
- mov r4, r0
- mov r8, r2
- mov r0, sb
- mov r1, #0
- bl strchr
- mov r7, r0
- cmp r8, #0
- mov r6, #0
- ble _021E767C
- mov r5, #0x2f
-_021E7650:
- mov r0, sb
- mov r1, r5
- bl strchr
- cmp r0, #0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
- add r6, r6, #1
- cmp r6, r8
- add sb, r0, #1
- blt _021E7650
-_021E767C:
- mov r0, sb
- mov r1, #0x2f
- bl strchr
- cmp r0, #0
- moveq r0, r7
- cmp sb, r0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
- sub r5, r0, sb
- mov r0, sb
- mov r1, r4
- mov r2, r5
- bl MI_CpuCopy8
- mov r1, #0
- mov r0, r5
- strb r1, [r4, r5]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_end MOD04_021E761C
-
- arm_func_start MOD04_021E76C8
-MOD04_021E76C8: ; 0x021E76C8
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #0x208
- mov r7, r0
- mov r5, r2
- mov r4, r3
- mov r0, #3
- mov r6, r1
- str r0, [sp]
- ldr ip, _021E7760 ; =UNK04_0220D410
- ldr r2, _021E7764 ; =UNK04_0220D400
- ldr r3, _021E7768 ; =UNK04_0220D408
- add r0, sp, #8
- mov r1, #0x200
- str ip, [sp, #4]
- bl OS_SNPrintf
- add r1, sp, #8
- add r2, sp, #9
- strb r6, [r1, r0]
- mov r1, #0
- strb r1, [r2, r0]
- cmp r4, #0
- add r8, r2, r0
- beq _021E7748
- mov r0, r4
- bl strlen
- mov r6, r0
- mov r0, r4
- mov r1, r8
- mov r2, r6
- bl MI_CpuCopy8
- mov r0, #0
- strb r0, [r8, r6]
-_021E7748:
- add r2, sp, #8
- mov r0, r7
- mov r1, r5
- bl MOD04_021F02B8
- add sp, sp, #0x208
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021E7760: .word UNK04_0220D410
-_021E7764: .word UNK04_0220D400
-_021E7768: .word UNK04_0220D408
- arm_func_end MOD04_021E76C8
-
- arm_func_start MOD04_021E776C
-MOD04_021E776C: ; 0x021E776C
- stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
- sub sp, sp, #0x9c
- mov r5, r0
- mov r8, r1
- mov r7, r2
- cmp r3, #0
- ldr r4, [sp, #0xb8]
- beq _021E77A8
- cmp r4, #0
- beq _021E77A8
- add r1, sp, #0x18
- mov r0, r3
- mov r2, r4, lsl #2
- bl MIi_CpuCopy32
- b _021E77AC
-_021E77A8:
- mov r4, #0
-_021E77AC:
- ldr r6, _021E7880 ; =UNK04_0220D398
- add sb, sp, #4
- ldrb r3, [r6]
- ldrb r2, [r6, #1]
- mov r0, r4, lsl #2
- mov r1, #3
- strb r3, [sb]
- strb r2, [sb, #1]
- ldrb r3, [r6, #2]
- ldrb r2, [r6, #3]
- strb r3, [sb, #2]
- strb r2, [sb, #3]
- ldrb r2, [r6, #4]
- strb r2, [sb, #4]
- str r1, [sp, #8]
- strb r5, [sp, #0xc]
- strb r0, [sp, #0xd]
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- strh r0, [sp, #0xe]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- str r0, [sp, #0x10]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- mov r6, #0
- str r0, [sp, #0x14]
- mov r4, r6
-_021E781C:
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r8
- mov r1, r4
- mov r2, r4
- bl MOD04_021FFEB0
- mov r1, r0
- ldrb r0, [sp, #0xd]
- mov r2, r7
- mov r3, sb
- add r0, r0, #0x14
- str r0, [sp]
- ldr r0, [r5, #0xe4]
- bl MOD04_02203CC4
- cmp r0, #0
- addeq sp, sp, #0x9c
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
- cmp r0, #2
- addne sp, sp, #0x9c
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
- add r6, r6, #1
- cmp r6, #5
- blt _021E781C
- add sp, sp, #0x9c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021E7880: .word UNK04_0220D398
- arm_func_end MOD04_021E776C
-
- 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
- str r1, [sp, #4]
- str r2, [sp, #8]
- str r3, [sp, #0xc]
- ldr sl, [sp, #0x248]
- ldr sb, [sp, #0x24c]
- mov r8, #0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E78E0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E78D8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- beq _021E7900
-_021E78D8:
- cmp fp, #6
- bne _021E7900
-_021E78E0:
- ldr r1, [sp, #8]
- ldr r2, [sp, #0xc]
- mov r0, fp
- mov r3, sl
- str sb, [sp]
- bl MOD04_021E776C
- mov r4, r0
- b _021E79A0
-_021E7900:
- cmp sl, #0
- beq _021E7978
- cmp sb, #0
- beq _021E7978
- ldr r3, [sl]
- ldr r2, _021E7A3C ; =UNK04_0220D394
- add r0, sp, #0x20
- mov r1, #0x200
- bl OS_SNPrintf
- mov r8, r0
- cmp sb, #1
- mov r7, #1
- ble _021E7978
- add r6, sp, #0x10
- mov r5, #0x10
-_021E793C:
- ldr r3, [sl, r7, lsl #2]
- ldr r2, _021E7A40 ; =UNK04_0220D414
- mov r0, r6
- mov r1, r5
- bl OS_SNPrintf
- mov r4, r0
- add r1, sp, #0x20
- mov r0, r6
- add r1, r1, r8
- mov r2, r4
- bl MI_CpuCopy8
- add r7, r7, #1
- add r8, r8, r4
- cmp r7, sb
- blt _021E793C
-_021E7978:
- add r0, sp, #0x20
- mov r1, #0
- strb r1, [r0, r8]
- bl MOD04_021E26E4
- ldr r0, [r0]
- ldr r2, [sp, #4]
- add r3, sp, #0x20
- mov r1, fp
- bl MOD04_021E76C8
- mov r4, r0
-_021E79A0:
- cmp fp, #2
- beq _021E79C0
- cmp fp, #6
- beq _021E79C0
- add r0, fp, #0xf8
- and r0, r0, #0xff
- cmp r0, #1
- bhi _021E7A30
-_021E79C0:
- bl MOD04_021E26E4
- strb fp, [r0, #0x3cc]
- bl MOD04_021E26E4
- add r1, r0, #0x300
- ldr r0, [sp, #0xc]
- strh r0, [r1, #0xce]
- bl MOD04_021E26E4
- ldr r1, [sp, #8]
- str r1, [r0, #0x3d0]
- bl MOD04_021E26E4
- ldr r1, [sp, #4]
- str r1, [r0, #0x454]
- bl MOD04_021E26E4
- str sb, [r0, #0x458]
- bl MOD04_021E26E4
- mov r5, r0
- bl OS_GetTick
- str r0, [r5, #0x45c]
- str r1, [r5, #0x460]
- cmp sl, #0
- beq _021E7A30
- cmp sb, #0
- beq _021E7A30
- bl MOD04_021E26E4
- add r1, r0, #0x3d4
- mov r0, sl
- mov r2, sb, lsl #2
- bl MIi_CpuCopy32
-_021E7A30:
- mov r0, r4
- add sp, sp, #0x224
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E7A3C: .word UNK04_0220D394
-_021E7A40: .word UNK04_0220D414
- arm_func_end MOD04_021E7884
-
- 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 MOD04_021E26E4
- mov r4, r0
- mov r1, #0
- ldr r0, [r7, #4]
- mov r2, r1
- bl MOD04_021FFEB0
- mov r1, r0
- ldrh r2, [r7, #2]
- ldr r0, [r4, #0xe4]
- ldr r3, [r7, #8]
- 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 ; =MOD04_021E2784
- ldr r4, _021E7B00 ; =MOD04_021E2B60
- mov r6, #0
-_021E7AA8:
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- str r5, [sp]
- str r7, [sp, #4]
- ldrb r2, [r7]
- ldr r1, [r7, #8]
- mov r3, r4
- bl MOD04_022006EC
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- cmp r0, #3
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- add r6, r6, #1
- cmp r6, #5
- blt _021E7AA8
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E7AFC: .word MOD04_021E2784
-_021E7B00: .word MOD04_021E2B60
- arm_func_end MOD04_021E7A44
-
- 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 MOD04_021E26E4
- cmp r4, #0
- ldrb r6, [r0, #0x14]
- mov r4, #0
- bne _021E7D48
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- add r1, r0, #0x100
- ldr r2, [r5, #0x200]
- ldr r0, _021E7DEC ; =0x0000FFFF
- ldrh r1, [r1, #0x7e]
- and r2, r2, r0
- mov r0, r7
- orr r8, r2, r1, lsl #16
- bl MOD04_022038C4
- cmp r0, #0
- beq _021E7BC0
- mov r0, r7
- bl MOD04_02203908
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BCC
- cmp r5, r0
- movne r5, #1
- bne _021E7C48
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_022038BC
- add r1, r5, r6, lsl #2
- str r0, [r1, #0x210]
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_02203898
- add r1, r5, r6, lsl #1
- add r1, r1, #0x200
- strh r0, [r1, #0x90]
- mov r5, r4
- b _021E7C48
-_021E7BC0:
- bl SOC_GetHostID
- mov r0, r0, lsl #0x10
- ldr r1, _021E7DEC ; =0x0000FFFF
- ldr r2, _021E7DF0 ; =0x0000A8C0
- and r1, r1, r0, lsr #16
- cmp r1, r2
- mov r0, r0, lsr #0x10
- beq _021E7C08
- and r1, r0, #0xff
- cmp r1, #0xac
- bne _021E7C00
- and r0, r0, #0xff00
- cmp r0, #0x1000
- blo _021E7C00
- cmp r0, #0x1f00
- bls _021E7C08
-_021E7C00:
- cmp r1, #0x10
- bne _021E7C10
-_021E7C08:
- mov r5, #1
- b _021E7C48
-_021E7C10:
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_02203908
- add r1, r5, r6, lsl #2
- str r0, [r1, #0x210]
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_022038E4
- add r1, r5, r6, lsl #1
- add r1, r1, #0x200
- strh r0, [r1, #0x90]
- mov r5, #0
-_021E7C48:
- cmp r5, #0
- beq _021E7C74
- bl MOD04_021E26E4
- mov r6, r0
- mov r0, #0x10000
- bl MOD04_021DE8C8
- add r1, r6, #0x100
- strh r0, [r1, #0x7e]
- bl MOD04_021E26E4
- str r8, [r0, #0x19c]
- b _021E7D00
-_021E7C74:
- bl SOC_GetHostID
- str r0, [sp, #8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD454
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- mov sb, r0
- mov r0, r7
- bl MOD04_02203908
- mov r8, r0
- mov r0, r7
- bl MOD04_022038E4
- add r1, sb, r6, lsl #2
- add r6, sp, #8
- mov r3, r0
- mov r0, #2
- str r6, [sp]
- str r0, [sp, #4]
- ldr r1, [r1, #0xf4]
- mov r2, r8
- mov r0, #6
- bl MOD04_021E7884
- mov r6, r0
- 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 MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E7D00:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x194]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x195]
- bl MOD04_021E26E4
- mov r6, r0
- mov r0, r7
- bl MOD04_022038E4
- add r1, r6, #0x100
- strh r0, [r1, #0x96]
- bl MOD04_021E26E4
- mov r6, r0
- mov r0, r7
- bl MOD04_02203908
- str r0, [r6, #0x198]
- b _021E7D88
-_021E7D48:
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x194]
- bl MOD04_021E26E4
- mov r1, r4
- strb r1, [r0, #0x195]
- bl MOD04_021E26E4
- add r0, r0, #0x100
- mov r1, r4
- strh r1, [r0, #0x96]
- bl MOD04_021E26E4
- mov r1, r4
- str r1, [r0, #0x198]
- bl MOD04_021E26E4
- str r8, [r0, #0x19c]
- mov r5, #1
-_021E7D88:
- cmp r5, #0
- beq _021E7DA4
- bl MOD04_021E26E4
- add r0, r0, #0x194
- bl MOD04_021E7A44
- mov r4, r0
- b _021E7DE0
-_021E7DA4:
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- mov r5, r0
- bl MOD04_021E26E4
- add r3, r0, #0x194
- mov r0, #0
- mov r1, r5
- mov r2, r0
- bl MOD04_021E2784
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
-_021E7DE0:
- mov r0, r4
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021E7DEC: .word 0x0000FFFF
-_021E7DF0: .word 0x0000A8C0
- arm_func_end MOD04_021E7B04
-
- arm_func_start MOD04_021E7DF4
-MOD04_021E7DF4: ; 0x021E7DF4
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- mov lr, #3
- ldr ip, _021E7E48 ; =UNK04_0220D3AC
- str lr, [sp]
- str ip, [sp, #4]
- str r1, [sp, #8]
- str r2, [sp, #0xc]
- str r2, [sp, #0x10]
- ldr r2, _021E7E4C ; =UNK04_0220D3CC
- ldr r1, _021E7E50 ; =UNK04_0220D3D8
- str r2, [sp, #0x14]
- str r3, [sp, #0x18]
- str r1, [sp, #0x1c]
- ldr r2, _021E7E54 ; =UNK04_0220D418
- ldr r3, _021E7E58 ; =UNK04_0220D3E4
- mov r1, #0x100
- str ip, [sp, #0x20]
- bl OS_SNPrintf
- add sp, sp, #0x24
- ldmfd sp!, {pc}
- .align 2, 0
-_021E7E48: .word UNK04_0220D3AC
-_021E7E4C: .word UNK04_0220D3CC
-_021E7E50: .word UNK04_0220D3D8
-_021E7E54: .word UNK04_0220D418
-_021E7E58: .word UNK04_0220D3E4
- arm_func_end MOD04_021E7DF4
-
- 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
- mov r6, #0xa
- mov r5, #0x32
- mov r4, #0x33
- mov r3, #0x34
- mov r2, #0x35
- mov r1, #0x36
- strb r7, [sp, #0x10c]
- strb r6, [sp, #0x10d]
- strb r5, [sp, #0x10e]
- strb r4, [sp, #0x10f]
- strb r3, [sp, #0x110]
- strb r2, [sp, #0x111]
- strb r1, [sp, #0x112]
- mov r5, r0
- mov r4, #7
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E7EC4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E7EF4
-_021E7EC4:
- add r1, sp, #0x100
- ldr r2, _021E8020 ; =UNK04_02210704
- add r1, r1, #0x13
- mov r3, #0
-_021E7ED4:
- ldrb r0, [r2]
- add r3, r3, #1
- add r2, r2, #0xc
- cmp r0, #0
- strneb r0, [r1], #1
- addne r4, r4, #1
- cmp r3, #0x9a
- blt _021E7ED4
-_021E7EF4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #5
- addls pc, pc, r0, lsl #2
- b _021E7FAC
-_021E7F08: ; jump table
- b _021E7FAC ; case 0
- b _021E7FAC ; case 1
- b _021E7F8C ; case 2
- b _021E7F20 ; case 3
- b _021E7F8C ; case 4
- b _021E7F8C ; case 5
-_021E7F20:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- bne _021E7F84
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r1, [r6, #0x200]
- ldrb r2, [r5, #0x16]
- ldrb r3, [r0, #0x15]
- add r0, sp, #0xc
- bl MOD04_021E7DF4
- ldr r0, _021E8024 ; =UNK04_022106E0
- ldr r5, [r0]
- cmp r5, #0
- beq _021E7FAC
- add r0, sp, #0xc
- ldr r2, _021E8028 ; =UNK04_0220D470
- mov r3, r0
- mov r1, #0x100
- str r5, [sp]
- bl OS_SNPrintf
- b _021E7FAC
-_021E7F84:
- bl MOD04_021E26E4
- ldr r5, [r0, #0x208]
-_021E7F8C:
- ldr r2, _021E802C ; =UNK04_0220D47C
- ldr r3, _021E8030 ; =UNK04_0220D3AC
- add r0, sp, #0xc
- mov r1, #0x100
- str r5, [sp]
- bl OS_SNPrintf
- bl MOD04_021E26E4
- str r5, [r0, #0x204]
-_021E7FAC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203C04
- mov sl, #0
- add sb, sp, #0xc
- add r5, sp, #0x10c
- mov r6, sl
- mov r8, #6
- mov r7, #1
-_021E7FD0:
- bl MOD04_021E26E4
- str r4, [sp]
- str sb, [sp, #4]
- str r8, [sp, #8]
- ldr r0, [r0, #0xe4]
- mov r1, r7
- mov r2, r6
- mov r3, r5
- bl MOD04_02203D1C
- cmp r0, #0
- addeq sp, sp, #0x1b0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- cmp r0, #2
- addne sp, sp, #0x1b0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- add sl, sl, #1
- cmp sl, #5
- blt _021E7FD0
- add sp, sp, #0x1b0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- .align 2, 0
-_021E8020: .word UNK04_02210704
-_021E8024: .word UNK04_022106E0
-_021E8028: .word UNK04_0220D470
-_021E802C: .word UNK04_0220D47C
-_021E8030: .word UNK04_0220D3AC
- arm_func_end MOD04_021E7E5C
-
- arm_func_start MOD04_021E8034
-MOD04_021E8034: ; 0x021E8034
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- beq _021E8074
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203E80
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe4]
-_021E8074:
- bl MOD04_02200D6C
- mov r0, #0
- bl MOD04_021E26D0
- ldr r0, _021E80C0 ; =UNK04_022106E0
- ldr r1, [r0]
- cmp r1, #0
- beq _021E80A8
- mov r0, #4
- mov r2, #0
- bl MOD04_021DD904
- ldr r0, _021E80C0 ; =UNK04_022106E0
- mov r1, #0
- str r1, [r0]
-_021E80A8:
- bl MOD04_021E4164
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x18]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E80C0: .word UNK04_022106E0
- arm_func_end MOD04_021E8034
-
- arm_func_start MOD04_021E80C4
-MOD04_021E80C4: ; 0x021E80C4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r0, #0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl MOD04_021E8174
- bl MOD04_021E26E4
- strb r7, [r0, #0x15]
- bl MOD04_021E26E4
- strb r6, [r0, #0x16]
- bl MOD04_021E26E4
- str r5, [r0, #0x464]
- bl MOD04_021E26E4
- str r4, [r0, #0x468]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17d]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x2d0]
- mov r0, #0x32
- ldr r1, _021E8160 ; =UNK04_0220D3AC
- bl MOD04_0220277C
- mov r0, #0x33
- ldr r1, _021E8164 ; =UNK04_0220D3CC
- bl MOD04_0220277C
- mov r0, #0x34
- ldr r1, _021E8168 ; =UNK04_0220D3D8
- bl MOD04_0220277C
- mov r0, #0x35
- ldr r1, _021E816C ; =UNK04_0220D3E4
- bl MOD04_0220277C
- mov r0, #0x36
- ldr r1, _021E8170 ; =UNK04_0220D3A0
- bl MOD04_0220277C
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E8160: .word UNK04_0220D3AC
-_021E8164: .word UNK04_0220D3CC
-_021E8168: .word UNK04_0220D3D8
-_021E816C: .word UNK04_0220D3E4
-_021E8170: .word UNK04_0220D3A0
- arm_func_end MOD04_021E80C4
-
- arm_func_start MOD04_021E8174
-MOD04_021E8174: ; 0x021E8174
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, #0x10000
- bl MOD04_021DE8C8
- add r1, r5, #0x100
- strh r0, [r1, #0x7e]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x180]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x184]
- str r1, [r0, #0x188]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a4]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1aa]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ab]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ac]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb2]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1b8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1e0]
- str r1, [r0, #0x1e4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1f0]
- str r1, [r0, #0x1f4]
- bl MOD04_021E26E4
- add r1, r0, #0x3cc
- mov r0, #0
- mov r2, #0x98
- bl MIi_CpuClear32
- cmp r4, #2
- bne _021E82F0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x14]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E82CC
- mov r0, #1
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E82CC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, pc}
- mov r0, #0xa
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E82F0:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xd]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xe]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a5]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb0]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c0]
- str r1, [r0, #0x1c4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1cc]
- str r1, [r0, #0x1d0]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1d4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x2f0]
- bl MOD04_021E26E4
- add r1, r0, #0x24
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0xa4
- mov r0, #0
- mov r2, #0x40
- bl MIi_CpuClear16
- bl MOD04_021E26E4
- add r1, r0, #0xf4
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0x194
- mov r0, #0
- mov r2, #0xc
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0x210
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0x290
- mov r0, #0
- mov r2, #0x40
- bl MIi_CpuClear16
- bl MOD04_021E26E4
- add r0, r0, #0x2d0
- mov r1, #0
- mov r2, #0x20
- bl MI_CpuFill8
- bl MOD04_021E26E4
- add r1, r0, #0x348
- mov r0, #0
- mov r2, #0x84
- bl MIi_CpuClear32
- cmp r4, #1
- bne _021E84A8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E8484
- mov r0, #3
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E8484:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, pc}
- mov r0, #4
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E84A8:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x15]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x16]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x18]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a6]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ae]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ad]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1f8]
- str r1, [r0, #0x1fc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x46c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x470]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E8174
-
- arm_func_start MOD04_021E852C
-MOD04_021E852C: ; 0x021E852C
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #1
- movne r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E852C
-
- arm_func_start MOD04_021E854C
-MOD04_021E854C: ; 0x021E854C
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov r0, #0
- bl MOD04_021E26F4
- ldr r0, _021E85C8 ; =UNK04_022106E0
- ldr r1, [r0]
- cmp r1, #0
- beq _021E8584
- mov r0, #4
- mov r2, #0
- bl MOD04_021DD904
- ldr r0, _021E85C8 ; =UNK04_022106E0
- mov r1, #0
- str r1, [r0]
-_021E8584:
- bl MOD04_021E4164
- ldr r0, _021E85CC ; =UNK04_022106D4
- ldr r1, [r0]
- cmp r1, #0
- beq _021E85B0
- mov r0, #4
- mov r2, #0
- bl MOD04_021DD904
- ldr r0, _021E85CC ; =UNK04_022106D4
- mov r1, #0
- str r1, [r0]
-_021E85B0:
- ldr r0, _021E85D0 ; =UNK04_022106DC
- mov r1, #0
- strb r1, [r0]
- strb r1, [r0, #1]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E85C8: .word UNK04_022106E0
-_021E85CC: .word UNK04_022106D4
-_021E85D0: .word UNK04_022106DC
- arm_func_end MOD04_021E854C
-
- arm_func_start MOD04_021E85D4
-MOD04_021E85D4: ; 0x021E85D4
- stmdb sp!, {lr}
- sub sp, sp, #0x2c
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addne sp, sp, #0x2c
- movne r0, #0
- ldmneia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x16]
- ldr r2, _021E8694 ; =UNK04_0220D394
- add r0, sp, #0
- add r3, r1, #1
- mov r1, #0xc
- bl OS_SNPrintf
- ldr r0, _021E8698 ; =UNK04_0220D484
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DEB54
- bl MOD04_021E26E4
- ldrb r2, [r0, #0xd]
- add r0, sp, #0
- mov r1, #0xc
- add r3, r2, #1
- ldr r2, _021E8694 ; =UNK04_0220D394
- bl OS_SNPrintf
- ldr r0, _021E869C ; =UNK04_0220D488
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DEB0C
- ldr r2, _021E8694 ; =UNK04_0220D394
- add r0, sp, #0
- mov r1, #0xc
- mov r3, #3
- bl OS_SNPrintf
- ldr r0, _021E86A0 ; =UNK04_0220D3F4
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DEB0C
- mov r0, #6
- add r1, sp, #0xc
- mov r2, #0
- bl MOD04_021E1E30
- add sp, sp, #0x2c
- ldmfd sp!, {pc}
- .align 2, 0
-_021E8694: .word UNK04_0220D394
-_021E8698: .word UNK04_0220D484
-_021E869C: .word UNK04_0220D488
-_021E86A0: .word UNK04_0220D3F4
- arm_func_end MOD04_021E85D4
-
- arm_func_start MOD04_021E86A4
-MOD04_021E86A4: ; 0x021E86A4
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r0
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- ldr r0, _021E8748 ; =UNK04_022106E4
- mov r1, #0
- mov r2, #0x20
- bl MI_CpuFill8
- mov r6, #0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- cmp r0, #0
- blt _021E8730
- ldr r5, _021E8748 ; =UNK04_022106E4
- mov r4, #1
-_021E86E8:
- bl MOD04_021E26E4
- mov r8, r0
- 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 MOD04_021E26E4
- add r0, r0, r6
- ldrb r0, [r0, #0x2d0]
- add r6, r6, #1
- strb r0, [r5], #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- cmp r6, r0
- ble _021E86E8
-_021E8730:
- ldr r0, _021E8748 ; =UNK04_022106E4
- str r0, [r7]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- add r0, r0, #1
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021E8748: .word UNK04_022106E4
- arm_func_end MOD04_021E86A4
-
- arm_func_start MOD04_021E874C
-MOD04_021E874C: ; 0x021E874C
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021E26E4
- add r0, r0, #0x2d0
- str r0, [r4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E874C
-
- 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 MOD04_021E26E4
- mov r1, r4,lsl r5
- ldr r0, [r0, #0x2f0]
- add r5, r5, #1
- ands r0, r1, r0
- addne r6, r6, #1
- cmp r5, #0x20
- blt _021E8790
- mvn r0, #0
- cmp r6, r0
- bne _021E87CC
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xe]
- ldmia sp!, {r4, r5, r6, pc}
-_021E87CC:
- bl MOD04_021E26E4
- strb r6, [r0, #0xe]
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E8780
-
- arm_func_start MOD04_021E87D8
-MOD04_021E87D8: ; 0x021E87D8
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E87D8
-
- arm_func_start MOD04_021E8804
-MOD04_021E8804: ; 0x021E8804
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E8804
-
- 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 MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_021E26E4
- add r0, r0, sb, lsl #2
- ldr fp, [r0, #0xf4]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- add r0, r0, sb
- ldrb r0, [r0, #0x2d0]
- mov r1, #1
- ldr r2, [r4, #0x2f0]
- mvn r0, r1, lsl r0
- and r0, r2, r0
- str r0, [r4, #0x2f0]
- bl MOD04_021E8780
- sub r0, r8, #1
- cmp sb, r0
- bge _021E8970
- sub r0, r8, sb
- sub r6, r0, #1
- cmp r6, #0
- mov r7, #0
- ble _021E8970
-_021E88AC:
- add r4, sb, r7
- add r5, r4, #1
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r1, [r0, #0x24]
- add r0, sl, r4, lsl #2
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #1
- ldrh r1, [r0, #0xa4]
- add r0, sl, r4, lsl #1
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r1, sl, r4, lsl #2
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- str r0, [r1, #0xf4]
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r1, sl, r4, lsl #2
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0x210]
- str r0, [r1, #0x210]
- bl MOD04_021E26E4
- mov sl, r0
- 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 MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r1, r0, r5
- add r0, sl, r4
- ldrb r1, [r1, #0x2d0]
- add r7, r7, #1
- cmp r7, r6
- strb r1, [r0, #0x2d0]
- blt _021E88AC
-_021E8970:
- cmp r8, #0
- ble _021E89E0
- sub r4, r8, #1
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- mov r1, #0
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #1
- mov r1, #0
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- mov r1, #0
- str r1, [r0, #0xf4]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- mov r1, #0
- str r1, [r0, #0x210]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #1
- add r0, r0, #0x200
- mov r1, #0
- strh r1, [r0, #0x90]
- bl MOD04_021E26E4
- add r0, r0, r4
- mov r1, #0
- strb r1, [r0, #0x2d0]
-_021E89E0:
- mov r0, fp
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_end MOD04_021E8830
-
- arm_func_start MOD04_021E89EC
-MOD04_021E89EC: ; 0x021E89EC
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r5, #0
- mov r4, #0
- ble _021E8A48
-_021E8A14:
- 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 MOD04_021E8830
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
-_021E8A3C:
- add r4, r4, #1
- cmp r4, r5
- blt _021E8A14
-_021E8A48:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E89EC
-
- arm_func_start MOD04_021E8A50
-MOD04_021E8A50: ; 0x021E8A50
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a8]
- cmp r0, #2
- ldmeqia sp!, {r4, pc}
- mov r0, r4
- bl MOD04_021E59D4
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E8A50
-
- arm_func_start MOD04_021E8A74
-MOD04_021E8A74: ; 0x021E8A74
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl MOD04_021DF88C
- cmp r0, #5
- addne sp, sp, #4
- movne r0, #0
- ldmneia sp!, {r4, r5, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, pc}
- cmp r5, #0
- beq _021E8AD4
- ldr r1, _021E8C00 ; =0xFFFEC780
- mov r0, r5
- add r1, r4, r1
- bl MOD04_021E8E08
- add sp, sp, #4
- mov r0, #1
- ldmia sp!, {r4, r5, pc}
-_021E8AD4:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x2d0]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a9]
- cmp r0, #1
- beq _021E8B10
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a8]
- cmp r0, #1
- beq _021E8B10
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a8]
- cmp r0, #2
- bne _021E8B1C
-_021E8B10:
- add sp, sp, #4
- mov r0, #1
- ldmia sp!, {r4, r5, pc}
-_021E8B1C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E8B44
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E8B44:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E8B84
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a8]
- cmp r0, #0
- bne _021E8BF4
- bl MOD04_021E26E4
- mov r1, #3
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- b _021E8BF4
-_021E8B84:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E8BA4
- ldr r1, _021E8C04 ; =0xFFFEC5D2
- mov r0, #6
- bl MOD04_021E8E08
- b _021E8BF4
-_021E8BA4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- beq _021E8BBC
- bl MOD04_021E4BF4
- b _021E8BF4
-_021E8BBC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E8BEC
- mov r0, #0x12
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1f0]
- str r1, [r4, #0x1f4]
- b _021E8BF4
-_021E8BEC:
- mov r0, #1
- bl MOD04_021E4CF8
-_021E8BF4:
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E8C00: .word 0xFFFEC780
-_021E8C04: .word 0xFFFEC5D2
- arm_func_end MOD04_021E8A74
-
- arm_func_start MOD04_021E8C08
-MOD04_021E8C08: ; 0x021E8C08
- stmdb sp!, {r4, r5, r6, lr}
- mov r5, r0
- mov r4, r2
- cmp r1, #2
- beq _021E8C30
- cmp r1, #3
- beq _021E8CDC
- cmp r1, #4
- beq _021E8DA4
- ldmia sp!, {r4, r5, r6, pc}
-_021E8C30:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E8CCC
- ldrb r0, [r4]
- cmp r0, #1
- bne _021E8C58
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
-_021E8C58:
- ldrb r6, [r4, #1]
- bl MOD04_021E26E4
- ldrb r1, [r4, #2]
- add r0, r0, r6
- strb r1, [r0, #0x2d0]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r0, #0x200]
- add r0, r4, r6, lsl #2
- str r1, [r0, #0xf4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E8CA4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E8CB8
-_021E8CA4:
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x16]
-_021E8CB8:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ad]
- mov r0, #9
- bl MOD04_021E26D0
-_021E8CCC:
- mov r0, r5
- mov r1, #3
- bl MOD04_021E4910
- ldmia sp!, {r4, r5, r6, pc}
-_021E8CDC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x10
- bne _021E8D94
- bl MOD04_021E26E4
- ldr r2, [r0, #0x1d4]
- mov r1, #1
- orr r1, r2, r1, lsl r5
- str r1, [r0, #0x1d4]
- ldrb r1, [r4]
- ldrb r0, [r4, #1]
- orr r4, r1, r0, lsl #8
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb0]
- cmp r4, r0
- ble _021E8D2C
- bl MOD04_021E26E4
- add r0, r0, #0x100
- strh r4, [r0, #0xb0]
-_021E8D2C:
- mov r0, #0
- bl MOD04_021E3EC4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d4]
- cmp r4, r0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E8D88
- mov r4, #4
-_021E8D60:
- bl MOD04_021E26E4
- add r0, r0, r5
- ldrb r0, [r0, #0x2d0]
- mov r1, r4
- bl MOD04_021E4910
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E8D60
-_021E8D88:
- mov r0, #0x11
- bl MOD04_021E26D0
- ldmia sp!, {r4, r5, r6, pc}
-_021E8D94:
- mov r0, r5
- mov r1, #4
- bl MOD04_021E4910
- ldmia sp!, {r4, r5, r6, pc}
-_021E8DA4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #9
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, #4
- bl MOD04_021E51C0
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E8C08
-
- arm_func_start MOD04_021E8DC0
-MOD04_021E8DC0: ; 0x021E8DC0
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x16]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E8DC0
-
- 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 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 MOD04_021E4B40
- mov r0, r4
- mov r1, r5
- bl MOD04_021DD6B0
- ldr r1, _021E8EC8 ; =UNK04_0220D3F0
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- moveq r7, #1
- movne r7, #0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r8, #1
- movne r8, #0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r5, r0
- bl MOD04_021E26E4
- str r5, [sp]
- ldr r1, [r0, #0x468]
- mov r0, r4
- str r1, [sp, #4]
- ldr r4, [r6, #0x464]
- mov r2, r8
- mov r3, r7
- mov r1, #0
- blx r4
- bl MOD04_021E8034
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021E8EC8: .word UNK04_0220D3F0
- arm_func_end MOD04_021E8E08
-
- arm_func_start MOD04_021E8ECC
-MOD04_021E8ECC: ; 0x021E8ECC
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x3cd]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E8ECC
-
- 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
- mov sl, #0
- str r1, [sp, #8]
- add sb, sp, #0xc
- add r5, sp, #0x1c
- mov r7, sl
- add r8, fp, #1
- mov r6, #0xa
- mvn r4, #0
-_021E8F20:
- mov r0, sb
- mov r1, r8
- mov r2, sl
- bl MOD04_021E761C
- cmp r0, r4
- beq _021E8F58
- mov r0, sb
- mov r1, r7
- mov r2, r6
- bl strtoul
- str r0, [r5, sl, lsl #2]
- add sl, sl, #1
- cmp sl, #0x80
- blt _021E8F20
-_021E8F58:
- add r0, sp, #0x1c
- str r0, [sp]
- str sl, [sp, #4]
- ldrb r0, [fp]
- mov r2, #0
- ldr r1, [sp, #8]
- mov r3, r2
- bl MOD04_021E6730
- add sp, sp, #0x21c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_end MOD04_021E8EF4
-
- 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 MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #0x1c
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #7
- beq _021E8FC4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xc
- addne sp, sp, #0x1c
- ldmneia sp!, {r4, r5, r6, r7, pc}
-_021E8FC4:
- cmp r4, #0
- beq _021E9140
- cmp r4, #5
- addeq sp, sp, #0x1c
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- cmp r4, #6
- bne _021E9114
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xc]
- add r1, r1, #1
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xc]
- cmp r0, #5
- bls _021E9030
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9030:
- bl MOD04_021E26E4
- ldr r3, [r0, #0x200]
- ldr r2, _021E91F8 ; =UNK04_0220D394
- add r0, sp, #0x10
- mov r1, #0xc
- bl OS_SNPrintf
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r2, [r6, #0x14]
- ldrb r1, [r0, #0x14]
- add r0, r7, r2, lsl #2
- add r1, r5, r1, lsl #1
- add r1, r1, #0x200
- ldrh r1, [r1, #0x90]
- ldr r0, [r0, #0x210]
- mov r2, #0
- bl MOD04_021FFEB0
- mov r5, r0
- bl MOD04_021E26E4
- mvn r1, #0
- str r1, [sp]
- ldr r3, _021E91FC ; =0x00001388
- mov r1, #0
- str r3, [sp, #4]
- ldr r0, [r0, #8]
- mov r2, r5
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- ldr r0, [r4, #4]
- add r3, sp, #0x10
- ldr r0, [r0]
- bl MOD04_021FD52C
- cmp r0, #1
- bne _021E90E0
- 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 MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- add sp, sp, #0x1c
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9114:
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- add sp, sp, #0x1c
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9140:
- bl MOD04_021DF704
- mov r5, r0
- mvn r1, #0
- cmp r5, r1
- bne _021E9168
- ldr r1, _021E9200 ; =0xFFFEABC4
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9168:
- bl MOD04_021DF6BC
- mov r4, r0
- mov r0, r5
- bl MOD04_021DF638
- str r6, [r4]
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r2, [r0, #0xd]
- mov r1, #0
- add r2, r2, #1
- strb r2, [r0, #0xd]
- strb r5, [r4]
- strh r1, [r4, #2]
- str r1, [r4, #4]
- bl MOD04_021E26E4
- mov r5, r0
- 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 MOD04_021FD3F8
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xc
- bne _021E91E8
- mov r0, #0
- bl MOD04_021E51C0
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E91E8:
- mov r0, #1
- bl MOD04_021E51C0
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E91F8: .word UNK04_0220D394
-_021E91FC: .word 0x00001388
-_021E9200: .word 0xFFFEABC4
- arm_func_end MOD04_021E8F80
-
- 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 MOD04_021E26E4
- cmp r0, #0
- beq _021E9244
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #7
- bne _021E9244
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a9]
- cmp r0, #0
- beq _021E925C
-_021E9244:
- ldr r1, _021E944C ; =UNK04_0220D48C
- mov r0, r8
- mvn r2, #0
- bl MOD04_021FD6B0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E925C:
- bl MOD04_021DF704
- mov r5, r0
- mvn r2, #0
- cmp r5, r2
- bne _021E9290
- ldr r1, _021E9450 ; =UNK04_0220D498
- mov r0, r8
- bl MOD04_021FD6B0
- ldr r1, _021E9454 ; =0xFFFEABC4
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E9290:
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0x210]
- cmp r7, r0
- bne _021E92D4
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #1
- add r0, r0, #0x200
- ldrh r0, [r0, #0x90]
- cmp r6, r0
- beq _021E9364
-_021E92D4:
- ldr r0, [sp, #0x24]
- ldrb r1, [r0]
- cmp r1, #0
- beq _021E934C
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- mov r4, r0
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, sb, r0, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r4, r0
- bne _021E934C
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- str r7, [r0, #0x210]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #1
- add r0, r0, #0x200
- strh r6, [r0, #0x90]
- b _021E9364
-_021E934C:
- ldr r1, _021E9458 ; =UNK04_0220D4A4
- mov r0, r8
- mvn r2, #0
- bl MOD04_021FD6B0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E9364:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- bl MOD04_021E26E4
- ldr r1, [r0, #8]
- mov r0, r8
- bl MOD04_021FD6BC
- cmp r0, #0
- bne _021E93A0
- ldr r1, _021E945C ; =0xFFFEC5E6
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E93A0:
- bl MOD04_021E8ECC
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- bne _021E93D4
- ldr r1, [sp, #0x20]
- ldr r0, _021E9460 ; =0x0000FFFF
- mov r4, r1, asr #1
- cmp r4, r0
- movge r4, r0
- bl MOD04_021E26E4
- add r0, r0, #0x100
- strh r4, [r0, #0xb0]
-_021E93D4:
- mov r0, r5
- bl MOD04_021DF6BC
- mov r4, r0
- mov r0, r5
- bl MOD04_021DF638
- str r8, [r4]
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- add r1, r1, #1
- strb r1, [r0, #0xd]
- strb r5, [r4]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- mov r0, r8
- mov r2, #0
- sub r1, r1, #1
- add r1, r5, r1
- ldrb r3, [r1, #0x2d0]
- mov r1, r4
- strb r3, [r4, #1]
- strh r2, [r4, #2]
- str r2, [r4, #4]
- bl MOD04_021FD3F8
- mov r0, #2
- bl MOD04_021E51C0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021E944C: .word UNK04_0220D48C
-_021E9450: .word UNK04_0220D498
-_021E9454: .word 0xFFFEABC4
-_021E9458: .word UNK04_0220D4A4
-_021E945C: .word 0xFFFEC5E6
-_021E9460: .word 0x0000FFFF
- arm_func_end MOD04_021E9204
-
- arm_func_start MOD04_021E9464
-MOD04_021E9464: ; 0x021E9464
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #8
- ldr r0, [sp, #0x18]
- mov r5, r1
- mov r6, r2
- mov r4, r3
- cmp r0, #0
- beq _021E948C
- cmp r4, #0
- bne _021E9498
-_021E948C:
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E9498:
- add r1, sp, #0
- mov r0, #0
- mov r2, #8
- bl MIi_CpuClear32
- mov r1, r6, asr #8
- mov r0, r6, lsl #8
- mov r2, #2
- and r1, r1, #0xff
- and r0, r0, #0xff00
- orr r0, r1, r0
- strb r2, [sp, #1]
- strh r0, [sp, #2]
- str r5, [sp, #4]
- ldrb r5, [r4]
- cmp r5, #0xfe
- bne _021E94E4
- ldrb r0, [r4, #1]
- cmp r0, #0xfd
- beq _021E94EC
-_021E94E4:
- cmp r5, #0x5c
- bne _021E9518
-_021E94EC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- beq _021E9558
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r2, [sp, #0x18]
- add r3, sp, #0
- mov r1, r4
- bl MOD04_022011A8
- b _021E9558
-_021E9518:
- ldr r1, _021E9564 ; =UNK04_0220F018
- mov r0, r4
- mov r2, #6
- bl memcmp
- cmp r0, #0
- bne _021E9544
- ldr r1, [sp, #0x18]
- add r2, sp, #0
- mov r0, r4
- bl MOD04_021FFF78
- b _021E9558
-_021E9544:
- cmp r5, #0xfe
- moveq r0, #0
- add sp, sp, #8
- movne r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E9558:
- mov r0, #1
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E9564: .word UNK04_0220F018
- arm_func_end MOD04_021E9464
-
- arm_func_start MOD04_021E9568
-MOD04_021E9568: ; 0x021E9568
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- mov r4, r0
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- cmp r4, #0
- bne _021E95E4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- beq _021E95B8
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202534
-_021E95B8:
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD6D4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E95E4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xd
- addls pc, pc, r0, lsl #2
- b _021E9D04
-_021E960C: ; jump table
- b _021E9D04 ; case 0
- b _021E9C0C ; case 1
- b _021E97B8 ; case 2
- b _021E97B8 ; case 3
- b _021E9644 ; case 4
- b _021E97B8 ; case 5
- b _021E9D04 ; case 6
- b _021E9870 ; case 7
- b _021E9D04 ; case 8
- b _021E9D04 ; case 9
- b _021E9D04 ; case 10
- b _021E99F8 ; case 11
- b _021E9D04 ; case 12
- b _021E9AEC ; case 13
-_021E9644:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c8]
- cmp r0, #0
- beq _021E9730
- bl OS_GetTick
- mov r6, r0
- mov r7, r1
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- ldr r1, [r5, #0x1cc]
- ldr r0, [r5, #0x1d0]
- subs r2, r6, r1
- sbc r0, r7, r0
- mov r1, r0, lsl #6
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- mov r3, #0
- bl _ll_udiv
- cmp r1, #0
- ldr r1, [r4, #0x1c8]
- cmpeq r0, r1
- bls _021E9730
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E971C
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1aa]
- add r1, r1, #1
- strb r1, [r0, #0x1aa]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1aa]
- cmp r0, #5
- bls _021E96F8
- ldr r1, _021E9EFC ; =0xFFFEC5D2
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E96F8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0
- 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 MOD04_021E5C44
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
-_021E9730:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1bc]
- cmp r0, #0
- beq _021E9D04
- 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 MOD04_021E26E4
- ldr r1, [r0, #0x1c0]
- ldr r0, [r0, #0x1c4]
- subs r2, r4, r1
- sbc r0, r6, r0
- mov r1, r0, lsl #6
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- mov r3, #0
- bl _ll_udiv
- cmp r1, #0
- cmpeq r0, r5
- blo _021E9D04
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0
- bl MOD04_021E6038
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E97B8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe8]
- cmp r0, #0
- ble _021E9D04
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #3
- bne _021E97EC
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- ldr r0, _021E9F00 ; =0x00000BB8
- mla r5, r1, r0, r0
- b _021E9800
-_021E97EC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe8]
- cmp r0, #1
- moveq r5, #0x3e8
- ldrne r5, _021E9F00 ; =0x00000BB8
-_021E9800:
- bl OS_GetTick
- mov r4, r0
- mov r6, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0xec]
- ldr r0, [r0, #0xf0]
- subs r3, r4, r1
- sbc r0, r6, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- cmp r1, #0
- cmpeq r0, r5
- bls _021E9D04
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E7E5C
- bl MOD04_021E38E8
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe8]
- b _021E9D04
-_021E9870:
- bl MOD04_021E26E4
- ldr r2, [r0, #0x18c]
- ldr r1, [r0, #0x190]
- mov r0, #0
- cmp r1, r0
- cmpeq r2, r0
- beq _021E9900
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x18c]
- ldr r0, [r0, #0x190]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F04 ; =0x000061A8
- cmp r1, #0
- cmpeq r0, r2
- bls _021E9D04
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9900:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cc]
- cmp r0, #6
- bne _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x45c]
- ldr r0, [r0, #0x460]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F08 ; =0x00001770
- cmp r1, #0
- cmpeq r0, r2
- bls _021E9D04
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x3cd]
- add r1, r1, #1
- strb r1, [r0, #0x3cd]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cd]
- cmp r0, #5
- bls _021E9998
- bl MOD04_021E8ECC
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9998:
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- add r1, r4, #0x3d4
- str r1, [sp]
- add r3, r5, #0x300
- ldr r1, [r0, #0x458]
- mov r0, #6
- str r1, [sp, #4]
- ldr r1, [r7, #0x454]
- ldr r2, [r6, #0x3d0]
- ldrh r3, [r3, #0xce]
- bl MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E99F8:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cc]
- cmp r0, #2
- bne _021E9D04
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E9A60
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x45c]
- ldr r0, [r0, #0x460]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F08 ; =0x00001770
- cmp r1, #0
- cmpeq r0, r2
- bhi _021E9AB8
-_021E9A60:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x45c]
- ldr r0, [r0, #0x460]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F0C ; =0x00004A38
- cmp r1, #0
- cmpeq r0, r2
- bls _021E9D04
-_021E9AB8:
- bl MOD04_021E8ECC
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9AEC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cc]
- cmp r0, #8
- bne _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x45c]
- ldr r0, [r0, #0x460]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F10 ; =0x00007530
- cmp r1, #0
- cmpeq r0, r2
- bls _021E9D04
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x3cd]
- add r1, r1, #1
- strb r1, [r0, #0x3cd]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cd]
- cmp r0, #0
- beq _021E9BAC
- bl MOD04_021E8ECC
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E9BA4
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9BA4:
- bl MOD04_021E4CB4
- b _021E9D04
-_021E9BAC:
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- add r1, r4, #0x3d4
- str r1, [sp]
- add r3, r5, #0x300
- ldr r1, [r0, #0x458]
- mov r0, #8
- str r1, [sp, #4]
- ldr r1, [r7, #0x454]
- ldr r2, [r6, #0x3d0]
- ldrh r3, [r3, #0xce]
- bl MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9C0C:
- bl MOD04_021DF88C
- cmp r0, #5
- bne _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1f8]
- ldr r0, [r0, #0x1fc]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F10 ; =0x00007530
- cmp r1, #0
- cmpeq r0, r2
- bls _021E9D04
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ad]
- cmp r0, #5
- blo _021E9C8C
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9C8C:
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [sp]
- str r1, [sp, #4]
- ldrh r3, [r0, #0xa4]
- ldr r1, [r5, #0xf4]
- ldr r2, [r4, #0x24]
- mov r0, #0x40
- bl MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1ad]
- add r1, r1, #1
- strb r1, [r0, #0x1ad]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- ldr r2, _021E9F14 ; =0xFF403B3A
- mvn r3, #0
- adds r0, r0, r2
- str r0, [r4, #0x1f8]
- adc r0, r1, r3
- str r0, [r4, #0x1fc]
-_021E9D04:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- beq _021E9D24
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- bne _021E9DA0
-_021E9D24:
- bl MOD04_021E26E4
- ldr r2, [r0, #0x184]
- ldr r1, [r0, #0x188]
- mov r0, #0
- cmp r1, r0
- cmpeq r2, r0
- beq _021E9DA0
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x184]
- ldr r0, [r0, #0x188]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F18 ; =0x00002710
- cmp r1, #0
- cmpeq r0, r2
- bls _021E9DA0
- bl MOD04_021E26E4
- mov r1, #0
- add r3, r0, #0x194
- mov r2, r1
- mov r0, #1
- bl MOD04_021E2784
-_021E9DA0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- beq _021E9DBC
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203C38
-_021E9DBC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_021E9F1C
- bl MOD04_02200468
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021E9DEC
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD6D4
-_021E9DEC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x12
- bne _021E9E54
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1f0]
- ldr r0, [r0, #0x1f4]
- subs r3, r4, r1
- sbc r0, r5, r0
- mov r1, r0, lsl #6
- ldr r2, _021E9EF8 ; =0x000082EA
- orr r1, r1, r3, lsr #26
- mov r0, r3, lsl #6
- mov r3, #0
- bl _ll_udiv
- ldr r2, _021E9F00 ; =0x00000BB8
- cmp r1, #0
- cmpeq r0, r2
- bls _021E9E54
- bl MOD04_021E4BF4
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
-_021E9E54:
- bl MOD04_021E4684
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E41C4
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xa
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x16]
- bl MOD04_021E85D4
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ae]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x47c]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x480]
- ldr r1, [r4, #0x47c]
- blx r1
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E9EF8: .word 0x000082EA
-_021E9EFC: .word 0xFFFEC5D2
-_021E9F00: .word 0x00000BB8
-_021E9F04: .word 0x000061A8
-_021E9F08: .word 0x00001770
-_021E9F0C: .word 0x00004A38
-_021E9F10: .word 0x00007530
-_021E9F14: .word 0xFF403B3A
-_021E9F18: .word 0x00002710
- arm_func_end MOD04_021E9568
-
- arm_func_start MOD04_021E9F1C
-MOD04_021E9F1C: ; 0x021E9F1C
- stmdb sp!, {r4, lr}
- movs r4, r0
- ldmeqia sp!, {r4, pc}
- bl MOD04_02202534
- ldr r0, [r4, #0xb4]
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E9F5C
- cmp r0, #1
- beq _021E9F5C
- cmp r0, #2
- beq _021E9FB0
- ldmia sp!, {r4, pc}
-_021E9F5C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- addls pc, pc, r0, lsl #2
- ldmia sp!, {r4, pc}
-_021E9F70: ; jump table
- ldmia sp!, {r4, pc} ; case 0
- b _021E9FA0 ; case 1
- b _021E9FA0 ; case 2
- b _021E9FA0 ; case 3
- b _021E9FA0 ; case 4
- ldmia sp!, {r4, pc} ; case 5
- b _021E9FA0 ; case 6
- ldmia sp!, {r4, pc} ; case 7
- ldmia sp!, {r4, pc} ; case 8
- ldmia sp!, {r4, pc} ; case 9
- ldmia sp!, {r4, pc} ; case 10
- b _021E9FA0 ; case 11
-_021E9FA0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- ldmia sp!, {r4, pc}
-_021E9FB0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E9F1C
-
- arm_func_start MOD04_021E9FD0
-MOD04_021E9FD0: ; 0x021E9FD0
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x18
- mov r5, r2
- mov r6, r0
- mov r4, r3
- mov r2, r1
- mov r3, r5
- mov r0, #3
- mov r1, #0
- bl MOD04_021E80C4
- bl MOD04_021E26E4
- str r4, [r0, #0x46c]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x28]
- str r1, [r0, #0x470]
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r4, #0x20]
- bl MOD04_021E26E4
- str r6, [r0, #0xf4]
- mov r0, #4
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- bne _021EA0A4
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- mov r2, r0
- mov r0, #0x14
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r3, #0
- str r3, [sp, #8]
- 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 MOD04_02203EA4
- str r0, [r6, #0xe4]
-_021EA0A4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- bne _021EA0C8
- mov r0, #5
- bl MOD04_021E38E8
- cmp r0, #0
- addne sp, sp, #0x18
- ldmneia sp!, {r4, r5, r6, pc}
-_021EA0C8:
- ldr r1, _021EA134 ; =UNK04_0220D3F0
- mov r0, #5
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_021E397C
- cmp r0, #0
- addne sp, sp, #0x18
- ldmneia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- bne _021EA110
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- bl MOD04_021EA1E0
- cmp r0, #0
- addne sp, sp, #0x18
- ldmneia sp!, {r4, r5, r6, pc}
-_021EA110:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0
- bl MOD04_021E6038
- bl MOD04_021E61EC
- cmp r0, #0
- add sp, sp, #0x18
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021EA130: .word MOD04_021E32E4
-_021EA134: .word UNK04_0220D3F0
- arm_func_end MOD04_021E9FD0
-
- arm_func_start MOD04_021EA138
-MOD04_021EA138: ; 0x021EA138
- stmdb sp!, {r4, lr}
- mov lr, r1
- mov ip, r2
- mov r4, r3
- mov r1, r0
- mov r2, lr
- mov r3, ip
- mov r0, #2
- bl MOD04_021E80C4
- bl MOD04_021E26E4
- str r4, [r0, #0x46c]
- bl MOD04_021E26E4
- ldr r1, [sp, #8]
- str r1, [r0, #0x470]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r4, #0xf4]
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0x2f0]
- bl MOD04_021E26E4
- mov r2, #0
- strb r2, [r0, #0xe]
- ldr r1, _021EA1DC ; =UNK04_022106DC
- mov r0, #0xa
- strb r2, [r1, #1]
- bl MOD04_021E26D0
- bl MOD04_021E85D4
- bl MOD04_021E397C
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- bl MOD04_021EA1E0
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021EA1DC: .word UNK04_022106DC
- arm_func_end MOD04_021EA138
-
- 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 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 MOD04_021E26E4
- str r4, [r0, #0x200]
- mov sl, #0
- ldr fp, _021EA344 ; =MOD04_021E2E18
- mov r4, sl
- mov r5, #1
-_021EA21C:
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- mov r8, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD454
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r3, [r0, #0x2f8]
- mov r1, r8
- str r3, [sp]
- str r5, [sp, #4]
- str r5, [sp, #8]
- ldr r3, _021EA348 ; =MOD04_021E2E14
- str fp, [sp, #0xc]
- str r3, [sp, #0x10]
- ldr r3, _021EA34C ; =MOD04_021E2E10
- mov r2, r7
- str r3, [sp, #0x14]
- ldr r3, _021EA350 ; =MOD04_021E2D68
- add r0, sb, #0x10
- str r3, [sp, #0x18]
- ldr r3, _021EA354 ; =MOD04_021E2D60
- str r3, [sp, #0x1c]
- ldr r3, _021EA358 ; =MOD04_021E2D54
- str r3, [sp, #0x20]
- str r4, [sp, #0x24]
- ldr r3, [r6, #0x2f4]
- bl MOD04_022025B0
- movs r6, r0
- beq _021EA2E4
- cmp r6, #3
- bne _021EA2C4
- cmp sl, #4
- bne _021EA2D8
-_021EA2C4:
- mov r0, r6
- bl MOD04_021E3800
- add sp, sp, #0x2c
- mov r0, r6
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021EA2D8:
- add sl, sl, #1
- cmp sl, #5
- blt _021EA21C
-_021EA2E4:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c]
- bl MOD04_021E26E4
- mov r1, #0
- strh r1, [r0, #0x1a]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r1, _021EA35C ; =MOD04_021E2D2C
- bl MOD04_02202568
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r1, _021EA360 ; =MOD04_021E2C78
- bl MOD04_02202598
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r1, _021EA364 ; =MOD04_021E2B64
- bl MOD04_02202580
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- 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 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_end MOD04_021EA1E0
-
- arm_func_start MOD04_021EA368
-MOD04_021EA368: ; 0x021EA368
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl MOD04_021E26F4
- bl MOD04_021E26E4
- str r6, [r0]
- bl MOD04_021E26E4
- str r5, [r0, #4]
- bl MOD04_021E26E4
- str r4, [r0, #8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x10]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c]
- bl MOD04_021E26E4
- mov r1, #0
- strh r1, [r0, #0x1a]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe4]
- mov r0, r1
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xf]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x19]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1af]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb6]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1dc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x200]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x10]
- str r1, [r0, #0x2f4]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x14]
- str r1, [r0, #0x2f8]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x18]
- str r1, [r0, #0x2fc]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x1c]
- str r1, [r0, #0x300]
- bl MOD04_021E26E4
- add r0, r0, #0x304
- mov r1, #0
- mov r2, #0x40
- bl MI_CpuFill8
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x344]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x464]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x468]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x474]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x478]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x47c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x480]
- bl MOD04_021E4164
- ldr r1, _021EA4D0 ; =UNK04_022106DC
- mov r0, #0
- strb r0, [r1]
- strb r0, [r1, #1]
- strh r0, [r1, #2]
- bl MOD04_021E8174
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021EA4D0: .word UNK04_022106DC
- arm_func_end MOD04_021EA368
-
- arm_func_start MOD04_021EA4D4
-MOD04_021EA4D4: ; 0x021EA4D4
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #0
- ldmneia sp!, {pc}
- bl MOD04_021E26E4
- cmp r0, #0
- beq _021EA518
- bl MOD04_021DF88C
- cmp r0, #5
- bne _021EA518
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a9]
- cmp r0, #0
- beq _021EA524
-_021EA518:
- add sp, sp, #4
- mov r0, #0
- ldmfd sp!, {pc}
-_021EA524:
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021EA4D4
-
- arm_func_start MOD04_021EA530
-MOD04_021EA530: ; 0x021EA530
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021EA4D4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021E4F94
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021EA530
-
arm_func_start MOD04_021EA55C
MOD04_021EA55C: ; 0x021EA55C
stmdb sp!, {lr}
@@ -60012,12 +39644,8 @@ _0220BAB8:
arm_func_end MOD04_url_strlen
.section .rodata
- .global UNK_0220BAC4
-UNK04_0220BAC4: ; 0x0220BAC4
- .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .global UNK_0220BADC
+ .global UNK04_0220BADC
UNK04_0220BADC: ; 0x0220BADC
.byte 0x57, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x32
@@ -60168,1150 +39796,6 @@ UNK04_0220BE70: ; 0x0220BE70
.byte 0x0A, 0x00, 0x00, 0x00
.section .data
- .global UNK_0220BEB4
-UNK04_0220BEB4: ; 0x0220BEB4
- .word UNK04_0220BED0
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00
-
- .global UNK04_0220BED0
-UNK04_0220BED0: ; 0x0220BED0
- .asciz "https://nas.test.nintendowifi.net/ac"
-
- .balign 4, 0
- .global UNK_0220BEF8
-UNK04_0220BEF8: ; 0x0220BEF8
- .byte 0x61, 0x63, 0x63, 0x74, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x00
-
- .global UNK_0220BF04
-UNK04_0220BF04: ; 0x0220BF04
- .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220BF0C
-UNK04_0220BF0C: ; 0x0220BF0C
- .byte 0x6C, 0x6F, 0x67, 0x69, 0x6E, 0x00, 0x00, 0x00
-
- .global UNK_0220BF14
-UNK04_0220BF14: ; 0x0220BF14
- .byte 0x67, 0x73, 0x62, 0x72, 0x63, 0x64, 0x00, 0x00
-
- .global UNK_0220BF1C
-UNK04_0220BF1C: ; 0x0220BF1C
- .asciz "Y"
-
- .balign 4, 0
- .global UNK_0220BF20
-UNK04_0220BF20: ; 0x0220BF20
- .byte 0x69, 0x73, 0x77, 0x66, 0x63, 0x00, 0x00, 0x00
-
- .global UNK_0220BF28
-UNK04_0220BF28: ; 0x0220BF28
- .byte 0x69, 0x6E, 0x67, 0x61, 0x6D, 0x65, 0x73, 0x6E, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF34
-UNK04_0220BF34: ; 0x0220BF34
- .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF3C
-UNK04_0220BF3C: ; 0x0220BF3C
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220BF48
-UNK04_0220BF48: ; 0x0220BF48
- .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF54
-UNK04_0220BF54: ; 0x0220BF54
- .byte 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00
-
- .global UNK_0220BF5C
-UNK04_0220BF5C: ; 0x0220BF5C
- .byte 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x6F, 0x72, 0x00
-
- .global UNK_0220BF64
-UNK04_0220BF64: ; 0x0220BF64
- .byte 0x63, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220BF70
-UNK04_0220BF70: ; 0x0220BF70
- .byte 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF7C
-UNK04_0220BF7C: ; 0x0220BF7C
- .byte 0x53, 0x65, 0x74, 0x2D, 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x00, 0x00
-
- .global UNK_0220BF88
-UNK04_0220BF88: ; 0x0220BF88
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF98
-UNK04_0220BF98: ; 0x0220BF98
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00
-
- .balign 4, 0
- .global UNK_0220BFA4
-UNK04_0220BFA4: ; 0x0220BFA4
- .asciz "https://nas.nintendowifi.net/ac"
-
- .balign 4, 0
- .global UNK_0220BFC4
-UNK04_0220BFC4: ; 0x0220BFC4
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BFD4
-UNK04_0220BFD4: ; 0x0220BFD4
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00
-
- .global UNK_0220BFE4
-UNK04_0220BFE4: ; 0x0220BFE4
- .byte 0x25, 0x30, 0x33, 0x64, 0x25, 0x30, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BFF0
-UNK04_0220BFF0: ; 0x0220BFF0
- .byte 0x73, 0x64, 0x6B, 0x76, 0x65, 0x72, 0x00, 0x00
-
- .global UNK_0220BFF8
-UNK04_0220BFF8: ; 0x0220BFF8
- .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00
-
- .global UNK_0220C000
-UNK04_0220C000: ; 0x0220C000
- .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00
-
- .global UNK_0220C008
-UNK04_0220C008: ; 0x0220C008
- .byte 0x62, 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00
-
- .global UNK_0220C010
-UNK04_0220C010: ; 0x0220C010
- .byte 0x61, 0x70, 0x69, 0x6E, 0x66, 0x6F, 0x00, 0x00
-
- .global UNK_0220C018
-UNK04_0220C018: ; 0x0220C018
- .byte 0x67, 0x61, 0x6D, 0x65, 0x63, 0x64, 0x00, 0x00
-
- .global UNK_0220C020
-UNK04_0220C020: ; 0x0220C020
- .byte 0x6D, 0x61, 0x6B, 0x65, 0x72, 0x63, 0x64, 0x00
-
- .global UNK_0220C028
-UNK04_0220C028: ; 0x0220C028
- .byte 0x75, 0x6E, 0x69, 0x74, 0x63, 0x64, 0x00, 0x00
-
- .global UNK_0220C030
-UNK04_0220C030: ; 0x0220C030
- .byte 0x6D, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00
-
- .global UNK_0220C038
-UNK04_0220C038: ; 0x0220C038
- .byte 0x6C, 0x61, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C040
-UNK04_0220C040: ; 0x0220C040
- .byte 0x62, 0x69, 0x72, 0x74, 0x68, 0x00, 0x00, 0x00
-
- .global UNK_0220C048
-UNK04_0220C048: ; 0x0220C048
- .byte 0x64, 0x65, 0x76, 0x74, 0x69, 0x6D, 0x65, 0x00
-
- .global UNK_0220C050
-UNK04_0220C050: ; 0x0220C050
- .byte 0x64, 0x65, 0x76, 0x6E, 0x61, 0x6D, 0x65, 0x00
-
- .global UNK_0220C058
-UNK04_0220C058: ; 0x0220C058
- .byte 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C060
-UNK04_0220C060: ; 0x0220C060
- .byte 0x4E, 0x69, 0x74, 0x72, 0x6F, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4B, 0x2F, 0x25
- .byte 0x64, 0x2E, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C078
-UNK04_0220C078: ; 0x0220C078
- .byte 0x55, 0x73, 0x65, 0x72, 0x2D, 0x41, 0x67, 0x65, 0x6E, 0x74, 0x00, 0x00
-
- .global UNK_0220C084
-UNK04_0220C084: ; 0x0220C084
- .byte 0x48, 0x54, 0x54, 0x50, 0x5F, 0x58, 0x5F, 0x47, 0x41, 0x4D, 0x45, 0x43, 0x44, 0x00, 0x00, 0x00
-
- .global UNK_0220C094
-UNK04_0220C094: ; 0x0220C094
- .byte 0x25, 0x30, 0x31, 0x33, 0x6C, 0x6C, 0x75, 0x00
-
- .global UNK_0220C09C
-UNK04_0220C09C: ; 0x0220C09C
- .byte 0x25, 0x30, 0x33, 0x75, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0A4
-UNK04_0220C0A4: ; 0x0220C0A4
- .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0AC
-UNK04_0220C0AC: ; 0x0220C0AC
- .byte 0x25, 0x30, 0x32, 0x78, 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0B8
-UNK04_0220C0B8: ; 0x0220C0B8
- .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64
- .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0D4
-UNK04_0220C0D4: ; 0x0220C0D4
- .byte 0x25, 0x30, 0x32, 0x64, 0x3A, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2D, 0x30, 0x30, 0x00
-
- .global UNK_0220C0E4
-UNK04_0220C0E4: ; 0x0220C0E4
- .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8
- .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0
- .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC
-
- .global UNK_0220C110
-UNK04_0220C110: ; 0x0220C110
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79
- .byte 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00
-
- .global UNK_0220C12C
-UNK04_0220C12C: ; 0x0220C12C
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79
- .byte 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220C148
-UNK04_0220C148: ; 0x0220C148
- .byte 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C150
-UNK04_0220C150: ; 0x0220C150
- .byte 0x20, 0x00, 0x00, 0x00
-
- .global UNK_0220C154
-UNK04_0220C154: ; 0x0220C154
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220C160
-UNK04_0220C160: ; 0x0220C160
- .byte 0x32, 0x30, 0x30, 0x00
-
- .global UNK_0220C164
-UNK04_0220C164: ; 0x0220C164
- .byte 0x0D, 0x0A, 0x00, 0x00
-
- .global UNK_0220C168
-UNK04_0220C168: ; 0x0220C168
- .byte 0x3A, 0x20, 0x00, 0x00
-
- .global UNK_0220C16C
-UNK04_0220C16C: ; 0x0220C16C
- .byte 0x3D, 0x00, 0x00, 0x00
-
- .global UNK_0220C170
-UNK04_0220C170: ; 0x0220C170
- .byte 0x26, 0x00, 0x00, 0x00
-
- .global UNK_0220C174
-UNK04_0220C174: ; 0x0220C174
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E
- .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C194
-UNK04_0220C194: ; 0x0220C194
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E
- .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C1B4
-UNK04_0220C1B4: ; 0x0220C1B4
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74
- .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00
-
- .global UNK_0220C1D0
-UNK04_0220C1D0: ; 0x0220C1D0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74
- .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00
-
- .global UNK_0220C1EC
-UNK04_0220C1EC: ; 0x0220C1EC
- .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x00
-
- .global UNK_0220C1F4
-UNK04_0220C1F4: ; 0x0220C1F4
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C200
-UNK04_0220C200: ; 0x0220C200
- .byte 0x3A, 0x00, 0x00, 0x00
-
- .global UNK_0220C204
-UNK04_0220C204: ; 0x0220C204
- .byte 0x2F, 0x00, 0x00, 0x00
-
- .global UNK_0220C208
-UNK04_0220C208: ; 0x0220C208
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x74, 0x72, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C218
-UNK04_0220C218: ; 0x0220C218
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C22C
-UNK04_0220C22C: ; 0x0220C22C
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65
- .byte 0x72, 0x00, 0x00, 0x00
-
- .global UNK_0220C240
-UNK04_0220C240: ; 0x0220C240
- .byte 0x25, 0x73, 0x00, 0x00
-
- .global UNK_0220C244
-UNK04_0220C244: ; 0x0220C244
- .byte 0x25, 0x73, 0x3D, 0x00
-
- .global UNK_0220C248
-UNK04_0220C248: ; 0x0220C248
- .byte 0x26, 0x25, 0x73, 0x3D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C250
-UNK04_0220C250: ; 0x0220C250
- .byte 0x25, 0x73, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C25C
-UNK04_0220C25C: ; 0x0220C25C
- .byte 0x50, 0x4F, 0x53, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E
- .byte 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x3A
- .byte 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x78, 0x2D, 0x77
- .byte 0x77, 0x77, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x75, 0x72, 0x6C, 0x65, 0x6E, 0x63, 0x6F, 0x64
- .byte 0x65, 0x64, 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C2B0
-UNK04_0220C2B0: ; 0x0220C2B0
- .byte 0x47, 0x45, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30
- .byte 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00
-
- .global UNK_0220C2D0
-UNK04_0220C2D0: ; 0x0220C2D0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72, 0x65
- .byte 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00
-
- .global UNK_0220C2E8
-UNK04_0220C2E8: ; 0x0220C2E8
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73, 0x65
- .byte 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00
-
- .global UNK_0220C300
-UNK04_0220C300: ; 0x0220C300
- .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C314
-UNK04_0220C314: ; 0x0220C314
- .byte 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220C320
-UNK04_0220C320: ; 0x0220C320
- .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220C328
-UNK04_0220C328: ; 0x0220C328
- .byte 0x25, 0x64, 0x00, 0x00
-
- .global UNK_0220C32C
-UNK04_0220C32C: ; 0x0220C32C
- .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x00, 0x00
-
- .global UNK_0220C33C
-UNK04_0220C33C: ; 0x0220C33C
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72
- .byte 0x65, 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00
-
- .global UNK_0220C354
-UNK04_0220C354: ; 0x0220C354
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73
- .byte 0x65, 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00
-
- .global UNK_0220C36C
-UNK04_0220C36C: ; 0x0220C36C
- .word UNK04_0220C370
-
- .global UNK_0220C370
-UNK04_0220C370: ; 0x0220C370
- .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x74
- .byte 0x65, 0x73, 0x74, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69
- .byte 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x00, 0x00, 0x00
-
- .global UNK_0220C394
-UNK04_0220C394: ; 0x0220C394
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63
- .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00
-
- .global UNK_0220C3B0
-UNK04_0220C3B0: ; 0x0220C3B0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B
- .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00, 0x00
-
- .global UNK_0220C3CC
-UNK04_0220C3CC: ; 0x0220C3CC
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00
-
- .global UNK_0220C3D8
-UNK04_0220C3D8: ; 0x0220C3D8
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00
-
- .global UNK_0220C3E8
-UNK04_0220C3E8: ; 0x0220C3E8
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x77, 0x61, 0x69, 0x74, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00
-
- .global UNK_0220C3F8
-UNK04_0220C3F8: ; 0x0220C3F8
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63
- .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00
-
- .global UNK_0220C418
-UNK04_0220C418: ; 0x0220C418
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220C424
-UNK04_0220C424: ; 0x0220C424
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74
- .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220C444
-UNK04_0220C444: ; 0x0220C444
- .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220C44C
-UNK04_0220C44C: ; 0x0220C44C
- .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00
-
- .global UNK_0220C454
-UNK04_0220C454: ; 0x0220C454
- .byte 0x48, 0x6F, 0x74, 0x53, 0x70, 0x6F, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x00
-
- .global UNK_0220C464
-UNK04_0220C464: ; 0x0220C464
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B
- .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00, 0x00
-
- .global UNK_0220C484
-UNK04_0220C484: ; 0x0220C484
- .byte 0x70, 0x61, 0x72, 0x73, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220C48C
-UNK04_0220C48C: ; 0x0220C48C
- .byte 0x48, 0x54, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C494
-UNK04_0220C494: ; 0x0220C494
- .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4A0
-UNK04_0220C4A0: ; 0x0220C4A0
- .byte 0x75, 0x72, 0x6C, 0x00
-
- .global UNK_0220C4A4
-UNK04_0220C4A4: ; 0x0220C4A4
- .byte 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4AC
-UNK04_0220C4AC: ; 0x0220C4AC
- .byte 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4B4
-UNK04_0220C4B4: ; 0x0220C4B4
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4C0
-UNK04_0220C4C0: ; 0x0220C4C0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00
-
- .global UNK_0220C4CC
-UNK04_0220C4CC: ; 0x0220C4CC
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00
-
- .global UNK_0220C4D8
-UNK04_0220C4D8: ; 0x0220C4D8
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4E8
-UNK04_0220C4E8: ; 0x0220C4E8
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4FC
-UNK04_0220C4FC: ; 0x0220C4FC
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63
- .byte 0x6B, 0x00, 0x00, 0x00
-
- .global UNK_0220C510
-UNK04_0220C510: ; 0x0220C510
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00
-
- .global UNK_0220C520
-UNK04_0220C520: ; 0x0220C520
- .byte 0x44, 0x65, 0x63, 0x00
-
- .global UNK_0220C524
-UNK04_0220C524: ; 0x0220C524
- .byte 0x4A, 0x75, 0x6C, 0x00
-
- .global UNK_0220C528
-UNK04_0220C528: ; 0x0220C528
- .byte 0x4F, 0x63, 0x74, 0x00
-
- .global UNK_0220C52C
-UNK04_0220C52C: ; 0x0220C52C
- .byte 0x53, 0x65, 0x70, 0x00
-
- .global UNK_0220C530
-UNK04_0220C530: ; 0x0220C530
- .byte 0x41, 0x75, 0x67, 0x00
-
- .global UNK_0220C534
-UNK04_0220C534: ; 0x0220C534
- .byte 0x4E, 0x6F, 0x76, 0x00
-
- .global UNK_0220C538
-UNK04_0220C538: ; 0x0220C538
- .byte 0x4A, 0x75, 0x6E, 0x00
-
- .global UNK_0220C53C
-UNK04_0220C53C: ; 0x0220C53C
- .byte 0x4D, 0x61, 0x79, 0x00
-
- .global UNK_0220C540
-UNK04_0220C540: ; 0x0220C540
- .byte 0x41, 0x70, 0x72, 0x00
-
- .global UNK_0220C544
-UNK04_0220C544: ; 0x0220C544
- .byte 0x4D, 0x61, 0x72, 0x00
-
- .global UNK_0220C548
-UNK04_0220C548: ; 0x0220C548
- .byte 0x46, 0x65, 0x62, 0x00
-
- .global UNK_0220C54C
-UNK04_0220C54C: ; 0x0220C54C
- .byte 0x4A, 0x61, 0x6E, 0x00
-
- .global UNK_0220C550
-UNK04_0220C550: ; 0x0220C550
- .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540
- .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530
- .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520
-
- .global UNK_0220C580
-UNK04_0220C580: ; 0x0220C580
- .byte 0x46, 0x72, 0x69, 0x2C, 0x20, 0x30, 0x33, 0x20, 0x4D, 0x61, 0x72, 0x20, 0x32, 0x30, 0x30, 0x36
- .byte 0x20, 0x30, 0x31, 0x3A, 0x32, 0x38, 0x3A, 0x31, 0x33, 0x20, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00
-
- .global UNK_0220C5A0
-UNK04_0220C5A0: ; 0x0220C5A0
- .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C5A8
-UNK04_0220C5A8: ; 0x0220C5A8
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220C5B4
-UNK04_0220C5B4: ; 0x0220C5B4
- .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C5C0
-UNK04_0220C5C0: ; 0x0220C5C0
- .byte 0x73, 0x76, 0x63, 0x68, 0x6F, 0x73, 0x74, 0x00
-
- .global UNK_0220C5C8
-UNK04_0220C5C8: ; 0x0220C5C8
- .byte 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C5D8
-UNK04_0220C5D8: ; 0x0220C5D8
- .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00
-
- .global UNK_0220C5E4
-UNK04_0220C5E4: ; 0x0220C5E4
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74
- .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220C604
-UNK04_0220C604: ; 0x0220C604
- .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220C60C
-UNK04_0220C60C: ; 0x0220C60C
- .byte 0x53, 0x56, 0x43, 0x4C, 0x4F, 0x43, 0x00, 0x00
-
- .global UNK_0220C614
-UNK04_0220C614: ; 0x0220C614
- .byte 0x73, 0x76, 0x63, 0x00
-
- .global UNK_0220C618
-UNK04_0220C618: ; 0x0220C618
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C628
-UNK04_0220C628: ; 0x0220C628
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00
-
- .global UNK_0220C638
-UNK04_0220C638: ; 0x0220C638
- .word UNK04_0220C63C
-
- .global UNK_0220C63C
-UNK04_0220C63C: ; 0x0220C63C
- .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C
- .byte 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62
- .byte 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72
- .byte 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37
- .byte 0x38, 0x39, 0x2E, 0x2D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C680
-UNK04_0220C680: ; 0x0220C680
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220C684
-UNK04_0220C684: ; 0x0220C684
- .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003
- .word UNK04_0220C680
-
- .global UNK_0220C698
-UNK04_0220C698: ; 0x0220C698
- .byte 0x42, 0x45, 0x2C, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x6E
- .byte 0x76, 0x2D, 0x73, 0x61, 0x2C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x47
- .byte 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43
- .byte 0x41, 0x00, 0x00, 0x00
-
- .global UNK_0220C6CC
-UNK04_0220C6CC: ; 0x0220C6CC
- .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB
- .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD
- .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89
- .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70
- .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C
- .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35
- .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39
- .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC
- .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74
- .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5
- .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F
- .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77
- .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9
- .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19
- .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C
- .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F
- .byte 0x7F, 0x93, 0x90, 0xCF
-
- .global UNK_0220C7CC
-UNK04_0220C7CC: ; 0x0220C7CC
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220C7D0
-UNK04_0220C7D0: ; 0x0220C7D0
- .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003
- .word UNK04_0220C7CC
-
- .global UNK_0220C7E4
-UNK04_0220C7E4: ; 0x0220C7E4
- .byte 0x49, 0x45, 0x2C, 0x20
- .byte 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x2C, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72
- .byte 0x54, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65
- .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C81C
-UNK04_0220C81C: ; 0x0220C81C
- .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A
- .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29
- .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2
- .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52
- .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8
- .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8
- .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F
- .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12
- .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68
- .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC
- .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C
- .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F
- .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9
- .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99
- .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68
- .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90
- .byte 0xDC, 0x27, 0x1A, 0x39
-
- .global UNK_0220C91C
-UNK04_0220C91C: ; 0x0220C91C
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220C920
-UNK04_0220C920: ; 0x0220C920
- .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003
- .word UNK04_0220C91C
-
- .global UNK_0220C934
-UNK04_0220C934: ; 0x0220C934
- .byte 0x55, 0x53, 0x2C, 0x20
- .byte 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C
- .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20
- .byte 0x53, 0x6F, 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C
- .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20
- .byte 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00
-
- .global UNK_0220C984
-UNK04_0220C984: ; 0x0220C984
- .byte 0x95, 0x0F, 0xA0, 0xB6
- .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B
- .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A
- .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F
- .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95
- .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9
- .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85
- .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80
- .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99
-
- .global UNK_0220CA04
-UNK04_0220CA04: ; 0x0220CA04
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CA08
-UNK04_0220CA08: ; 0x0220CA08
- .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003
- .word UNK04_0220CA04
-
- .global UNK_0220CA1C
-UNK04_0220CA1C: ; 0x0220CA1C
- .byte 0x55, 0x53, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70
- .byte 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62
- .byte 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220CA48
-UNK04_0220CA48: ; 0x0220CA48
- .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9
- .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD
- .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66
- .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5
- .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF
- .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25
- .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24
- .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03
-
- .global UNK_0220CAC8
-UNK04_0220CAC8: ; 0x0220CAC8
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CACC
-UNK04_0220CACC: ; 0x0220CACC
- .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003
- .word UNK04_0220CAC8
-
- .global UNK_0220CAE0
-UNK04_0220CAE0: ; 0x0220CAE0
- .byte 0x55, 0x53, 0x2C, 0x20, 0x57, 0x61, 0x73, 0x68
- .byte 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F
- .byte 0x20, 0x6F, 0x66, 0x20, 0x41, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x61, 0x20, 0x49, 0x6E, 0x63, 0x2C
- .byte 0x20, 0x4E, 0x4F, 0x41, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x20, 0x43
- .byte 0x41, 0x2C, 0x20, 0x63, 0x61, 0x40, 0x6E, 0x6F, 0x61, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E
- .byte 0x64, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00
-
- .global UNK_0220CB30
-UNK04_0220CB30: ; 0x0220CB30
- .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF
- .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21
- .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD
- .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B
- .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40
- .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31
- .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66
- .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C
- .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B
-
- .global UNK_0220CBB0
-UNK04_0220CBB0: ; 0x0220CBB0
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CBB4
-UNK04_0220CBB4: ; 0x0220CBB4
- .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003
- .word UNK04_0220CBB0
-
- .global UNK_0220CBC8
-UNK04_0220CBC8: ; 0x0220CBC8
- .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE
- .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A
- .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17
- .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0
- .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C
- .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F
- .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD
- .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37
-
- .global UNK_0220CC48
-UNK04_0220CC48: ; 0x0220CC48
- .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65
- .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61
- .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63
- .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69
- .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6D, 0x69
- .byte 0x75, 0x6D, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x70, 0x72
- .byte 0x65, 0x6D, 0x69, 0x75, 0x6D, 0x2D, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61
- .byte 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00
-
- .global UNK_0220CCD0
-UNK04_0220CCD0: ; 0x0220CCD0
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CCD4
-UNK04_0220CCD4: ; 0x0220CCD4
- .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003
- .word UNK04_0220CCD0
-
- .global UNK_0220CCE8
-UNK04_0220CCE8: ; 0x0220CCE8
- .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65
- .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61
- .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63
- .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69
- .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65
- .byte 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2D, 0x63, 0x65, 0x72
- .byte 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00, 0x00
-
- .global UNK_0220CD68
-UNK04_0220CD68: ; 0x0220CD68
- .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75
- .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20
- .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15
- .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD
- .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B
- .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C
- .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B
- .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D
-
- .global UNK_0220CDE8
-UNK04_0220CDE8: ; 0x0220CDE8
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CDEC
-UNK04_0220CDEC: ; 0x0220CDEC
- .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003
- .word UNK04_0220CDE8
-
- .global UNK_0220CE00
-UNK04_0220CE00: ; 0x0220CE00
- .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0
- .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D
- .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F
- .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47
- .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77
- .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D
- .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97
- .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61
- .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67
-
- .global UNK_0220CE80
-UNK04_0220CE80: ; 0x0220CE80
- .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69
- .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73
- .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61
- .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x32, 0x2C
- .byte 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69
- .byte 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61
- .byte 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E
- .byte 0x6C, 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75
- .byte 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00
-
- .global UNK_0220CF14
-UNK04_0220CF14: ; 0x0220CF14
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CF18
-UNK04_0220CF18: ; 0x0220CF18
- .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003
- .word UNK04_0220CF14
-
- .global UNK_0220CF2C
-UNK04_0220CF2C: ; 0x0220CF2C
- .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E
- .byte 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E
- .byte 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x2C, 0x20
- .byte 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67
- .byte 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75
- .byte 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C
- .byte 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, 0x61, 0x73
- .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61
- .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x33, 0x00
-
- .global UNK_0220CFC8
-UNK04_0220CFC8: ; 0x0220CFC8
- .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9
- .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5
- .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D
- .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67
- .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69
- .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0
- .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC
- .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3
- .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED
- .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF
- .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76
- .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8
- .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2
- .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63
- .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D
- .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97
-
- .global UNK_0220D0C8
-UNK04_0220D0C8: ; 0x0220D0C8
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220D0CC
-UNK04_0220D0CC: ; 0x0220D0CC
- .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003
- .word UNK04_0220D0C8
-
- .global UNK_0220D0E0
-UNK04_0220D0E0: ; 0x0220D0E0
- .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69
- .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73
- .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61
- .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00
-
- .global UNK_0220D124
-UNK04_0220D124: ; 0x0220D124
- .byte 0xC9, 0x5C, 0x59, 0x9E
- .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45
- .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25
- .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00
- .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6
- .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F
- .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20
- .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15
- .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7
-
- .global UNK_0220D1A4
-UNK04_0220D1A4: ; 0x0220D1A4
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220D1A8
-UNK04_0220D1A8: ; 0x0220D1A8
- .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003
- .word UNK04_0220D1A4
-
- .global UNK_0220D1BC
-UNK04_0220D1BC: ; 0x0220D1BC
- .byte 0x55, 0x53, 0x2C, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x61, 0x74, 0x61
- .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C
- .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43
- .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74
- .byte 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00
-
- .global UNK_0220D200
-UNK04_0220D200: ; 0x0220D200
- .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A
- .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB
- .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82
- .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05
- .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D
- .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98
- .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49
- .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD
- .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00
-
- .global UNK_0220D280
-UNK04_0220D280: ; 0x0220D280
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x74, 0x65, 0x73, 0x74
- .byte 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65
- .byte 0x74, 0x2F, 0x61, 0x63, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D2A8
-UNK04_0220D2A8: ; 0x0220D2A8
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x64, 0x65, 0x76, 0x2E
- .byte 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74
- .byte 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220D2CC
-UNK04_0220D2CC: ; 0x0220D2CC
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74
- .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220D2EC
-UNK04_0220D2EC: ; 0x0220D2EC
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D2F0
-UNK04_0220D2F0: ; 0x0220D2F0
- .byte 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D2F8
-UNK04_0220D2F8: ; 0x0220D2F8
- .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D300
-UNK04_0220D300: ; 0x0220D300
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C, 0x6F, 0x61
- .byte 0x64, 0x00, 0x00, 0x00
-
- .global UNK_0220D314
-UNK04_0220D314: ; 0x0220D314
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x25, 0x73, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C
- .byte 0x6F, 0x61, 0x64, 0x00
-
- .global UNK_0220D328
-UNK04_0220D328: ; 0x0220D328
- .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D334
-UNK04_0220D334: ; 0x0220D334
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D338
-UNK04_0220D338: ; 0x0220D338
- .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D340
-UNK04_0220D340: ; 0x0220D340
- .byte 0x4D, 0x41, 0x54, 0x00
-
- .global UNK_0220D344
-UNK04_0220D344: ; 0x0220D344
- .byte 0x53, 0x43, 0x4D, 0x00
-
- .global UNK_0220D348
-UNK04_0220D348: ; 0x0220D348
- .byte 0x53, 0x43, 0x4E, 0x00
-
- .global UNK_0220D34C
-UNK04_0220D34C: ; 0x0220D34C
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D350
-UNK04_0220D350: ; 0x0220D350
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D354
-UNK04_0220D354: ; 0x0220D354
- .byte 0x49, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65
- .byte 0x64, 0x20, 0x79, 0x6F, 0x75, 0x72, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74
- .byte 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x6D, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x79, 0x6F, 0x75, 0x72
- .byte 0x20, 0x6C, 0x69, 0x73, 0x74, 0x00, 0x00, 0x00
-
- .global UNK_0220D38C
-UNK04_0220D38C: ; 0x0220D38C
- .byte 0x53, 0x43, 0x4D, 0x00
-
- .global UNK_0220D390
-UNK04_0220D390: ; 0x0220D390
- .byte 0x53, 0x43, 0x4E, 0x00
-
- .global UNK_0220D394
-UNK04_0220D394: ; 0x0220D394
- .byte 0x25, 0x75, 0x00, 0x00
-
- .global UNK_0220D398
-UNK04_0220D398: ; 0x0220D398
- .byte 0x53, 0x42, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3A0
-UNK04_0220D3A0: ; 0x0220D3A0
- .byte 0x64, 0x77, 0x63, 0x5F, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3AC
-UNK04_0220D3AC: ; 0x0220D3AC
- .byte 0x64, 0x77, 0x63, 0x5F, 0x70, 0x69, 0x64, 0x00
-
- .global UNK_0220D3B4
-UNK04_0220D3B4: ; 0x0220D3B4
- .byte 0x6E, 0x75, 0x6D, 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00
-
- .global UNK_0220D3C0
-UNK04_0220D3C0: ; 0x0220D3C0
- .byte 0x6D, 0x61, 0x78, 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00
-
- .global UNK_0220D3CC
-UNK04_0220D3CC: ; 0x0220D3CC
- .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220D3D8
-UNK04_0220D3D8: ; 0x0220D3D8
- .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x72, 0x65, 0x73, 0x76, 0x00, 0x00, 0x00
-
- .global UNK_0220D3E4
-UNK04_0220D3E4: ; 0x0220D3E4
- .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3F0
-UNK04_0220D3F0: ; 0x0220D3F0
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3F4
-UNK04_0220D3F4: ; 0x0220D3F4
- .byte 0x56, 0x45, 0x52, 0x00
-
- .global UNK_0220D3F8
-UNK04_0220D3F8: ; 0x0220D3F8
- .byte 0x46, 0x4D, 0x45, 0x00
-
- .global UNK_0220D3FC
-UNK04_0220D3FC: ; 0x0220D3FC
- .byte 0x4D, 0x44, 0x46, 0x00
-
- .global UNK_0220D400
-UNK04_0220D400: ; 0x0220D400
- .byte 0x25, 0x73, 0x25, 0x64, 0x76, 0x25, 0x73, 0x00
-
- .global UNK_0220D408
-UNK04_0220D408: ; 0x0220D408
- .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D410
-UNK04_0220D410: ; 0x0220D410
- .byte 0x4D, 0x41, 0x54, 0x00
-
- .global UNK_0220D414
-UNK04_0220D414: ; 0x0220D414
- .byte 0x2F, 0x25, 0x75, 0x00
-
- .global UNK_0220D418
-UNK04_0220D418: ; 0x0220D418
- .byte 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x73, 0x20, 0x21
- .byte 0x3D, 0x20, 0x25, 0x75, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x78, 0x70, 0x6C, 0x61, 0x79
- .byte 0x65, 0x72, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x75, 0x6D
- .byte 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x3C, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64
- .byte 0x20, 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x73, 0x20
- .byte 0x21, 0x3D, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00
-
- .global UNK_0220D470
-UNK04_0220D470: ; 0x0220D470
- .byte 0x25, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x28, 0x25, 0x73, 0x29, 0x00
-
- .global UNK_0220D47C
-UNK04_0220D47C: ; 0x0220D47C
- .byte 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x75, 0x00
-
- .global UNK_0220D484
-UNK04_0220D484: ; 0x0220D484
- .byte 0x53, 0x43, 0x4D, 0x00
-
- .global UNK_0220D488
-UNK04_0220D488: ; 0x0220D488
- .byte 0x53, 0x43, 0x4E, 0x00
-
- .global UNK_0220D48C
-UNK04_0220D48C: ; 0x0220D48C
- .byte 0x49, 0x6E, 0x69, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x00, 0x00
-
- .global UNK_0220D498
-UNK04_0220D498: ; 0x0220D498
- .byte 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x00
-
- .global UNK_0220D4A4
-UNK04_0220D4A4: ; 0x0220D4A4
- .byte 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20
- .byte 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x00
.global UNK_0220D4BC
UNK04_0220D4BC: ; 0x0220D4BC
@@ -63178,7 +41662,7 @@ UNK04_0220F010: ; 0x0220F010
UNK04_0220F014: ; 0x0220F014
.byte 0x3A, 0x25, 0x64, 0x00
- .global UNK_0220F018
+ .global UNK04_0220F018
UNK04_0220F018: ; 0x0220F018
.byte 0xFD, 0xFC, 0x1E, 0x66, 0x6A, 0xB2, 0x00, 0x00
@@ -63822,158 +42306,6 @@ UNK04_0220FBA4: ; 0x0220FBA4
.section .bss
- .global UNK04_02210460
-UNK04_02210460: ; 0x02210460
- .space 0x4
-
- .global UNK04_02210464
-UNK04_02210464: ; 0x02210464
- .space 0x4
-
- .global UNK04_02210468
-UNK04_02210468: ; 0x02210468
- .space 0x4
-
- .global UNK04_0221046C
-UNK04_0221046C: ; 0x0221046C
- .space 0x14
-
- .global UNK04_02210480
-UNK04_02210480: ; 0x02210480
- .space 0x4
-
- .global UNK04_02210484
-UNK04_02210484: ; 0x02210484
- .space 0x4
-
- .global UNK04_02210488
-UNK04_02210488: ; 0x02210488
- .space 0x4
-
- .global UNK04_0221048C
-UNK04_0221048C: ; 0x0221048C
- .space 0x4
-
- .global UNK04_02210490
-UNK04_02210490: ; 0x02210490
- .space 0x4
-
- .global UNK04_02210494
-UNK04_02210494: ; 0x02210494
- .space 0x1C
-
- .global UNK04_022104B0
-UNK04_022104B0: ; 0x022104B0
- .space 0x48
-
- .global UNK04_022104F8
-UNK04_022104F8: ; 0x022104F8
- .space 0x4
-
- .global UNK04_022104FC
-UNK04_022104FC: ; 0x022104FC
- .space 0x8
-
- .global UNK04_02210504
-UNK04_02210504: ; 0x02210504
- .space 0x4
-
- .global UNK04_02210508
-UNK04_02210508: ; 0x02210508
- .space 0x4
-
- .global UNK04_0221050C
-UNK04_0221050C: ; 0x0221050C
- .space 0x4
-
- .global UNK04_02210510
-UNK04_02210510: ; 0x02210510
- .space 0x4
-
- .global UNK04_02210514
-UNK04_02210514: ; 0x02210514
- .space 0x4
-
- .global UNK04_02210518
-UNK04_02210518: ; 0x02210518
- .space 0x4
-
- .global UNK04_0221051C
-UNK04_0221051C: ; 0x0221051C
- .space 0x4
-
- .global UNK04_02210520
-UNK04_02210520: ; 0x02210520
- .space 0x4
-
- .global UNK04_02210524
-UNK04_02210524: ; 0x02210524
- .space 0x18
-
- .global UNK04_0221053C
-UNK04_0221053C: ; 0x0221053C
- .space 0x4
-
- .global UNK04_02210540
-UNK04_02210540: ; 0x02210540
- .space 0x4
-
- .global UNK04_02210544
-UNK04_02210544: ; 0x02210544
- .space 0x80
-
- .global UNK04_022105C4
-UNK04_022105C4: ; 0x022105C4
- .space 0x100
-
- .global UNK04_022106C4
-UNK04_022106C4: ; 0x022106C4
- .space 0x4
-
- .global UNK04_022106C8
-UNK04_022106C8: ; 0x022106C8
- .space 0x4
-
- .global UNK04_022106CC
-UNK04_022106CC: ; 0x022106CC
- .space 0x4
-
- .global UNK04_022106D0
-UNK04_022106D0: ; 0x022106D0
- .space 0x4
-
- .global UNK04_022106D4
-UNK04_022106D4: ; 0x022106D4
- .space 0x4
-
- .global UNK04_022106D8
-UNK04_022106D8: ; 0x022106D8
- .space 0x4
-
- .global UNK04_022106DC
-UNK04_022106DC: ; 0x022106DC
- .space 0x4
-
- .global UNK04_022106E0
-UNK04_022106E0: ; 0x022106E0
- .space 0x4
-
- .global UNK04_022106E4
-UNK04_022106E4: ; 0x022106E4
- .space 0x20
-
- .global UNK04_02210704
-UNK04_02210704: ; 0x02210704
- .space 0x1
-
- .global UNK04_02210705
-UNK04_02210705: ; 0x02210705
- .space 0x7
-
- .global UNK04_0221070C
-UNK04_0221070C: ; 0x0221070C
- .space 0x730
-
.global UNK04_02210E3C
UNK04_02210E3C: ; 0x02210E3C
.space 0x4
diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/mod04_021D74E0.s
index 6f673fe8..4eba9197 100644
--- a/arm9/modules/04/asm/thumb_04.s
+++ b/arm9/modules/04/asm/mod04_021D74E0.s
@@ -2302,856 +2302,22 @@ MOD04_021D8678: ; 0x021D8678
_021D8684: .word UNK04_0220FBC0
_021D8688: .word 0x00001F68
- thumb_func_start MOD04_021D868C
-MOD04_021D868C: ; 0x021D868C
- push {r3, r4, r5, lr}
- bl MIC_Init
- bl PM_Init
- mov r0, #1
- bl PM_SetAmp
- mov r0, #3
- bl PM_SetAmpGain
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r3, _021D871C ; =0x00003584
- add r5, r2, #0
- str r2, [r1, r3]
- add r1, r3, #0
- ldr r4, [r0, #4]
- add r1, #0xc
- str r2, [r4, r1]
- ldr r4, [r0, #4]
- add r1, r3, #4
- str r2, [r4, r1]
- add r1, r3, #0
- ldr r4, [r0, #4]
- add r1, #8
- str r2, [r4, r1]
- ldr r1, [r0, #4]
- add r3, #0x10
- str r2, [r1, r3]
- ldr r3, _021D8720 ; =0x00003598
- add r1, r2, #0
-_021D86CE:
- ldr r4, [r0, #4]
- add r2, r2, #1
- add r4, r4, r5
- add r5, r5, #2
- strh r1, [r4, r3]
- cmp r2, #0x10
- blt _021D86CE
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D8724 ; =0x000035B8
- str r1, [r2, r0]
- mov r0, #1
- bl FUN_020AA770
- bl NNS_SndInit
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8728 ; =0x00003504
- add r0, r1, r0
- bl NNS_SndStrmInit
- ldr r1, _021D8718 ; =UNK04_0220FBC8
- mov r0, #0
- ldr r2, [r1, #4]
- mov r1, #0xb1
- lsl r1, r1, #6
- add r1, r2, r1
- mov r2, #0x22
- lsl r2, r2, #6
- bl MIi_CpuClearFast
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- mov r1, #0
- str r1, [r0, #8]
- pop {r3, r4, r5, pc}
- nop
-_021D8718: .word UNK04_0220FBC8
-_021D871C: .word 0x00003584
-_021D8720: .word 0x00003598
-_021D8724: .word 0x000035B8
-_021D8728: .word 0x00003504
-
- thumb_func_start MOD04_021D872C
-MOD04_021D872C: ; 0x021D872C
- bx lr
- .align 2, 0
-
- thumb_func_start MOD04_021D8730
-MOD04_021D8730: ; 0x021D8730
- push {r4, r5, r6, lr}
- add r6, r2, #0
- add r5, r3, #0
- ldr r4, [sp, #0x14]
- cmp r0, #0
- bne _021D8748
- ldr r0, [r6]
- mov r1, #0
- add r2, r5, #0
- bl MI_CpuFill8
- pop {r4, r5, r6, pc}
-_021D8748:
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D87BC ; =0x00003565
- ldrb r1, [r2, r0]
- cmp r1, #0
- beq _021D876A
- add r0, r0, #3
- add r0, r2, r0
- ldr r1, _021D87C0 ; =MOD04_021D872C
- mov r2, #0
- bl MIC_StartAutoSamplingAsync
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D87BC ; =0x00003565
- strb r2, [r1, r0]
-_021D876A:
- bl MIC_GetLastSamplingAddress
- sub r0, r0, r4
- cmp r0, r5
- bhs _021D8776
- add r4, r4, r5
-_021D8776:
- ldr r0, _021D87C4 ; =0x027FFFA8
- ldrh r1, [r0]
- mov r0, #2
- lsl r0, r0, #0xe
- and r0, r1
- asr r0, r0, #0xf
- beq _021D878E
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- mov r0, #0xb1
- lsl r0, r0, #6
- add r4, r1, r0
-_021D878E:
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D87C8 ; =0x000034FC
- ldr r0, [r1, r0]
- cmp r0, #0
- bne _021D87A2
- add r0, r4, #0
- add r1, r5, #0
- bl FUN_020AABDC
-_021D87A2:
- ldr r0, [r6]
- add r1, r5, #0
- mov r2, #0
- bl FUN_020AA824
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- mov r2, #2
- ldr r1, [r0, #4]
- ldr r0, _021D87CC ; =0x00003564
- strb r2, [r1, r0]
- pop {r4, r5, r6, pc}
- .align 2, 0
-_021D87B8: .word UNK04_0220FBC8
-_021D87BC: .word 0x00003565
-_021D87C0: .word MOD04_021D872C
-_021D87C4: .word 0x027FFFA8
-_021D87C8: .word 0x000034FC
-_021D87CC: .word 0x00003564
-
- thumb_func_start MOD04_021D87D0
-MOD04_021D87D0: ; 0x021D87D0
- push {r4, lr}
- ldr r1, _021D8810 ; =UNK04_0220FBC8
- ldr r2, [r1, #4]
- ldr r1, _021D8814 ; =0x00003560
- ldr r1, [r2, r1]
- cmp r1, #0
- bne _021D880A
- bl FUN_020ACD54
- add r4, r0, #0
- bne _021D87EA
- mov r0, #0
- pop {r4, pc}
-_021D87EA:
- mov r1, #0
- bl FUN_020ACBA0
- cmp r0, #0
- beq _021D87FE
- add r0, r4, #0
- bl FUN_020ACC84
- mov r0, #0
- pop {r4, pc}
-_021D87FE:
- ldr r0, _021D8810 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8814 ; =0x00003560
- str r4, [r1, r0]
- mov r0, #1
- pop {r4, pc}
-_021D880A:
- mov r0, #0
- pop {r4, pc}
- nop
-_021D8810: .word UNK04_0220FBC8
-_021D8814: .word 0x00003560
-
- thumb_func_start MOD04_021D8818
-MOD04_021D8818: ; 0x021D8818
- push {r3, lr}
- ldr r0, _021D8858 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D885C ; =0x00003560
- ldr r0, [r1, r0]
- cmp r0, #0
- beq _021D8852
- ldr r1, [r0, #0xc]
- cmp r1, #4
- bne _021D8852
- mov r1, #0
- bl FUN_020ACAB0
- cmp r0, #0
- beq _021D883A
- mov r0, #0
- pop {r3, pc}
-_021D883A:
- ldr r0, _021D8858 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D885C ; =0x00003560
- ldr r0, [r1, r0]
- bl FUN_020AADCC
- cmp r0, #0
- beq _021D884E
- mov r0, #1
- pop {r3, pc}
-_021D884E:
- mov r0, #0
- pop {r3, pc}
-_021D8852:
- mov r0, #0
- pop {r3, pc}
- nop
-_021D8858: .word UNK04_0220FBC8
-_021D885C: .word 0x00003560
-
- thumb_func_start MOD04_021D8860
-MOD04_021D8860: ; 0x021D8860
- push {r4, lr}
- add r4, r2, #0
- cmp r1, #0xc
- bhi _021D8902
- add r0, r1, r1
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021D8874: ; jump table
- .short _021D8902 - _021D8874 - 2 ; case 0
- .short _021D888E - _021D8874 - 2 ; case 1
- .short _021D88F4 - _021D8874 - 2 ; case 2
- .short _021D88FC - _021D8874 - 2 ; case 3
- .short _021D88CE - _021D8874 - 2 ; case 4
- .short _021D8902 - _021D8874 - 2 ; case 5
- .short _021D8902 - _021D8874 - 2 ; case 6
- .short _021D88DE - _021D8874 - 2 ; case 7
- .short _021D88AE - _021D8874 - 2 ; case 8
- .short _021D88C2 - _021D8874 - 2 ; case 9
- .short _021D8902 - _021D8874 - 2 ; case 10
- .short _021D88FC - _021D8874 - 2 ; case 11
- .short _021D88FC - _021D8874 - 2 ; case 12
-_021D888E:
- ldr r0, _021D8904 ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D8908 ; =0x00003560
- ldr r1, [r2, r0]
- cmp r1, #0
- beq _021D88AA
- add r0, r4, #0
- mov r1, #3
- bl FUN_020ACAB0
- add r0, r4, #0
- bl FUN_020ACC84
- pop {r4, pc}
-_021D88AA:
- str r4, [r2, r0]
- pop {r4, pc}
-_021D88AE:
- add r0, r4, #0
- mov r1, #0
- bl FUN_020ACAB0
- add r0, r4, #0
- bl MOD04_021D8910
- bl MOD04_021D8C6C
- pop {r4, pc}
-_021D88C2:
- add r0, r4, #0
- 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 MOD04_021D8910
- pop {r4, pc}
-_021D88DE:
- add r0, r4, #0
- bl FUN_020AADCC
- cmp r0, #0
- beq _021D8902
- ldr r0, _021D8904 ; =UNK04_0220FBC8
- mov r2, #2
- ldr r1, [r0, #4]
- ldr r0, _021D890C ; =0x000034F8
- str r2, [r1, r0]
- pop {r4, pc}
-_021D88F4:
- add r0, r4, #0
- bl MOD04_021D8910
- pop {r4, pc}
-_021D88FC:
- add r0, r4, #0
- bl MOD04_021D8910
-_021D8902:
- pop {r4, pc}
- .align 2, 0
-_021D8904: .word UNK04_0220FBC8
-_021D8908: .word 0x00003560
-_021D890C: .word 0x000034F8
-
- thumb_func_start MOD04_021D8910
-MOD04_021D8910: ; 0x021D8910
- push {r4, lr}
- ldr r1, _021D893C ; =UNK04_0220FBC8
- add r4, r0, #0
- ldr r2, [r1, #4]
- ldr r1, _021D8940 ; =0x00003560
- ldr r1, [r2, r1]
- cmp r4, r1
- bne _021D8936
- bl FUN_020AACFC
- add r0, r4, #0
- bl FUN_020ACC84
- ldr r0, _021D893C ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8940 ; =0x00003560
- str r2, [r1, r0]
- pop {r4, pc}
-_021D8936:
- bl FUN_020ACC84
- pop {r4, pc}
- .align 2, 0
-_021D893C: .word UNK04_0220FBC8
-_021D8940: .word 0x00003560
-
- thumb_func_start MOD04_021D8944
-MOD04_021D8944: ; 0x021D8944
- push {r4, r5, r6, lr}
- bl OS_GetTick
- add r4, r0, #0
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- add r5, r1, #0
- ldr r0, [r0, #0xc]
- sub r1, r4, r0
- mov r0, #0xfa
- lsl r0, r0, #8
- mul r0, r1
- ldr r1, _021D8A40 ; =0x000082EA
- bl _u32_div_f
- ldr r1, _021D8A3C ; =UNK04_0220FBC8
- ldr r3, _021D8A44 ; =0x0000411A
- ldr r2, [r1, #8]
- sub r0, r0, r3
- add r2, r2, r0
- ldr r0, _021D8A48 ; =0xFFFFD8F0
- str r2, [r1, #8]
- cmp r2, r0
- bge _021D8976
- mov r0, #0
- str r0, [r1, #8]
-_021D8976:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- str r4, [r0, #0xc]
- str r5, [r0, #0x10]
- bl VCT_Main
- ldr r4, _021D8A3C ; =UNK04_0220FBC8
- ldr r0, _021D8A44 ; =0x0000411A
- ldr r1, [r4, #8]
- cmp r1, r0
- blt _021D899C
- add r6, r0, #0
- add r5, r0, #0
-_021D898E:
- bl VCT_Main
- ldr r0, [r4, #8]
- sub r0, r0, r6
- str r0, [r4, #8]
- cmp r0, r5
- bge _021D898E
-_021D899C:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D8A4C ; =0x0000358C
- ldr r1, [r2, r0]
- cmp r1, #0
- beq _021D89EC
- sub r0, r0, #4
- ldr r0, [r2, r0]
- cmp r0, #3
- bhi _021D89E2
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021D89BC: ; jump table
- .short _021D89C4 - _021D89BC - 2 ; case 0
- .short _021D89CC - _021D89BC - 2 ; case 1
- .short _021D89D4 - _021D89BC - 2 ; case 2
- .short _021D89DC - _021D89BC - 2 ; case 3
-_021D89C4:
- mov r0, #3
- bl PM_SetAmpGain
- b _021D89E2
-_021D89CC:
- mov r0, #2
- bl PM_SetAmpGain
- b _021D89E2
-_021D89D4:
- mov r0, #1
- bl PM_SetAmpGain
- b _021D89E2
-_021D89DC:
- mov r0, #0
- bl PM_SetAmpGain
-_021D89E2:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8A4C ; =0x0000358C
- str r2, [r1, r0]
-_021D89EC:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8A50 ; =0x000034F8
- ldr r0, [r1, r0]
- cmp r0, #0
- beq _021D8A00
- cmp r0, #1
- beq _021D8A3A
- cmp r0, #2
- pop {r4, r5, r6, pc}
-_021D8A00:
- bl MOD04_021D8018
- cmp r0, #0
- bne _021D8A1E
- mov r0, #1
- bl MOD04_021D87D0
- cmp r0, #0
- beq _021D8A3A
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- mov r2, #1
- ldr r1, [r0, #4]
- ldr r0, _021D8A50 ; =0x000034F8
- str r2, [r1, r0]
- pop {r4, r5, r6, pc}
-_021D8A1E:
- bl MOD04_021D8018
- cmp r0, #1
- bne _021D8A3A
- mov r0, #0
- bl MOD04_021D8818
- cmp r0, #0
- beq _021D8A3A
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- mov r2, #2
- ldr r1, [r0, #4]
- ldr r0, _021D8A50 ; =0x000034F8
- str r2, [r1, r0]
-_021D8A3A:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_021D8A3C: .word UNK04_0220FBC8
-_021D8A40: .word 0x000082EA
-_021D8A44: .word 0x0000411A
-_021D8A48: .word 0xFFFFD8F0
-_021D8A4C: .word 0x0000358C
-_021D8A50: .word 0x000034F8
-
- thumb_func_start MOD04_021D8A54
-MOD04_021D8A54: ; 0x021D8A54
- push {r3, lr}
- ldr r3, _021D8A78 ; =UNK04_0220FBC8
- ldr r3, [r3, #4]
- cmp r3, #0
- bne _021D8A62
- mov r0, #0
- pop {r3, pc}
-_021D8A62:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl VCT_HandleData
- cmp r0, #0
- beq _021D8A72
- mov r0, #1
- pop {r3, pc}
-_021D8A72:
- mov r0, #0
- pop {r3, pc}
- nop
-_021D8A78: .word UNK04_0220FBC8
-
- thumb_func_start MOD04_021D8A7C
-MOD04_021D8A7C: ; 0x021D8A7C
- push {r4, r5, r6, r7, lr}
- sub sp, #0x34
- ldr r2, _021D8BC8 ; =UNK04_0220BAC0
- add r4, r1, #0
- ldrb r3, [r2]
- add r1, sp, #0x10
- add r5, r0, #0
- strb r3, [r1]
- ldrb r3, [r2, #1]
- ldrb r2, [r2, #2]
- strb r3, [r1, #1]
- strb r2, [r1, #2]
- ldr r1, _021D8BCC ; =UNK04_0220FBC8
- ldr r1, [r1, #4]
- cmp r1, #0
- bne _021D8ACA
- ldr r1, _021D8BD0 ; =0x000035DC
- bl AllocFromHeap
- ldr r2, _021D8BCC ; =UNK04_0220FBC8
- mov r1, #0x35
- str r0, [r2]
- add r0, #0x1f
- lsr r0, r0, #5
- lsl r0, r0, #5
- str r0, [r2, #4]
- lsl r1, r1, #8
- str r5, [r0, r1]
- add r0, r1, #0
- ldr r5, _021D8BD4 ; =UNK04_0220FBE0
- ldr r3, [r2, #4]
- sub r0, #0x40
- str r5, [r3, r0]
- ldr r0, [r2, #4]
- mov r3, #0
- sub r1, #0x3c
- str r3, [r0, r1]
- bl MOD04_021D868C
-_021D8ACA:
- ldr r5, _021D8BCC ; =UNK04_0220FBC8
- mov r7, #0x11
- ldr r0, [r5, #4]
- ldr r3, _021D8BD8 ; =0x00003568
- mov r1, #3
- str r1, [r0, r3]
- add r1, r3, #0
- ldr r0, [r5, #4]
- sub r1, #0xa8
- ldr r2, [r0, r1]
- add r1, r3, #4
- str r2, [r0, r1]
- lsl r7, r7, #6
- add r0, r3, #0
- ldr r1, [r5, #4]
- lsl r2, r7, #1
- add r0, #8
- str r2, [r1, r0]
- mov r2, #0x41
- add r0, r3, #0
- ldr r1, [r5, #4]
- lsl r2, r2, #6
- add r0, #0xc
- str r2, [r1, r0]
- add r0, r3, #0
- ldr r2, [r5, #4]
- mov r1, #1
- add r0, #0x10
- str r1, [r2, r0]
- add r2, r3, #0
- ldr r6, [r5, #4]
- mov r0, #0
- add r2, #0x14
- str r0, [r6, r2]
- add r2, r3, #0
- ldr r6, [r5, #4]
- add r2, #0x18
- str r0, [r6, r2]
- sub r0, r3, #3
- ldr r2, [r5, #4]
- sub r3, #0x64
- strb r1, [r2, r0]
- ldr r0, [r5, #4]
- add r2, sp, #0x10
- add r0, r0, r3
- bl NNS_SndStrmAllocChannel
- add r0, r5, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8BDC ; =0x00003504
- add r0, r1, r0
- mov r1, #0
- bl NNS_SndStrmSetVolume
- mov r0, #0x41
- str r0, [sp]
- mov r0, #2
- str r0, [sp, #4]
- ldr r0, _021D8BE0 ; =MOD04_021D8730
- add r1, r5, #0
- str r0, [sp, #8]
- mov r0, #0xd3
- ldr r2, [r1, #4]
- lsl r0, r0, #6
- ldr r2, [r2, r0]
- add r0, #0x44
- str r2, [sp, #0xc]
- ldr r3, [r1, #4]
- mov r2, #0x8f
- lsl r2, r2, #6
- add r0, r3, r0
- add r2, r3, r2
- mov r1, #1
- lsl r3, r7, #1
- bl NNS_SndStrmSetup
- ldr r2, _021D8BCC ; =UNK04_0220FBC8
- ldr r1, _021D8BE4 ; =0x000034F8
- ldr r0, [r2, #4]
- mov r5, #0
- str r5, [r0, r1]
- add r0, r1, #0
- ldr r3, [r2, #4]
- add r0, #0x68
- str r5, [r3, r0]
- mov r0, #1
- str r0, [sp, #0x1c]
- ldr r0, [r2, #4]
- sub r1, #0x30
- add r0, r0, r1
- str r0, [sp, #0x14]
- mov r0, #2
- str r0, [sp, #0x18]
- bl MOD04_021D8018
- add r1, sp, #0x10
- strb r0, [r1, #0x10]
- ldr r0, _021D8BE8 ; =MOD04_021D8860
- str r0, [sp, #0x2c]
- add r0, r5, #0
- str r0, [sp, #0x30]
- ldr r0, _021D8BCC ; =UNK04_0220FBC8
- ldr r0, [r0, #4]
- str r0, [sp, #0x24]
- mov r0, #0x8f
- lsl r0, r0, #6
- str r0, [sp, #0x28]
- add r0, sp, #0x14
- bl VCT_Init
- cmp r0, #0
- ldr r0, _021D8BCC ; =UNK04_0220FBC8
- add r2, r5, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8BEC ; =0x000034FC
- str r2, [r1, r0]
- add r0, r4, #0
- bl FUN_020AA7A0
- bl MOD04_021D8BF0
- mov r0, #1
- bl FUN_020AA760
- add sp, #0x34
- pop {r4, r5, r6, r7, pc}
- nop
-_021D8BC8: .word UNK04_0220BAC0
-_021D8BCC: .word UNK04_0220FBC8
-_021D8BD0: .word 0x000035DC
-_021D8BD4: .word UNK04_0220FBE0
-_021D8BD8: .word 0x00003568
-_021D8BDC: .word 0x00003504
-_021D8BE0: .word MOD04_021D8730
-_021D8BE4: .word 0x000034F8
-_021D8BE8: .word MOD04_021D8860
-_021D8BEC: .word 0x000034FC
-
- thumb_func_start MOD04_021D8BF0
-MOD04_021D8BF0: ; 0x021D8BF0
- ldr r0, _021D8BFC ; =UNK04_0220FBC8
- ldr r3, _021D8C00 ; =NNS_SndStrmStart
- ldr r1, [r0, #4]
- ldr r0, _021D8C04 ; =0x00003504
- add r0, r1, r0
- bx r3
- .align 2, 0
-_021D8BFC: .word UNK04_0220FBC8
-_021D8C00: .word NNS_SndStrmStart
-_021D8C04: .word 0x00003504
-
- thumb_func_start MOD04_021D8C08
-MOD04_021D8C08: ; 0x021D8C08
- push {r3, lr}
- ldr r0, _021D8C50 ; =UNK04_0220FBC8
- ldr r1, _021D8C54 ; =0x00003560
- ldr r2, [r0, #4]
- ldr r0, [r2, r1]
- cmp r0, #0
- beq _021D8C1E
- sub r1, #0x68
- ldr r1, [r2, r1]
- cmp r1, #0
- bne _021D8C24
-_021D8C1E:
- bl MOD04_021D8C6C
- pop {r3, pc}
-_021D8C24:
- cmp r1, #1
- bne _021D8C38
- mov r1, #2
- bl FUN_020ACBA0
- cmp r0, #0
- beq _021D8C38
- bl MOD04_021D8C6C
- pop {r3, pc}
-_021D8C38:
- ldr r0, _021D8C50 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8C54 ; =0x00003560
- ldr r0, [r1, r0]
- mov r1, #1
- bl FUN_020ACBA0
- cmp r0, #0
- beq _021D8C4E
- bl MOD04_021D8C6C
-_021D8C4E:
- pop {r3, pc}
- .align 2, 0
-_021D8C50: .word UNK04_0220FBC8
-_021D8C54: .word 0x00003560
-
- thumb_func_start MOD04_021D8C58
-MOD04_021D8C58: ; 0x021D8C58
- ldr r1, _021D8C64 ; =UNK04_0220FBC8
- ldr r2, [r1, #4]
- ldr r1, _021D8C68 ; =0x000034C4
- str r0, [r2, r1]
- bx lr
- nop
-_021D8C64: .word UNK04_0220FBC8
-_021D8C68: .word 0x000034C4
-
- thumb_func_start MOD04_021D8C6C
-MOD04_021D8C6C: ; 0x021D8C6C
- push {r4, lr}
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- ldr r1, [r0]
- cmp r1, #0
- beq _021D8CBA
- ldr r1, [r0, #4]
- ldr r0, _021D8CC0 ; =0x000034C4
- ldr r4, [r1, r0]
- bl MIC_StopAutoSampling
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8CC4 ; =0x00003504
- add r0, r1, r0
- bl NNS_SndStrmStop
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8CC4 ; =0x00003504
- add r0, r1, r0
- bl NNS_SndStrmFreeChannel
- bl VCT_Cleanup
- ldr r1, _021D8CBC ; =UNK04_0220FBC8
- mov r0, #0x35
- ldr r2, [r1, #4]
- lsl r0, r0, #8
- ldr r0, [r2, r0]
- ldr r1, [r1]
- bl FreeToHeapExplicit
- mov r1, #0
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- cmp r4, #0
- str r1, [r0]
- str r1, [r0, #4]
- beq _021D8CBA
- blx r4
-_021D8CBA:
- pop {r4, pc}
- .align 2, 0
-_021D8CBC: .word UNK04_0220FBC8
-_021D8CC0: .word 0x000034C4
-_021D8CC4: .word 0x00003504
-
- thumb_func_start MOD04_021D8CC8
-MOD04_021D8CC8: ; 0x021D8CC8
- push {r3, lr}
- sub sp, #0x10
- ldr r0, _021D8CEC ; =UNK04_0220FBC8
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021D8CE6
- add r0, sp, #0
- bl FUN_020AD144
- ldr r0, [sp, #4]
- cmp r0, #2
- ble _021D8CE6
- ldr r0, [sp]
- add sp, #0x10
- pop {r3, pc}
-_021D8CE6:
- mov r0, #0
- add sp, #0x10
- pop {r3, pc}
- .align 2, 0
-_021D8CEC: .word UNK04_0220FBC8
-
- thumb_func_start MOD04_021D8CF0
-MOD04_021D8CF0: ; 0x021D8CF0
- ldr r0, _021D8CFC ; =UNK04_0220FBC8
- mov r2, #1
- ldr r1, [r0, #4]
- ldr r0, _021D8D00 ; =0x000034FC
- str r2, [r1, r0]
- bx lr
- .align 2, 0
-_021D8CFC: .word UNK04_0220FBC8
-_021D8D00: .word 0x000034FC
-
- thumb_func_start MOD04_021D8D04
-MOD04_021D8D04: ; 0x021D8D04
- ldr r0, _021D8D10 ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8D14 ; =0x000034FC
- str r2, [r1, r0]
- bx lr
- .align 2, 0
-_021D8D10: .word UNK04_0220FBC8
-_021D8D14: .word 0x000034FC
-
- .section .rodata
+ .section .bss
- .global UNK04_0220BAC0
-UNK04_0220BAC0: ; 0x0220BAC0
- .byte 0x0D, 0x0D, 0x0D
+ .global UNK04_0220FBC0
+UNK04_0220FBC0: ; 0x0220FBC0
+ .space 0x8
.section .data
+
.balign 4
+
.global UNK04_0220BEA0
UNK04_0220BEA0: ; 0x0220BEA0
.asciz "pokemondpds"
+
.balign 4
+
.global UNK04_0220BEAC
UNK04_0220BEAC: ; 0x0220BEAC
.asciz "1vTlwb"
-
- .section .bss
- .global UNK04_0220FBC0
-UNK04_0220FBC0: ; 0x0220FBC0
- .space 0x8
-
- .global UNK04_0220FBC8
-UNK04_0220FBC8: ; 0x0220FBC8
- .space 0x18
-
- .global UNK04_0220FBE0
-UNK04_0220FBE0: ; 0x0220FBE0
- .space 0x880
diff --git a/arm9/modules/04/asm/mod04_021D868C.s b/arm9/modules/04/asm/mod04_021D868C.s
new file mode 100644
index 00000000..4921962f
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021D868C.s
@@ -0,0 +1,845 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD04_021D868C
+MOD04_021D868C: ; 0x021D868C
+ push {r3, r4, r5, lr}
+ bl MIC_Init
+ bl PM_Init
+ mov r0, #1
+ bl PM_SetAmp
+ mov r0, #3
+ bl PM_SetAmpGain
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r3, _021D871C ; =0x00003584
+ add r5, r2, #0
+ str r2, [r1, r3]
+ add r1, r3, #0
+ ldr r4, [r0, #4]
+ add r1, #0xc
+ str r2, [r4, r1]
+ ldr r4, [r0, #4]
+ add r1, r3, #4
+ str r2, [r4, r1]
+ add r1, r3, #0
+ ldr r4, [r0, #4]
+ add r1, #8
+ str r2, [r4, r1]
+ ldr r1, [r0, #4]
+ add r3, #0x10
+ str r2, [r1, r3]
+ ldr r3, _021D8720 ; =0x00003598
+ add r1, r2, #0
+_021D86CE:
+ ldr r4, [r0, #4]
+ add r2, r2, #1
+ add r4, r4, r5
+ add r5, r5, #2
+ strh r1, [r4, r3]
+ cmp r2, #0x10
+ blt _021D86CE
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8724 ; =0x000035B8
+ str r1, [r2, r0]
+ mov r0, #1
+ bl FUN_020AA770
+ bl NNS_SndInit
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8728 ; =0x00003504
+ add r0, r1, r0
+ bl NNS_SndStrmInit
+ ldr r1, _021D8718 ; =UNK04_0220FBC8
+ mov r0, #0
+ ldr r2, [r1, #4]
+ mov r1, #0xb1
+ lsl r1, r1, #6
+ add r1, r2, r1
+ mov r2, #0x22
+ lsl r2, r2, #6
+ bl MIi_CpuClearFast
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ mov r1, #0
+ str r1, [r0, #8]
+ pop {r3, r4, r5, pc}
+ nop
+_021D8718: .word UNK04_0220FBC8
+_021D871C: .word 0x00003584
+_021D8720: .word 0x00003598
+_021D8724: .word 0x000035B8
+_021D8728: .word 0x00003504
+
+ thumb_func_start MOD04_021D872C
+MOD04_021D872C: ; 0x021D872C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD04_021D8730
+MOD04_021D8730: ; 0x021D8730
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r3, #0
+ ldr r4, [sp, #0x14]
+ cmp r0, #0
+ bne _021D8748
+ ldr r0, [r6]
+ mov r1, #0
+ add r2, r5, #0
+ bl MI_CpuFill8
+ pop {r4, r5, r6, pc}
+_021D8748:
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D87BC ; =0x00003565
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _021D876A
+ add r0, r0, #3
+ add r0, r2, r0
+ ldr r1, _021D87C0 ; =MOD04_021D872C
+ mov r2, #0
+ bl MIC_StartAutoSamplingAsync
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D87BC ; =0x00003565
+ strb r2, [r1, r0]
+_021D876A:
+ bl MIC_GetLastSamplingAddress
+ sub r0, r0, r4
+ cmp r0, r5
+ bhs _021D8776
+ add r4, r4, r5
+_021D8776:
+ ldr r0, _021D87C4 ; =0x027FFFA8
+ ldrh r1, [r0]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _021D878E
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ mov r0, #0xb1
+ lsl r0, r0, #6
+ add r4, r1, r0
+_021D878E:
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D87C8 ; =0x000034FC
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021D87A2
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020AABDC
+_021D87A2:
+ ldr r0, [r6]
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_020AA824
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D87CC ; =0x00003564
+ strb r2, [r1, r0]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D87B8: .word UNK04_0220FBC8
+_021D87BC: .word 0x00003565
+_021D87C0: .word MOD04_021D872C
+_021D87C4: .word 0x027FFFA8
+_021D87C8: .word 0x000034FC
+_021D87CC: .word 0x00003564
+
+ thumb_func_start MOD04_021D87D0
+MOD04_021D87D0: ; 0x021D87D0
+ push {r4, lr}
+ ldr r1, _021D8810 ; =UNK04_0220FBC8
+ ldr r2, [r1, #4]
+ ldr r1, _021D8814 ; =0x00003560
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021D880A
+ bl FUN_020ACD54
+ add r4, r0, #0
+ bne _021D87EA
+ mov r0, #0
+ pop {r4, pc}
+_021D87EA:
+ mov r1, #0
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D87FE
+ add r0, r4, #0
+ bl FUN_020ACC84
+ mov r0, #0
+ pop {r4, pc}
+_021D87FE:
+ ldr r0, _021D8810 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8814 ; =0x00003560
+ str r4, [r1, r0]
+ mov r0, #1
+ pop {r4, pc}
+_021D880A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D8810: .word UNK04_0220FBC8
+_021D8814: .word 0x00003560
+
+ thumb_func_start MOD04_021D8818
+MOD04_021D8818: ; 0x021D8818
+ push {r3, lr}
+ ldr r0, _021D8858 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D885C ; =0x00003560
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D8852
+ ldr r1, [r0, #0xc]
+ cmp r1, #4
+ bne _021D8852
+ mov r1, #0
+ bl FUN_020ACAB0
+ cmp r0, #0
+ beq _021D883A
+ mov r0, #0
+ pop {r3, pc}
+_021D883A:
+ ldr r0, _021D8858 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D885C ; =0x00003560
+ ldr r0, [r1, r0]
+ bl FUN_020AADCC
+ cmp r0, #0
+ beq _021D884E
+ mov r0, #1
+ pop {r3, pc}
+_021D884E:
+ mov r0, #0
+ pop {r3, pc}
+_021D8852:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D8858: .word UNK04_0220FBC8
+_021D885C: .word 0x00003560
+
+ thumb_func_start MOD04_021D8860
+MOD04_021D8860: ; 0x021D8860
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r1, #0xc
+ bhi _021D8902
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8874: ; jump table
+ .short _021D8902 - _021D8874 - 2 ; case 0
+ .short _021D888E - _021D8874 - 2 ; case 1
+ .short _021D88F4 - _021D8874 - 2 ; case 2
+ .short _021D88FC - _021D8874 - 2 ; case 3
+ .short _021D88CE - _021D8874 - 2 ; case 4
+ .short _021D8902 - _021D8874 - 2 ; case 5
+ .short _021D8902 - _021D8874 - 2 ; case 6
+ .short _021D88DE - _021D8874 - 2 ; case 7
+ .short _021D88AE - _021D8874 - 2 ; case 8
+ .short _021D88C2 - _021D8874 - 2 ; case 9
+ .short _021D8902 - _021D8874 - 2 ; case 10
+ .short _021D88FC - _021D8874 - 2 ; case 11
+ .short _021D88FC - _021D8874 - 2 ; case 12
+_021D888E:
+ ldr r0, _021D8904 ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8908 ; =0x00003560
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ beq _021D88AA
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl FUN_020ACC84
+ pop {r4, pc}
+_021D88AA:
+ str r4, [r2, r0]
+ pop {r4, pc}
+_021D88AE:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl MOD04_021D8910
+ bl MOD04_021D8C6C
+ pop {r4, pc}
+_021D88C2:
+ add r0, r4, #0
+ 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 MOD04_021D8910
+ pop {r4, pc}
+_021D88DE:
+ add r0, r4, #0
+ bl FUN_020AADCC
+ cmp r0, #0
+ beq _021D8902
+ ldr r0, _021D8904 ; =UNK04_0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D890C ; =0x000034F8
+ str r2, [r1, r0]
+ pop {r4, pc}
+_021D88F4:
+ add r0, r4, #0
+ bl MOD04_021D8910
+ pop {r4, pc}
+_021D88FC:
+ add r0, r4, #0
+ bl MOD04_021D8910
+_021D8902:
+ pop {r4, pc}
+ .align 2, 0
+_021D8904: .word UNK04_0220FBC8
+_021D8908: .word 0x00003560
+_021D890C: .word 0x000034F8
+
+ thumb_func_start MOD04_021D8910
+MOD04_021D8910: ; 0x021D8910
+ push {r4, lr}
+ ldr r1, _021D893C ; =UNK04_0220FBC8
+ add r4, r0, #0
+ ldr r2, [r1, #4]
+ ldr r1, _021D8940 ; =0x00003560
+ ldr r1, [r2, r1]
+ cmp r4, r1
+ bne _021D8936
+ bl FUN_020AACFC
+ add r0, r4, #0
+ bl FUN_020ACC84
+ ldr r0, _021D893C ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8940 ; =0x00003560
+ str r2, [r1, r0]
+ pop {r4, pc}
+_021D8936:
+ bl FUN_020ACC84
+ pop {r4, pc}
+ .align 2, 0
+_021D893C: .word UNK04_0220FBC8
+_021D8940: .word 0x00003560
+
+ thumb_func_start MOD04_021D8944
+MOD04_021D8944: ; 0x021D8944
+ push {r4, r5, r6, lr}
+ bl OS_GetTick
+ add r4, r0, #0
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ add r5, r1, #0
+ ldr r0, [r0, #0xc]
+ sub r1, r4, r0
+ mov r0, #0xfa
+ lsl r0, r0, #8
+ mul r0, r1
+ ldr r1, _021D8A40 ; =0x000082EA
+ bl _u32_div_f
+ ldr r1, _021D8A3C ; =UNK04_0220FBC8
+ ldr r3, _021D8A44 ; =0x0000411A
+ ldr r2, [r1, #8]
+ sub r0, r0, r3
+ add r2, r2, r0
+ ldr r0, _021D8A48 ; =0xFFFFD8F0
+ str r2, [r1, #8]
+ cmp r2, r0
+ bge _021D8976
+ mov r0, #0
+ str r0, [r1, #8]
+_021D8976:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ str r4, [r0, #0xc]
+ str r5, [r0, #0x10]
+ bl VCT_Main
+ ldr r4, _021D8A3C ; =UNK04_0220FBC8
+ ldr r0, _021D8A44 ; =0x0000411A
+ ldr r1, [r4, #8]
+ cmp r1, r0
+ blt _021D899C
+ add r6, r0, #0
+ add r5, r0, #0
+_021D898E:
+ bl VCT_Main
+ ldr r0, [r4, #8]
+ sub r0, r0, r6
+ str r0, [r4, #8]
+ cmp r0, r5
+ bge _021D898E
+_021D899C:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8A4C ; =0x0000358C
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ beq _021D89EC
+ sub r0, r0, #4
+ ldr r0, [r2, r0]
+ cmp r0, #3
+ bhi _021D89E2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D89BC: ; jump table
+ .short _021D89C4 - _021D89BC - 2 ; case 0
+ .short _021D89CC - _021D89BC - 2 ; case 1
+ .short _021D89D4 - _021D89BC - 2 ; case 2
+ .short _021D89DC - _021D89BC - 2 ; case 3
+_021D89C4:
+ mov r0, #3
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89CC:
+ mov r0, #2
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89D4:
+ mov r0, #1
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89DC:
+ mov r0, #0
+ bl PM_SetAmpGain
+_021D89E2:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A4C ; =0x0000358C
+ str r2, [r1, r0]
+_021D89EC:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D8A00
+ cmp r0, #1
+ beq _021D8A3A
+ cmp r0, #2
+ pop {r4, r5, r6, pc}
+_021D8A00:
+ bl MOD04_021D8018
+ cmp r0, #0
+ bne _021D8A1E
+ mov r0, #1
+ bl MOD04_021D87D0
+ cmp r0, #0
+ beq _021D8A3A
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ str r2, [r1, r0]
+ pop {r4, r5, r6, pc}
+_021D8A1E:
+ bl MOD04_021D8018
+ cmp r0, #1
+ bne _021D8A3A
+ mov r0, #0
+ bl MOD04_021D8818
+ cmp r0, #0
+ beq _021D8A3A
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ str r2, [r1, r0]
+_021D8A3A:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8A3C: .word UNK04_0220FBC8
+_021D8A40: .word 0x000082EA
+_021D8A44: .word 0x0000411A
+_021D8A48: .word 0xFFFFD8F0
+_021D8A4C: .word 0x0000358C
+_021D8A50: .word 0x000034F8
+
+ thumb_func_start MOD04_021D8A54
+MOD04_021D8A54: ; 0x021D8A54
+ push {r3, lr}
+ ldr r3, _021D8A78 ; =UNK04_0220FBC8
+ ldr r3, [r3, #4]
+ cmp r3, #0
+ bne _021D8A62
+ mov r0, #0
+ pop {r3, pc}
+_021D8A62:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl VCT_HandleData
+ cmp r0, #0
+ beq _021D8A72
+ mov r0, #1
+ pop {r3, pc}
+_021D8A72:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D8A78: .word UNK04_0220FBC8
+
+ thumb_func_start MOD04_021D8A7C
+MOD04_021D8A7C: ; 0x021D8A7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ ldr r2, _021D8BC8 ; =UNK04_0220BAC0
+ add r4, r1, #0
+ ldrb r3, [r2]
+ add r1, sp, #0x10
+ add r5, r0, #0
+ strb r3, [r1]
+ ldrb r3, [r2, #1]
+ ldrb r2, [r2, #2]
+ strb r3, [r1, #1]
+ strb r2, [r1, #2]
+ ldr r1, _021D8BCC ; =UNK04_0220FBC8
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ bne _021D8ACA
+ ldr r1, _021D8BD0 ; =0x000035DC
+ bl AllocFromHeap
+ ldr r2, _021D8BCC ; =UNK04_0220FBC8
+ mov r1, #0x35
+ str r0, [r2]
+ add r0, #0x1f
+ lsr r0, r0, #5
+ lsl r0, r0, #5
+ str r0, [r2, #4]
+ lsl r1, r1, #8
+ str r5, [r0, r1]
+ add r0, r1, #0
+ ldr r5, _021D8BD4 ; =UNK04_0220FBE0
+ ldr r3, [r2, #4]
+ sub r0, #0x40
+ str r5, [r3, r0]
+ ldr r0, [r2, #4]
+ mov r3, #0
+ sub r1, #0x3c
+ str r3, [r0, r1]
+ bl MOD04_021D868C
+_021D8ACA:
+ ldr r5, _021D8BCC ; =UNK04_0220FBC8
+ mov r7, #0x11
+ ldr r0, [r5, #4]
+ ldr r3, _021D8BD8 ; =0x00003568
+ mov r1, #3
+ str r1, [r0, r3]
+ add r1, r3, #0
+ ldr r0, [r5, #4]
+ sub r1, #0xa8
+ ldr r2, [r0, r1]
+ add r1, r3, #4
+ str r2, [r0, r1]
+ lsl r7, r7, #6
+ add r0, r3, #0
+ ldr r1, [r5, #4]
+ lsl r2, r7, #1
+ add r0, #8
+ str r2, [r1, r0]
+ mov r2, #0x41
+ add r0, r3, #0
+ ldr r1, [r5, #4]
+ lsl r2, r2, #6
+ add r0, #0xc
+ str r2, [r1, r0]
+ add r0, r3, #0
+ ldr r2, [r5, #4]
+ mov r1, #1
+ add r0, #0x10
+ str r1, [r2, r0]
+ add r2, r3, #0
+ ldr r6, [r5, #4]
+ mov r0, #0
+ add r2, #0x14
+ str r0, [r6, r2]
+ add r2, r3, #0
+ ldr r6, [r5, #4]
+ add r2, #0x18
+ str r0, [r6, r2]
+ sub r0, r3, #3
+ ldr r2, [r5, #4]
+ sub r3, #0x64
+ strb r1, [r2, r0]
+ ldr r0, [r5, #4]
+ add r2, sp, #0x10
+ add r0, r0, r3
+ bl NNS_SndStrmAllocChannel
+ add r0, r5, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8BDC ; =0x00003504
+ add r0, r1, r0
+ mov r1, #0
+ bl NNS_SndStrmSetVolume
+ mov r0, #0x41
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _021D8BE0 ; =MOD04_021D8730
+ add r1, r5, #0
+ str r0, [sp, #8]
+ mov r0, #0xd3
+ ldr r2, [r1, #4]
+ lsl r0, r0, #6
+ ldr r2, [r2, r0]
+ add r0, #0x44
+ str r2, [sp, #0xc]
+ ldr r3, [r1, #4]
+ mov r2, #0x8f
+ lsl r2, r2, #6
+ add r0, r3, r0
+ add r2, r3, r2
+ mov r1, #1
+ lsl r3, r7, #1
+ bl NNS_SndStrmSetup
+ ldr r2, _021D8BCC ; =UNK04_0220FBC8
+ ldr r1, _021D8BE4 ; =0x000034F8
+ ldr r0, [r2, #4]
+ mov r5, #0
+ str r5, [r0, r1]
+ add r0, r1, #0
+ ldr r3, [r2, #4]
+ add r0, #0x68
+ str r5, [r3, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ ldr r0, [r2, #4]
+ sub r1, #0x30
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0x18]
+ bl MOD04_021D8018
+ add r1, sp, #0x10
+ strb r0, [r1, #0x10]
+ ldr r0, _021D8BE8 ; =MOD04_021D8860
+ str r0, [sp, #0x2c]
+ add r0, r5, #0
+ str r0, [sp, #0x30]
+ ldr r0, _021D8BCC ; =UNK04_0220FBC8
+ ldr r0, [r0, #4]
+ str r0, [sp, #0x24]
+ mov r0, #0x8f
+ lsl r0, r0, #6
+ str r0, [sp, #0x28]
+ add r0, sp, #0x14
+ bl VCT_Init
+ cmp r0, #0
+ ldr r0, _021D8BCC ; =UNK04_0220FBC8
+ add r2, r5, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8BEC ; =0x000034FC
+ str r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_020AA7A0
+ bl MOD04_021D8BF0
+ mov r0, #1
+ bl FUN_020AA760
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8BC8: .word UNK04_0220BAC0
+_021D8BCC: .word UNK04_0220FBC8
+_021D8BD0: .word 0x000035DC
+_021D8BD4: .word UNK04_0220FBE0
+_021D8BD8: .word 0x00003568
+_021D8BDC: .word 0x00003504
+_021D8BE0: .word MOD04_021D8730
+_021D8BE4: .word 0x000034F8
+_021D8BE8: .word MOD04_021D8860
+_021D8BEC: .word 0x000034FC
+
+ thumb_func_start MOD04_021D8BF0
+MOD04_021D8BF0: ; 0x021D8BF0
+ ldr r0, _021D8BFC ; =UNK04_0220FBC8
+ ldr r3, _021D8C00 ; =NNS_SndStrmStart
+ ldr r1, [r0, #4]
+ ldr r0, _021D8C04 ; =0x00003504
+ add r0, r1, r0
+ bx r3
+ .align 2, 0
+_021D8BFC: .word UNK04_0220FBC8
+_021D8C00: .word NNS_SndStrmStart
+_021D8C04: .word 0x00003504
+
+ thumb_func_start MOD04_021D8C08
+MOD04_021D8C08: ; 0x021D8C08
+ push {r3, lr}
+ ldr r0, _021D8C50 ; =UNK04_0220FBC8
+ ldr r1, _021D8C54 ; =0x00003560
+ ldr r2, [r0, #4]
+ ldr r0, [r2, r1]
+ cmp r0, #0
+ beq _021D8C1E
+ sub r1, #0x68
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021D8C24
+_021D8C1E:
+ bl MOD04_021D8C6C
+ pop {r3, pc}
+_021D8C24:
+ cmp r1, #1
+ bne _021D8C38
+ mov r1, #2
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D8C38
+ bl MOD04_021D8C6C
+ pop {r3, pc}
+_021D8C38:
+ ldr r0, _021D8C50 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8C54 ; =0x00003560
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D8C4E
+ bl MOD04_021D8C6C
+_021D8C4E:
+ pop {r3, pc}
+ .align 2, 0
+_021D8C50: .word UNK04_0220FBC8
+_021D8C54: .word 0x00003560
+
+ thumb_func_start MOD04_021D8C58
+MOD04_021D8C58: ; 0x021D8C58
+ ldr r1, _021D8C64 ; =UNK04_0220FBC8
+ ldr r2, [r1, #4]
+ ldr r1, _021D8C68 ; =0x000034C4
+ str r0, [r2, r1]
+ bx lr
+ nop
+_021D8C64: .word UNK04_0220FBC8
+_021D8C68: .word 0x000034C4
+
+ thumb_func_start MOD04_021D8C6C
+MOD04_021D8C6C: ; 0x021D8C6C
+ push {r4, lr}
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D8CBA
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC0 ; =0x000034C4
+ ldr r4, [r1, r0]
+ bl MIC_StopAutoSampling
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC4 ; =0x00003504
+ add r0, r1, r0
+ bl NNS_SndStrmStop
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC4 ; =0x00003504
+ add r0, r1, r0
+ bl NNS_SndStrmFreeChannel
+ bl VCT_Cleanup
+ ldr r1, _021D8CBC ; =UNK04_0220FBC8
+ mov r0, #0x35
+ ldr r2, [r1, #4]
+ lsl r0, r0, #8
+ ldr r0, [r2, r0]
+ ldr r1, [r1]
+ bl FreeToHeapExplicit
+ mov r1, #0
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ cmp r4, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ beq _021D8CBA
+ blx r4
+_021D8CBA:
+ pop {r4, pc}
+ .align 2, 0
+_021D8CBC: .word UNK04_0220FBC8
+_021D8CC0: .word 0x000034C4
+_021D8CC4: .word 0x00003504
+
+ thumb_func_start MOD04_021D8CC8
+MOD04_021D8CC8: ; 0x021D8CC8
+ push {r3, lr}
+ sub sp, #0x10
+ ldr r0, _021D8CEC ; =UNK04_0220FBC8
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021D8CE6
+ add r0, sp, #0
+ bl FUN_020AD144
+ ldr r0, [sp, #4]
+ cmp r0, #2
+ ble _021D8CE6
+ ldr r0, [sp]
+ add sp, #0x10
+ pop {r3, pc}
+_021D8CE6:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, pc}
+ .align 2, 0
+_021D8CEC: .word UNK04_0220FBC8
+
+ thumb_func_start MOD04_021D8CF0
+MOD04_021D8CF0: ; 0x021D8CF0
+ ldr r0, _021D8CFC ; =UNK04_0220FBC8
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r0, _021D8D00 ; =0x000034FC
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D8CFC: .word UNK04_0220FBC8
+_021D8D00: .word 0x000034FC
+
+ thumb_func_start MOD04_021D8D04
+MOD04_021D8D04: ; 0x021D8D04
+ ldr r0, _021D8D10 ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8D14 ; =0x000034FC
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D8D10: .word UNK04_0220FBC8
+_021D8D14: .word 0x000034FC
+
+ .section .rodata
+
+ .global UNK04_0220BAC0
+UNK04_0220BAC0: ; 0x0220BAC0
+ .byte 0x0D, 0x0D, 0x0D
+
+ .section .bss
+
+ .global UNK04_0220FBC8
+UNK04_0220FBC8: ; 0x0220FBC8
+ .space 0x18
+
+ .global UNK04_0220FBE0
+UNK04_0220FBE0: ; 0x0220FBE0
+ .space 0x880
diff --git a/arm9/modules/04/asm/mod04_021D8D18.s b/arm9/modules/04/asm/mod04_021D8D18.s
new file mode 100644
index 00000000..b91bc85a
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021D8D18.s
@@ -0,0 +1,1233 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021D8D18
+MOD04_021D8D18: ; 0x021D8D18
+ stmdb sp!, {r4, lr}
+ ldr r2, _021D8D58 ; =UNK04_02210468
+ ldr r1, _021D8D5C ; =0x000013D8
+ ldr r2, [r2]
+ mov r4, r0
+ add r0, r2, r1
+ bl OS_LockMutex
+ ldr r2, _021D8D58 ; =UNK04_02210468
+ ldr r1, _021D8D5C ; =0x000013D8
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ str r4, [r0, #4]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl OS_UnlockMutex
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D8D58: .word UNK04_02210468
+_021D8D5C: .word 0x000013D8
+ arm_func_end MOD04_021D8D18
+
+ arm_func_start MOD04_021D8D60
+MOD04_021D8D60: ; 0x021D8D60
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x98
+ ldr r4, _021D8EE0 ; =UNK04_0221046C
+ mov r3, #0
+ ldr r5, [r4, #4]
+ ldr ip, [r4]
+ cmp r5, r3
+ mov r5, r0
+ mov r6, r1
+ mov r4, r2
+ cmpeq ip, r3
+ bne _021D8DC0
+ ldr r0, _021D8EE4 ; =UNK04_0220BEF8
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8EE8 ; =UNK04_0220BF04
+ ldr r2, _021D8EE4 ; =UNK04_0220BEF8
+ mov r0, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021D8E18
+ add sp, sp, #0x98
+ mov r0, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_021D8DC0:
+ ldr r0, _021D8EEC ; =UNK04_0220BF0C
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8EE8 ; =UNK04_0220BF04
+ ldr r2, _021D8EEC ; =UNK04_0220BF0C
+ mov r0, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8EF0 ; =UNK04_0220BF14
+ mov r0, r5
+ mov r2, r6
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D8E18:
+ ldr r1, _021D8EE0 ; =UNK04_0221046C
+ add r0, sp, #0
+ bl MOD04_021D9F78
+ cmp r0, #0
+ addeq sp, sp, #0x98
+ moveq r0, #5
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _021D8EF4 ; =UNK04_0221048C
+ add r1, sp, #0
+ ldr r2, [r0]
+ mov r0, r5
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ addeq sp, sp, #0x98
+ moveq r0, #8
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _021D8EF8 ; =UNK04_02210460
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021D8E94
+ ldr r0, _021D8EFC ; =UNK04_0220BF1C
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8F00 ; =UNK04_0220BF20
+ ldr r2, _021D8EFC ; =UNK04_0220BF1C
+ mov r0, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D8E94:
+ mov r0, r4
+ bl wcslen
+ cmp r0, #0
+ beq _021D8ED4
+ mov r0, r4
+ bl wcslen
+ mov r3, r0
+ ldr r1, _021D8F04 ; =UNK04_0220BF28
+ mov r0, r5
+ mov r2, r4
+ mov r3, r3, lsl #1
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D8ED4:
+ mov r0, #0
+ add sp, sp, #0x98
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021D8EE0: .word UNK04_0221046C
+_021D8EE4: .word UNK04_0220BEF8
+_021D8EE8: .word UNK04_0220BF04
+_021D8EEC: .word UNK04_0220BF0C
+_021D8EF0: .word UNK04_0220BF14
+_021D8EF4: .word UNK04_0221048C
+_021D8EF8: .word UNK04_02210460
+_021D8EFC: .word UNK04_0220BF1C
+_021D8F00: .word UNK04_0220BF20
+_021D8F04: .word UNK04_0220BF28
+ arm_func_end MOD04_021D8D60
+
+ arm_func_start MOD04_021D8F08
+MOD04_021D8F08: ; 0x021D8F08
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021D91BC ; =UNK04_02210468
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [sp]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ ldr r1, _021D91C0 ; =UNK04_0220BF34
+ bl MOD04_021DA388
+ str r0, [sp]
+ cmp r0, #0
+ beq _021D8F40
+ bl MOD04_021DCA84
+_021D8F40:
+ ldr r0, _021D91BC ; =UNK04_02210468
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _021D91C4 ; =errno
+ str r2, [sp]
+ str r2, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x314]
+ ldr r1, _021D91C8 ; =UNK04_0220BF3C
+ bl MOD04_021DA388
+ bl atol
+ ldr r1, _021D91C4 ; =errno
+ ldr r1, [r1]
+ cmp r1, #0x22
+ bne _021D8F9C
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91CC ; =0x00004E85
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xc
+ ldmia sp!, {r4, r5, pc}
+_021D8F9C:
+ cmp r0, #0xc8
+ beq _021D8FC8
+ ldr r2, _021D91BC ; =UNK04_02210468
+ ldr r1, _021D91D0 ; =0x000059D8
+ ldr r2, [r2]
+ add r1, r0, r1
+ add r0, r2, #0x1000
+ str r1, [r0, #8]
+ add sp, sp, #4
+ mov r0, #0x12
+ ldmia sp!, {r4, r5, pc}
+_021D8FC8:
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91D4 ; =0x0000100C
+ ldr r3, [r0]
+ ldr r1, _021D91D8 ; =UNK04_0220BF48
+ add r0, r3, #0x1000
+ ldr r0, [r0, #0x314]
+ add r2, r3, r2
+ mov r3, #4
+ bl MOD04_021DA334
+ cmp r0, #0
+ bgt _021D9014
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91CC ; =0x00004E85
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xe
+ ldmia sp!, {r4, r5, pc}
+_021D9014:
+ ldr r1, _021D91BC ; =UNK04_02210468
+ ldr r0, _021D91D4 ; =0x0000100C
+ ldr r2, [r1]
+ add r1, sp, #0
+ add r0, r2, r0
+ mov r2, #0xa
+ bl strtol
+ ldr r2, _021D91BC ; =UNK04_02210468
+ ldr r1, _021D91D4 ; =0x0000100C
+ ldr r5, [r2]
+ mov r4, r0
+ add r0, r5, r1
+ bl strlen
+ ldr r1, _021D91D4 ; =0x0000100C
+ ldr r2, [sp]
+ add r1, r5, r1
+ add r0, r1, r0
+ cmp r2, r0
+ ldrne r1, _021D91CC ; =0x00004E85
+ addne r0, r5, #0x1000
+ strne r1, [r0, #8]
+ addne sp, sp, #4
+ movne r0, #0xc
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D91DC ; =0x00004E20
+ add r1, r5, #0x1000
+ add r0, r4, r0
+ str r0, [r1, #8]
+ cmp r4, #0x64
+ bge _021D91B0
+ ldr ip, _021D91BC ; =UNK04_02210468
+ mov r0, #0
+ ldr r1, [ip]
+ ldr r5, _021D91E0 ; =0x00001052
+ add r1, r1, #0x1000
+ strb r0, [r1, #0x52]
+ ldr r2, [ip]
+ ldr r1, _021D91E4 ; =UNK04_0220BF54
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x1f]
+ ldr r2, [ip]
+ ldr r3, _021D91E8 ; =0x0000012D
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x17f]
+ ldr r2, [ip]
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x10]
+ ldr r2, [ip]
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x188]
+ ldr r2, [ip]
+ add r0, r2, #0x1000
+ ldr r0, [r0, #0x314]
+ add r2, r2, r5
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91EC ; =0x0000101F
+ ldr r3, [r0]
+ ldr r1, _021D91F0 ; =UNK04_0220BF5C
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #0x33
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91F4 ; =0x0000117F
+ ldr r3, [r0]
+ ldr r1, _021D91F8 ; =UNK04_0220BF64
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #9
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91FC ; =0x00001010
+ ldr r3, [r0]
+ ldr r1, _021D9200 ; =UNK04_0220BF70
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #0xf
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D9204 ; =0x00001188
+ ldr r3, [r0]
+ ldr r1, _021D9208 ; =UNK04_0220BF7C
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #0x41
+ bl MOD04_021DA2F4
+ ldr r0, _021D91BC ; =UNK04_02210468
+ mov r1, #0
+ ldr r0, [r0]
+ cmp r4, #0x28
+ add r0, r0, #0x1000
+ strb r1, [r0, #0x1b3]
+ ldrne r0, _021D920C ; =UNK04_02210464
+ movne r1, #1
+ strne r1, [r0]
+ ldreq r0, _021D920C ; =UNK04_02210464
+ moveq r1, #2
+ streq r1, [r0]
+_021D91B0:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021D91BC: .word UNK04_02210468
+_021D91C0: .word UNK04_0220BF34
+_021D91C4: .word errno
+_021D91C8: .word UNK04_0220BF3C
+_021D91CC: .word 0x00004E85
+_021D91D0: .word 0x000059D8
+_021D91D4: .word 0x0000100C
+_021D91D8: .word UNK04_0220BF48
+_021D91DC: .word 0x00004E20
+_021D91E0: .word 0x00001052
+_021D91E4: .word UNK04_0220BF54
+_021D91E8: .word 0x0000012D
+_021D91EC: .word 0x0000101F
+_021D91F0: .word UNK04_0220BF5C
+_021D91F4: .word 0x0000117F
+_021D91F8: .word UNK04_0220BF64
+_021D91FC: .word 0x00001010
+_021D9200: .word UNK04_0220BF70
+_021D9204: .word 0x00001188
+_021D9208: .word UNK04_0220BF7C
+_021D920C: .word UNK04_02210464
+ arm_func_end MOD04_021D8F08
+
+ arm_func_start MOD04_021D9210
+MOD04_021D9210: ; 0x021D9210
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ mov r1, #0
+ ldr r0, [r0]
+ add r2, r0, #0x1000
+ ldr r0, [r2, #0x314]
+ ldr r5, [r2, #0x20c]
+ ldr r4, [r2, #0x210]
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021D9260
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D93F8 ; =0x00004E84
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xe
+ ldmia sp!, {r4, r5, pc}
+_021D9260:
+ bl MOD04_021D8F08
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0xe
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r1, _021D93F8 ; =0x00004E84
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r2, [r0, #8]
+ cmp r2, r1
+ bge _021D9334
+ ldr r0, _021D93FC ; =0x00004E22
+ cmp r2, r0
+ bne _021D9328
+ ldr r0, _021D9400 ; =UNK04_0220BF88
+ ldr r1, _021D9404 ; =0x0000071F
+ blx r5
+ movs r5, r0
+ bne _021D92D0
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D93F8 ; =0x00004E84
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #2
+ ldmia sp!, {r4, r5, pc}
+_021D92D0:
+ add r1, r5, #0x1f
+ ldr r0, _021D9408 ; =UNK04_0221046C
+ bic r1, r1, #0x1f
+ bl FUN_02096710
+ cmp r0, #1
+ beq _021D9318
+ ldr r0, _021D940C ; =UNK04_0220BF98
+ mov r1, r5
+ mov r2, #0
+ blx r4
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D93F8 ; =0x00004E84
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xf
+ ldmia sp!, {r4, r5, pc}
+_021D9318:
+ ldr r0, _021D940C ; =UNK04_0220BF98
+ mov r1, r5
+ mov r2, #0
+ blx r4
+_021D9328:
+ add sp, sp, #4
+ mov r0, #0x15
+ ldmia sp!, {r4, r5, pc}
+_021D9334:
+ ldr r0, _021D9410 ; =0x00004E88
+ cmp r2, r0
+ beq _021D9350
+ ldr r0, _021D9414 ; =0x00004E8C
+ cmp r2, r0
+ beq _021D9378
+ b _021D93E8
+_021D9350:
+ ldr r0, _021D9408 ; =UNK04_0221046C
+ bl FUN_02096570
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D9410 ; =0x00004E88
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0x10
+ ldmia sp!, {r4, r5, pc}
+_021D9378:
+ ldr r0, _021D9400 ; =UNK04_0220BF88
+ mov r1, #0x700
+ blx r5
+ movs r5, r0
+ bne _021D93AC
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D9414 ; =0x00004E8C
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0x11
+ ldmia sp!, {r4, r5, pc}
+_021D93AC:
+ add r0, r5, #0x1f
+ bic r0, r0, #0x1f
+ bl DWCi_AUTH_MakeWiFiID
+ ldr r0, _021D940C ; =UNK04_0220BF98
+ mov r1, r5
+ mov r2, #0
+ blx r4
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D9414 ; =0x00004E8C
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0x11
+ ldmia sp!, {r4, r5, pc}
+_021D93E8:
+ mov r0, #0x12
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021D93F4: .word UNK04_02210468
+_021D93F8: .word 0x00004E84
+_021D93FC: .word 0x00004E22
+_021D9400: .word UNK04_0220BF88
+_021D9404: .word 0x0000071F
+_021D9408: .word UNK04_0221046C
+_021D940C: .word UNK04_0220BF98
+_021D9410: .word 0x00004E88
+_021D9414: .word 0x00004E8C
+ arm_func_end MOD04_021D9210
+
+ 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
+ mov r0, #1
+ ldr r7, _021D96D4 ; =0x00001388
+ ldr fp, _021D96D8 ; =0x000082EA
+ ldr r5, _021D96DC ; =UNK04_02210468
+ ldr r4, _021D96E0 ; =0x000013D8
+ mov r6, sb
+ str sb, [sp, #8]
+ str sb, [sp, #0xc]
+ str r0, [sp, #4]
+_021D9448:
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x314]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021D9470
+ ldr r0, _021D96E4 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021D9470:
+ ldr r0, [r5]
+ add r1, r0, #0x1000
+ ldr r0, [r1, #0x314]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x20]
+ cmp r0, #8
+ beq _021D9518
+ ldr r0, _021D96E8 ; =0x00004E84
+ str r0, [r1, #8]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x20]
+ cmp r0, #7
+ bne _021D94C0
+ mov r0, #0x14
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D94C0:
+ cmp sb, #2
+ ble _021D9508
+ cmp r0, #2
+ bne _021D94E0
+ mov r0, #9
+ 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 MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D94F8:
+ mov r0, #0xd
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D9508:
+ ldr r0, [sp, #4]
+ add sb, sb, #1
+ str r0, [sp]
+ b _021D9598
+_021D9518:
+ bl MOD04_021D9210
+ cmp r0, #0x10
+ beq _021D9544
+ cmp r0, #0x11
+ beq _021D956C
+ cmp r0, #0x15
+ bne _021D9578
+ mov r0, #0x15
+ 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 MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D955C:
+ ldr r0, [sp, #8]
+ add sb, sb, #1
+ str r0, [sp]
+ b _021D9598
+_021D956C:
+ 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 MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D958C:
+ ldr r0, [sp, #4]
+ add sb, sb, #1
+ str r0, [sp]
+_021D9598:
+ bl OS_GetTick
+ mov r8, r0
+ mov sl, r1
+ bl OS_GetTick
+ subs r2, r0, r8
+ sbc r0, r1, sl
+ mov r1, r0, lsl #6
+ ldr r3, [sp, #0xc]
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ mov r2, fp
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, r7
+ bhs _021D965C
+_021D95D4:
+ ldr r0, [r5]
+ add r0, r0, r4
+ bl OS_LockMutex
+ ldr r2, [r5]
+ add r1, r2, #0x1000
+ ldr r0, [r1, #0x3f0]
+ cmp r0, #1
+ bne _021D961C
+ ldr r2, _021D96E8 ; =0x00004E84
+ ldr r0, _021D96E0 ; =0x000013D8
+ str r2, [r1, #8]
+ ldr r1, [r5]
+ add r0, r1, r0
+ bl OS_UnlockMutex
+ mov r0, #0x14
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D961C:
+ add r0, r2, r4
+ bl OS_UnlockMutex
+ mov r0, r7
+ bl OS_Sleep
+ bl OS_GetTick
+ subs r2, r0, r8
+ sbc r0, r1, sl
+ mov r1, r0, lsl #6
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ mov r2, fp
+ mov r3, r6
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, r7
+ blo _021D95D4
+_021D965C:
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DAE4C
+ ldr r0, [r5]
+ add r0, r0, r4
+ bl OS_LockMutex
+ ldr r0, [sp]
+ bl MOD04_021D96EC
+ ldr r1, [r5]
+ add r1, r1, #0x1000
+ str r0, [r1, #4]
+ ldr r2, [r5]
+ add r1, r2, #0x1000
+ ldr r0, [r1, #4]
+ cmp r0, #0
+ beq _021D96C0
+ ldr r2, _021D96E8 ; =0x00004E84
+ ldr r0, _021D96E0 ; =0x000013D8
+ str r2, [r1, #8]
+ ldr r1, [r5]
+ add r0, r1, r0
+ bl OS_UnlockMutex
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D96C0:
+ add r0, r2, r4
+ bl OS_UnlockMutex
+ b _021D9448
+ arm_func_end MOD04_021D9418
+
+ 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
+_021D96D4: .word 0x00001388
+_021D96D8: .word 0x000082EA
+_021D96DC: .word UNK04_02210468
+_021D96E0: .word 0x000013D8
+_021D96E4: .word 0x00001B34
+_021D96E8: .word 0x00004E84
+ arm_func_end MOD04_021D96CC
+
+ arm_func_start MOD04_021D96EC
+MOD04_021D96EC: ; 0x021D96EC
+ stmdb sp!, {r4, lr}
+ ldr r1, _021D97E0 ; =UNK04_0220BEB4
+ mov r4, r0
+ ldr r0, [r1]
+ ldr r1, _021D97E4 ; =UNK04_0220BFA4
+ bl strcmp
+ cmp r0, #0
+ ldrne r0, _021D97E0 ; =UNK04_0220BEB4
+ movne r1, #1
+ strne r1, [r0, #0x14]
+ ldr r0, _021D97E8 ; =UNK04_02210468
+ ldr r1, _021D97E0 ; =UNK04_0220BEB4
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r2, [r0, #0x20c]
+ str r2, [r1, #0xc]
+ ldr r2, [r0, #0x210]
+ str r2, [r1, #0x10]
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DB608
+ cmp r0, #0
+ movne r0, #4
+ ldmneia sp!, {r4, pc}
+ cmp r4, #1
+ bne _021D9758
+ ldr r0, _021D97EC ; =UNK04_0221046C
+ bl DWCi_BM_GetWiFiInfo
+_021D9758:
+ ldr r0, _021D97E8 ; =UNK04_02210468
+ ldr r2, _021D97F0 ; =0x000011CC
+ ldr r3, [r0]
+ add r0, r3, #0x1000
+ ldr r0, [r0, #0x314]
+ add r1, r3, #0x1200
+ add r2, r3, r2
+ bl MOD04_021D8D60
+ ldr r2, _021D97E8 ; =UNK04_02210468
+ ldr r1, [r2]
+ add r1, r1, #0x1000
+ str r0, [r1, #4]
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ movne r0, #4
+ ldmneia sp!, {r4, pc}
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DB570
+ cmp r0, #0
+ movne r0, #4
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021D97F4 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ ldr r1, _021D97E8 ; =UNK04_02210468
+ ldr r2, [r1]
+ sub r1, r0, #1
+ add r0, r2, #0x1000
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DB4A4
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D97E0: .word UNK04_0220BEB4
+_021D97E4: .word UNK04_0220BFA4
+_021D97E8: .word UNK04_02210468
+_021D97EC: .word UNK04_0221046C
+_021D97F0: .word 0x000011CC
+_021D97F4: .word OSi_ThreadInfo
+ arm_func_end MOD04_021D96EC
+
+ arm_func_start MOD04_021D97F8
+MOD04_021D97F8: ; 0x021D97F8
+ stmdb sp!, {r4, lr}
+ ldr r1, _021D9874 ; =UNK04_02210468
+ mov r4, r0
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021D981C
+ mov r1, #0
+ mov r2, #0x1c4
+ bl MI_CpuFill8
+_021D981C:
+ ldr r1, _021D9874 ; =UNK04_02210468
+ ldr r0, _021D9878 ; =0x00001008
+ ldr r2, [r1]
+ mov r1, r4
+ add r0, r2, r0
+ mov r2, #0x1c4
+ bl MI_CpuCopy8
+ ldr r1, [r4]
+ ldr r0, _021D987C ; =0x00004E20
+ cmp r1, r0
+ blt _021D9854
+ ldr r0, _021D9880 ; =0x00007530
+ cmp r1, r0
+ blt _021D985C
+_021D9854:
+ ldr r0, _021D9884 ; =0x00005206
+ str r0, [r4]
+_021D985C:
+ ldr r1, [r4]
+ ldr r0, _021D9888 ; =0x00004E84
+ cmp r1, r0
+ rsbge r0, r1, #0
+ strge r0, [r4]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D9874: .word UNK04_02210468
+_021D9878: .word 0x00001008
+_021D987C: .word 0x00004E20
+_021D9880: .word 0x00007530
+_021D9884: .word 0x00005206
+_021D9888: .word 0x00004E84
+ arm_func_end MOD04_021D97F8
+
+ arm_func_start MOD04_021D988C
+MOD04_021D988C: ; 0x021D988C
+ stmdb sp!, {r4, lr}
+ ldr r0, _021D98D4 ; =UNK04_02210468
+ ldr r1, [r0]
+ cmp r1, #0
+ moveq r0, #0x16
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _021D98D8 ; =0x000013D8
+ add r0, r1, r0
+ bl OS_LockMutex
+ ldr r1, _021D98D4 ; =UNK04_02210468
+ ldr r0, _021D98D8 ; =0x000013D8
+ ldr r2, [r1]
+ add r1, r2, #0x1000
+ add r0, r2, r0
+ ldr r4, [r1, #4]
+ bl OS_UnlockMutex
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D98D4: .word UNK04_02210468
+_021D98D8: .word 0x000013D8
+ arm_func_end MOD04_021D988C
+
+ arm_func_start MOD04_021D98DC
+MOD04_021D98DC: ; 0x021D98DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021D9914 ; =UNK04_02210468
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x384]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021D9918 ; =0x00001318
+ add r0, r1, r0
+ bl OS_JoinThread
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021D9914: .word UNK04_02210468
+_021D9918: .word 0x00001318
+ arm_func_end MOD04_021D98DC
+
+ arm_func_start MOD04_021D991C
+MOD04_021D991C: ; 0x021D991C
+ stmdb sp!, {r4, lr}
+ ldr r0, _021D996C ; =UNK04_02210468
+ ldr r0, [r0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ add r1, r0, #0x1000
+ ldr r0, [r1, #0x314]
+ ldr r4, [r1, #0x210]
+ cmp r0, #0
+ beq _021D9948
+ bl MOD04_021DAE4C
+_021D9948:
+ ldr r1, _021D996C ; =UNK04_02210468
+ ldr r0, _021D9970 ; =UNK04_0220BFC4
+ ldr r1, [r1]
+ mov r2, #0
+ blx r4
+ ldr r0, _021D996C ; =UNK04_02210468
+ mov r1, #0
+ str r1, [r0]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D996C: .word UNK04_02210468
+_021D9970: .word UNK04_0220BFC4
+ arm_func_end MOD04_021D991C
+
+ arm_func_start MOD04_021D9974
+MOD04_021D9974: ; 0x021D9974
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021D9A0C ; =UNK04_02210468
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021D9A10 ; =0x000013D8
+ add r0, r1, r0
+ bl OS_LockMutex
+ ldr r2, _021D9A0C ; =UNK04_02210468
+ mov r3, #1
+ ldr r0, [r2]
+ ldr r1, _021D9A10 ; =0x000013D8
+ add r0, r0, #0x1000
+ str r3, [r0, #0x3f0]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl OS_UnlockMutex
+ ldr r0, _021D9A0C ; =UNK04_02210468
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ cmp r0, #0
+ beq _021D99DC
+ bl MOD04_021DB440
+_021D99DC:
+ ldr r0, _021D9A0C ; =UNK04_02210468
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x384]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021D9A14 ; =0x00001318
+ add r0, r1, r0
+ bl OS_JoinThread
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021D9A0C: .word UNK04_02210468
+_021D9A10: .word 0x000013D8
+_021D9A14: .word 0x00001318
+ arm_func_end MOD04_021D9974
+
+ arm_func_start MOD04_021D9A18
+MOD04_021D9A18: ; 0x021D9A18
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r1, _021D9ABC ; =UNK04_02210468
+ ldr r0, _021D9AC0 ; =0x000013D8
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_InitMutex
+ ldr r1, _021D9ABC ; =UNK04_02210468
+ mov r2, #0
+ ldr r0, [r1]
+ add r0, r0, #0x1000
+ str r2, [r0, #0x3f0]
+ ldr r1, [r1]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x384]
+ cmp r0, #0
+ beq _021D9A74
+ ldr r0, _021D9AC4 ; =0x00001318
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {pc}
+_021D9A74:
+ ldr r2, _021D9ABC ; =UNK04_02210468
+ ldr r0, _021D9AC4 ; =0x00001318
+ ldr lr, [r2]
+ mov r3, #0x1000
+ ldr r1, _021D9AC8 ; =MOD04_021D9418
+ str r3, [sp]
+ mov ip, #0x10
+ add r0, lr, r0
+ add r3, lr, #0x1000
+ str ip, [sp, #4]
+ bl OS_CreateThread
+ ldr r1, _021D9ABC ; =UNK04_02210468
+ ldr r0, _021D9AC4 ; =0x00001318
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021D9ABC: .word UNK04_02210468
+_021D9AC0: .word 0x000013D8
+_021D9AC4: .word 0x00001318
+_021D9AC8: .word MOD04_021D9418
+ arm_func_end MOD04_021D9A18
+
+ arm_func_start MOD04_021D9ACC
+MOD04_021D9ACC: ; 0x021D9ACC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021D9BFC ; =UNK04_02210468
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ cmp r0, #0
+ addne sp, sp, #4
+ ldr r2, [r5, #0x40]
+ movne r0, #2
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D9C00 ; =UNK04_0220BFD4
+ ldr r1, _021D9C04 ; =0x000013F4
+ blx r2
+ ldr r1, _021D9BFC ; =UNK04_02210468
+ cmp r0, #0
+ str r0, [r1]
+ addeq sp, sp, #4
+ moveq r0, #2
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, _021D9C04 ; =0x000013F4
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021D9BFC ; =UNK04_02210468
+ ldr r2, _021D9C08 ; =0x00001008
+ ldr r0, [r1]
+ ldr r3, _021D9C0C ; =UNK04_02210464
+ add r0, r0, #0x1000
+ str r4, [r0, #0x314]
+ ldr r0, [r1]
+ mov r1, #0
+ add r0, r0, r2
+ mov r2, #0x1c4
+ str r1, [r3]
+ bl MI_CpuFill8
+ ldr r2, _021D9BFC ; =UNK04_02210468
+ ldr r3, _021D9C10 ; =0x00004E84
+ ldr r0, [r2]
+ ldr r1, _021D9C14 ; =0x000011CC
+ add r0, r0, #0x1000
+ str r3, [r0, #8]
+ ldr lr, [r2]
+ mov r4, #4
+ add ip, lr, r1
+_021D9B7C:
+ ldmia r5!, {r0, r1, r2, r3}
+ stmia ip!, {r0, r1, r2, r3}
+ subs r4, r4, #1
+ bne _021D9B7C
+ ldmia r5, {r0, r1}
+ stmia ip, {r0, r1}
+ add r0, lr, #0x1100
+ mov r2, #0
+ strh r2, [r0, #0xfe]
+ ldr r1, _021D9BFC ; =UNK04_02210468
+ mov r0, #1
+ ldr r1, [r1]
+ add r1, r1, #0x1000
+ strb r2, [r1, #0x20b]
+ bl MOD04_021D96EC
+ ldr r2, _021D9BFC ; =UNK04_02210468
+ ldr r1, [r2]
+ add r1, r1, #0x1000
+ str r0, [r1, #4]
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D9C18 ; =UNK04_02210460
+ mov r1, #0
+ str r1, [r0]
+ bl MOD04_021D9A18
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021D9BFC: .word UNK04_02210468
+_021D9C00: .word UNK04_0220BFD4
+_021D9C04: .word 0x000013F4
+_021D9C08: .word 0x00001008
+_021D9C0C: .word UNK04_02210464
+_021D9C10: .word 0x00004E84
+_021D9C14: .word 0x000011CC
+_021D9C18: .word UNK04_02210460
+ arm_func_end MOD04_021D9ACC
+
+ arm_func_start MOD04_021D9C1C
+MOD04_021D9C1C: ; 0x021D9C1C
+ ldr r1, _021D9C28 ; =UNK04_0220BEB4
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_021D9C28: .word UNK04_0220BEB4
+ arm_func_end MOD04_021D9C1C
+
+ .section .data
+
+ .global UNK04_0220BEB4
+UNK04_0220BEB4: ; 0x0220BEB4
+ .word UNK04_0220BED0
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00
+
+ .global UNK04_0220BED0
+UNK04_0220BED0: ; 0x0220BED0
+ .asciz "https://nas.test.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220BEF8
+UNK04_0220BEF8: ; 0x0220BEF8
+ .asciz "acctcreate"
+
+ .balign 4, 0
+ .global UNK04_0220BF04
+UNK04_0220BF04: ; 0x0220BF04
+ .asciz "action"
+
+ .balign 4, 0
+ .global UNK04_0220BF0C
+UNK04_0220BF0C: ; 0x0220BF0C
+ .asciz "login"
+
+ .balign 4, 0
+ .global UNK04_0220BF14
+UNK04_0220BF14: ; 0x0220BF14
+ .asciz "gsbrcd"
+
+ .balign 4, 0
+ .global UNK04_0220BF1C
+UNK04_0220BF1C: ; 0x0220BF1C
+ .asciz "Y"
+
+ .balign 4, 0
+ .global UNK04_0220BF20
+UNK04_0220BF20: ; 0x0220BF20
+ .asciz "iswfc"
+
+ .balign 4, 0
+ .global UNK04_0220BF28
+UNK04_0220BF28: ; 0x0220BF28
+ .asciz "ingamesn"
+
+ .balign 4, 0
+ .global UNK04_0220BF34
+UNK04_0220BF34: ; 0x0220BF34
+ .asciz "Date"
+
+ .balign 4, 0
+ .global UNK04_0220BF3C
+UNK04_0220BF3C: ; 0x0220BF3C
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220BF48
+UNK04_0220BF48: ; 0x0220BF48
+ .asciz "returncd"
+
+ .balign 4, 0
+ .global UNK04_0220BF54
+UNK04_0220BF54: ; 0x0220BF54
+ .asciz "token"
+
+ .balign 4, 0
+ .global UNK04_0220BF5C
+UNK04_0220BF5C: ; 0x0220BF5C
+ .asciz "locator"
+
+ .balign 4, 0
+ .global UNK04_0220BF64
+UNK04_0220BF64: ; 0x0220BF64
+ .asciz "challenge"
+
+ .balign 4, 0
+ .global UNK04_0220BF70
+UNK04_0220BF70: ; 0x0220BF70
+ .asciz "datetime"
+
+ .balign 4, 0
+ .global UNK04_0220BF7C
+UNK04_0220BF7C: ; 0x0220BF7C
+ .asciz "Set-Cookie"
+
+ .balign 4, 0
+ .global UNK04_0220BF88
+UNK04_0220BF88: ; 0x0220BF88
+ .asciz "ALLOC bmwork"
+
+ .balign 4, 0
+ .global UNK04_0220BF98
+UNK04_0220BF98: ; 0x0220BF98
+ .asciz "FREE bmwork"
+
+ .balign 4, 0
+ .global UNK04_0220BFA4
+UNK04_0220BFA4: ; 0x0220BFA4
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220BFC4
+UNK04_0220BFC4: ; 0x0220BFC4
+ .asciz "FREE DWCauth"
+
+ .balign 4, 0
+ .global UNK04_0220BFD4
+UNK04_0220BFD4: ; 0x0220BFD4
+ .asciz "ALLOC DWCauth"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210460
+UNK04_02210460: ; 0x02210460
+ .space 0x4
+
+ .global UNK04_02210464
+UNK04_02210464: ; 0x02210464
+ .space 0x4
+
+ .global UNK04_02210468
+UNK04_02210468: ; 0x02210468
+ .space 0x4
+
+ .global UNK04_0221046C
+UNK04_0221046C: ; 0x0221046C
+ .space 0x14
+
+ .global UNK04_02210480
+UNK04_02210480: ; 0x02210480
+ .space 0x4
+
+ .global UNK04_02210484
+UNK04_02210484: ; 0x02210484
+ .space 0x4
+
+ .global UNK04_02210488
+UNK04_02210488: ; 0x02210488
+ .space 0x4
+
+ .global UNK04_0221048C
+UNK04_0221048C: ; 0x0221048C
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021D9C2C.s b/arm9/modules/04/asm/mod04_021D9C2C.s
new file mode 100644
index 00000000..fdff3193
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021D9C2C.s
@@ -0,0 +1,549 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021D9C2C
+MOD04_021D9C2C: ; 0x021D9C2C
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x28
+ mov r4, r2
+ mov r6, r0
+ mov r5, r1
+ mov ip, #2
+ ldr r2, _021D9F30 ; =UNK04_0220BFE4
+ add r0, sp, #4
+ mov r1, #0x21
+ mov r3, #1
+ str ip, [sp]
+ bl OS_SNPrintf
+ add r0, sp, #4
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F34 ; =UNK04_0220BFF0
+ mov r0, r6
+ add r2, sp, #4
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r5
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F38 ; =UNK04_0220BFF8
+ mov r0, r6
+ mov r2, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0xe
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F3C ; =UNK04_0220C000
+ mov r0, r6
+ add r2, r5, #0xe
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x41
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F40 ; =UNK04_0220C008
+ mov r0, r6
+ add r2, r5, #0x41
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x6f
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F44 ; =UNK04_0220C010
+ mov r0, r6
+ add r2, r5, #0x6f
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x15
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F48 ; =UNK04_0220C018
+ mov r0, r6
+ add r2, r5, #0x15
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x1a
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F4C ; =UNK04_0220C020
+ mov r0, r6
+ add r2, r5, #0x1a
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x1d
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F50 ; =UNK04_0220C028
+ mov r0, r6
+ add r2, r5, #0x1d
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x1f
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F54 ; =UNK04_0220C030
+ mov r0, r6
+ add r2, r5, #0x1f
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x2c
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F58 ; =UNK04_0220C038
+ mov r0, r6
+ add r2, r5, #0x2c
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x2f
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F5C ; =UNK04_0220C040
+ mov r0, r6
+ add r2, r5, #0x2f
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x34
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F60 ; =UNK04_0220C048
+ mov r0, r6
+ add r2, r5, #0x34
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x7e
+ bl wcslen
+ mov r3, r0
+ ldr r1, _021D9F64 ; =UNK04_0220C050
+ mov r0, r6
+ add r2, r5, #0x7e
+ mov r3, r3, lsl #1
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ cmp r4, #1
+ bne _021D9ED0
+ add r0, r5, #0x4e
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F68 ; =UNK04_0220C058
+ mov r0, r6
+ add r2, r5, #0x4e
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D9ED0:
+ ldr r2, _021D9F6C ; =UNK04_0220C060
+ mov ip, #2
+ add r0, sp, #4
+ mov r1, #0x21
+ mov r3, #1
+ str ip, [sp]
+ bl OS_SNPrintf
+ ldr r1, _021D9F70 ; =UNK04_0220C078
+ add r2, sp, #4
+ mov r0, r6
+ bl MOD04_021DAC98
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ ldr r1, _021D9F74 ; =UNK04_0220C084
+ mov r0, r6
+ add r2, r5, #0x15
+ bl MOD04_021DAC98
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021D9F30: .word UNK04_0220BFE4
+_021D9F34: .word UNK04_0220BFF0
+_021D9F38: .word UNK04_0220BFF8
+_021D9F3C: .word UNK04_0220C000
+_021D9F40: .word UNK04_0220C008
+_021D9F44: .word UNK04_0220C010
+_021D9F48: .word UNK04_0220C018
+_021D9F4C: .word UNK04_0220C020
+_021D9F50: .word UNK04_0220C028
+_021D9F54: .word UNK04_0220C030
+_021D9F58: .word UNK04_0220C038
+_021D9F5C: .word UNK04_0220C040
+_021D9F60: .word UNK04_0220C048
+_021D9F64: .word UNK04_0220C050
+_021D9F68: .word UNK04_0220C058
+_021D9F6C: .word UNK04_0220C060
+_021D9F70: .word UNK04_0220C078
+_021D9F74: .word UNK04_0220C084
+ arm_func_end MOD04_021D9C2C
+
+ arm_func_start MOD04_021D9F78
+MOD04_021D9F78: ; 0x021D9F78
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0x8c
+ mov r6, r1
+ mov r1, #0
+ mov r2, #0x94
+ mov r4, r0
+ bl MI_CpuFill8
+ ldr r3, [r6]
+ ldr r5, [r6, #4]
+ mov r0, #0
+ cmp r5, r0
+ cmpeq r3, r0
+ beq _021D9FC4
+ ldr r2, _021DA218 ; =UNK04_0220C094
+ mov r0, r4
+ mov r1, #0xe
+ str r5, [sp]
+ bl OS_SNPrintf
+ b _021D9FE0
+_021D9FC4:
+ ldr r3, [r6, #8]
+ ldr r5, [r6, #0xc]
+ ldr r2, _021DA218 ; =UNK04_0220C094
+ mov r0, r4
+ mov r1, #0xe
+ str r5, [sp]
+ bl OS_SNPrintf
+_021D9FE0:
+ ldrh r3, [r6, #0x10]
+ ldr r2, _021DA21C ; =UNK04_0220C09C
+ add r0, r4, #0xe
+ mov r1, #7
+ bl OS_SNPrintf
+ ldr r0, _021DA220 ; =0x027FFE0C
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021DA008
+ bl OS_Terminate
+_021DA008:
+ ldr r0, _021DA220 ; =0x027FFE0C
+ add r1, r4, #0x15
+ mov r2, #4
+ bl MI_CpuCopy8
+ ldr r0, _021DA224 ; =0x027FFE10
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021DA02C
+ bl OS_Terminate
+_021DA02C:
+ ldr r0, _021DA224 ; =0x027FFE10
+ add r1, r4, #0x1a
+ mov r2, #2
+ bl MI_CpuCopy8
+ mov r1, #0x30
+ add r0, sp, #0x16
+ strb r1, [r4, #0x1d]
+ bl OS_GetMacAddress
+ ldr r5, _021DA228 ; =UNK04_0220C0A4
+ add r7, sp, #0x16
+ add r6, r4, #0x1f
+ mov r8, #0
+_021DA05C:
+ ldrb r2, [r7]
+ mov r0, r6
+ mov r1, r5
+ bl OS_SPrintf
+ add r8, r8, #1
+ cmp r8, #6
+ add r7, r7, #1
+ add r6, r6, #2
+ blt _021DA05C
+ add r0, sp, #0x38
+ bl OS_GetOwnerInfo
+ ldrb r0, [sp, #0x38]
+ ldr r2, _021DA228 ; =UNK04_0220C0A4
+ mov r1, #3
+ cmp r0, #6
+ movhi r0, #1
+ strhib r0, [sp, #0x38]
+ ldrb r3, [sp, #0x38]
+ add r0, r4, #0x2c
+ bl OS_SNPrintf
+ add r0, sp, #0x3c
+ add r1, r4, #0x7e
+ mov r2, #0x14
+ bl MI_CpuCopy8
+ ldrb r1, [sp, #0x3b]
+ ldr r2, _021DA22C ; =UNK04_0220C0AC
+ add r0, r4, #0x2f
+ str r1, [sp]
+ ldrb r3, [sp, #0x3a]
+ mov r1, #5
+ bl OS_SNPrintf
+ add r0, sp, #0x1c
+ bl RTC_GetDate
+ cmp r0, #0
+ bne _021DA0F8
+ add r0, sp, #0x2c
+ bl RTC_GetTime
+ cmp r0, #0
+ beq _021DA104
+_021DA0F8:
+ add sp, sp, #0x8c
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DA104:
+ ldr r0, [sp, #0x20]
+ ldr r2, _021DA230 ; =UNK04_0220C0B8
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ add r0, r4, #0x34
+ str r1, [sp, #4]
+ ldr r3, [sp, #0x2c]
+ mov r1, #0xd
+ str r3, [sp, #8]
+ ldr r3, [sp, #0x30]
+ str r3, [sp, #0xc]
+ ldr r3, [sp, #0x34]
+ str r3, [sp, #0x10]
+ ldr r3, [sp, #0x1c]
+ bl OS_SNPrintf
+ bl OS_DisableInterrupts
+ mov sb, r0
+ bl WCM_GetApMacAddress
+ mov r8, r0
+ mov r1, #6
+ bl DC_InvalidateRange
+ cmp r8, #0
+ bne _021DA174
+ mov r0, sb
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x8c
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DA174:
+ add r7, r4, #0x41
+ mov r6, #0
+ ldr r5, _021DA228 ; =UNK04_0220C0A4
+_021DA180:
+ ldrb r2, [r8, r6]
+ mov r0, r7
+ mov r1, r5
+ bl OS_SPrintf
+ add r6, r6, #1
+ cmp r6, #6
+ add r7, r7, #2
+ blt _021DA180
+ bl MOD04_021EBAB8
+ mov r3, r0
+ ldr r2, _021DA234 ; =UNK04_0220C0D4
+ add r0, r4, #0x6f
+ mov r1, #0xe
+ bl OS_SNPrintf
+ add r0, sp, #0x14
+ bl WCM_GetApEssid
+ mov r5, r0
+ mov r1, #0x20
+ bl DC_InvalidateRange
+ cmp r5, #0
+ bne _021DA1E8
+ mov r0, sb
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x8c
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DA1E8:
+ mov r0, r5
+ add r1, r4, #0x72
+ bl MOD04_021EE5F4
+ mov r0, r5
+ add r1, r4, #0x4e
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ mov r0, sb
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, sp, #0x8c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021DA218: .word UNK04_0220C094
+_021DA21C: .word UNK04_0220C09C
+_021DA220: .word 0x027FFE0C
+_021DA224: .word 0x027FFE10
+_021DA228: .word UNK04_0220C0A4
+_021DA22C: .word UNK04_0220C0AC
+_021DA230: .word UNK04_0220C0B8
+_021DA234: .word UNK04_0220C0D4
+ arm_func_end MOD04_021D9F78
+
+ arm_func_start MOD04_021DA238
+MOD04_021DA238: ; 0x021DA238
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x18
+ mov r4, r0
+ add r0, sp, #0
+ bl DWCi_BM_GetWiFiInfo
+ add r1, sp, #0
+ mov r0, r4
+ bl MOD04_021D9F78
+ add sp, sp, #0x18
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DA238
+
+ .section .data
+
+ .global UNK04_0220BFE4
+UNK04_0220BFE4: ; 0x0220BFE4
+ .asciz "%03d%03d"
+
+ .balign 4, 0
+ .global UNK04_0220BFF0
+UNK04_0220BFF0: ; 0x0220BFF0
+ .asciz "sdkver"
+
+ .balign 4, 0
+ .global UNK04_0220BFF8
+UNK04_0220BFF8: ; 0x0220BFF8
+ .asciz "userid"
+
+ .balign 4, 0
+ .global UNK04_0220C000
+UNK04_0220C000: ; 0x0220C000
+ .asciz "passwd"
+
+ .balign 4, 0
+ .global UNK04_0220C008
+UNK04_0220C008: ; 0x0220C008
+ .asciz "bssid"
+
+ .balign 4, 0
+ .global UNK04_0220C010
+UNK04_0220C010: ; 0x0220C010
+ .asciz "apinfo"
+
+ .balign 4, 0
+ .global UNK04_0220C018
+UNK04_0220C018: ; 0x0220C018
+ .asciz "gamecd"
+
+ .balign 4, 0
+ .global UNK04_0220C020
+UNK04_0220C020: ; 0x0220C020
+ .asciz "makercd"
+
+ .balign 4, 0
+ .global UNK04_0220C028
+UNK04_0220C028: ; 0x0220C028
+ .asciz "unitcd"
+
+ .balign 4, 0
+ .global UNK04_0220C030
+UNK04_0220C030: ; 0x0220C030
+ .asciz "macadr"
+
+ .balign 4, 0
+ .global UNK04_0220C038
+UNK04_0220C038: ; 0x0220C038
+ .asciz "lang"
+
+ .balign 4, 0
+ .global UNK04_0220C040
+UNK04_0220C040: ; 0x0220C040
+ .asciz "birth"
+
+ .balign 4, 0
+ .global UNK04_0220C048
+UNK04_0220C048: ; 0x0220C048
+ .asciz "devtime"
+
+ .balign 4, 0
+ .global UNK04_0220C050
+UNK04_0220C050: ; 0x0220C050
+ .asciz "devname"
+
+ .balign 4, 0
+ .global UNK04_0220C058
+UNK04_0220C058: ; 0x0220C058
+ .asciz "ssid"
+
+ .balign 4, 0
+ .global UNK04_0220C060
+UNK04_0220C060: ; 0x0220C060
+ .asciz "Nitro WiFi SDK/%d.%d"
+
+ .balign 4, 0
+ .global UNK04_0220C078
+UNK04_0220C078: ; 0x0220C078
+ .asciz "User-Agent"
+
+ .balign 4, 0
+ .global UNK04_0220C084
+UNK04_0220C084: ; 0x0220C084
+ .asciz "HTTP_X_GAMECD"
+
+ .balign 4, 0
+ .global UNK04_0220C094
+UNK04_0220C094: ; 0x0220C094
+ .asciz "%013llu"
+
+ .balign 4, 0
+ .global UNK04_0220C09C
+UNK04_0220C09C: ; 0x0220C09C
+ .asciz "%03u"
+
+ .balign 4, 0
+ .global UNK04_0220C0A4
+UNK04_0220C0A4: ; 0x0220C0A4
+ .asciz "%02x"
+
+ .balign 4, 0
+ .global UNK04_0220C0AC
+UNK04_0220C0AC: ; 0x0220C0AC
+ .asciz "%02x%02x"
+
+ .balign 4, 0
+ .global UNK04_0220C0B8
+UNK04_0220C0B8: ; 0x0220C0B8
+ .asciz "%02d%02d%02d%02d%02d%02d"
+
+ .balign 4, 0
+ .global UNK04_0220C0D4
+UNK04_0220C0D4: ; 0x0220C0D4
+ .asciz "%02d:0000000-00"
+
+ .balign 4, 0
diff --git a/arm9/modules/04/asm/mod04_021DA260.s b/arm9/modules/04/asm/mod04_021DA260.s
new file mode 100644
index 00000000..de6114d7
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DA260.s
@@ -0,0 +1,1689 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ 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
+ mov sb, r2
+ cmp sb, #0
+ ldr r8, [r0, #0x14]
+ mov sl, r1
+ mov r7, #0
+ addle sp, sp, #4
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r6, r7
+ mov r5, r7
+ mov fp, r7
+ mov r4, r7
+_021DA298:
+ ldr r1, [sl, r7, lsl #3]
+ cmp r1, #0
+ beq _021DA2B4
+ ldr r0, _021DA2EC ; =UNK04_0220C110
+ mov r2, r6
+ blx r8
+ str r5, [sl, r7, lsl #3]
+_021DA2B4:
+ add r0, sl, r7, lsl #3
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _021DA2D8
+ ldr r0, _021DA2F0 ; =UNK04_0220C12C
+ mov r2, fp
+ blx r8
+ add r0, sl, r7, lsl #3
+ str r4, [r0, #4]
+_021DA2D8:
+ add r7, r7, #1
+ cmp r7, sb
+ blt _021DA298
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DA2EC: .word UNK04_0220C110
+_021DA2F0: .word UNK04_0220C12C
+ arm_func_end MOD04_021DA260
+
+ arm_func_start MOD04_021DA2F4
+MOD04_021DA2F4: ; 0x021DA2F4
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r2
+ mov r5, r3
+ bl MOD04_021DA388
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl strlen
+ cmp r0, r5
+ movge r0, #0
+ ldmgeia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ mov r1, r4
+ bl strcpy
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DA2F4
+
+ arm_func_start MOD04_021DA334
+MOD04_021DA334: ; 0x021DA334
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r2
+ mov r5, r3
+ bl MOD04_021DA388
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl strlen
+ mov r1, r0
+ mov r0, r4
+ mov r2, r6
+ mov r3, r5
+ bl MOD04_021DD36C
+ mvn r1, #0
+ cmp r0, r1
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r0, r5
+ ldmhsia sp!, {r4, r5, r6, pc}
+ mov r1, #0
+ strb r1, [r6, r0]
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DA334
+
+ arm_func_start MOD04_021DA388
+MOD04_021DA388: ; 0x021DA388
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, #0
+_021DA398:
+ add r0, r6, r4, lsl #3
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0xa34]
+ cmp r1, #0
+ beq _021DA3D4
+ mov r0, r5
+ bl strcmp
+ cmp r0, #0
+ addeq r0, r6, r4, lsl #3
+ addeq r0, r0, #0x1000
+ ldreq r0, [r0, #0xa38]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _021DA398
+_021DA3D4:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DA388
+
+ 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
+ mov fp, r0
+ add r0, fp, r2
+ mov r6, r1
+ mov r3, #0x20
+ mov r1, #0
+ mov r2, #0x100
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r1, [sp, #0x10]
+ bl MI_CpuFill8
+ add r0, fp, #0x1000
+ ldr r5, [r0, #0xa04]
+ ldr r1, _021DA66C ; =UNK04_0220C148
+ mov r0, r5
+ bl strstr
+ str r0, [sp]
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r0, r0, #4
+ bl strlen
+ ldr r1, [sp]
+ add r1, r1, #4
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, _021DA670 ; =UNK04_0220C150
+ mov r0, r5
+ bl strstr
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r8, r0, #1
+ ldrsb r7, [r8, #3]
+ ldr r2, _021DA674 ; =UNK04_0220C154
+ mov r5, #0
+ add r1, sp, #8
+ mov r0, fp
+ mov r3, r8
+ strb r5, [r8, #3]
+ bl MOD04_021DA68C
+ cmp r0, #1
+ addne sp, sp, #0x14
+ strneb r7, [r8, #3]
+ movne r0, r5
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ strb r7, [r8, #3]
+ cmp r6, #1
+ beq _021DA4C8
+ ldr r1, _021DA678 ; =UNK04_0220C160
+ mov r0, r8
+ mov r2, #3
+ bl strncmp
+ cmp r0, #0
+ beq _021DA4D4
+_021DA4C8:
+ add sp, sp, #0x14
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DA4D4:
+ ldr r1, _021DA67C ; =UNK04_0220C164
+ add r0, r8, #4
+ bl strstr
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ moveq r0, r5
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add sb, r0, #2
+ mov r6, r5
+ b _021DA580
+_021DA4FC:
+ ldr r1, _021DA680 ; =UNK04_0220C168
+ mov r0, sb
+ bl strstr
+ movs r7, r0
+ beq _021DA598
+ ldrsb sl, [r7]
+ add r8, r7, #2
+ ldr r1, _021DA67C ; =UNK04_0220C164
+ mov r0, r8
+ strb r6, [r7]
+ bl strstr
+ movs r5, r0
+ streqb sl, [r7]
+ beq _021DA598
+ ldrsb r4, [r5]
+ mov r0, fp
+ mov r2, sb
+ strb r6, [r5]
+ add r1, sp, #8
+ mov r3, r8
+ bl MOD04_021DA68C
+ cmp r0, #1
+ strneb sl, [r7]
+ addne sp, sp, #0x14
+ strneb r4, [r5]
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, r8
+ bl strlen
+ strb sl, [r7]
+ add r0, r8, r0
+ strb r4, [r5]
+ add sb, r0, #2
+_021DA580:
+ ldrsb r0, [sb]
+ cmp r0, #0xd
+ beq _021DA598
+ ldrsb r0, [sb, #1]
+ cmp r0, #0xa
+ bne _021DA4FC
+_021DA598:
+ ldr r0, [sp]
+ add r8, r0, #4
+ ldr r0, [sp, #4]
+ cmp r8, r0
+ bhs _021DA65C
+ mov r5, #0
+_021DA5B0:
+ ldr r1, _021DA684 ; =UNK04_0220C16C
+ mov r0, r8
+ bl strstr
+ movs sl, r0
+ beq _021DA65C
+ ldrsb r7, [sl]
+ add sb, sl, #1
+ ldr r1, _021DA688 ; =UNK04_0220C170
+ mov r0, sb
+ strb r5, [sl]
+ bl strstr
+ movs r6, r0
+ bne _021DA5F4
+ ldr r1, _021DA67C ; =UNK04_0220C164
+ mov r0, sb
+ bl strstr
+ mov r6, r0
+_021DA5F4:
+ cmp r6, #0
+ ldrnesb r4, [r6]
+ mov r0, fp
+ mov r2, r8
+ add r1, sp, #8
+ mov r3, sb
+ strneb r5, [r6]
+ bl MOD04_021DA68C
+ cmp r0, #1
+ beq _021DA634
+ strb r7, [sl]
+ cmp r6, #0
+ add sp, sp, #0x14
+ strneb r4, [r6]
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DA634:
+ mov r0, sb
+ bl strlen
+ add r0, sb, r0
+ add r8, r0, #1
+ ldr r0, [sp, #4]
+ strb r7, [sl]
+ cmp r6, #0
+ strneb r4, [r6]
+ cmp r8, r0
+ blo _021DA5B0
+_021DA65C:
+ mov r0, #1
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DA668: .word 0x00001A34
+_021DA66C: .word UNK04_0220C148
+_021DA670: .word UNK04_0220C150
+_021DA674: .word UNK04_0220C154
+_021DA678: .word UNK04_0220C160
+_021DA67C: .word UNK04_0220C164
+_021DA680: .word UNK04_0220C168
+_021DA684: .word UNK04_0220C16C
+_021DA688: .word UNK04_0220C170
+ arm_func_end MOD04_021DA3DC
+
+ arm_func_start MOD04_021DA68C
+MOD04_021DA68C: ; 0x021DA68C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r8, r1
+ ldr r4, [r8, #8]
+ ldr r1, [r8, #4]
+ add r0, r0, #0x1000
+ cmp r4, r1
+ ldr r5, [r0, #0x10]
+ ldr r4, [r0, #0x14]
+ mov r7, r2
+ mov r6, r3
+ movgt r0, #0
+ ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r0, r7
+ bl strlen
+ mov r1, r0
+ ldr r0, _021DA7D8 ; =UNK04_0220C174
+ add r1, r1, #1
+ blx r5
+ ldr r2, [r8]
+ ldr r1, [r8, #8]
+ str r0, [r2, r1, lsl #3]
+ ldr r3, [r8, #8]
+ ldr r2, [r8]
+ ldr r0, [r2, r3, lsl #3]
+ cmp r0, #0
+ beq _021DA770
+ mov r0, r6
+ bl strlen
+ mov r1, r0
+ ldr r0, _021DA7DC ; =UNK04_0220C194
+ add r1, r1, #1
+ blx r5
+ ldr r2, [r8]
+ ldr r1, [r8, #8]
+ add r1, r2, r1, lsl #3
+ str r0, [r1, #4]
+ ldr r3, [r8, #8]
+ ldr r2, [r8]
+ mov r1, r3, lsl #3
+ add r0, r2, r3, lsl #3
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021DA770
+ ldr r0, [r2, r1]
+ mov r1, r7
+ bl strcpy
+ ldr r2, [r8]
+ ldr r0, [r8, #8]
+ mov r1, r6
+ add r0, r2, r0, lsl #3
+ ldr r0, [r0, #4]
+ bl strcpy
+ ldr r1, [r8, #8]
+ mov r0, #1
+ add r1, r1, #1
+ str r1, [r8, #8]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_021DA770:
+ ldr r1, [r2, r3, lsl #3]
+ cmp r1, #0
+ beq _021DA798
+ ldr r0, _021DA7E0 ; =UNK04_0220C1B4
+ mov r2, #0
+ blx r4
+ ldr r1, [r8]
+ ldr r0, [r8, #8]
+ mov r2, #0
+ str r2, [r1, r0, lsl #3]
+_021DA798:
+ ldr r1, [r8]
+ ldr r0, [r8, #8]
+ add r0, r1, r0, lsl #3
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _021DA7D0
+ ldr r0, _021DA7E4 ; =UNK04_0220C1D0
+ mov r2, #0
+ blx r4
+ ldr r1, [r8]
+ ldr r0, [r8, #8]
+ mov r2, #0
+ add r0, r1, r0, lsl #3
+ str r2, [r0, #4]
+_021DA7D0:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DA7D8: .word UNK04_0220C174
+_021DA7DC: .word UNK04_0220C194
+_021DA7E0: .word UNK04_0220C1B4
+_021DA7E4: .word UNK04_0220C1D0
+ arm_func_end MOD04_021DA68C
+
+ arm_func_start MOD04_021DA7E8
+MOD04_021DA7E8: ; 0x021DA7E8
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r1
+ mov r5, r0
+ mov r0, r6
+ mov r4, #0
+ bl strlen
+ cmp r0, #0x100
+ movhs r0, r4
+ ldmhsia sp!, {r4, r5, r6, pc}
+ ldr r0, _021DA934 ; =0x00001024
+ mov r1, r6
+ add r0, r5, r0
+ mov r2, #0x100
+ bl strncpy
+ mov r0, r6
+ bl strlen
+ ldr r1, _021DA934 ; =0x00001024
+ mov r6, r0
+ add r0, r5, r1
+ bl strlen
+ cmp r6, r0
+ movne r0, r4
+ ldmneia sp!, {r4, r5, r6, pc}
+ ldr r0, _021DA934 ; =0x00001024
+ ldr r1, _021DA938 ; =UNK04_0220C1EC
+ add r0, r5, r0
+ bl strstr
+ cmp r0, #0
+ beq _021DA884
+ ldr r0, _021DA93C ; =0x0000102B
+ add r1, r5, #0x1000
+ add r0, r5, r0
+ str r0, [r1, #0x124]
+ mov r0, r4
+ str r0, [r1, #0x12c]
+ add r0, r5, #0x1100
+ mov r1, #0x50
+ strh r1, [r0, #0x30]
+ b _021DA8C0
+_021DA884:
+ ldr r0, _021DA934 ; =0x00001024
+ ldr r1, _021DA940 ; =UNK04_0220C1F4
+ add r0, r5, r0
+ bl strstr
+ cmp r0, #0
+ moveq r0, r4
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r1, r0, #8
+ add r0, r5, #0x1000
+ str r1, [r0, #0x124]
+ mov r2, #1
+ ldr r1, _021DA944 ; =0x000001BB
+ str r2, [r0, #0x12c]
+ add r0, r5, #0x1100
+ strh r1, [r0, #0x30]
+_021DA8C0:
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0x124]
+ ldr r1, _021DA948 ; =UNK04_0220C200
+ bl strstr
+ cmp r0, #0
+ movne r1, #0
+ strneb r1, [r0]
+ addne r4, r0, #1
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0x124]
+ ldr r1, _021DA94C ; =UNK04_0220C204
+ bl strstr
+ cmp r0, #0
+ addeq r0, r5, #0x1000
+ moveq r1, #0
+ streq r1, [r0, #0x128]
+ movne r1, #0
+ strneb r1, [r0]
+ addne r1, r0, #1
+ addne r0, r5, #0x1000
+ strne r1, [r0, #0x128]
+ cmp r4, #0
+ beq _021DA92C
+ mov r0, r4
+ bl atol
+ add r1, r5, #0x1100
+ strh r0, [r1, #0x30]
+_021DA92C:
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DA934: .word 0x00001024
+_021DA938: .word UNK04_0220C1EC
+_021DA93C: .word 0x0000102B
+_021DA940: .word UNK04_0220C1F4
+_021DA944: .word 0x000001BB
+_021DA948: .word UNK04_0220C200
+_021DA94C: .word UNK04_0220C204
+ arm_func_end MOD04_021DA7E8
+
+ arm_func_start MOD04_021DA950
+MOD04_021DA950: ; 0x021DA950
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ add r0, r0, #0x1000
+ mov r5, r2
+ cmp r5, #0
+ ldr r7, [r0, #0x14]
+ ldr r2, [r0, #0x10]
+ mov r6, r1
+ addle sp, sp, #4
+ movle r0, #0
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, [r6, #0xc]
+ ldr r0, _021DAA08 ; =UNK04_0220C208
+ add r1, r1, r5
+ blx r2
+ movs r4, r0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r6]
+ ldr r2, [r6, #0xc]
+ mov r1, r4
+ bl MI_CpuCopy8
+ ldr r1, [r6]
+ ldr r0, _021DAA0C ; =UNK04_0220C218
+ mov r2, #0
+ blx r7
+ cmp r4, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r6]
+ ldr r1, [r6, #4]
+ sub r0, r4, r0
+ add r0, r1, r0
+ str r0, [r6, #4]
+ ldr r1, [r6, #0xc]
+ mov r0, #1
+ add r1, r1, r5
+ str r1, [r6, #0xc]
+ str r4, [r6]
+ ldr r1, [r6, #0xc]
+ add r1, r4, r1
+ str r1, [r6, #8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAA08: .word UNK04_0220C208
+_021DAA0C: .word UNK04_0220C218
+ arm_func_end MOD04_021DA950
+
+ arm_func_start MOD04_021DAA10
+MOD04_021DAA10: ; 0x021DAA10
+ stmdb sp!, {r4, lr}
+ mov r4, r1
+ ldr r1, [r4]
+ add r0, r0, #0x1000
+ cmp r1, #0
+ ldr r3, [r0, #0x14]
+ beq _021DAA38
+ ldr r0, _021DAA4C ; =UNK04_0220C218
+ mov r2, #0
+ blx r3
+_021DAA38:
+ mov r0, r4
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DAA4C: .word UNK04_0220C218
+ arm_func_end MOD04_021DAA10
+
+ arm_func_start MOD04_021DAA50
+MOD04_021DAA50: ; 0x021DAA50
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r2
+ add r0, r0, #0x1000
+ ldr r2, [r0, #0x10]
+ mov r4, r1
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, _021DAABC ; =UNK04_0220C22C
+ mov r1, r5
+ blx r2
+ str r0, [r4]
+ ldr r0, [r4]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ str r0, [r4, #4]
+ str r5, [r4, #0xc]
+ ldr r2, [r4]
+ ldr r1, [r4, #0xc]
+ mov r0, #1
+ add r1, r2, r1
+ str r1, [r4, #8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DAABC: .word UNK04_0220C22C
+ arm_func_end MOD04_021DAA50
+
+ arm_func_start MOD04_021DAAC0
+MOD04_021DAAC0: ; 0x021DAAC0
+ ands r1, r0, #0x8000
+ bicne r0, r0, #0x8000
+ bx lr
+ arm_func_end MOD04_021DAAC0
+
+ arm_func_start MOD04_021DAACC
+MOD04_021DAACC: ; 0x021DAACC
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r2, _021DAB60 ; =0x000019F4
+ mov r7, r0
+ mov r6, r1
+ mov r0, r6
+ add r4, r7, r2
+ bl strlen
+ mov r5, r0
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ sub r1, r1, r0
+ cmp r5, r1
+ ble _021DAB34
+ sub r2, r5, r1
+ mov r0, r7
+ mov r1, r4
+ add r2, r2, #1
+ bl MOD04_021DA950
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ sub r1, r1, r0
+_021DAB34:
+ ldr r2, _021DAB64 ; =UNK04_0220C240
+ mov r3, r6
+ bl OS_SNPrintf
+ cmp r0, r5
+ ldreq r1, [r4, #4]
+ movne r0, #1
+ addeq r0, r1, r0
+ streq r0, [r4, #4]
+ moveq r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAB60: .word 0x000019F4
+_021DAB64: .word UNK04_0220C240
+ arm_func_end MOD04_021DAACC
+
+ 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
+ add r0, sl, #0x1000
+ ldr r4, [r0, #0x9f0]
+ ldr r0, _021DAC8C ; =0x000019F4
+ cmp r4, #0
+ ldreq r6, _021DAC90 ; =UNK04_0220C244
+ mov r8, r2
+ add r5, sl, #0x1000
+ add r4, sl, r0
+ ldr r0, [r5, #0x9f0]
+ mov r7, r3
+ add fp, r0, #1
+ mov r2, #0
+ mov sb, r1
+ ldrne r6, _021DAC94 ; =UNK04_0220C248
+ mov r0, r8
+ mov r1, r7
+ mov r3, r2
+ str fp, [r5, #0x9f0]
+ bl MOD04_021DD4FC
+ mov r5, r0
+ mov r0, r6
+ bl strlen
+ mov fp, r0
+ mov r0, sb
+ bl strlen
+ sub r1, fp, #2
+ add r2, r1, r0
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ add r2, r5, r2
+ sub r1, r1, r0
+ cmp r2, r1
+ ble _021DAC28
+ sub r2, r2, r1
+ mov r0, sl
+ mov r1, r4
+ add r2, r2, #1
+ bl MOD04_021DA950
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ sub r1, r1, r0
+_021DAC28:
+ mov r2, r6
+ mov r3, sb
+ bl OS_SNPrintf
+ ldr r2, [r4, #4]
+ mov r1, r7
+ add r0, r2, r0
+ str r0, [r4, #4]
+ ldr r2, [r4, #4]
+ ldr r3, [r4, #8]
+ mov r0, r8
+ sub r3, r3, r2
+ sub r3, r3, #1
+ bl MOD04_021DD4FC
+ cmp r0, #0
+ addlt sp, sp, #4
+ movlt r0, #1
+ ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r1, [r4, #4]
+ mov r0, #0
+ add r1, r1, r5
+ str r1, [r4, #4]
+ ldr r1, [r4, #4]
+ strb r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DAC8C: .word 0x000019F4
+_021DAC90: .word UNK04_0220C244
+_021DAC94: .word UNK04_0220C248
+ arm_func_end MOD04_021DAB68
+
+ arm_func_start MOD04_021DAC98
+MOD04_021DAC98: ; 0x021DAC98
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov r6, r2
+ mov r8, r0
+ ldr r2, _021DAD7C ; =0x000019F4
+ mov r0, r6
+ mov r7, r1
+ add r5, r8, r2
+ bl strlen
+ mov r4, r0
+ ldr r0, _021DAD80 ; =UNK04_0220C250
+ bl strlen
+ mov sb, r0
+ mov r0, r7
+ bl strlen
+ sub r1, sb, #4
+ add r0, r1, r0
+ add r4, r4, r0
+ ldr r2, [r5, #8]
+ ldr r1, [r5, #4]
+ add r0, r4, #1
+ sub r1, r2, r1
+ cmp r0, r1
+ ble _021DAD1C
+ sub r2, r4, r1
+ mov r0, r8
+ mov r1, r5
+ add r2, r2, #1
+ bl MOD04_021DA950
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DAD1C:
+ ldr r0, [r5]
+ ldr r1, _021DAD84 ; =UNK04_0220C148
+ bl strstr
+ add r8, r0, #2
+ ldrsb sb, [r0, #2]
+ mov r0, r8
+ bl strlen
+ add r2, r0, #1
+ add r0, r8, r4
+ mov r1, r8
+ bl memmove
+ ldr r2, _021DAD80 ; =UNK04_0220C250
+ str r6, [sp]
+ mov r3, r7
+ mov r0, r8
+ add r1, r4, #1
+ bl OS_SNPrintf
+ strb sb, [r8, r0]
+ ldr r1, [r5, #4]
+ mov r0, #0
+ add r1, r1, r4
+ str r1, [r5, #4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021DAD7C: .word 0x000019F4
+_021DAD80: .word UNK04_0220C250
+_021DAD84: .word UNK04_0220C148
+ arm_func_end MOD04_021DAC98
+
+ arm_func_start MOD04_021DAD88
+MOD04_021DAD88: ; 0x021DAD88
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ mov r7, r0
+ add r0, r7, #0x1000
+ ldr r1, [r0, #8]
+ ldr r0, _021DAE40 ; =0x000019F4
+ cmp r1, #0
+ ldreq r6, _021DAE44 ; =UNK04_0220C25C
+ add r5, r7, r0
+ add r0, r7, #0x1000
+ ldrne r6, _021DAE48 ; =UNK04_0220C2B0
+ ldr r0, [r0, #0x124]
+ bl strlen
+ mov r4, r0
+ mov r0, r6
+ bl strlen
+ add r1, r7, #0x1000
+ mov r8, r0
+ ldr r0, [r1, #0x128]
+ bl strlen
+ sub r1, r8, #4
+ add r0, r1, r0
+ add r1, r4, r0
+ ldr r0, _021DAE40 ; =0x000019F4
+ add r2, r1, #0x400
+ add r1, r7, r0
+ mov r0, r7
+ bl MOD04_021DAA50
+ cmp r0, #1
+ addne sp, sp, #8
+ movne r0, #1
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ add r3, r7, #0x1000
+ ldr r0, [r3, #0x124]
+ mov r2, r6
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0xc]
+ ldr r3, [r3, #0x128]
+ bl OS_SNPrintf
+ ldr r1, [r5, #4]
+ add r0, r1, r0
+ str r0, [r5, #4]
+ mov r0, #0
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DAE40: .word 0x000019F4
+_021DAE44: .word UNK04_0220C25C
+_021DAE48: .word UNK04_0220C2B0
+ arm_func_end MOD04_021DAD88
+
+ arm_func_start MOD04_021DAE4C
+MOD04_021DAE4C: ; 0x021DAE4C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ add r1, r5, #0x1000
+ ldr r4, [r1, #0x14]
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _021DAF00 ; =0x00001A34
+ mov r2, #0x20
+ add r1, r5, r1
+ bl MOD04_021DA260
+ ldr r1, _021DAF04 ; =0x00001A04
+ mov r0, r5
+ add r1, r5, r1
+ bl MOD04_021DAA10
+ ldr r1, _021DAF08 ; =0x000019F4
+ mov r0, r5
+ add r1, r5, r1
+ bl MOD04_021DAA10
+ add r0, r5, #0x1000
+ ldr r1, [r0, #0x9c8]
+ cmp r1, #0
+ beq _021DAEC0
+ ldr r0, _021DAF0C ; =UNK04_0220C2D0
+ mov r2, #0
+ blx r4
+ add r0, r5, #0x1000
+ mov r1, #0
+ str r1, [r0, #0x9c8]
+_021DAEC0:
+ add r0, r5, #0x1000
+ ldr r1, [r0, #0x9cc]
+ cmp r1, #0
+ beq _021DAEE8
+ ldr r0, _021DAF10 ; =UNK04_0220C2E8
+ mov r2, #0
+ blx r4
+ add r0, r5, #0x1000
+ mov r1, #0
+ str r1, [r0, #0x9cc]
+_021DAEE8:
+ ldr r2, _021DAF14 ; =0x00001C10
+ mov r0, r5
+ mov r1, #0
+ bl MI_CpuFill8
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DAF00: .word 0x00001A34
+_021DAF04: .word 0x00001A04
+_021DAF08: .word 0x000019F4
+_021DAF0C: .word UNK04_0220C2D0
+_021DAF10: .word UNK04_0220C2E8
+_021DAF14: .word 0x00001C10
+ arm_func_end MOD04_021DAE4C
+
+ 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
+ add r0, sl, #0x1000
+ ldr fp, [r0, #0x1c]
+ ldr r0, _021DB224 ; =0x00001134
+ ldr r1, _021DB228 ; =0x00001198
+ ldr r2, _021DB22C ; =0x00001A04
+ add r8, sl, r0
+ cmp fp, #0
+ mov r0, sl
+ add r6, sl, r1
+ add r7, sl, r2
+ mov r5, #0
+ ldrle fp, _021DB230 ; =0x0000EA60
+ bl MOD04_021DB35C
+ mov r0, sl
+ bl MOD04_021DB348
+ movs r4, r0
+ addeq r0, sl, #0x1000
+ moveq r1, #2
+ streq r1, [r0, #0x20]
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl CPS_SocUse
+ add r0, sl, #0x1000
+ ldr r0, [r0, #0x12c]
+ cmp r0, #1
+ bne _021DAFC8
+ mov r0, r6
+ mov r1, #0
+ mov r2, #0x830
+ bl MI_CpuFill8
+ ldr r1, _021DB234 ; =MOD04_021DAAC0
+ add r0, sl, #0x1000
+ str r1, [r6, #0x810]
+ ldr r1, [r0, #0x124]
+ ldr r0, _021DB238 ; =UNK04_0220C0E4
+ str r1, [r6, #0x800]
+ mov r1, #0xb
+ str r6, [r8, #0xc]
+ bl CPS_SetRootCa
+ mov r0, #1
+ bl CPS_SetSsl
+_021DAFC8:
+ add r0, sl, #0x1100
+ ldrh r1, [r0, #0x30]
+ mov r2, r4
+ mov r0, #0
+ bl CPS_SocPingMode
+ bl CPS_TcpConnect
+ cmp r0, #0
+ beq _021DB004
+ add r0, sl, #0x1000
+ mov r1, #3
+ str r1, [r0, #0x20]
+ bl CPS_SocRelease
+ bl CPS_SocUnRegister
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DB004:
+ add r0, sl, #0x1000
+ ldr r4, [r0, #0x9f4]
+ mov r0, r4
+ bl strlen
+ mov r1, r0
+ mov r0, r4
+ bl CPS_SocWrite
+ cmp r0, #0
+ str r0, [sp, #8]
+ addle r0, sl, #0x1000
+ movle r1, #5
+ strle r1, [r0, #0x20]
+ ble _021DB20C
+ bl CPS_SocGetChar
+ mov r0, sl
+ bl MOD04_021DB3B8
+ cmp r0, #0
+ addeq r0, sl, #0x1000
+ moveq r1, #7
+ streq r1, [r0, #0x20]
+ beq _021DB20C
+ ldr r0, [r7]
+ str r0, [r7, #4]
+ ldr r1, [r7]
+ ldr r0, [r7, #0xc]
+ add r0, r1, r0
+ str r0, [r7, #8]
+ bl OS_GetTick
+ mov r6, r0
+ mov r0, fp, asr #0x1f
+ mov r8, r1
+ str r0, [sp, #4]
+ mov r4, #0
+_021DB088:
+ ldr r0, _021DB23C ; =CPSMyIp
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq r0, sl, #0x1000
+ moveq r1, #5
+ streq r1, [r0, #0x20]
+ beq _021DB20C
+ bl CPS_SocGetLength
+ str r0, [sp, #8]
+ cmp r0, #0
+ blt _021DB1E8
+ cmp r0, #0
+ ble _021DB16C
+ bl OS_GetTick
+ mov r6, r0
+ add r0, sp, #8
+ mov r8, r1
+ bl CPS_SocRead
+ cmp r0, #0
+ beq _021DB1E8
+ ldr r2, [r7, #8]
+ ldr r1, [r7, #4]
+ sub r2, r2, #1
+ ldr sb, [sp, #8]
+ sub r2, r2, r1
+ cmp sb, r2
+ movge sb, r2
+ mov r2, sb
+ bl MI_CpuCopy8
+ ldr r0, [r7, #4]
+ cmp r5, #1
+ add r0, r0, sb
+ str r0, [r7, #4]
+ ldr r0, [r7, #4]
+ strb r4, [r0]
+ bne _021DB144
+ ldr r0, _021DB240 ; =0x00001A14
+ add r0, sl, r0
+ bl OS_LockMutex
+ add r1, sl, #0x1000
+ ldr r2, [r1, #0xa30]
+ ldr r0, _021DB240 ; =0x00001A14
+ add r2, r2, sb
+ add r0, sl, r0
+ str r2, [r1, #0xa30]
+ bl OS_UnlockMutex
+ b _021DB150
+_021DB144:
+ mov r0, sl
+ bl MOD04_021DB248
+ mov r5, r0
+_021DB150:
+ ldr r0, [sp, #8]
+ cmp r0, sb
+ bls _021DB164
+ bl CPS_SocConsume
+ b _021DB1E8
+_021DB164:
+ mov r0, sb
+ bl CPS_SocConsume
+_021DB16C:
+ add r0, sl, #0x1000
+ ldr r1, [r0, #0xa2c]
+ cmp r1, #0
+ blt _021DB188
+ ldr r0, [r0, #0xa30]
+ cmp r0, r1
+ bge _021DB1E8
+_021DB188:
+ bl OS_GetTick
+ subs r2, r0, r6
+ sbc r0, r1, r8
+ mov r1, r0, lsl #6
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ ldr r2, _021DB244 ; =0x000082EA
+ mov r3, r4
+ bl _ll_udiv
+ ldr r2, [sp, #4]
+ cmp r1, r2
+ cmpeq r0, fp
+ addhi r0, sl, #0x1000
+ movhi r1, #6
+ strhi r1, [r0, #0x20]
+ bhi _021DB20C
+ mov r0, sl
+ bl MOD04_021DB3B8
+ cmp r0, #0
+ bne _021DB088
+ add r0, sl, #0x1000
+ mov r1, #7
+ str r1, [r0, #0x20]
+ b _021DB20C
+_021DB1E8:
+ bl CPS_TcpShutdown
+ bl CPS_TcpClose
+ bl CPS_SocRelease
+ bl CPS_SocUnRegister
+ add r0, sl, #0x1000
+ mov r1, #8
+ str r1, [r0, #0x20]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DB20C:
+ bl CPS_TcpShutdown
+ bl CPS_TcpClose
+ bl CPS_SocRelease
+ bl CPS_SocUnRegister
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DB224: .word 0x00001134
+_021DB228: .word 0x00001198
+_021DB22C: .word 0x00001A04
+_021DB230: .word 0x0000EA60
+_021DB234: .word MOD04_021DAAC0
+_021DB238: .word UNK04_0220C0E4
+_021DB23C: .word CPSMyIp
+_021DB240: .word 0x00001A14
+_021DB244: .word 0x000082EA
+ arm_func_end MOD04_021DAF18
+
+ arm_func_start MOD04_021DB248
+MOD04_021DB248: ; 0x021DB248
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ add r0, r5, #0x1000
+ ldr r6, [r0, #0xa04]
+ ldr r2, _021DB334 ; =0x00001A04
+ ldr r1, _021DB338 ; =UNK04_0220C148
+ mov r0, r6
+ add r4, r5, r2
+ bl strstr
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, _021DB338 ; =UNK04_0220C148
+ mov r0, r6
+ bl strstr
+ ldr r1, _021DB33C ; =0x00001A14
+ add r6, r0, #4
+ add r0, r5, r1
+ bl OS_LockMutex
+ ldr r0, [r4, #4]
+ ldr r1, _021DB33C ; =0x00001A14
+ sub r2, r0, r6
+ add r0, r5, #0x1000
+ str r2, [r0, #0xa30]
+ add r0, r5, r1
+ bl OS_UnlockMutex
+ ldr r0, [r4]
+ ldr r1, _021DB340 ; =UNK04_0220C300
+ bl strstr
+ movs r4, r0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DB340 ; =UNK04_0220C300
+ bl strlen
+ add r7, r4, r0
+ ldr r1, _021DB344 ; =UNK04_0220C164
+ mov r0, r7
+ bl strstr
+ mov r4, r0
+ ldr r0, _021DB33C ; =0x00001A14
+ ldrsb r6, [r4]
+ mov r1, #0
+ add r0, r5, r0
+ strb r1, [r4]
+ bl OS_LockMutex
+ mov r0, r7
+ bl atol
+ add r1, r5, #0x1000
+ ldr r2, _021DB33C ; =0x00001A14
+ str r0, [r1, #0xa2c]
+ add r0, r5, r2
+ bl OS_UnlockMutex
+ strb r6, [r4]
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB334: .word 0x00001A04
+_021DB338: .word UNK04_0220C148
+_021DB33C: .word 0x00001A14
+_021DB340: .word UNK04_0220C300
+_021DB344: .word UNK04_0220C164
+ arm_func_end MOD04_021DB248
+
+ arm_func_start MOD04_021DB348
+MOD04_021DB348: ; 0x021DB348
+ ldr ip, _021DB358 ; =CPS_Resolve
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x124]
+ bx ip
+ .align 2, 0
+_021DB358: .word CPS_Resolve
+ arm_func_end MOD04_021DB348
+
+ arm_func_start MOD04_021DB35C
+MOD04_021DB35C: ; 0x021DB35C
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DB3AC ; =0x00001134
+ mov r4, r0
+ add r0, r4, r1
+ mov r1, #0
+ mov r2, #0x64
+ bl MI_CpuFill8
+ ldr r0, _021DB3B0 ; =0x00000B68
+ add r1, r4, #0x1000
+ str r0, [r1, #0x170]
+ ldr r3, [r1, #0x9c8]
+ ldr r0, _021DB3AC ; =0x00001134
+ ldr r2, _021DB3B4 ; =0x000005EA
+ str r3, [r1, #0x174]
+ str r2, [r1, #0x17c]
+ ldr r2, [r1, #0x9cc]
+ add r0, r4, r0
+ str r2, [r1, #0x180]
+ bl CPS_SocRegister
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB3AC: .word 0x00001134
+_021DB3B0: .word 0x00000B68
+_021DB3B4: .word 0x000005EA
+ arm_func_end MOD04_021DB35C
+
+ arm_func_start MOD04_021DB3B8
+MOD04_021DB3B8: ; 0x021DB3B8
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0x12c]
+ cmp r0, #1
+ bne _021DB3EC
+ ldr r0, _021DB438 ; =0x000019D0
+ add r0, r4, r0
+ bl OS_GetLowEntropyData
+ ldr r0, _021DB438 ; =0x000019D0
+ mov r1, #0x20
+ add r0, r4, r0
+ bl CPS_SslAddRandomSeed
+_021DB3EC:
+ ldr r0, _021DB43C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_LockMutex
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0xc0c]
+ cmp r0, #1
+ bne _021DB41C
+ ldr r0, _021DB43C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_UnlockMutex
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DB41C:
+ ldr r0, _021DB43C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_UnlockMutex
+ mov r0, #0xa
+ bl OS_Sleep
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB438: .word 0x000019D0
+_021DB43C: .word 0x00001BF4
+ arm_func_end MOD04_021DB3B8
+
+ arm_func_start MOD04_021DB440
+MOD04_021DB440: ; 0x021DB440
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ add r0, r4, #0x1000
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021DB49C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_LockMutex
+ ldr r0, _021DB49C ; =0x00001BF4
+ add r1, r4, #0x1000
+ mov r2, #1
+ add r0, r4, r0
+ str r2, [r1, #0xc0c]
+ bl OS_UnlockMutex
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _021DB4A0 ; =0x00001B34
+ add r0, r4, r0
+ bl OS_JoinThread
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB49C: .word 0x00001BF4
+_021DB4A0: .word 0x00001B34
+ arm_func_end MOD04_021DB440
+
+ arm_func_start MOD04_021DB4A4
+MOD04_021DB4A4: ; 0x021DB4A4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ ldr r3, _021DB55C ; =0x00001BF4
+ mov r5, r0
+ add r2, r5, #0x1000
+ mov ip, #0
+ add r0, r5, r3
+ mov r4, r1
+ str ip, [r2, #0xc0c]
+ bl OS_InitMutex
+ ldr r0, _021DB560 ; =0x00001A14
+ add r0, r5, r0
+ bl OS_InitMutex
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0x18]
+ cmp r0, #1
+ ldreq r0, _021DB564 ; =UNK04_02210480
+ moveq r1, #1
+ streq r1, [r0]
+ ldrne r0, _021DB564 ; =UNK04_02210480
+ movne r1, #0
+ strne r1, [r0]
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DB524
+ ldr r0, _021DB568 ; =0x00001B34
+ add r0, r5, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, pc}
+_021DB524:
+ ldr r0, _021DB568 ; =0x00001B34
+ mov r1, #0x1000
+ str r1, [sp]
+ ldr r1, _021DB56C ; =MOD04_021DAF18
+ mov r2, r5
+ add r0, r5, r0
+ add r3, r5, #0x1000
+ str r4, [sp, #4]
+ bl OS_CreateThread
+ ldr r0, _021DB568 ; =0x00001B34
+ add r0, r5, r0
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DB55C: .word 0x00001BF4
+_021DB560: .word 0x00001A14
+_021DB564: .word UNK04_02210480
+_021DB568: .word 0x00001B34
+_021DB56C: .word MOD04_021DAF18
+ arm_func_end MOD04_021DB4A4
+
+ arm_func_start MOD04_021DB570
+MOD04_021DB570: ; 0x021DB570
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _021DB5F4 ; =UNK04_0220C314
+ ldr r2, _021DB5F8 ; =UNK04_0220C320
+ mov r4, r0
+ bl MOD04_021DAC98
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #1
+ ldmneia sp!, {r4, pc}
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0x9f4]
+ ldr r1, _021DB5FC ; =UNK04_0220C148
+ bl strstr
+ add r0, r0, #4
+ bl strlen
+ movs r3, r0
+ beq _021DB5E8
+ ldr r2, _021DB600 ; =UNK04_0220C328
+ add r0, sp, #0
+ mov r1, #7
+ bl OS_SNPrintf
+ ldr r1, _021DB604 ; =UNK04_0220C32C
+ add r2, sp, #0
+ mov r0, r4
+ bl MOD04_021DAC98
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #1
+ ldmneia sp!, {r4, pc}
+_021DB5E8:
+ mov r0, #0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB5F4: .word UNK04_0220C314
+_021DB5F8: .word UNK04_0220C320
+_021DB5FC: .word UNK04_0220C148
+_021DB600: .word UNK04_0220C328
+_021DB604: .word UNK04_0220C32C
+ arm_func_end MOD04_021DB570
+
+ arm_func_start MOD04_021DB608
+MOD04_021DB608: ; 0x021DB608
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r1
+ ldr r2, _021DB714 ; =0x00001C10
+ mov r6, r0
+ ldr r4, [r5, #0xc]
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021DB718 ; =0x00001004
+ add r0, r6, #0x1000
+ mvn r2, #0
+ str r2, [r0, #0xa2c]
+ mov lr, r5
+ str r2, [r0, #0xa30]
+ add ip, r6, r1
+ ldmia lr!, {r0, r1, r2, r3}
+ stmia ip!, {r0, r1, r2, r3}
+ ldmia lr, {r0, r1, r2}
+ stmia ip, {r0, r1, r2}
+ ldr r0, _021DB71C ; =UNK04_0220C33C
+ ldr r1, _021DB720 ; =0x00000B68
+ blx r4
+ add r1, r6, #0x1000
+ str r0, [r1, #0x9c8]
+ ldr r0, [r1, #0x9c8]
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r1, #0x20]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _021DB724 ; =UNK04_0220C354
+ ldr r1, _021DB728 ; =0x000005EA
+ blx r4
+ add r2, r6, #0x1000
+ str r0, [r2, #0x9cc]
+ ldr r0, [r2, #0x9cc]
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r2, #0x20]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, _021DB72C ; =0x00001A04
+ ldr r2, [r2, #0xc]
+ mov r0, r6
+ add r1, r6, r1
+ bl MOD04_021DAA50
+ cmp r0, #0
+ addeq r1, r6, #0x1000
+ moveq r0, #1
+ streq r0, [r1, #0x20]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, [r5]
+ mov r0, r6
+ 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 MOD04_021DAD88
+ add r1, r6, #0x1000
+ str r0, [r1, #0x20]
+ ldr r0, [r1, #0x20]
+ cmp r0, #0
+ moveq r0, #0xff
+ streqb r0, [r1]
+ add r0, r6, #0x1000
+ ldr r0, [r0, #0x20]
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DB714: .word 0x00001C10
+_021DB718: .word 0x00001004
+_021DB71C: .word UNK04_0220C33C
+_021DB720: .word 0x00000B68
+_021DB724: .word UNK04_0220C354
+_021DB728: .word 0x000005EA
+_021DB72C: .word 0x00001A04
+ arm_func_end MOD04_021DB608
+
+ .section .data
+
+ .global UNK04_0220C0E4 ; I really don't know about this table, I'm gonna assume it's extern for now because it's weird
+UNK04_0220C0E4: ; 0x0220C0E4
+ .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8
+ .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0
+ .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC
+
+ .global UNK04_0220C110
+UNK04_0220C110: ; 0x0220C110
+ .asciz "FREE array_entry[i].label"
+
+ .balign 4, 0
+ .global UNK04_0220C12C
+UNK04_0220C12C: ; 0x0220C12C
+ .asciz "FREE array_entry[i].value"
+
+ .balign 4, 0
+ .global UNK04_0220C148
+UNK04_0220C148: ; 0x0220C148
+ .asciz "\r\n\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C150
+UNK04_0220C150: ; 0x0220C150
+ .asciz " "
+
+ .balign 4, 0
+ .global UNK04_0220C154
+UNK04_0220C154: ; 0x0220C154
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220C160
+UNK04_0220C160: ; 0x0220C160
+ .asciz "200"
+
+ .balign 4, 0
+ .global UNK04_0220C164
+UNK04_0220C164: ; 0x0220C164
+ .asciz "\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C168
+UNK04_0220C168: ; 0x0220C168
+ .asciz ": "
+
+ .balign 4, 0
+ .global UNK04_0220C16C
+UNK04_0220C16C: ; 0x0220C16C
+ .asciz "="
+
+ .balign 4, 0
+ .global UNK04_0220C170
+UNK04_0220C170: ; 0x0220C170
+ .asciz "&"
+
+ .balign 4, 0
+ .global UNK04_0220C174
+UNK04_0220C174: ; 0x0220C174
+ .asciz "ALLOC result->entry[i].label"
+
+ .balign 4, 0
+ .global UNK04_0220C194
+UNK04_0220C194: ; 0x0220C194
+ .asciz "ALLOC result->entry[i].value"
+
+ .balign 4, 0
+ .global UNK04_0220C1B4
+UNK04_0220C1B4: ; 0x0220C1B4
+ .asciz "FREE result->entry[i].label"
+
+ .balign 4, 0
+ .global UNK04_0220C1D0
+UNK04_0220C1D0: ; 0x0220C1D0
+ .asciz "FREE result->entry[i].value"
+
+ .balign 4, 0
+ .global UNK04_0220C1EC
+UNK04_0220C1EC: ; 0x0220C1EC
+ .asciz "http://"
+
+ .balign 4, 0
+ .global UNK04_0220C1F4
+UNK04_0220C1F4: ; 0x0220C1F4
+ .asciz "https://"
+
+ .balign 4, 0
+ .global UNK04_0220C200
+UNK04_0220C200: ; 0x0220C200
+ .asciz ":"
+
+ .balign 4, 0
+ .global UNK04_0220C204
+UNK04_0220C204: ; 0x0220C204
+ .asciz "/"
+
+ .balign 4, 0
+ .global UNK04_0220C208
+UNK04_0220C208: ; 0x0220C208
+ .asciz "ALLOC newptr"
+
+ .balign 4, 0
+ .global UNK04_0220C218
+UNK04_0220C218: ; 0x0220C218
+ .asciz "FREE buf->buffer"
+
+ .balign 4, 0
+ .global UNK04_0220C22C
+UNK04_0220C22C: ; 0x0220C22C
+ .asciz "ALLOC buf->buffer"
+
+ .balign 4, 0
+ .global UNK04_0220C240
+UNK04_0220C240: ; 0x0220C240
+ .asciz "%s"
+
+ .balign 4, 0
+ .global UNK04_0220C244
+UNK04_0220C244: ; 0x0220C244
+ .asciz "%s="
+
+ .balign 4, 0
+ .global UNK04_0220C248
+UNK04_0220C248: ; 0x0220C248
+ .asciz "&%s="
+
+ .balign 4, 0
+ .global UNK04_0220C250
+UNK04_0220C250: ; 0x0220C250
+ .asciz "%s: %s\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C25C
+UNK04_0220C25C: ; 0x0220C25C
+ .ascii "POST /%s HTTP/1.0\r\n"
+ .ascii "Content-type: application/x-www-form-urlencoded\r\n"
+ .asciz "Host: %s\r\n\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C2B0
+UNK04_0220C2B0: ; 0x0220C2B0
+ .ascii "GET /%s HTTP/1.0\r\n"
+ .asciz "Host: %s\r\n\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C2D0
+UNK04_0220C2D0: ; 0x0220C2D0
+ .asciz "FREE http->lowrecvbuf"
+
+ .balign 4, 0
+ .global UNK04_0220C2E8
+UNK04_0220C2E8: ; 0x0220C2E8
+ .asciz "FREE http->lowsendbuf"
+
+ .balign 4, 0
+ .global UNK04_0220C300
+UNK04_0220C300: ; 0x0220C300
+ .asciz "Content-Length: "
+
+ .balign 4, 0
+ .global UNK04_0220C314
+UNK04_0220C314: ; 0x0220C314
+ .asciz "Connection"
+
+ .balign 4, 0
+ .global UNK04_0220C320
+UNK04_0220C320: ; 0x0220C320
+ .asciz "close"
+
+ .balign 4, 0
+ .global UNK04_0220C328
+UNK04_0220C328: ; 0x0220C328
+ .asciz "%d"
+
+ .balign 4, 0
+ .global UNK04_0220C32C
+UNK04_0220C32C: ; 0x0220C32C
+ .asciz "Content-Length"
+
+ .balign 4, 0
+ .global UNK04_0220C33C
+UNK04_0220C33C: ; 0x0220C33C
+ .asciz "ALLOC http->lowrecvbuf"
+
+ .balign 4, 0
+ .global UNK04_0220C354
+UNK04_0220C354: ; 0x0220C354
+ .asciz "ALLOC http->lowsendbuf"
+
+ .balign 4, 0
diff --git a/arm9/modules/04/asm/mod04_021DB730.s b/arm9/modules/04/asm/mod04_021DB730.s
new file mode 100644
index 00000000..c506ed71
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DB730.s
@@ -0,0 +1,1512 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DB730
+MOD04_021DB730: ; 0x021DB730
+ stmdb sp!, {r4, lr}
+ ldr r2, _021DB770 ; =UNK04_02210484
+ ldr r1, _021DB774 ; =0x000011DC
+ ldr r2, [r2]
+ mov r4, r0
+ add r0, r2, r1
+ bl OS_LockMutex
+ ldr r2, _021DB770 ; =UNK04_02210484
+ ldr r1, _021DB774 ; =0x000011DC
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ str r4, [r0]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl OS_UnlockMutex
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB770: .word UNK04_02210484
+_021DB774: .word 0x000011DC
+ arm_func_end MOD04_021DB730
+
+ 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 ; =UNK04_02210484
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r7, [sp]
+ add r0, r0, #0x1000
+ ldr sb, [r0, #0x108]
+ ldr r8, [r0, #0x10c]
+ mov r0, r7
+ str r0, [sp, #8]
+ str r0, [sp, #0x1c]
+ mvn r0, #2
+ str r0, [sp, #0x20]
+ mov r0, r7
+ str r0, [sp, #0x24]
+ mvn r0, #3
+ str r0, [sp, #0x28]
+ mov r0, r7
+ str r0, [sp, #0x2c]
+ mov r0, #0x1000
+ str r0, [sp, #0x14]
+ mov r0, #5
+ str r0, [sp, #0x30]
+ mov r0, r7
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ str r0, [sp, #0x3c]
+ mov r0, #4
+ str r0, [sp, #0x40]
+ mov r0, r7
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ str r0, [sp, #0x50]
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x54]
+ mvn r0, #4
+ str r0, [sp, #0x5c]
+ mov r0, r7
+ str r0, [sp, #0x60]
+ mvn r0, #1
+ ldr r4, _021DC674 ; =UNK04_02210490
+ mov r6, #1
+ str r0, [sp, #0x18]
+_021DB830:
+ ldr r0, _021DC678 ; =UNK04_02210494
+ ldr r1, [sp, #0x14]
+ str r6, [r0, #4]
+ str r1, [r0, #8]
+ ldr r1, _021DC67C ; =0x00004E20
+ str sb, [r0, #0xc]
+ str r1, [r0, #0x18]
+ str r8, [r0, #0x10]
+ ldr r0, _021DC680 ; =UNK04_0220C36C
+ ldr r1, [r5]
+ ldr r2, [r0]
+ ldr r0, _021DC678 ; =UNK04_02210494
+ add r1, r1, #0x1000
+ str r2, [r0]
+ ldr r0, [sp, #0x18]
+ str r0, [r1, #4]
+ ldr r0, [r4]
+ ldr r1, _021DC678 ; =UNK04_02210494
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DB89C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DB89C:
+ ldr r0, [r4]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DB8C4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DB8C4:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ sub r1, r0, #1
+ ldr r0, [r4]
+ bl MOD04_021DB4A4
+ ldr r1, [r4]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DB8FC
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DB8FC:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DB91C
+ cmp r1, #8
+ beq _021DB948
+ b _021DB930
+_021DB91C:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DB930:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DB948:
+ ldr r1, [sp, #0x1c]
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021DB970
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DB970:
+ ldr r0, [r4]
+ ldr r1, _021DC68C ; =UNK04_0220C418
+ bl MOD04_021DA388
+ bl atol
+ mov sl, r0
+ ldr r0, _021DC690 ; =errno
+ ldr r0, [r0]
+ cmp r0, #0x22
+ bne _021DB9A0
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DB9A0:
+ cmp sl, #0xc8
+ beq _021DBCB4
+ ldr r0, _021DC694 ; =0x0000012E
+ cmp sl, r0
+ bne _021DBC9C
+ ldr r0, _021DC698 ; =UNK04_0221048C
+ str r6, [r0]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x118]
+ cmp r1, #0
+ beq _021DBC0C
+ ldr r1, _021DC674 ; =UNK04_02210490
+ mvn r2, #5
+ str r2, [r0, #4]
+ ldr r0, [r1]
+ bl MOD04_021DAE4C
+ ldr r2, _021DC678 ; =UNK04_02210494
+ ldr r0, _021DC69C ; =UNK04_0220BEB4
+ ldr r3, _021DC67C ; =0x00004E20
+ ldr r0, [r0]
+ mov r5, #0
+ mov r4, #0x200
+ ldr r1, _021DC6A0 ; =UNK04_0220C424
+ str r0, [r2]
+ str r5, [r2, #4]
+ str r4, [r2, #8]
+ str sb, [r2, #0xc]
+ str r8, [r2, #0x10]
+ str r3, [r2, #0x18]
+ bl strcmp
+ cmp r0, #0
+ ldrne r0, _021DC678 ; =UNK04_02210494
+ movne r1, #1
+ strne r1, [r0, #0x14]
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r1, _021DC678 ; =UNK04_02210494
+ ldr r0, [r0]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DBA5C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBA5C:
+ add r0, sp, #0x240
+ bl MOD04_021DA238
+ cmp r0, #0
+ beq _021DBA88
+ ldr r0, _021DC674 ; =UNK04_02210490
+ add r1, sp, #0x240
+ ldr r0, [r0]
+ mov r2, #1
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ bne _021DBAA0
+_021DBA88:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBAA0:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r1, _021DC6A4 ; =UNK04_0220C444
+ ldr r0, [r0]
+ ldr r2, _021DC6A8 ; =UNK04_0220C44C
+ mov r3, #7
+ bl MOD04_021DAB68
+ cmp r0, #0
+ bne _021DBAF8
+ ldr r0, _021DC670 ; =UNK04_02210484
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r4, [r0, #0x118]
+ mov r0, r4
+ bl strlen
+ ldr r1, _021DC674 ; =UNK04_02210490
+ mov r3, r0
+ ldr r0, [r1]
+ ldr r1, _021DC6AC ; =UNK04_0220C454
+ mov r2, r4
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021DBB10
+_021DBAF8:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBB10:
+ ldr r1, _021DC670 ; =UNK04_02210484
+ ldr r0, _021DC6B0 ; =UNK04_0220C464
+ ldr r1, [r1]
+ mov r2, #0
+ add r1, r1, #0x1000
+ ldr r1, [r1, #0x118]
+ blx r8
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r0, [r0]
+ ldr r1, _021DC674 ; =UNK04_02210490
+ add r0, r0, #0x1000
+ str r2, [r0, #0x118]
+ ldr r0, [r1]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DBB6C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBB6C:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ ldr r2, _021DC674 ; =UNK04_02210490
+ sub r1, r0, #1
+ ldr r0, [r2]
+ bl MOD04_021DB4A4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DBBAC
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DBBAC:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DBBD0
+ cmp r1, #8
+ beq _021DBBFC
+ b _021DBBE4
+_021DBBD0:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DBBE4:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DBBFC:
+ bl MOD04_021DAE4C
+ mov r0, #7
+ bl MOD04_021DB730
+ b _021DC614
+_021DBC0C:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr fp, [r1, #0xa04]
+ cmp fp, #0
+ bne _021DBC30
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DBC30:
+ mov r0, fp
+ bl strlen
+ add r1, r0, #1
+ ldr r0, _021DC6B4 ; =UNK04_0220C394
+ blx sb
+ ldr r1, [r5]
+ add r1, r1, #0x1000
+ str r0, [r1, #0x114]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x114]
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ bne _021DBC80
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DBC80:
+ mov r0, fp
+ bl strlen
+ mov r2, r0
+ ldr r0, [sp, #0xc]
+ mov r1, fp
+ bl strncpy
+ b _021DBCB4
+_021DBC9C:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #0xa
+ bl MOD04_021DB730
+ b _021DC614
+_021DBCB4:
+ ldr r0, [r4]
+ bl MOD04_021DAE4C
+ add r0, sp, #0x68
+ bl DWCi_BM_GetWiFiInfo
+ ldr r2, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ mov r0, #0
+ cmp r1, r0
+ cmpeq r2, r0
+ bne _021DBDEC
+ ldr r1, [r5]
+ ldr r0, _021DC6B8 ; =UNK04_022104B0
+ add r2, r1, #0x1000
+ ldr r1, [sp, #0x20]
+ str r1, [r2, #4]
+ ldr r2, [sp, #0x24]
+ mov r1, r0
+ strh r2, [r1]
+ strb r2, [r1, #0x34]
+ ldr r2, [r5]
+ ldr r1, [r4]
+ add r3, r2, #0x1000
+ ldr fp, [r3, #0x108]
+ mov r2, r0
+ str fp, [r2, #0x40]
+ ldr r3, [r3, #0x10c]
+ str r3, [r2, #0x44]
+ bl MOD04_021D9ACC
+ cmp r0, #0
+ beq _021DBD38
+ mov r0, #5
+ bl MOD04_021DB730
+ b _021DC614
+_021DBD38:
+ bl MOD04_021D98DC
+ bl MOD04_021D988C
+ cmp r0, #0x15
+ beq _021DBDE8
+ bl MOD04_021D988C
+ cmp r0, #9
+ bne _021DBD6C
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+ b _021DBDD8
+_021DBD6C:
+ add r0, sp, #0x7c
+ bl MOD04_021D97F8
+ ldr r0, _021DC6BC ; =UNK04_02210488
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DBDC4
+ ldr r1, [sp, #0x7c]
+ ldr r0, _021DC6C0 ; =0xFFFFA4FA
+ cmp r1, r0
+ beq _021DBDA0
+ bl MOD04_021D988C
+ cmp r0, #0xb
+ bne _021DBDC4
+_021DBDA0:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+ bl MOD04_021D991C
+ mov r0, #0xb
+ bl MOD04_021DB730
+ b _021DC614
+_021DBDC4:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ ldr r1, [sp, #0x7c]
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DBDD8:
+ bl MOD04_021D991C
+ mov r0, #6
+ bl MOD04_021DB730
+ b _021DC614
+_021DBDE8:
+ bl MOD04_021D991C
+_021DBDEC:
+ cmp sl, #0xc8
+ bne _021DBE14
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DBE14:
+ ldr r0, [r5]
+ ldr r1, _021DC6A0 ; =UNK04_0220C424
+ add r2, r0, #0x1000
+ ldr r0, [sp, #0x28]
+ str r0, [r2, #4]
+ ldr r0, _021DC678 ; =UNK04_02210494
+ ldr r2, [sp, #0x2c]
+ str sb, [r0, #0xc]
+ str r2, [r0, #4]
+ ldr r2, [sp, #0x14]
+ str r8, [r0, #0x10]
+ str r2, [r0, #8]
+ ldr r2, _021DC6C4 ; =0x00009C40
+ str r2, [r0, #0x18]
+ ldr r0, _021DC69C ; =UNK04_0220BEB4
+ ldr r2, _021DC678 ; =UNK04_02210494
+ ldr r0, [r0]
+ str r0, [r2]
+ bl strcmp
+ cmp r0, #0
+ ldrne r0, _021DC678 ; =UNK04_02210494
+ ldr r1, _021DC678 ; =UNK04_02210494
+ strne r6, [r0, #0x14]
+ ldr r0, [r4]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DBE98
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBE98:
+ add r0, sp, #0x240
+ bl MOD04_021DA238
+ cmp r0, #0
+ beq _021DBEC0
+ ldr r0, [r4]
+ add r1, sp, #0x240
+ mov r2, r6
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ bne _021DBED8
+_021DBEC0:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBED8:
+ ldr r0, [r4]
+ ldr r1, _021DC6A4 ; =UNK04_0220C444
+ ldr r2, _021DC6C8 ; =UNK04_0220C484
+ ldr r3, [sp, #0x30]
+ bl MOD04_021DAB68
+ cmp r0, #0
+ bne _021DBF24
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr sl, [r0, #0x114]
+ mov r0, sl
+ bl strlen
+ mov r3, r0
+ ldr r0, [r4]
+ ldr r1, _021DC6CC ; =UNK04_0220C48C
+ mov r2, sl
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021DBF3C
+_021DBF24:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBF3C:
+ ldr r1, [r5]
+ ldr r0, _021DC6D0 ; =UNK04_0220C3B0
+ add r1, r1, #0x1000
+ ldr r2, [sp, #0x34]
+ ldr r1, [r1, #0x114]
+ blx r8
+ ldr r0, [r5]
+ add r1, r0, #0x1000
+ ldr r0, [sp, #0x38]
+ str r0, [r1, #0x114]
+ ldr r0, [r4]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DBF8C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBF8C:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ sub r1, r0, #1
+ ldr r0, [r4]
+ bl MOD04_021DB4A4
+ ldr r1, [r4]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DBFC4
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DBFC4:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DC02C
+ cmp r1, #3
+ beq _021DBFEC
+ cmp r1, #8
+ beq _021DC058
+ b _021DC040
+_021DBFEC:
+ bl MOD04_021DAE4C
+ ldr r0, _021DC6BC ; =UNK04_02210488
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DC020
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DC020:
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DC02C:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DC040:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DC058:
+ ldr r1, [sp, #0x3c]
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021DC080
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC080:
+ ldr r0, [r4]
+ ldr r1, _021DC68C ; =UNK04_0220C418
+ bl MOD04_021DA388
+ bl atol
+ mov sl, r0
+ ldr r0, _021DC690 ; =errno
+ ldr r0, [r0]
+ cmp r0, #0x22
+ bne _021DC0BC
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC0BC:
+ cmp sl, #0xc8
+ beq _021DC118
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ ldr r0, _021DC6BC ; =UNK04_02210488
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DC10C
+ ldr r0, _021DC694 ; =0x0000012E
+ cmp sl, r0
+ bne _021DC10C
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DC10C:
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC118:
+ ldr r0, [r4]
+ ldr r1, _021DC6D4 ; =UNK04_0220C494
+ ldr r3, [sp, #0x40]
+ add r2, sp, #0x64
+ bl MOD04_021DA334
+ cmp r0, #0
+ bgt _021DC14C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC14C:
+ add r0, sp, #0x64
+ bl atol
+ ldr r1, _021DC690 ; =errno
+ ldr r1, [r1]
+ cmp r1, #0x22
+ bne _021DC17C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC17C:
+ ldr r1, _021DC6BC ; =UNK04_02210488
+ ldr r1, [r1]
+ cmp r1, #1
+ bne _021DC1B4
+ cmp r0, #0x72
+ bne _021DC1B4
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DC1B4:
+ cmp r0, #0x64
+ blt _021DC1D4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #6
+ bl MOD04_021DB730
+ b _021DC614
+_021DC1D4:
+ ldr r2, [sp, #0x44]
+ ldr r0, [r4]
+ ldr r1, _021DC6D8 ; =UNK04_0220C4A0
+ mov r3, r2
+ bl MOD04_021DA334
+ mov fp, r0
+ cmp fp, #0
+ bgt _021DC20C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC20C:
+ ldr r2, [sp, #0x48]
+ ldr r0, [r4]
+ ldr r1, _021DC6DC ; =UNK04_0220C4A4
+ mov r3, r2
+ bl MOD04_021DA334
+ str r0, [sp, #4]
+ cmp r0, #0
+ bgt _021DC244
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC244:
+ ldr r2, [sp, #0x4c]
+ ldr r0, [r4]
+ ldr r1, _021DC6E0 ; =UNK04_0220C4AC
+ mov r3, r2
+ bl MOD04_021DA334
+ mov sl, r0
+ ldr r0, _021DC6E4 ; =UNK04_0220C3CC
+ add r1, fp, #1
+ blx sb
+ str r0, [sp]
+ cmp r0, #0
+ bne _021DC28C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC28C:
+ ldr r1, [sp, #4]
+ ldr r0, _021DC6E8 ; =UNK04_0220C3D8
+ add r1, r1, #1
+ blx sb
+ movs r7, r0
+ bne _021DC2BC
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC2BC:
+ cmp sl, #0
+ ble _021DC2F4
+ ldr r0, _021DC6EC ; =UNK04_0220C3E8
+ add r1, sl, #1
+ blx sb
+ str r0, [sp, #8]
+ cmp r0, #0
+ bne _021DC2F4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC2F4:
+ ldr r0, [r4]
+ ldr r1, _021DC6D8 ; =UNK04_0220C4A0
+ ldr r2, [sp]
+ add r3, fp, #1
+ bl MOD04_021DA334
+ cmp r0, #0
+ bge _021DC328
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC328:
+ ldr r1, [sp, #4]
+ ldr r2, [sp, #0x50]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r2, [r1, r0]
+ ldr r0, [r4]
+ ldr r1, _021DC6DC ; =UNK04_0220C4A4
+ mov r2, r7
+ bl MOD04_021DA334
+ cmp r0, #0
+ bge _021DC36C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC36C:
+ ldr r1, [sp, #0x54]
+ cmp sl, #0
+ strb r1, [r7, r0]
+ mov fp, r1
+ ble _021DC404
+ ldr r0, [r4]
+ ldr r1, _021DC6E0 ; =UNK04_0220C4AC
+ ldr r2, [sp, #8]
+ add r3, sl, #1
+ bl MOD04_021DA334
+ cmp r0, #0
+ bge _021DC3B4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC3B4:
+ ldr r2, [sp, #0x58]
+ ldr r1, [sp, #8]
+ strb r2, [r1, r0]
+ mov r0, r1
+ bl atol
+ ldr r1, _021DC690 ; =errno
+ ldr r1, [r1]
+ cmp r1, #0x22
+ bne _021DC3F0
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC3F0:
+ mov r1, #0x3e8
+ mul fp, r0, r1
+ ldr r0, _021DC6F0 ; =0x0002BF20
+ cmp fp, r0
+ movgt fp, r0
+_021DC404:
+ ldr r0, [r4]
+ bl MOD04_021DAE4C
+ ldr r0, [r5]
+ ldr r1, _021DC678 ; =UNK04_02210494
+ add r2, r0, #0x1000
+ ldr r0, [sp, #0x5c]
+ str r0, [r2, #4]
+ mov r0, r1
+ ldr r2, [sp]
+ str sb, [r0, #0xc]
+ str r2, [r0]
+ ldr r2, [sp, #0x60]
+ str r8, [r0, #0x10]
+ str r2, [r0, #4]
+ ldr r2, [sp, #0x14]
+ str r2, [r0, #8]
+ ldr r2, _021DC6F4 ; =0x0001D4C0
+ str r2, [r0, #0x18]
+ ldr r0, [r4]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DC474
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DC474:
+ ldr r0, [r4]
+ mov r1, r7
+ bl MOD04_021DAACC
+ cmp r0, #0
+ beq _021DC4A0
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DC4A0:
+ ldr r0, [r4]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DC4C8
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DC4C8:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ sub r1, r0, #1
+ ldr r0, [r4]
+ bl MOD04_021DB4A4
+ ldr r1, [r4]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DC500
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DC500:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DC520
+ cmp r1, #8
+ beq _021DC54C
+ b _021DC534
+_021DC520:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DC534:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DC54C:
+ mov r1, r6
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021DC574
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC574:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr sl, [r1, #0xa04]
+ cmp sl, #0
+ bne _021DC598
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC598:
+ mov r0, sl
+ bl strlen
+ add r1, r0, #1
+ ldr r0, _021DC6F8 ; =UNK04_0220C3F8
+ blx sb
+ ldr r1, [r5]
+ add r1, r1, #0x1000
+ str r0, [r1, #0x118]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x118]
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021DC5E8
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC5E8:
+ mov r0, sl
+ bl strlen
+ mov r2, r0
+ ldr r0, [sp, #0x10]
+ mov r1, sl
+ bl strncpy
+ ldr r0, [r4]
+ bl MOD04_021DAE4C
+ mov r0, fp
+ bl OS_Sleep
+ b _021DB830
+_021DC614:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _021DC630
+ ldr r0, _021DC6FC ; =UNK04_0220C4B4
+ ldr r1, [sp]
+ mov r2, #0
+ blx r8
+_021DC630:
+ cmp r7, #0
+ beq _021DC648
+ ldr r0, _021DC700 ; =UNK04_0220C4C0
+ mov r1, r7
+ mov r2, #0
+ blx r8
+_021DC648:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ addeq sp, sp, #0x2d4
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _021DC704 ; =UNK04_0220C4CC
+ ldr r1, [sp, #8]
+ mov r2, #0
+ blx r8
+ add sp, sp, #0x2d4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DC670: .word UNK04_02210484
+_021DC674: .word UNK04_02210490
+_021DC678: .word UNK04_02210494
+_021DC67C: .word 0x00004E20
+_021DC680: .word UNK04_0220C36C
+_021DC684: .word OSi_ThreadInfo
+_021DC688: .word 0x00001B34
+_021DC68C: .word UNK04_0220C418
+_021DC690: .word errno
+_021DC694: .word 0x0000012E
+_021DC698: .word UNK04_0221048C
+_021DC69C: .word UNK04_0220BEB4
+_021DC6A0: .word UNK04_0220C424
+_021DC6A4: .word UNK04_0220C444
+_021DC6A8: .word UNK04_0220C44C
+_021DC6AC: .word UNK04_0220C454
+_021DC6B0: .word UNK04_0220C464
+_021DC6B4: .word UNK04_0220C394
+_021DC6B8: .word UNK04_022104B0
+_021DC6BC: .word UNK04_02210488
+_021DC6C0: .word 0xFFFFA4FA
+_021DC6C4: .word 0x00009C40
+_021DC6C8: .word UNK04_0220C484
+_021DC6CC: .word UNK04_0220C48C
+_021DC6D0: .word UNK04_0220C3B0
+_021DC6D4: .word UNK04_0220C494
+_021DC6D8: .word UNK04_0220C4A0
+_021DC6DC: .word UNK04_0220C4A4
+_021DC6E0: .word UNK04_0220C4AC
+_021DC6E4: .word UNK04_0220C3CC
+_021DC6E8: .word UNK04_0220C3D8
+_021DC6EC: .word UNK04_0220C3E8
+_021DC6F0: .word 0x0002BF20
+_021DC6F4: .word 0x0001D4C0
+_021DC6F8: .word UNK04_0220C3F8
+_021DC6FC: .word UNK04_0220C4B4
+_021DC700: .word UNK04_0220C4C0
+_021DC704: .word UNK04_0220C4CC
+ arm_func_end MOD04_021DB778
+
+ arm_func_start MOD04_021DC708
+MOD04_021DC708: ; 0x021DC708
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r0, _021DC788 ; =UNK04_02210484
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x188]
+ cmp r0, #0
+ beq _021DC740
+ ldr r0, _021DC78C ; =0x0000111C
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {pc}
+_021DC740:
+ ldr r1, _021DC788 ; =UNK04_02210484
+ ldr r0, _021DC78C ; =0x0000111C
+ ldr r2, [r1]
+ mov r3, #0x1000
+ ldr r1, _021DC790 ; =MOD04_021DB778
+ str r3, [sp]
+ mov ip, #0x10
+ add r0, r2, r0
+ add r3, r2, #0x1000
+ str ip, [sp, #4]
+ bl OS_CreateThread
+ ldr r1, _021DC788 ; =UNK04_02210484
+ ldr r0, _021DC78C ; =0x0000111C
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DC788: .word UNK04_02210484
+_021DC78C: .word 0x0000111C
+_021DC790: .word MOD04_021DB778
+ arm_func_end MOD04_021DC708
+
+ arm_func_start MOD04_021DC794
+MOD04_021DC794: ; 0x021DC794
+ ldr r0, _021DC7A8 ; =UNK04_02210484
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #4]
+ bx lr
+ .align 2, 0
+_021DC7A8: .word UNK04_02210484
+ arm_func_end MOD04_021DC794
+
+ arm_func_start MOD04_021DC7AC
+MOD04_021DC7AC: ; 0x021DC7AC
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DC7E8 ; =UNK04_02210484
+ ldr r0, _021DC7EC ; =0x000011DC
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_LockMutex
+ ldr r1, _021DC7E8 ; =UNK04_02210484
+ ldr r0, _021DC7EC ; =0x000011DC
+ ldr r2, [r1]
+ add r1, r2, #0x1000
+ add r0, r2, r0
+ ldr r4, [r1]
+ bl OS_UnlockMutex
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DC7E8: .word UNK04_02210484
+_021DC7EC: .word 0x000011DC
+ arm_func_end MOD04_021DC7AC
+
+ arm_func_start MOD04_021DC7F0
+MOD04_021DC7F0: ; 0x021DC7F0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DC864 ; =UNK04_02210484
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DC868 ; =UNK04_02210490
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DC820
+ bl MOD04_021DB440
+_021DC820:
+ bl MOD04_021D9974
+ ldr r0, _021DC864 ; =UNK04_02210484
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x188]
+ cmp r0, #0
+ beq _021DC848
+ ldr r0, _021DC86C ; =0x0000111C
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DC848:
+ ldr r0, _021DC864 ; =UNK04_02210484
+ mvn r1, #6
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DC864: .word UNK04_02210484
+_021DC868: .word UNK04_02210490
+_021DC86C: .word 0x0000111C
+ arm_func_end MOD04_021DC7F0
+
+ arm_func_start MOD04_021DC870
+MOD04_021DC870: ; 0x021DC870
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DC958 ; =UNK04_02210484
+ ldr r0, _021DC95C ; =UNK04_02210490
+ ldr r1, [r1]
+ ldr r0, [r0]
+ add r1, r1, #0x1000
+ cmp r0, #0
+ ldr r4, [r1, #0x10c]
+ beq _021DC8B8
+ bl MOD04_021DAE4C
+ ldr r1, _021DC95C ; =UNK04_02210490
+ ldr r0, _021DC960 ; =UNK04_0220C4D8
+ ldr r1, [r1]
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC95C ; =UNK04_02210490
+ mov r1, #0
+ str r1, [r0]
+_021DC8B8:
+ bl MOD04_021D991C
+ ldr r0, _021DC958 ; =UNK04_02210484
+ ldr r0, [r0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x114]
+ cmp r1, #0
+ beq _021DC8FC
+ ldr r0, _021DC964 ; =UNK04_0220C3B0
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC958 ; =UNK04_02210484
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #0x114]
+_021DC8FC:
+ ldr r0, _021DC958 ; =UNK04_02210484
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x118]
+ cmp r1, #0
+ beq _021DC934
+ ldr r0, _021DC968 ; =UNK04_0220C464
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC958 ; =UNK04_02210484
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #0x118]
+_021DC934:
+ ldr r1, _021DC958 ; =UNK04_02210484
+ ldr r0, _021DC96C ; =UNK04_0220C4E8
+ ldr r1, [r1]
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC958 ; =UNK04_02210484
+ mov r1, #0
+ str r1, [r0]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DC958: .word UNK04_02210484
+_021DC95C: .word UNK04_02210490
+_021DC960: .word UNK04_0220C4D8
+_021DC964: .word UNK04_0220C3B0
+_021DC968: .word UNK04_0220C464
+_021DC96C: .word UNK04_0220C4E8
+ arm_func_end MOD04_021DC870
+
+ arm_func_start MOD04_021DC970
+MOD04_021DC970: ; 0x021DC970
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ mov r5, r0
+ ldr r0, [r1]
+ ldr r4, [r5]
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021DCA60 ; =UNK04_0220C4FC
+ ldr r1, _021DCA64 ; =0x000011F4
+ blx r4
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ cmp r0, #0
+ str r0, [r1]
+ addeq sp, sp, #4
+ moveq r0, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, _021DCA64 ; =0x000011F4
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ ldr r2, _021DCA68 ; =0xFFFE7961
+ ldr r0, [r1]
+ ldr r3, _021DCA6C ; =0x00001108
+ add r0, r0, #0x1000
+ str r2, [r0, #4]
+ ldr ip, [r1]
+ ldmia r5, {r0, r1, r2}
+ add r3, ip, r3
+ stmia r3, {r0, r1, r2}
+ ldr r0, _021DCA70 ; =UNK04_02210490
+ ldr r0, [r0]
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021DCA74 ; =UNK04_0220C510
+ ldr r1, _021DCA78 ; =0x00001C10
+ blx r4
+ ldr r1, _021DCA70 ; =UNK04_02210490
+ cmp r0, #0
+ str r0, [r1]
+ addeq sp, sp, #4
+ moveq r0, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ ldr r0, _021DCA7C ; =0x000011DC
+ ldr r2, [r1]
+ ldr r1, _021DCA80 ; =UNK04_0221048C
+ mov r3, #0
+ add r0, r2, r0
+ str r3, [r1]
+ bl OS_InitMutex
+ bl MOD04_021DC708
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DCA5C: .word UNK04_02210484
+_021DCA60: .word UNK04_0220C4FC
+_021DCA64: .word 0x000011F4
+_021DCA68: .word 0xFFFE7961
+_021DCA6C: .word 0x00001108
+_021DCA70: .word UNK04_02210490
+_021DCA74: .word UNK04_0220C510
+_021DCA78: .word 0x00001C10
+_021DCA7C: .word 0x000011DC
+_021DCA80: .word UNK04_0221048C
+ arm_func_end MOD04_021DC970
+
+ .section .data
+
+ .global UNK04_0220C36C
+UNK04_0220C36C: ; 0x0220C36C
+ .word UNK04_0220C370
+
+ .global UNK04_0220C370
+UNK04_0220C370: ; 0x0220C370
+ .asciz "http://conntest.nintendowifi.net/"
+
+ .balign 4, 0
+ .global UNK04_0220C394
+UNK04_0220C394: ; 0x0220C394
+ .asciz "ALLOC DWCnetcheck->body_302"
+
+ .balign 4, 0
+ .global UNK04_0220C3B0
+UNK04_0220C3B0: ; 0x0220C3B0
+ .asciz "FREE DWCnetcheck->body_302"
+
+ .balign 4, 0
+ .global UNK04_0220C3CC
+UNK04_0220C3CC: ; 0x0220C3CC
+ .asciz "ALLOC url"
+
+ .balign 4, 0
+ .global UNK04_0220C3D8
+UNK04_0220C3D8: ; 0x0220C3D8
+ .asciz "ALLOC data_len"
+
+ .balign 4, 0
+ .global UNK04_0220C3E8
+UNK04_0220C3E8: ; 0x0220C3E8
+ .asciz "ALLOC wait_len"
+
+ .balign 4, 0
+ .global UNK04_0220C3F8
+UNK04_0220C3F8: ; 0x0220C3F8
+ .asciz "ALLOC DWCnetcheck->body_wayport"
+
+ .balign 4, 0
+ .global UNK04_0220C418
+UNK04_0220C418: ; 0x0220C418
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220C424
+UNK04_0220C424: ; 0x0220C424
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220C444
+UNK04_0220C444: ; 0x0220C444
+ .asciz "action"
+
+ .balign 4, 0
+ .global UNK04_0220C44C
+UNK04_0220C44C: ; 0x0220C44C
+ .asciz "message"
+
+ .balign 4, 0
+ .global UNK04_0220C454
+UNK04_0220C454: ; 0x0220C454
+ .asciz "HotSpotResponse"
+
+ .balign 4, 0
+ .global UNK04_0220C464
+UNK04_0220C464: ; 0x0220C464
+ .asciz "FREE DWCnetcheck->body_wayport"
+
+ .balign 4, 0
+ .global UNK04_0220C484
+UNK04_0220C484: ; 0x0220C484
+ .asciz "parse"
+
+ .balign 4, 0
+ .global UNK04_0220C48C
+UNK04_0220C48C: ; 0x0220C48C
+ .asciz "HTML"
+
+ .balign 4, 0
+ .global UNK04_0220C494
+UNK04_0220C494: ; 0x0220C494
+ .asciz "returncd"
+
+ .balign 4, 0
+ .global UNK04_0220C4A0
+UNK04_0220C4A0: ; 0x0220C4A0
+ .asciz "url"
+
+ .balign 4, 0
+ .global UNK04_0220C4A4
+UNK04_0220C4A4: ; 0x0220C4A4
+ .asciz "data"
+
+ .balign 4, 0
+ .global UNK04_0220C4AC
+UNK04_0220C4AC: ; 0x0220C4AC
+ .asciz "wait"
+
+ .balign 4, 0
+ .global UNK04_0220C4B4
+UNK04_0220C4B4: ; 0x0220C4B4
+ .asciz "FREE url"
+
+ .balign 4, 0
+ .global UNK04_0220C4C0
+UNK04_0220C4C0: ; 0x0220C4C0
+ .asciz "FREE data"
+
+ .balign 4, 0
+ .global UNK04_0220C4CC
+UNK04_0220C4CC: ; 0x0220C4CC
+ .asciz "FREE wait"
+
+ .balign 4, 0
+ .global UNK04_0220C4D8
+UNK04_0220C4D8: ; 0x0220C4D8
+ .asciz "FREE DWChttp"
+
+ .balign 4, 0
+ .global UNK04_0220C4E8
+UNK04_0220C4E8: ; 0x0220C4E8
+ .asciz "FREE DWCnetcheck"
+
+ .balign 4, 0
+ .global UNK04_0220C4FC
+UNK04_0220C4FC: ; 0x0220C4FC
+ .asciz "ALLOC DWCnetcheck"
+
+ .balign 4, 0
+ .global UNK04_0220C510
+UNK04_0220C510: ; 0x0220C510
+ .asciz "ALLOC DWChttp"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210490
+UNK04_02210490: ; 0x02210490
+ .space 0x4
+
+ .global UNK04_02210494
+UNK04_02210494: ; 0x02210494
+ .space 0x1C
+
+ .global UNK04_022104B0
+UNK04_022104B0: ; 0x022104B0
+ .space 0x48
diff --git a/arm9/modules/04/asm/mod04_021DC8A4.s b/arm9/modules/04/asm/mod04_021DC8A4.s
new file mode 100644
index 00000000..7668cb10
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DC8A4.s
@@ -0,0 +1,240 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DCA84
+MOD04_021DCA84: ; 0x021DCA84
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x40
+ mov r6, r0
+ bl strlen
+ mov r4, r0
+ ldr r0, _021DCCB4 ; =UNK04_0220C580
+ bl strlen
+ cmp r4, r0
+ bne _021DCCA8
+ ldrsb r0, [r6, #7]
+ cmp r0, #0x20
+ bne _021DCCA8
+ ldrsb r0, [r6, #0xb]
+ cmp r0, #0x20
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x10]
+ cmp r0, #0x20
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x13]
+ cmp r0, #0x3a
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x16]
+ cmp r0, #0x3a
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x19]
+ cmp r0, #0x20
+ bne _021DCCA8
+ add r0, sp, #0
+ bl RTC_GetDate
+ cmp r0, #0
+ bne _021DCCA8
+ add r0, sp, #0x10
+ bl RTC_GetTime
+ cmp r0, #0
+ bne _021DCCA8
+ add r0, sp, #0
+ add r1, sp, #0x10
+ bl RTC_ConvertDateTimeToSecond
+ mov r4, r0
+ mov r5, r1
+ mvn r0, #0
+ cmp r5, r0
+ cmpeq r4, r0
+ beq _021DCCA8
+ add r0, sp, #0x1c
+ mov r1, r6
+ bl strcpy
+ mov r2, #0
+ ldr r1, _021DCCB8 ; =errno
+ add r0, sp, #0x28
+ strb r2, [sp, #0x23]
+ strb r2, [sp, #0x27]
+ strb r2, [sp, #0x2c]
+ strb r2, [sp, #0x2f]
+ strb r2, [sp, #0x32]
+ strb r2, [sp, #0x35]
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp]
+ ldr r1, [r1]
+ cmp r1, #0x22
+ beq _021DCCA8
+ sub r1, r0, #0x7d0
+ mov r0, #0xd
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r8, #0
+ ldr r7, _021DCCBC ; =UNK04_0220C550
+ add r6, sp, #0x24
+_021DCB9C:
+ ldr r0, [r7, r8, lsl #2]
+ mov r1, r6
+ bl strcmp
+ cmp r0, #0
+ addeq r0, r8, #1
+ streq r0, [sp, #4]
+ beq _021DCBC4
+ add r8, r8, #1
+ cmp r8, #0xc
+ blt _021DCB9C
+_021DCBC4:
+ ldr r0, [sp, #4]
+ cmp r0, #0xc
+ bhi _021DCCA8
+ ldr r1, _021DCCB8 ; =errno
+ mov r2, #0
+ add r0, sp, #0x21
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #8]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ mov r2, #0
+ add r0, sp, #0x2d
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #0x10]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ mov r2, #0
+ add r0, sp, #0x30
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #0x14]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ mov r2, #0
+ add r0, sp, #0x33
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #0x18]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ add r0, sp, #0
+ add r1, sp, #0x10
+ bl RTC_ConvertDateTimeToSecond
+ mvn r2, #0
+ cmp r1, r2
+ cmpeq r0, r2
+ beq _021DCCA8
+ subs r4, r4, r0
+ ldr r2, _021DCCC0 ; =UNK04_022104FC
+ sbc r3, r5, r1
+ ldr r1, _021DCCC4 ; =UNK04_022104F8
+ mov r0, #1
+ str r3, [r2, #4]
+ str r0, [r1]
+ add sp, sp, #0x40
+ str r4, [r2]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_021DCCA8:
+ mov r0, #0
+ add sp, sp, #0x40
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DCCB4: .word UNK04_0220C580
+_021DCCB8: .word errno
+_021DCCBC: .word UNK04_0220C550
+_021DCCC0: .word UNK04_022104FC
+_021DCCC4: .word UNK04_022104F8
+ arm_func_end MOD04_021DCA84
+
+ .section .data
+
+ .global UNK04_0220C520
+UNK04_0220C520: ; 0x0220C520
+ .asciz "Dec"
+
+ .balign 4, 0
+ .global UNK04_0220C524
+UNK04_0220C524: ; 0x0220C524
+ .asciz "Jul"
+
+ .balign 4, 0
+ .global UNK04_0220C528
+UNK04_0220C528: ; 0x0220C528
+ .asciz "Oct"
+
+ .balign 4, 0
+ .global UNK04_0220C52C
+UNK04_0220C52C: ; 0x0220C52C
+ .asciz "Sep"
+
+ .balign 4, 0
+ .global UNK04_0220C530
+UNK04_0220C530: ; 0x0220C530
+ .asciz "Aug"
+
+ .balign 4, 0
+ .global UNK04_0220C534
+UNK04_0220C534: ; 0x0220C534
+ .asciz "Nov"
+
+ .balign 4, 0
+ .global UNK04_0220C538
+UNK04_0220C538: ; 0x0220C538
+ .asciz "Jun"
+
+ .balign 4, 0
+ .global UNK04_0220C53C
+UNK04_0220C53C: ; 0x0220C53C
+ .asciz "May"
+
+ .balign 4, 0
+ .global UNK04_0220C540
+UNK04_0220C540: ; 0x0220C540
+ .asciz "Apr"
+
+ .balign 4, 0
+ .global UNK04_0220C544
+UNK04_0220C544: ; 0x0220C544
+ .asciz "Mar"
+
+ .balign 4, 0
+ .global UNK04_0220C548
+UNK04_0220C548: ; 0x0220C548
+ .asciz "Feb"
+
+ .balign 4, 0
+ .global UNK04_0220C54C
+UNK04_0220C54C: ; 0x0220C54C
+ .asciz "Jan"
+
+ .balign 4, 0
+ .global UNK04_0220C550
+UNK04_0220C550: ; 0x0220C550
+ .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540
+ .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530
+ .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520
+
+ .global UNK04_0220C580
+UNK04_0220C580: ; 0x0220C580
+ .asciz "Fri, 03 Mar 2006 01:28:13 GMT"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_022104F8
+UNK04_022104F8: ; 0x022104F8
+ .space 0x4
+
+ .global UNK04_022104FC
+UNK04_022104FC: ; 0x022104FC
+ .space 0x8
diff --git a/arm9/modules/04/asm/mod04_021DCCC8.s b/arm9/modules/04/asm/mod04_021DCCC8.s
new file mode 100644
index 00000000..a182f7c3
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DCCC8.s
@@ -0,0 +1,545 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DCCC8
+MOD04_021DCCC8: ; 0x021DCCC8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ mov r1, #0
+ ldr r0, [r0]
+ add r4, r0, #8
+ mov r0, r4
+ bl MOD04_021DA3DC
+ cmp r0, #0
+ bne _021DCD08
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCD08:
+ ldr r1, _021DCEDC ; =UNK04_0220C5A0
+ mov r0, r4
+ bl MOD04_021DA388
+ cmp r0, #0
+ beq _021DCD20
+ bl MOD04_021DCA84
+_021DCD20:
+ ldr r1, _021DCEE0 ; =UNK04_0220C5A8
+ mov r0, r4
+ bl MOD04_021DA388
+ cmp r0, #0
+ bne _021DCD4C
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCD4C:
+ bl atol
+ ldr r1, _021DCEE4 ; =errno
+ mov r2, r0
+ ldr r0, [r1]
+ cmp r0, #0x22
+ bne _021DCD7C
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCD7C:
+ cmp r2, #0xc8
+ beq _021DCDA0
+ ldr r1, _021DCEE8 ; =0xFFFF9E58
+ mov r0, #0x10
+ sub r1, r1, r2
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCDA0:
+ ldr r1, _021DCEEC ; =UNK04_0220C5B4
+ add r2, sp, #0
+ mov r0, r4
+ mov r3, #4
+ bl MOD04_021DA334
+ cmp r0, #0
+ bgt _021DCDD4
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCDD4:
+ add r0, sp, #0
+ bl atol
+ ldr r1, _021DCEE4 ; =errno
+ mov r2, r0
+ ldr r0, [r1]
+ cmp r0, #0x22
+ bne _021DCE08
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCE08:
+ cmp r2, #0x64
+ blt _021DCE2C
+ ldr r1, _021DCEF0 ; =0xFFFFA240
+ mov r0, #0x10
+ sub r1, r1, r2
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCE2C:
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ ldr r1, _021DCEF4 ; =UNK04_0220C5C0
+ ldr r2, [r0]
+ mov r0, r4
+ add r2, r2, #0x1000
+ ldr r2, [r2, #0xc18]
+ mov r3, #0x40
+ add r2, r2, #4
+ bl MOD04_021DA334
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ ldr r1, _021DCEF8 ; =UNK04_0220C5C8
+ ldr r2, [r0]
+ mov r0, r4
+ add r2, r2, #0x1000
+ ldr r2, [r2, #0xc18]
+ mov r3, #0x12c
+ add r2, r2, #0x45
+ bl MOD04_021DA334
+ ldr r1, _021DCEFC ; =UNK04_0220C5D8
+ add r2, sp, #0
+ mov r0, r4
+ mov r3, #1
+ bl MOD04_021DA334
+ ldrsb r0, [sp]
+ cmp r0, #0x59
+ bne _021DCEB0
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ mov r1, #1
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0xc18]
+ str r1, [r0]
+ b _021DCEC8
+_021DCEB0:
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0xc18]
+ str r1, [r0]
+_021DCEC8:
+ mov r0, #1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DCED4: .word UNK04_02210504
+_021DCED8: .word 0xFFFF9DF3
+_021DCEDC: .word UNK04_0220C5A0
+_021DCEE0: .word UNK04_0220C5A8
+_021DCEE4: .word errno
+_021DCEE8: .word 0xFFFF9E58
+_021DCEEC: .word UNK04_0220C5B4
+_021DCEF0: .word 0xFFFFA240
+_021DCEF4: .word UNK04_0220C5C0
+_021DCEF8: .word UNK04_0220C5C8
+_021DCEFC: .word UNK04_0220C5D8
+ arm_func_end MOD04_021DCCC8
+
+ arm_func_start MOD04_021DCF00
+MOD04_021DCF00: ; 0x021DCF00
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba8]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ ldr r0, _021DCFF4 ; =0x00001B3C
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #1
+ bne _021DCFE4
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x28]
+ cmp r0, #7
+ beq _021DCFB0
+ cmp r0, #8
+ bne _021DCFC4
+ bl MOD04_021DCCC8
+ cmp r0, #0
+ bne _021DCF94
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ add sp, sp, #4
+ mov r0, #4
+ ldmfd sp!, {pc}
+_021DCF94:
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ add sp, sp, #4
+ mov r0, #3
+ ldmfd sp!, {pc}
+_021DCFB0:
+ add r0, r1, #8
+ bl MOD04_021DAE4C
+ add sp, sp, #4
+ mov r0, #5
+ ldmfd sp!, {pc}
+_021DCFC4:
+ add r0, r1, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DCFF8 ; =0xFFFFA1DB
+ mov r0, #0x11
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #4
+ ldmfd sp!, {pc}
+_021DCFE4:
+ mov r0, #2
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DCFF0: .word UNK04_02210504
+_021DCFF4: .word 0x00001B3C
+_021DCFF8: .word 0xFFFFA1DB
+ arm_func_end MOD04_021DCF00
+
+ arm_func_start MOD04_021DCFFC
+MOD04_021DCFFC: ; 0x021DCFFC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xb4
+ ldr r2, _021DD244 ; =UNK04_02210504
+ mov r5, r0
+ ldr r2, [r2]
+ mov r0, r1
+ add r2, r2, #0x1000
+ str r1, [r2, #0xc18]
+ mov r1, #0
+ mov r2, #0x174
+ bl MI_CpuFill8
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba8]
+ cmp r0, #0
+ beq _021DD058
+ ldr r0, _021DD248 ; =0x00001B3C
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ bne _021DD058
+ bl OS_Terminate
+_021DD058:
+ ldr r0, _021DD24C ; =UNK04_0220BEB4
+ ldr r1, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ mov r3, #0
+ ldr r4, [r1]
+ mov r2, #0x1000
+ str r0, [sp]
+ str r3, [sp, #4]
+ str r2, [sp, #8]
+ ldr r2, [r4]
+ ldr r1, _021DD250 ; =UNK04_0220C5E4
+ str r2, [sp, #0xc]
+ ldr r2, [r4, #4]
+ str r2, [sp, #0x10]
+ bl strcmp
+ cmp r0, #0
+ movne r0, #1
+ strne r0, [sp, #0x14]
+ moveq r0, #0
+ ldr r2, _021DD254 ; =0x00004E20
+ streq r0, [sp, #0x14]
+ add r1, sp, #0
+ add r0, r4, #8
+ str r2, [sp, #0x18]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DD0DC
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD0DC:
+ add r0, sp, #0x1c
+ bl MOD04_021DA238
+ cmp r0, #0
+ beq _021DD10C
+ ldr r0, _021DD244 ; =UNK04_02210504
+ add r1, sp, #0x1c
+ ldr r0, [r0]
+ mov r2, #0
+ add r0, r0, #8
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ bne _021DD134
+_021DD10C:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD134:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, _021DD25C ; =UNK04_0220C604
+ ldr r0, [r0]
+ ldr r2, _021DD260 ; =UNK04_0220C60C
+ add r0, r0, #8
+ mov r3, #6
+ bl MOD04_021DAB68
+ cmp r0, #0
+ bne _021DD17C
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, _021DD264 ; =UNK04_0220C614
+ ldr r0, [r0]
+ mov r2, r5
+ add r0, r0, #8
+ mov r3, #4
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021DD1A4
+_021DD17C:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD1A4:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DD1E4
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD1E4:
+ ldr r0, _021DD268 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ ldr r1, _021DD244 ; =UNK04_02210504
+ ldr r2, [r1]
+ sub r1, r0, #1
+ add r0, r2, #8
+ bl MOD04_021DB4A4
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba8]
+ cmp r0, #0
+ addne sp, sp, #0xb4
+ movne r0, #1
+ ldmneia sp!, {r4, r5, pc}
+ add r0, r1, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ mov r0, #0
+ add sp, sp, #0xb4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DD244: .word UNK04_02210504
+_021DD248: .word 0x00001B3C
+_021DD24C: .word UNK04_0220BEB4
+_021DD250: .word UNK04_0220C5E4
+_021DD254: .word 0x00004E20
+_021DD258: .word 0xFFFFA1DC
+_021DD25C: .word UNK04_0220C604
+_021DD260: .word UNK04_0220C60C
+_021DD264: .word UNK04_0220C614
+_021DD268: .word OSi_ThreadInfo
+ arm_func_end MOD04_021DCFFC
+
+ arm_func_start MOD04_021DD26C
+MOD04_021DD26C: ; 0x021DD26C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DD2BC ; =UNK04_02210504
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD2BC ; =UNK04_02210504
+ ldr r0, _021DD2C0 ; =UNK04_0220C618
+ ldr r1, [r1]
+ mov r2, #0
+ ldr r3, [r1, #4]
+ blx r3
+ ldr r0, _021DD2BC ; =UNK04_02210504
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD2BC: .word UNK04_02210504
+_021DD2C0: .word UNK04_0220C618
+ arm_func_end MOD04_021DD26C
+
+ arm_func_start MOD04_021DD2C4
+MOD04_021DD2C4: ; 0x021DD2C4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021DD35C ; =UNK04_02210504
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ cmp r0, #0
+ beq _021DD2FC
+ ldr r1, _021DD360 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD2FC:
+ ldr r0, _021DD364 ; =UNK04_0220C628
+ ldr r1, _021DD368 ; =0x00001C1C
+ blx r5
+ ldr r1, _021DD35C ; =UNK04_02210504
+ cmp r0, #0
+ str r0, [r1]
+ bne _021DD330
+ ldr r1, _021DD360 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD330:
+ ldr r2, _021DD368 ; =0x00001C1C
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021DD35C ; =UNK04_02210504
+ mov r0, #1
+ ldr r2, [r1]
+ str r5, [r2]
+ ldr r1, [r1]
+ str r4, [r1, #4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DD35C: .word UNK04_02210504
+_021DD360: .word 0xFFFFA1DC
+_021DD364: .word UNK04_0220C628
+_021DD368: .word 0x00001C1C
+ arm_func_end MOD04_021DD2C4
+
+ .section .data
+
+ .global UNK04_0220C5A0
+UNK04_0220C5A0: ; 0x0220C5A0
+ .asciz "Date"
+
+ .balign 4, 0
+ .global UNK04_0220C5A8
+UNK04_0220C5A8: ; 0x0220C5A8
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220C5B4
+UNK04_0220C5B4: ; 0x0220C5B4
+ .asciz "returncd"
+
+ .balign 4, 0
+ .global UNK04_0220C5C0
+UNK04_0220C5C0: ; 0x0220C5C0
+ .asciz "svchost"
+
+ .balign 4, 0
+ .global UNK04_0220C5C8
+UNK04_0220C5C8: ; 0x0220C5C8
+ .asciz "servicetoken"
+
+ .balign 4, 0
+ .global UNK04_0220C5D8
+UNK04_0220C5D8: ; 0x0220C5D8
+ .asciz "statusdata"
+
+ .balign 4, 0
+ .global UNK04_0220C5E4
+UNK04_0220C5E4: ; 0x0220C5E4
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220C604
+UNK04_0220C604: ; 0x0220C604
+ .asciz "action"
+
+ .balign 4, 0
+ .global UNK04_0220C60C
+UNK04_0220C60C: ; 0x0220C60C
+ .asciz "SVCLOC"
+
+ .balign 4, 0
+ .global UNK04_0220C614
+UNK04_0220C614: ; 0x0220C614
+ .asciz "svc"
+
+ .balign 4, 0
+ .global UNK04_0220C618
+UNK04_0220C618: ; 0x0220C618
+ .asciz "FREE intwork"
+
+ .balign 4, 0
+ .global UNK04_0220C628
+UNK04_0220C628: ; 0x0220C628
+ .asciz "ALLOC intwork"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210504
+UNK04_02210504: ; 0x02210504
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DD36C.s b/arm9/modules/04/asm/mod04_021DD36C.s
new file mode 100644
index 00000000..19966827
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD36C.s
@@ -0,0 +1,248 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DD36C
+MOD04_021DD36C: ; 0x021DD36C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ands r4, r1, #3
+ addne sp, sp, #8
+ mvnne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r6, #0
+ mov r5, r6
+ cmp r1, #0
+ bls _021DD3AC
+_021DD394:
+ ldrsb r4, [r0, r5]
+ add r5, r5, #1
+ cmp r4, #0x2a
+ addne r6, r6, #6
+ cmp r5, r1
+ blo _021DD394
+_021DD3AC:
+ cmp r2, #0
+ moveq r0, r6, asr #2
+ addeq r0, r6, r0, lsr #29
+ addeq sp, sp, #8
+ moveq r0, r0, asr #3
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r4, r6, asr #2
+ add r4, r6, r4, lsr #29
+ mov r4, r4, asr #3
+ cmp r3, r4
+ addlo sp, sp, #8
+ mvnlo r0, #0
+ ldmloia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r1, #0
+ moveq r0, #0
+ streqb r0, [r2]
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r6, r2
+ add ip, sp, #0
+ mov lr, #0
+ mov r1, #0x3f
+ mov r3, #0x3e
+_021DD408:
+ mov r8, lr
+ mov r5, ip
+_021DD410:
+ ldrsb r7, [r0, r8]
+ cmp r7, #0x41
+ blt _021DD42C
+ cmp r7, #0x5a
+ suble r7, r7, #0x41
+ strleb r7, [r5]
+ ble _021DD474
+_021DD42C:
+ cmp r7, #0x61
+ blt _021DD444
+ cmp r7, #0x7a
+ suble r7, r7, #0x47
+ strleb r7, [r5]
+ ble _021DD474
+_021DD444:
+ cmp r7, #0x30
+ blt _021DD45C
+ cmp r7, #0x39
+ addle r7, r7, #4
+ strleb r7, [r5]
+ ble _021DD474
+_021DD45C:
+ cmp r7, #0x2e
+ streqb r3, [r5]
+ beq _021DD474
+ cmp r7, #0x2d
+ streqb r1, [r5]
+ strneb lr, [r5]
+_021DD474:
+ add r8, r8, #1
+ cmp r8, #4
+ add r5, r5, #1
+ blt _021DD410
+ ldrsb r8, [sp]
+ ldrsb r7, [sp, #1]
+ add r5, r6, #1
+ mov r8, r8, lsl #2
+ orr r7, r8, r7, asr #4
+ sub r5, r5, r2
+ strb r7, [r6]
+ cmp r5, r4
+ add r0, r0, #4
+ bge _021DD4F0
+ ldrsb r8, [sp, #1]
+ ldrsb r7, [sp, #2]
+ add r5, r6, #2
+ mov r8, r8, lsl #4
+ orr r7, r8, r7, asr #2
+ sub r5, r5, r2
+ strb r7, [r6, #1]
+ cmp r5, r4
+ bge _021DD4F0
+ ldrsb r7, [sp, #2]
+ ldrsb r5, [sp, #3]
+ orr r5, r5, r7, lsl #6
+ strb r5, [r6, #2]
+ add r6, r6, #3
+ sub r5, r6, r2
+ cmp r5, r4
+ blt _021DD408
+_021DD4F0:
+ mov r0, r5
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ arm_func_end MOD04_021DD36C
+
+ 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
+ str r2, [sp]
+ umull r4, r5, r1, r4
+ ldr r6, _021DD6A0 ; =0x00000003
+ mov r5, r5, lsr #1
+ umull r4, r5, r6, r5
+ mov sl, r0
+ subs r5, r1, r4
+ movne r4, #4
+ ldr r2, _021DD69C ; =0xAAAAAAAB
+ ldr r0, [sp]
+ moveq r4, #0
+ cmp r0, #0
+ umull r0, r2, r1, r2
+ mov r2, r2, lsr #1
+ addeq sp, sp, #0xc
+ add r0, r4, r2, lsl #2
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r3, r0
+ addlo sp, sp, #0xc
+ mvnlo r0, #0
+ ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r7, sl, r1
+ ldr r6, [sp]
+ cmp sl, r7
+ beq _021DD68C
+ mov r0, #1
+ mov r5, #0
+ str r0, [sp, #4]
+ mov fp, #3
+ mov r4, #0x2a
+_021DD580:
+ sub sb, r7, sl
+ ldr r1, _021DD6A4 ; =0x2AAAAAAB
+ mov r0, sb, lsl #3
+ smull r2, r3, r1, r0
+ ldr r1, _021DD6A8 ; =0x00000006
+ add r3, r3, r0, lsr #31
+ smull r2, r3, r1, r3
+ subs r3, r0, r2
+ ldr r1, _021DD6A4 ; =0x2AAAAAAB
+ ldrne r8, [sp, #4]
+ smull r2, r3, r1, r0
+ moveq r8, r5
+ add r3, r3, r0, lsr #31
+ cmp sb, #3
+ movge sb, fp
+ add r0, sp, #8
+ mov r1, r5
+ mov r2, fp
+ add r8, r3, r8
+ bl MI_CpuFill8
+ mov r0, sl
+ add r1, sp, #8
+ mov r2, sb
+ bl MI_CpuCopy8
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ cmp r8, #2
+ ldr r1, [r0]
+ ldrb r0, [sp, #8]
+ mov r0, r0, asr #2
+ ldrsb r0, [r1, r0]
+ strb r0, [r6]
+ strltb r4, [r6, #1]
+ blt _021DD628
+ ldrb r2, [sp, #8]
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ ldrb r1, [sp, #9]
+ mov r2, r2, lsl #4
+ and r2, r2, #0x3f
+ ldr r0, [r0]
+ orr r1, r2, r1, asr #4
+ ldrsb r0, [r0, r1]
+ strb r0, [r6, #1]
+_021DD628:
+ cmp r8, #3
+ strltb r4, [r6, #2]
+ blt _021DD658
+ ldrb r2, [sp, #9]
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ ldrb r1, [sp, #0xa]
+ mov r2, r2, lsl #2
+ and r2, r2, #0x3f
+ ldr r0, [r0]
+ orr r1, r2, r1, asr #6
+ ldrsb r0, [r0, r1]
+ strb r0, [r6, #2]
+_021DD658:
+ cmp r8, #4
+ strltb r4, [r6, #3]
+ blt _021DD67C
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ ldrb r1, [sp, #0xa]
+ ldr r2, [r0]
+ and r0, r1, #0x3f
+ ldrsb r0, [r2, r0]
+ strb r0, [r6, #3]
+_021DD67C:
+ add sl, sl, sb
+ cmp sl, r7
+ add r6, r6, #4
+ bne _021DD580
+_021DD68C:
+ ldr r0, [sp]
+ sub r0, r6, r0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DD69C: .word 0xAAAAAAAB
+_021DD6A0: .word 0x00000003
+_021DD6A4: .word 0x2AAAAAAB
+_021DD6A8: .word 0x00000006
+_021DD6AC: .word UNK04_0220C638
+ arm_func_end MOD04_021DD4FC
+
+ .section .data
+
+ .global UNK04_0220C638
+UNK04_0220C638: ; 0x0220C638
+ .word UNK04_0220C63C
+
+ .global UNK04_0220C63C
+UNK04_0220C63C: ; 0x0220C63C
+ .asciz "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-"
+
+ .balign 4, 0
diff --git a/arm9/modules/04/asm/mod04_021DD6B0.s b/arm9/modules/04/asm/mod04_021DD6B0.s
new file mode 100644
index 00000000..4b9455e6
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD6B0.s
@@ -0,0 +1,145 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DD6B0
+MOD04_021DD6B0: ; 0x021DD6B0
+ ldr r3, _021DD6CC ; =UNK04_02210508
+ ldr r2, [r3]
+ cmp r2, #9
+ ldrne r2, _021DD6D0 ; =UNK04_0221050C
+ strne r0, [r3]
+ strne r1, [r2]
+ bx lr
+ .align 2, 0
+_021DD6CC: .word UNK04_02210508
+_021DD6D0: .word UNK04_0221050C
+ arm_func_end MOD04_021DD6B0
+
+ arm_func_start MOD04_021DD6D4
+MOD04_021DD6D4: ; 0x021DD6D4
+ ldr r0, _021DD6EC ; =UNK04_02210508
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DD6EC: .word UNK04_02210508
+ arm_func_end MOD04_021DD6D4
+
+ arm_func_start MOD04_021DD6F0
+MOD04_021DD6F0: ; 0x021DD6F0
+ ldr r1, _021DD710 ; =UNK04_02210508
+ ldr r0, [r1]
+ cmp r0, #9
+ movne r2, #0
+ ldrne r0, _021DD714 ; =UNK04_0221050C
+ strne r2, [r1]
+ strne r2, [r0]
+ bx lr
+ .align 2, 0
+_021DD710: .word UNK04_02210508
+_021DD714: .word UNK04_0221050C
+ arm_func_end MOD04_021DD6F0
+
+ arm_func_start MOD04_021DD718
+MOD04_021DD718: ; 0x021DD718
+ cmp r0, #0
+ ldrne r2, _021DD800 ; =UNK04_0221050C
+ ldrne r2, [r2]
+ strne r2, [r0]
+ cmp r1, #0
+ beq _021DD7F4
+ ldr r0, _021DD804 ; =UNK04_02210508
+ ldr r0, [r0]
+ cmp r0, #0x11
+ addls pc, pc, r0, lsl #2
+ b _021DD7EC
+_021DD744: ; jump table
+ b _021DD7EC ; case 0
+ b _021DD7BC ; case 1
+ b _021DD78C ; case 2
+ b _021DD78C ; case 3
+ b _021DD78C ; case 4
+ b _021DD78C ; case 5
+ b _021DD798 ; case 6
+ b _021DD7A4 ; case 7
+ b _021DD78C ; case 8
+ b _021DD7BC ; case 9
+ b _021DD7B0 ; case 10
+ b _021DD7B0 ; case 11
+ b _021DD7B0 ; case 12
+ b _021DD7B0 ; case 13
+ b _021DD7C8 ; case 14
+ b _021DD7D4 ; case 15
+ b _021DD7E0 ; case 16
+ b _021DD7D4 ; case 17
+_021DD78C:
+ mov r0, #6
+ str r0, [r1]
+ b _021DD7F4
+_021DD798:
+ mov r0, #3
+ str r0, [r1]
+ b _021DD7F4
+_021DD7A4:
+ mov r0, #4
+ str r0, [r1]
+ b _021DD7F4
+_021DD7B0:
+ mov r0, #1
+ str r0, [r1]
+ b _021DD7F4
+_021DD7BC:
+ mov r0, #7
+ str r0, [r1]
+ b _021DD7F4
+_021DD7C8:
+ mov r0, #5
+ str r0, [r1]
+ b _021DD7F4
+_021DD7D4:
+ mov r0, #6
+ str r0, [r1]
+ b _021DD7F4
+_021DD7E0:
+ mov r0, #2
+ str r0, [r1]
+ b _021DD7F4
+_021DD7EC:
+ mov r0, #0
+ str r0, [r1]
+_021DD7F4:
+ ldr r0, _021DD804 ; =UNK04_02210508
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_021DD800: .word UNK04_0221050C
+_021DD804: .word UNK04_02210508
+ arm_func_end MOD04_021DD718
+
+ arm_func_start MOD04_021DD808
+MOD04_021DD808: ; 0x021DD808
+ cmp r0, #0
+ ldrne r1, _021DD824 ; =UNK04_0221050C
+ ldrne r1, [r1]
+ strne r1, [r0]
+ ldr r0, _021DD828 ; =UNK04_02210508
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_021DD824: .word UNK04_0221050C
+_021DD828: .word UNK04_02210508
+ arm_func_end MOD04_021DD808
+
+ .section .bss
+
+ .global UNK04_02210508
+UNK04_02210508: ; 0x02210508
+ .space 0x4
+
+ .global UNK04_0221050C
+UNK04_0221050C: ; 0x0221050C
+ .space 0x4 \ No newline at end of file
diff --git a/arm9/modules/04/asm/mod04_021DD82C.s b/arm9/modules/04/asm/mod04_021DD82C.s
new file mode 100644
index 00000000..7c697698
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD82C.s
@@ -0,0 +1,145 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ 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 MOD04_021DD904
+ arm_func_end MOD04_021DD82C
+
+ 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 MOD04_021DD8E8
+ arm_func_end MOD04_021DD844
+
+ 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 MOD04_021DD944
+ arm_func_end MOD04_021DD860
+
+ arm_func_start MOD04_021DD874
+MOD04_021DD874: ; 0x021DD874
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr ip, _021DD8E0 ; =UNK04_02210514
+ mov r4, r2
+ mov r7, r3
+ mov r5, r1
+ ldr r2, [sp, #0x18]
+ ldr r3, [ip]
+ mov r1, r7
+ mov r8, r0
+ blx r3
+ movs r6, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r5, #0
+ beq _021DD8D8
+ mov r0, r5
+ mov r1, r6
+ mov r2, r7
+ bl MI_CpuCopy8
+ ldr r1, _021DD8E4 ; =UNK04_02210510
+ mov r0, r8
+ ldr r3, [r1]
+ mov r1, r5
+ mov r2, r4
+ blx r3
+_021DD8D8:
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DD8E0: .word UNK04_02210514
+_021DD8E4: .word UNK04_02210510
+ arm_func_end MOD04_021DD874
+
+ arm_func_start MOD04_021DD8E8
+MOD04_021DD8E8: ; 0x021DD8E8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov ip, #0x20
+ str ip, [sp]
+ bl MOD04_021DD874
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DD8E8
+
+ arm_func_start MOD04_021DD904
+MOD04_021DD904: ; 0x021DD904
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _021DD920 ; =UNK04_02210510
+ ldr r3, [r3]
+ blx r3
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD920: .word UNK04_02210510
+ arm_func_end MOD04_021DD904
+
+ arm_func_start MOD04_021DD924
+MOD04_021DD924: ; 0x021DD924
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _021DD940 ; =UNK04_02210514
+ ldr r3, [r3]
+ blx r3
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD940: .word UNK04_02210514
+ arm_func_end MOD04_021DD924
+
+ arm_func_start MOD04_021DD944
+MOD04_021DD944: ; 0x021DD944
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _021DD964 ; =UNK04_02210514
+ mov r2, #0x20
+ ldr r3, [r3]
+ blx r3
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD964: .word UNK04_02210514
+ arm_func_end MOD04_021DD944
+
+ arm_func_start MOD04_021DD968
+MOD04_021DD968: ; 0x021DD968
+ ldr r3, _021DD97C ; =UNK04_02210514
+ ldr r2, _021DD980 ; =UNK04_02210510
+ str r0, [r3]
+ str r1, [r2]
+ bx lr
+ .align 2, 0
+_021DD97C: .word UNK04_02210514
+_021DD980: .word UNK04_02210510
+ arm_func_end MOD04_021DD968
+
+ .section .bss
+
+ .global UNK04_02210510
+UNK04_02210510: ; 0x02210510
+ .space 0x4
+
+ .global UNK04_02210514
+UNK04_02210514: ; 0x02210514
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DD984.s b/arm9/modules/04/asm/mod04_021DD984.s
new file mode 100644
index 00000000..fa1292f3
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD984.s
@@ -0,0 +1,469 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DD984
+MOD04_021DD984: ; 0x021DD984
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DDCE8
+ bl MOD04_021DDB14
+ cmp r0, #0
+ beq _021DD9CC
+ bl MOD04_021EBAB8
+ mov r2, r0
+ cmp r2, #0x63
+ ldr r1, _021DD9D8 ; =0xFFFF2D10
+ movhi r2, #0x63
+ mov r0, #8
+ sub r1, r1, r2
+ bl MOD04_021DD6B0
+ bl MOD04_021DDBBC
+ add sp, sp, #4
+ mov r0, #1
+ ldmfd sp!, {pc}
+_021DD9CC:
+ mov r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD9D8: .word 0xFFFF2D10
+ arm_func_end MOD04_021DD984
+
+ arm_func_start MOD04_021DD9DC
+MOD04_021DD9DC: ; 0x021DD9DC
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x18
+ mov r1, #0
+ mov r2, #0x3c
+ mov r4, r0
+ bl MI_CpuFill8
+ mov r0, #0xff
+ str r0, [r4, #4]
+ bl MOD04_021DDC1C
+ cmp r0, #4
+ addne sp, sp, #0x18
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD04_021EBAB8
+ str r0, [r4]
+ bl OS_DisableInterrupts
+ mov r6, r0
+ bl WCM_GetApMacAddress
+ mov r5, r0
+ mov r1, #6
+ bl DC_InvalidateRange
+ cmp r5, #0
+ bne _021DDA4C
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x18
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DDA4C:
+ mov r0, r5
+ add r1, r4, #0x33
+ mov r2, #6
+ bl MI_CpuCopy8
+ ldr r0, [r4]
+ cmp r0, #0
+ blt _021DDAB0
+ cmp r0, #3
+ bge _021DDAB0
+ add r0, sp, #0
+ bl WCM_GetApEssid
+ mov r5, r0
+ mov r1, #0x20
+ bl DC_InvalidateRange
+ cmp r5, #0
+ bne _021DDAA0
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x18
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DDAA0:
+ ldrh r2, [sp]
+ mov r0, r5
+ add r1, r4, #0x12
+ bl MI_CpuCopy8
+_021DDAB0:
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add r0, sp, #2
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ add r0, sp, #2
+ bl MOD04_021EBA28
+ cmp r0, #1
+ bne _021DDAFC
+ ldrb r1, [sp, #8]
+ cmp r1, #0
+ beq _021DDAFC
+ sub r3, r1, #0x30
+ add r0, sp, #9
+ add r1, r4, #8
+ mov r2, #9
+ str r3, [r4, #4]
+ bl MI_CpuCopy8
+_021DDAFC:
+ mov r0, #1
+ add sp, sp, #0x18
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DD9DC
+
+ arm_func_start MOD04_021DDB08
+MOD04_021DDB08: ; 0x021DDB08
+ ldr ip, _021DDB10 ; =WCM_GetLinkLevel
+ bx ip
+ .align 2, 0
+_021DDB10: .word WCM_GetLinkLevel
+ arm_func_end MOD04_021DDB08
+
+ arm_func_start MOD04_021DDB14
+MOD04_021DDB14: ; 0x021DDB14
+ ldr r0, _021DDB3C ; =UNK04_02210518
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DDB34
+ ldrh r0, [r0, #4]
+ cmp r0, #6
+ moveq r0, #1
+ bxeq lr
+_021DDB34:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DDB3C: .word UNK04_02210518
+ arm_func_end MOD04_021DDB14
+
+ arm_func_start MOD04_021DDB40
+MOD04_021DDB40: ; 0x021DDB40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDBB8 ; =UNK04_02210518
+ ldr r2, [r0]
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ ldrh r1, [r2, #4]
+ cmp r1, #8
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ cmp r1, #1
+ moveq r1, #0
+ streq r1, [r0]
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ mov r0, #5
+ strh r0, [r2, #4]
+ bl MOD04_021EB9D8
+ cmp r0, #0
+ ldrne r0, _021DDBB8 ; =UNK04_02210518
+ movne r1, #0
+ strne r1, [r0]
+ movne r0, #1
+ moveq r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDBB8: .word UNK04_02210518
+ arm_func_end MOD04_021DDB40
+
+ arm_func_start MOD04_021DDBBC
+MOD04_021DDBBC: ; 0x021DDBBC
+ stmdb sp!, {r4, lr}
+ ldr r0, _021DDC18 ; =UNK04_02210518
+ ldr r1, [r0]
+ cmp r1, #0
+ ldmeqia sp!, {r4, pc}
+ ldrh r1, [r1, #4]
+ cmp r1, #1
+ moveq r1, #0
+ streq r1, [r0]
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021EB9D8
+ cmp r0, #0
+ bne _021DDC08
+ mov r4, #0xa
+_021DDBF4:
+ mov r0, r4
+ bl OS_Sleep
+ bl MOD04_021EB9D8
+ cmp r0, #0
+ beq _021DDBF4
+_021DDC08:
+ ldr r0, _021DDC18 ; =UNK04_02210518
+ mov r1, #0
+ str r1, [r0]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DDC18: .word UNK04_02210518
+ arm_func_end MOD04_021DDBBC
+
+ arm_func_start MOD04_021DDC1C
+MOD04_021DDC1C: ; 0x021DDC1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDCE4 ; =UNK04_02210518
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldrh r0, [r0, #4]
+ cmp r0, #1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021EBAE8
+ mov r1, r0
+ cmp r1, #5
+ bne _021DDC80
+ ldr r1, _021DDCE4 ; =UNK04_02210518
+ mov r0, #4
+ ldr r3, [r1]
+ mov r2, #1
+ strh r0, [r3, #4]
+ ldr r1, [r1]
+ add sp, sp, #4
+ strh r2, [r1, #6]
+ ldmfd sp!, {pc}
+_021DDC80:
+ cmp r1, #0
+ bge _021DDCD8
+ mvn r0, #9
+ cmp r1, r0
+ blt _021DDCB8
+ sub r1, r1, #0x2bc
+ mov r0, #9
+ bl MOD04_021DD6B0
+ ldr r1, _021DDCE4 ; =UNK04_02210518
+ mov r0, #8
+ ldr r1, [r1]
+ add sp, sp, #4
+ strh r0, [r1, #4]
+ ldmfd sp!, {pc}
+_021DDCB8:
+ mov r0, #5
+ bl MOD04_021DD6B0
+ ldr r1, _021DDCE4 ; =UNK04_02210518
+ mov r0, #7
+ ldr r1, [r1]
+ add sp, sp, #4
+ strh r0, [r1, #4]
+ ldmfd sp!, {pc}
+_021DDCD8:
+ mov r0, #2
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDCE4: .word UNK04_02210518
+ arm_func_end MOD04_021DDC1C
+
+ arm_func_start MOD04_021DDCE8
+MOD04_021DDCE8: ; 0x021DDCE8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDD78 ; =UNK04_02210518
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldrh r0, [r1, #4]
+ cmp r0, #2
+ bne _021DDD28
+ bl MOD04_021EBB80
+ ldr r1, _021DDD78 ; =UNK04_02210518
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1]
+ ldmfd sp!, {pc}
+_021DDD28:
+ cmp r0, #4
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrh r0, [r1, #6]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl WCM_GetPhase
+ cmp r0, #9
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DDD78 ; =UNK04_02210518
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #6
+ strh r3, [r2, #6]
+ ldr r0, [r0]
+ strh r1, [r0, #4]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDD78: .word UNK04_02210518
+ arm_func_end MOD04_021DDCE8
+
+ arm_func_start MOD04_021DDD7C
+MOD04_021DDD7C: ; 0x021DDD7C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDDC8 ; =UNK04_02210518
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldr r0, [r1]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ mov r0, #3
+ strh r0, [r1, #4]
+ bl MOD04_021DDC1C
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDDC8: .word UNK04_02210518
+ arm_func_end MOD04_021DDD7C
+
+ arm_func_start MOD04_021DDDCC
+MOD04_021DDDCC: ; 0x021DDDCC
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r0, _021DDE70 ; =UNK04_02210518
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DDE5C
+ ldrh r0, [r0, #4]
+ cmp r0, #1
+ addne sp, sp, #0xc
+ ldmneia sp!, {pc}
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xc
+ bl MI_CpuFill8
+ ldr r0, _021DDE70 ; =UNK04_02210518
+ ldr r3, _021DDE74 ; =MOD04_021DD944
+ ldr lr, [r0]
+ ldr r2, _021DDE78 ; =MOD04_021DD904
+ ldrh ip, [lr, #8]
+ add r0, sp, #0
+ mov r1, #2
+ strb ip, [sp, #8]
+ ldrh ip, [lr, #0xa]
+ strb ip, [sp, #9]
+ str r3, [sp]
+ str r2, [sp, #4]
+ strh r1, [lr, #4]
+ bl MOD04_021EBC60
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {pc}
+ mov r0, #9
+ mvn r1, #5
+ bl MOD04_021DD6B0
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+_021DDE5C:
+ mov r0, #9
+ mvn r1, #3
+ bl MOD04_021DD6B0
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDE70: .word UNK04_02210518
+_021DDE74: .word MOD04_021DD944
+_021DDE78: .word MOD04_021DD904
+ arm_func_end MOD04_021DDDCC
+
+ arm_func_start MOD04_021DDE7C
+MOD04_021DDE7C: ; 0x021DDE7C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #0
+ beq _021DDEA4
+ cmp r0, #1
+ beq _021DDEB4
+ cmp r0, #2
+ beq _021DDEC4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DDEA4:
+ ldr r0, _021DDED4 ; =UNK04_0220D280
+ bl MOD04_021D9C1C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DDEB4:
+ ldr r0, _021DDED8 ; =UNK04_0220D2A8
+ bl MOD04_021D9C1C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DDEC4:
+ ldr r0, _021DDEDC ; =UNK04_0220D2CC
+ bl MOD04_021D9C1C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDED4: .word UNK04_0220D280
+_021DDED8: .word UNK04_0220D2A8
+_021DDEDC: .word UNK04_0220D2CC
+ arm_func_end MOD04_021DDE7C
+
+ arm_func_start MOD04_021DDEE0
+MOD04_021DDEE0: ; 0x021DDEE0
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r2, _021DDF3C ; =UNK04_02210518
+ mov r6, r0
+ ldr r2, [r2]
+ mov r5, r1
+ mov r4, r3
+ cmp r2, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r1, #0
+ mov r2, #0xc
+ bl MI_CpuFill8
+ strh r5, [r6, #8]
+ mov r0, #1
+ strh r0, [r6, #0xa]
+ strh r0, [r6, #4]
+ mov r0, #0
+ ldr r1, _021DDF3C ; =UNK04_02210518
+ strh r0, [r6, #6]
+ str r6, [r1]
+ bl MOD04_021DDE7C
+ mov r0, r4
+ bl CPS_SetSslHandshakePriority
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DDF3C: .word UNK04_02210518
+ arm_func_end MOD04_021DDEE0
+
+ .section .data
+
+ .global UNK04_0220D280
+UNK04_0220D280: ; 0x0220D280
+ .asciz "https://nas.test.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220D2A8
+UNK04_0220D2A8: ; 0x0220D2A8
+ .asciz "https://nas.dev.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220D2CC
+UNK04_0220D2CC: ; 0x0220D2CC
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210518
+UNK04_02210518: ; 0x02210518
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DDF40.s b/arm9/modules/04/asm/mod04_021DDF40.s
new file mode 100644
index 00000000..6be2d80a
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DDF40.s
@@ -0,0 +1,291 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DDF40
+MOD04_021DDF40: ; 0x021DDF40
+ ldr ip, _021DDF48 ; =MOD04_021D9974
+ bx ip
+ .align 2, 0
+_021DDF48: .word MOD04_021D9974
+ arm_func_end MOD04_021DDF40
+
+ arm_func_start MOD04_021DDF4C
+MOD04_021DDF4C: ; 0x021DDF4C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c4
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #0x1c4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ addeq sp, sp, #0x1c4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD04_021D988C
+ cmp r0, #0
+ beq _021DDFA4
+ cmp r0, #0x14
+ beq _021DDFE0
+ cmp r0, #0x15
+ beq _021DDFB0
+ b _021DE010
+_021DDFA4:
+ add sp, sp, #0x1c4
+ mov r0, #2
+ ldmfd sp!, {pc}
+_021DDFB0:
+ bl MOD04_021D991C
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r2, _021DE058 ; =0x00001E1C
+ ldr r1, [r0]
+ mov r0, #4
+ bl MOD04_021DD904
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #0x1c4
+ mov r0, #3
+ ldmfd sp!, {pc}
+_021DDFE0:
+ bl MOD04_021D991C
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r2, _021DE058 ; =0x00001E1C
+ ldr r1, [r0]
+ mov r0, #4
+ bl MOD04_021DD904
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #0x1c4
+ mov r0, #5
+ ldmfd sp!, {pc}
+_021DE010:
+ add r0, sp, #0
+ bl MOD04_021D97F8
+ bl MOD04_021D991C
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r2, _021DE058 ; =0x00001E1C
+ ldr r1, [r0]
+ mov r0, #4
+ bl MOD04_021DD904
+ ldr r1, [sp]
+ ldr r2, _021DE054 ; =UNK04_0221051C
+ mov r3, #0
+ mov r0, #2
+ str r3, [r2]
+ bl MOD04_021DD6B0
+ mov r0, #4
+ add sp, sp, #0x1c4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DE054: .word UNK04_0221051C
+_021DE058: .word 0x00001E1C
+ arm_func_end MOD04_021DDF4C
+
+ arm_func_start MOD04_021DE05C
+MOD04_021DE05C: ; 0x021DE05C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DE130 ; =UNK04_0221051C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DE078
+ bl OS_Terminate
+_021DE078:
+ ldr r1, _021DE134 ; =0x00001E1C
+ mov r0, #4
+ bl MOD04_021DD944
+ ldr r1, _021DE130 ; =UNK04_0221051C
+ cmp r0, #0
+ str r0, [r1]
+ bne _021DE0AC
+ ldr r1, _021DE138 ; =0xFFFFB17C
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #0
+ ldmfd sp!, {pc}
+_021DE0AC:
+ ldr r2, _021DE134 ; =0x00001E1C
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _021DE130 ; =UNK04_0221051C
+ ldr r1, _021DE13C ; =0x00001C44
+ ldr r2, [r0]
+ ldr r0, _021DE140 ; =UNK04_0220D2EC
+ add r1, r2, r1
+ mov r2, #9
+ bl MI_CpuCopy8
+ ldr r1, _021DE130 ; =UNK04_0221051C
+ ldr r2, _021DE144 ; =MOD04_021DD944
+ ldr r0, [r1]
+ ldr r3, _021DE148 ; =MOD04_021DD904
+ add r0, r0, #0x1000
+ str r2, [r0, #0xc50]
+ ldr r0, [r1]
+ ldr r2, _021DE14C ; =0x00001C10
+ add r0, r0, #0x1000
+ str r3, [r0, #0xc54]
+ ldr r1, [r1]
+ add r0, r1, r2
+ bl MOD04_021D9ACC
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ ldr r1, _021DE138 ; =0xFFFFB17C
+ mov r0, #9
+ bl MOD04_021DD6B0
+ mov r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DE130: .word UNK04_0221051C
+_021DE134: .word 0x00001E1C
+_021DE138: .word 0xFFFFB17C
+_021DE13C: .word 0x00001C44
+_021DE140: .word UNK04_0220D2EC
+_021DE144: .word MOD04_021DD944
+_021DE148: .word MOD04_021DD904
+_021DE14C: .word 0x00001C10
+ arm_func_end MOD04_021DE05C
+
+ arm_func_start MOD04_021DE150
+MOD04_021DE150: ; 0x021DE150
+ stmdb sp!, {r4, lr}
+ bl MOD04_021DCF00
+ mov r4, r0
+ sub r0, r4, #3
+ cmp r0, #2
+ bhi _021DE16C
+ bl MOD04_021DD26C
+_021DE16C:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DE150
+
+ 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 ; =MOD04_021DD944
+ ldr r1, _021DE1F0 ; =MOD04_021DD904
+ bl MOD04_021DD2C4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ mov r0, r5
+ bl strlen
+ cmp r0, #0
+ bne _021DE1C0
+ ldr r0, _021DE1F4 ; =UNK04_0220D2F0
+ mov r1, r4
+ bl MOD04_021DCFFC
+ b _021DE1CC
+_021DE1C0:
+ mov r0, r5
+ mov r1, r4
+ bl MOD04_021DCFFC
+_021DE1CC:
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #1
+ ldmneia sp!, {r4, r5, pc}
+ bl MOD04_021DD26C
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DE1EC: .word MOD04_021DD944
+_021DE1F0: .word MOD04_021DD904
+_021DE1F4: .word UNK04_0220D2F0
+ arm_func_end MOD04_021DE174
+
+ arm_func_start MOD04_021DE1F8
+MOD04_021DE1F8: ; 0x021DE1F8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021DE2C4 ; =UNK04_022104F8
+ mov r5, r0
+ ldr r2, [r2]
+ mov r4, r1
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ bl RTC_GetDate
+ cmp r0, #0
+ bne _021DE23C
+ mov r0, r4
+ bl RTC_GetTime
+ cmp r0, #0
+ beq _021DE248
+_021DE23C:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DE248:
+ mov r0, r5
+ mov r1, r4
+ bl RTC_ConvertDateTimeToSecond
+ mvn r2, #0
+ cmp r1, r2
+ cmpeq r0, r2
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, _021DE2C8 ; =UNK04_022104FC
+ mov ip, #0
+ ldr lr, [r2]
+ ldr r3, [r2, #4]
+ subs r2, r0, lr
+ sbc r3, r1, r3
+ subs r0, r2, ip
+ sbcs r0, r3, ip
+ blt _021DE2A0
+ ldr r0, _021DE2CC ; =0xBC19137F
+ subs r0, r0, r2
+ sbcs r0, ip, r3
+ bge _021DE2AC
+_021DE2A0:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DE2AC:
+ mov r0, r5
+ mov r1, r4
+ bl RTC_ConvertSecondToDateTime
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DE2C4: .word UNK04_022104F8
+_021DE2C8: .word UNK04_022104FC
+_021DE2CC: .word 0xBC19137F
+ arm_func_end MOD04_021DE1F8
+
+ .section .data
+
+ .global UNK04_0220D2EC
+UNK04_0220D2EC: ; 0x0220D2EC
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D2F0
+UNK04_0220D2F0: ; 0x0220D2F0
+ .asciz "0000"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_0221051C
+UNK04_0221051C: ; 0x0221051C
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DE2D0.s b/arm9/modules/04/asm/mod04_021DE2D0.s
new file mode 100644
index 00000000..27ad8bc1
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DE2D0.s
@@ -0,0 +1,482 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DE2D0
+MOD04_021DE2D0: ; 0x021DE2D0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ 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 MOD04_02207330
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021DE2D0
+
+ arm_func_start MOD04_021DE308
+MOD04_021DE308: ; 0x021DE308
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+ bl MOD04_02207158
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DE308
+
+ arm_func_start MOD04_021DE330
+MOD04_021DE330: ; 0x021DE330
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ 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 MOD04_0220733C
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DE330
+
+ arm_func_start MOD04_021DE364
+MOD04_021DE364: ; 0x021DE364
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, #0xb0
+ mul r2, r4, r0
+ mov r0, r6
+ mov r1, #0
+ bl MI_CpuFill8
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD04_022074EC
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DE364
+
+ arm_func_start MOD04_021DE3AC
+MOD04_021DE3AC: ; 0x021DE3AC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ movne r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, r4
+ bl MOD04_022077A8
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DE3AC
+
+ arm_func_start MOD04_021DE3D0
+MOD04_021DE3D0: ; 0x021DE3D0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ 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 MOD04_022069DC
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DE3D0
+
+ arm_func_start MOD04_021DE404
+MOD04_021DE404: ; 0x021DE404
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DE454 ; =UNK04_02210520
+ ldr r2, [r1]
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ str r0, [r2, #4]
+ ldr r0, [r1]
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ bne _021DE440
+ bl MOD04_021DE730
+ b _021DE448
+_021DE440:
+ ldr r0, _021DE458 ; =MOD04_021DE730
+ bl MOD04_02206E6C
+_021DE448:
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DE454: .word UNK04_02210520
+_021DE458: .word MOD04_021DE730
+ arm_func_end MOD04_021DE404
+
+ 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 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 MOD04_021DE884
+ ldr r2, _021DE568 ; =UNK04_02210520
+ mov r1, #0
+ str r0, [r2]
+ str r1, [r0, #0x48]
+ ldr r0, [r2]
+ mov r2, #0xa80
+ bl MI_CpuFill8
+ ldr r0, _021DE568 ; =UNK04_02210520
+ mov r1, r5
+ ldr r3, [r0]
+ mov r2, #0x1f
+ str r6, [r3]
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl strncpy
+ ldr r0, _021DE568 ; =UNK04_02210520
+ mov r1, r4
+ ldr r0, [r0]
+ mov r2, #0x1f
+ add r0, r0, #0x28
+ bl strncpy
+ ldr r1, _021DE568 ; =UNK04_02210520
+ ldr r0, _021DE56C ; =UNK04_0220D2F8
+ ldr r1, [r1]
+ add r1, r1, #0x4c
+ bl MOD04_021DE174
+ cmp r0, #0
+ bne _021DE520
+ ldr r0, _021DE568 ; =UNK04_02210520
+ ldr r0, [r0]
+ bl MOD04_021DE86C
+ ldr r1, _021DE568 ; =UNK04_02210520
+ mov r0, #0
+ str r0, [r1]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_021DE520:
+ ldr r0, _021DE568 ; =UNK04_02210520
+ mov r2, #0x800
+ ldr r0, [r0]
+ ldr r1, _021DE570 ; =MOD04_021DE574
+ add r0, r0, #0x9c0
+ mov r3, r0
+ str r2, [sp]
+ mov ip, #0x10
+ mov r2, #0
+ str ip, [sp, #4]
+ bl OS_CreateThread
+ ldr r0, _021DE568 ; =UNK04_02210520
+ ldr r0, [r0]
+ add r0, r0, #0x9c0
+ bl OS_WakeupThreadDirect
+ mov r0, #1
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DE568: .word UNK04_02210520
+_021DE56C: .word UNK04_0220D2F8
+_021DE570: .word MOD04_021DE574
+ arm_func_end MOD04_021DE45C
+
+ arm_func_start MOD04_021DE574
+MOD04_021DE574: ; 0x021DE574
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x2a4
+ mov r7, #0
+ mov r6, #6
+ mvn r5, #0
+ mov r4, #0x64
+_021DE58C:
+ bl MOD04_021DE150
+ cmp r0, #3
+ bne _021DE6AC
+ ldr r0, _021DE718 ; =UNK04_02210520
+ ldr r5, [r0]
+ add r0, r5, #0x50
+ bl strlen
+ mov r4, r0
+ ldr r0, _021DE71C ; =UNK04_0220D300
+ bl strlen
+ add r0, r4, r0
+ cmp r0, #0xff
+ bls _021DE5D8
+ mov r0, #0
+ mov r1, #8
+ mvn r2, #0
+ bl MOD04_021DE774
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE5D8:
+ ldr r2, _021DE720 ; =UNK04_0220D314
+ add r0, sp, #0x10
+ add r3, r5, #0x50
+ mov r1, #0x100
+ bl OS_SNPrintf
+ ldr r0, _021DE718 ; =UNK04_02210520
+ ldr r4, [r0]
+ add r0, r4, #0x91
+ bl strlen
+ mov r1, r0
+ add r2, sp, #0x110
+ add r0, r4, #0x91
+ mov r3, #0x190
+ bl MOD04_021DD4FC
+ cmp r0, #0
+ bge _021DE630
+ mov r0, #0
+ mov r1, #8
+ mvn r2, #0
+ bl MOD04_021DE774
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE630:
+ ldr r0, _021DE718 ; =UNK04_02210520
+ ldr r4, _021DE724 ; =MOD04_021DE774
+ ldr r2, [r0]
+ ldr r0, _021DE728 ; =MOD04_021DE884
+ add r1, r2, #8
+ str r1, [sp]
+ add r1, r2, #0x28
+ str r1, [sp, #4]
+ ldr r1, _021DE72C ; =MOD04_021DE86C
+ add r2, sp, #0x10
+ add r3, sp, #0x110
+ str r4, [sp, #8]
+ bl MOD04_02206EFC
+ cmp r0, #0
+ bne _021DE684
+ mov r0, #0
+ mov r1, #8
+ mvn r2, #0
+ bl MOD04_021DE774
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE684:
+ ldr r1, _021DE718 ; =UNK04_02210520
+ mov r0, #0
+ ldr r3, [r1]
+ mov r4, #1
+ mov r1, r0
+ mvn r2, #0
+ str r4, [r3, #0x48]
+ 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 MOD04_021DD808
+ ldr r1, [sp, #0xc]
+ mov r0, #0xe
+ bl MOD04_021DD6B0
+ ldr r1, _021DE718 ; =UNK04_02210520
+ mov r0, #0
+ ldr r2, [r1]
+ mov r1, #3
+ ldr r3, [r2]
+ mvn r2, #0
+ blx r3
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE6EC:
+ cmp r0, #5
+ bne _021DE704
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD04_021DE774
+_021DE704:
+ mov r0, r4
+ bl OS_Sleep
+ b _021DE58C
+ arm_func_end MOD04_021DE574
+
+ arm_func_start MOD04_021DE710
+MOD04_021DE710: ; 0x021DE710
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE718: .word UNK04_02210520
+_021DE71C: .word UNK04_0220D300
+_021DE720: .word UNK04_0220D314
+_021DE724: .word MOD04_021DE774
+_021DE728: .word MOD04_021DE884
+_021DE72C: .word MOD04_021DE86C
+ arm_func_end MOD04_021DE710
+
+ arm_func_start MOD04_021DE730
+MOD04_021DE730: ; 0x021DE730
+ stmdb sp!, {r4, lr}
+ ldr r0, _021DE770 ; =UNK04_02210520
+ ldr r0, [r0]
+ add r0, r0, #0x9c0
+ bl OS_JoinThread
+ ldr r0, _021DE770 ; =UNK04_02210520
+ ldr r0, [r0]
+ ldr r4, [r0, #4]
+ bl MOD04_021DE86C
+ ldr r0, _021DE770 ; =UNK04_02210520
+ mov r1, #0
+ str r1, [r0]
+ cmp r4, #0
+ ldmeqia sp!, {r4, pc}
+ blx r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DE770: .word UNK04_02210520
+ arm_func_end MOD04_021DE730
+
+ arm_func_start MOD04_021DE774
+MOD04_021DE774: ; 0x021DE774
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r5, r1
+ mov r6, r0
+ mov r4, r2
+ bne _021DE79C
+ ldr r3, _021DE854 ; =UNK04_02210520
+ ldr r3, [r3]
+ ldr r3, [r3]
+ blx r3
+ ldmia sp!, {r4, r5, r6, pc}
+_021DE79C:
+ cmp r5, #8
+ addls pc, pc, r5, lsl #2
+ b _021DE830
+_021DE7A8: ; jump table
+ b _021DE830 ; case 0
+ b _021DE7CC ; case 1
+ b _021DE7DC ; case 2
+ b _021DE7E4 ; case 3
+ b _021DE7F4 ; case 4
+ b _021DE804 ; case 5
+ b _021DE834 ; case 6
+ b _021DE818 ; case 7
+ b _021DE820 ; case 8
+_021DE7CC:
+ ldr r1, _021DE858 ; =0xFFFF86E7
+ mov r0, #9
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE7DC:
+ bl OS_Terminate
+ b _021DE834
+_021DE7E4:
+ ldr r1, _021DE85C ; =0xFFFF86D4
+ mov r0, #0xf
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE7F4:
+ ldr r1, _021DE860 ; =0xFFFF86CA
+ mov r0, #0xe
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE804:
+ ldr r1, _021DE864 ; =0xFFFF86E8
+ mov r0, #0xe
+ sub r1, r1, r4
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE818:
+ bl OS_Terminate
+ b _021DE834
+_021DE820:
+ ldr r1, _021DE868 ; =0xFFFF86DF
+ mov r0, #9
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE830:
+ bl OS_Terminate
+_021DE834:
+ ldr r1, _021DE854 ; =UNK04_02210520
+ mov r0, r6
+ ldr r2, [r1]
+ mov r1, r5
+ ldr r3, [r2]
+ mov r2, r4
+ blx r3
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DE854: .word UNK04_02210520
+_021DE858: .word 0xFFFF86E7
+_021DE85C: .word 0xFFFF86D4
+_021DE860: .word 0xFFFF86CA
+_021DE864: .word 0xFFFF86E8
+_021DE868: .word 0xFFFF86DF
+ arm_func_end MOD04_021DE774
+
+ 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 MOD04_021DD904
+ arm_func_end MOD04_021DE86C
+
+ 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 MOD04_021DD924
+ arm_func_end MOD04_021DE884
+
+ .section .data
+
+ .global UNK04_0220D2F8
+UNK04_0220D2F8: ; 0x0220D2F8
+ .asciz "9000"
+
+ .balign 4, 0
+ .global UNK04_0220D300
+UNK04_0220D300: ; 0x0220D300
+ .asciz "https:///download"
+
+ .balign 4, 0
+ .global UNK04_0220D314
+UNK04_0220D314: ; 0x0220D314
+ .asciz "https://%s/download"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210520
+UNK04_02210520: ; 0x02210520
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DE89C.s b/arm9/modules/04/asm/mod04_021DE89C.s
new file mode 100644
index 00000000..f4ff2977
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DE89C.s
@@ -0,0 +1,236 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DE89C
+MOD04_021DE89C: ; 0x021DE89C
+ ldrh r1, [r0]
+ mov r2, #0
+ cmp r1, #0
+ beq _021DE8C0
+_021DE8AC:
+ add r2, r2, #1
+ mov r1, r2, lsl #1
+ ldrh r1, [r0, r1]
+ cmp r1, #0
+ bne _021DE8AC
+_021DE8C0:
+ mov r0, r2
+ bx lr
+ arm_func_end MOD04_021DE89C
+
+ arm_func_start MOD04_021DE8C8
+MOD04_021DE8C8: ; 0x021DE8C8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r2, _021DE9E4 ; =UNK04_02210524
+ mov r1, #0
+ ldr r3, [r2, #4]
+ ldr ip, [r2]
+ cmp r3, r1
+ mov r4, r0
+ cmpeq ip, r1
+ bne _021DE98C
+ ldr r0, [r2, #0xc]
+ ldr r3, [r2, #8]
+ cmp r0, r1
+ cmpeq r3, r1
+ bne _021DE98C
+ ldr r0, [r2, #0x14]
+ ldr r2, [r2, #0x10]
+ cmp r0, r1
+ cmpeq r2, r1
+ bne _021DE98C
+ add r0, sp, #0
+ bl OS_GetMacAddress
+ bl OS_GetTick
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ mov lr, r2, lsr #0x18
+ mov r2, r1, lsl #0x18
+ orr lr, lr, r3, lsl #8
+ mvn r1, #0xff000000
+ mov ip, r3, lsr #0x18
+ and r1, lr, r1
+ orr r3, r1, r0, lsl #24
+ and r1, ip, #0
+ orr r2, r2, r0, lsr #8
+ orr r1, r1, r2
+ str r1, [sp, #4]
+ ldr ip, _021DE9E4 ; =UNK04_02210524
+ add r0, sp, #0
+ str r3, [sp]
+ ldmia r0, {r2, r3}
+ stmia ip, {r2, r3}
+ ldr r3, _021DE9E8 ; =0x6C078965
+ ldr r2, _021DE9EC ; =0x5D588B65
+ ldr r1, _021DE9F0 ; =0x00269EC3
+ mov r0, #0
+ str r3, [ip, #8]
+ str r2, [ip, #0xc]
+ str r1, [ip, #0x10]
+ str r0, [ip, #0x14]
+_021DE98C:
+ ldr r1, _021DE9E4 ; =UNK04_02210524
+ ldr r3, [r1, #8]
+ ldr r2, [r1]
+ ldr r0, [r1, #4]
+ umull lr, ip, r3, r2
+ mla ip, r3, r0, ip
+ ldr r0, [r1, #0xc]
+ ldr r3, [r1, #0x10]
+ mla ip, r0, r2, ip
+ adds r2, r3, lr
+ ldr r0, [r1, #0x14]
+ str r2, [r1]
+ adc r0, r0, ip
+ cmp r4, #0
+ str r0, [r1, #4]
+ movne r3, #0
+ umullne r2, r1, r0, r4
+ mlane r1, r0, r3, r1
+ mlane r1, r3, r4, r1
+ movne r0, r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DE9E4: .word UNK04_02210524
+_021DE9E8: .word 0x6C078965
+_021DE9EC: .word 0x5D588B65
+_021DE9F0: .word 0x00269EC3
+ arm_func_end MOD04_021DE8C8
+
+ arm_func_start MOD04_021DE9F4
+MOD04_021DE9F4: ; 0x021DE9F4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ movs r4, r1
+ mov r7, r0
+ mov r6, r3
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r0, r2
+ mov r1, r6
+ bl strchr
+ movs r5, r0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+_021DEA30:
+ mov r0, r7
+ bl strlen
+ mov r2, r0
+ mov r1, r7
+ add r0, r5, #1
+ bl strncmp
+ cmp r0, #0
+ bne _021DEA68
+ mov r0, r7
+ bl strlen
+ add r0, r0, r5
+ ldrsb r0, [r0, #1]
+ cmp r6, r0
+ beq _021DEAA4
+_021DEA68:
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ cmp r0, #0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r1, r6
+ add r0, r0, #1
+ bl strchr
+ movs r5, r0
+ bne _021DEA30
+ add sp, sp, #4
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DEAA4:
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ movs r5, r0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ cmp r0, #0
+ addne r1, r5, #1
+ subne r6, r0, r1
+ bne _021DEAE8
+ add r0, r5, #1
+ bl strlen
+ mov r6, r0
+_021DEAE8:
+ mov r0, r4
+ mov r2, r6
+ add r1, r5, #1
+ bl strncpy
+ mov r1, #0
+ mov r0, r6
+ strb r1, [r4, r6]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ arm_func_end MOD04_021DE9F4
+
+ arm_func_start MOD04_021DEB0C
+MOD04_021DEB0C: ; 0x021DEB0C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r2
+ mov r7, r0
+ mov r6, r1
+ mov r4, r3
+ mov r0, r5
+ mov r1, #0
+ bl strchr
+ mov r2, r0
+ mov r0, r7
+ mov r1, r6
+ mov r3, r4
+ bl MOD04_021DEB54
+ mov r0, r5
+ bl strlen
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ arm_func_end MOD04_021DEB0C
+
+ arm_func_start MOD04_021DEB54
+MOD04_021DEB54: ; 0x021DEB54
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x10
+ str r0, [sp]
+ mov r4, r2
+ str r3, [sp, #4]
+ str r1, [sp, #8]
+ ldr r2, _021DEB8C ; =UNK04_0220D328
+ mov r0, r4
+ mov r1, #0x1000
+ bl OS_SNPrintf
+ mov r0, r4
+ bl strlen
+ add sp, sp, #0x10
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DEB8C: .word UNK04_0220D328
+ arm_func_end MOD04_021DEB54
+
+ .section .data
+
+ .global UNK04_0220D328
+UNK04_0220D328: ; 0x0220D328
+ .asciz "%c%s%c%s"
+
+ .balign 4, 0
+
+ .section .bss
+
+ .global UNK04_02210524
+UNK04_02210524: ; 0x02210524
+ .space 0x18
diff --git a/arm9/modules/04/asm/mod04_021DEB90.s b/arm9/modules/04/asm/mod04_021DEB90.s
new file mode 100644
index 00000000..f0917879
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DEB90.s
@@ -0,0 +1,2044 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DEB90
+MOD04_021DEB90: ; 0x021DEB90
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD43C
+ bl MOD04_021EFB28
+ ldr r2, _021DEBCC ; =UNK04_02210540
+ ldr r1, _021DEBD0 ; =0xFFFE8515
+ str r0, [r2]
+ mov r0, #9
+ bl MOD04_021DD6B0
+ ldr r0, _021DEBD4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DEBCC: .word UNK04_02210540
+_021DEBD0: .word 0xFFFE8515
+_021DEBD4: .word UNK04_0221053C
+ arm_func_end MOD04_021DEB90
+
+ arm_func_start MOD04_021DEBD8
+MOD04_021DEBD8: ; 0x021DEBD8
+ ldr ip, _021DEBE0 ; =MOD04_021EAC1C
+ bx ip
+ .align 2, 0
+_021DEBE0: .word MOD04_021EAC1C
+ arm_func_end MOD04_021DEBD8
+
+ 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 MOD04_021E852C
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp sb, #4
+ addls pc, pc, sb, lsl #2
+ b _021DEC48
+_021DEC18: ; jump table
+ b _021DEC2C ; case 0
+ b _021DEC2C ; case 1
+ b _021DEC34 ; case 2
+ b _021DEC34 ; case 3
+ b _021DEC40 ; case 4
+_021DEC2C:
+ mov r4, r7
+ b _021DEC48
+_021DEC34:
+ mov r4, #6
+ ldr r6, _021DEF4C ; =0xFFFFE250
+ b _021DEC48
+_021DEC40:
+ ldr r6, _021DEF50 ; =0xFFFFE24F
+ mov r4, #9
+_021DEC48:
+ cmp r4, #0
+ bne _021DED00
+ mov r0, fp
+ bl MOD04_021FD3C4
+ movs r7, r0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldrb r8, [r7, #1]
+ ldr r1, [r0]
+ mov r5, #1
+ mov r0, r5,lsl r8
+ ldr r1, [r1, #0x644]
+ ands r0, r1, r0
+ mov r0, r8
+ moveq r5, #0
+ bl MOD04_021EA9D8
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ bne _021DECA8
+ cmp sb, #0
+ beq _021DECBC
+_021DECA8:
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DECC0
+ cmp r8, #0
+ bne _021DECC0
+_021DECBC:
+ mov sl, #1
+_021DECC0:
+ mov r0, r8
+ bl MOD04_021DF56C
+ ldr r1, _021DEF54 ; =UNK04_0221053C
+ ldrb r7, [r7]
+ ldr r2, _021DEF58 ; =UNK04_02210544
+ mov fp, #0
+ ldr r3, [r1]
+ str fp, [r2, r7, lsl #2]
+ ldrb r2, [r3, #0x361]
+ mov r7, r0
+ sub r0, r2, #1
+ strb r0, [r3, #0x361]
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x368]
+ sub r0, r0, #1
+ strb r0, [r1, #0x368]
+_021DED00:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DED58
+ ldr r0, [r1, #0x24]
+ cmp r0, #6
+ bne _021DED58
+ cmp r5, #0
+ bne _021DED58
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r4, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_021E85D4
+ mov r0, r7
+ 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 MOD04_021E8A74
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r4, #0
+ beq _021DED90
+ mov r0, r4
+ mov r1, r6
+ bl MOD04_021DD6B0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DED90:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEE04
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DEDBC
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DEE04
+_021DEDBC:
+ ldr r2, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x361]
+ add r6, r0, #2
+ add r3, r1, r6, lsl #2
+ ldr r3, [r3, #0x448]
+ cmp r3, #0
+ beq _021DEE04
+ add r3, r1, r6
+ ldrb r3, [r3, #0x624]
+ add r0, r0, #1
+ add r0, r1, r0
+ strb r3, [r0, #0x624]
+ ldr r0, [r2]
+ ldrb r1, [r0, #0x361]
+ add r0, r1, #1
+ add r1, r1, #3
+ bl MOD04_021E8830
+_021DEE04:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ bne _021DEE4C
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEE2C
+ bl MOD04_021E85D4
+ b _021DEE68
+_021DEE2C:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ bne _021DEE68
+ ldr r1, _021DEF5C ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ b _021DEE68
+_021DEE4C:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ bne _021DEE68
+ ldr r1, _021DEF5C ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+_021DEE68:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #0
+ beq _021DEE88
+ ldrb r0, [r1, #0x369]
+ cmp r0, #1
+ bne _021DEEA4
+_021DEE88:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x368]
+ strb r1, [r2, #0x36a]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x364]
+ bl MOD04_02202308
+_021DEEA4:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r6, [r0]
+ ldr r0, [r6, #0x90]
+ cmp r0, #0
+ beq _021DEF00
+ cmp r5, #0
+ beq _021DEF00
+ cmp sb, #0
+ moveq r5, #1
+ mov r0, r7
+ movne r5, #0
+ bl MOD04_021E1F18
+ str r0, [sp]
+ ldr r1, [r6, #0x94]
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ str r1, [sp, #4]
+ ldr r1, [r0]
+ mov r0, r4
+ ldr r4, [r1, #0x90]
+ mov r1, r5
+ mov r2, sl
+ mov r3, r8
+ blx r4
+_021DEF00:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEF24
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DEF24:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_02200D6C
+ bl MOD04_021E8DC0
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DEF4C: .word 0xFFFFE250
+_021DEF50: .word 0xFFFFE24F
+_021DEF54: .word UNK04_0221053C
+_021DEF58: .word UNK04_02210544
+_021DEF5C: .word UNK04_0220D334
+ arm_func_end MOD04_021DEBE4
+
+ arm_func_start MOD04_021DEF60
+MOD04_021DEF60: ; 0x021DEF60
+ ldr ip, _021DEF68 ; =MOD04_021EAC5C
+ bx ip
+ .align 2, 0
+_021DEF68: .word MOD04_021EAC5C
+ arm_func_end MOD04_021DEF60
+
+ arm_func_start MOD04_021DEF6C
+MOD04_021DEF6C: ; 0x021DEF6C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ add r4, sp, #0
+ mov r3, #0
+ strb r3, [r4]
+ strb r3, [r4, #1]
+ strb r3, [r4, #2]
+ strb r3, [r4, #3]
+ strb r3, [r4, #4]
+ strb r3, [r4, #5]
+ strb r3, [r4, #6]
+ strb r3, [r4, #7]
+ strb r3, [r4, #8]
+ strb r3, [r4, #9]
+ strb r3, [r4, #0xa]
+ mov r5, r1
+ strb r3, [r4, #0xb]
+ ldr r4, [r5, #8]
+ mov r6, r0
+ bl MOD04_021E2068
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0C8 ; =UNK04_0220D338
+ bl strlen
+ mov r2, r0
+ ldr r1, _021DF0C8 ; =UNK04_0220D338
+ mov r0, r4
+ bl memcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0C8 ; =UNK04_0220D338
+ bl strlen
+ add r4, r4, r0
+ mov r0, r4
+ mov r1, #0x76
+ bl strchr
+ sub r7, r0, r4
+ add r0, sp, #0
+ mov r1, r4
+ mov r2, r7
+ bl strncpy
+ cmp r7, #0xa
+ addhi sp, sp, #0xc
+ ldmhiia sp!, {r4, r5, r6, r7, pc}
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ cmp r0, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0CC ; =UNK04_0220D340
+ add r1, r7, #1
+ add r4, r4, r1
+ bl strlen
+ mov r2, r0
+ ldr r1, _021DF0CC ; =UNK04_0220D340
+ mov r0, r4
+ bl memcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0D0 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #5
+ beq _021DF0A8
+ cmp r0, #6
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF0A8
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+_021DF0A8:
+ ldr r0, _021DF0CC ; =UNK04_0220D340
+ bl strlen
+ add r2, r4, r0
+ ldr r1, [r5]
+ mov r0, r6
+ bl MOD04_021E8EF4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF0C8: .word UNK04_0220D338
+_021DF0CC: .word UNK04_0220D340
+_021DF0D0: .word UNK04_0221053C
+ arm_func_end MOD04_021DEF6C
+
+ arm_func_start MOD04_021DF0D4
+MOD04_021DF0D4: ; 0x021DF0D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, [r1, #4]
+ ldr r0, _021DF120 ; =0x00000603
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DF124 ; =0x00000901
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DF128 ; =0x00000B01
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #3
+ bl MOD04_021DF414
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF120: .word 0x00000603
+_021DF124: .word 0x00000901
+_021DF128: .word 0x00000B01
+ arm_func_end MOD04_021DF0D4
+
+ arm_func_start MOD04_021DF12C
+MOD04_021DF12C: ; 0x021DF12C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ movs r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bne _021DF174
+ cmp r6, #0
+ beq _021DF174
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x4f4]
+ cmp r0, #0
+ bne _021DF1D8
+ bl MOD04_021E8DC0
+ mov r0, #3
+ bl MOD04_021DF5CC
+ b _021DF1D8
+_021DF174:
+ cmp r7, #0
+ bne _021DF1D8
+ mov r0, #6
+ bl MOD04_021DF5CC
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ mov r0, #0
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x361]
+ cmp r1, #0
+ blt _021DF1D8
+ ldr r2, [r3, #0x64]
+_021DF1A0:
+ add r1, r3, r0, lsl #2
+ ldr r1, [r1, #0x448]
+ cmp r2, r1
+ bne _021DF1C8
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r1]
+ add r0, r1, r0
+ ldrb r0, [r0, #0x624]
+ strb r0, [r1, #0x2c]
+ b _021DF1D8
+_021DF1C8:
+ ldrb r1, [r3, #0x361]
+ add r0, r0, #1
+ cmp r0, r1
+ ble _021DF1A0
+_021DF1D8:
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r0, _021DF2B0 ; =0x00000624
+ ldr r2, [r1]
+ ldrb r1, [r2, #0x361]
+ add r0, r2, r0
+ add r1, r1, #1
+ bl MOD04_021DF530
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r1]
+ str r0, [r1, #0x644]
+ bl MOD04_021E8780
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF224
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DF258
+_021DF224:
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [sp, #0x20]
+ ldr r3, [r0]
+ mov r0, r7
+ str r1, [sp]
+ ldr r2, [r3, #0x8c]
+ mov r1, r6
+ str r2, [sp, #4]
+ ldr r6, [r3, #0x88]
+ mov r2, r5
+ mov r3, r4
+ blx r6
+ b _021DF26C
+_021DF258:
+ ldr r2, [r1, #0x84]
+ ldr r3, [r1, #0x80]
+ mov r0, r7
+ mov r1, r6
+ blx r3
+_021DF26C:
+ cmp r7, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF2AC: .word UNK04_0221053C
+_021DF2B0: .word 0x00000624
+ arm_func_end MOD04_021DF12C
+
+ arm_func_start MOD04_021DF2B4
+MOD04_021DF2B4: ; 0x021DF2B4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021DF300 ; =UNK04_0221053C
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ ldr r0, [r0, #0x28]
+ cmp r0, #4
+ beq _021DF2DC
+ bl MOD04_021DF5CC
+_021DF2DC:
+ ldr r1, _021DF300 ; =UNK04_0221053C
+ mov r0, r5
+ ldr r3, [r1]
+ mov r1, r4
+ ldr r2, [r3, #0x7c]
+ ldr r3, [r3, #0x78]
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DF300: .word UNK04_0221053C
+ arm_func_end MOD04_021DF2B4
+
+ arm_func_start MOD04_021DF304
+MOD04_021DF304: ; 0x021DF304
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ mov r4, r1
+ bne _021DF334
+ ldr r1, _021DF36C ; =UNK04_0221053C
+ mov r0, #3
+ ldr r1, [r1]
+ str r4, [r1, #0x64]
+ bl MOD04_021DF5CC
+ bl MOD04_021E1ED4
+ b _021DF33C
+_021DF334:
+ mov r0, #0
+ bl MOD04_021DF5CC
+_021DF33C:
+ ldr r0, _021DF36C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r3, [r0, #0x70]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, [r0, #0x74]
+ mov r0, r5
+ mov r1, r4
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DF36C: .word UNK04_0221053C
+ arm_func_end MOD04_021DF304
+
+ arm_func_start MOD04_021DF370
+MOD04_021DF370: ; 0x021DF370
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #7
+ addls pc, pc, r4, lsl #2
+ b _021DF3F4
+_021DF38C: ; jump table
+ b _021DF3F4 ; case 0
+ b _021DF3AC ; case 1
+ b _021DF3B8 ; case 2
+ b _021DF3C8 ; case 3
+ b _021DF3D4 ; case 4
+ b _021DF3B8 ; case 5
+ b _021DF3E0 ; case 6
+ b _021DF3EC ; case 7
+_021DF3AC:
+ mov r0, #9
+ mvn r2, #0
+ b _021DF3F4
+_021DF3B8:
+ mov r0, #0
+ mov r2, r0
+ mov r4, r0
+ b _021DF3F4
+_021DF3C8:
+ mov r0, #6
+ mvn r2, #9
+ b _021DF3F4
+_021DF3D4:
+ mov r0, #6
+ mvn r2, #0x1d
+ b _021DF3F4
+_021DF3E0:
+ mov r0, #6
+ mvn r2, #0x45
+ b _021DF3F4
+_021DF3EC:
+ mov r0, #6
+ mvn r2, #0x4f
+_021DF3F4:
+ cmp r0, #0
+ beq _021DF408
+ ldr r1, _021DF410 ; =0xFFFEFA48
+ add r1, r2, r1
+ bl MOD04_021E0EAC
+_021DF408:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DF410: .word 0xFFFEFA48
+ arm_func_end MOD04_021DF370
+
+ arm_func_start MOD04_021DF414
+MOD04_021DF414: ; 0x021DF414
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r6, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r6, #4
+ addls pc, pc, r6, lsl #2
+ b _021DF470
+_021DF430: ; jump table
+ b _021DF470 ; case 0
+ b _021DF444 ; case 1
+ b _021DF450 ; case 2
+ b _021DF45C ; case 3
+ b _021DF468 ; case 4
+_021DF444:
+ mov r4, #9
+ mvn r5, #0
+ b _021DF470
+_021DF450:
+ mov r4, #9
+ mvn r5, #1
+ b _021DF470
+_021DF45C:
+ mov r4, #6
+ mvn r5, #9
+ b _021DF470
+_021DF468:
+ mov r4, #6
+ mvn r5, #0x13
+_021DF470:
+ ldr r0, _021DF51C ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _021DF500
+_021DF488: ; jump table
+ b _021DF500 ; case 0
+ b _021DF4A0 ; case 1
+ b _021DF4B8 ; case 2
+ b _021DF500 ; case 3
+ b _021DF4F4 ; case 4
+ b _021DF4DC ; case 5
+_021DF4A0:
+ ldr r1, _021DF520 ; =0xFFFF11B8
+ mov r0, r4
+ add r5, r5, r1
+ mov r1, r5
+ bl MOD04_021E0EAC
+ b _021DF508
+_021DF4B8:
+ ldr r1, [r1, #0x9c]
+ ldr r0, _021DF520 ; =0xFFFF11B8
+ cmp r1, #1
+ add r5, r5, r0
+ bge _021DF508
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021E0EAC
+ b _021DF508
+_021DF4DC:
+ ldr r1, _021DF524 ; =0xFFFEC398
+ mov r0, r4
+ add r5, r5, r1
+ mov r1, r5
+ bl MOD04_021E8E08
+ b _021DF508
+_021DF4F4:
+ ldr r0, _021DF528 ; =0xFFFEEAA8
+ add r5, r5, r0
+ b _021DF508
+_021DF500:
+ ldr r0, _021DF52C ; =0xFFFE9C88
+ add r5, r5, r0
+_021DF508:
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021E2114
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF51C: .word UNK04_0221053C
+_021DF520: .word 0xFFFF11B8
+_021DF524: .word 0xFFFEC398
+_021DF528: .word 0xFFFEEAA8
+_021DF52C: .word 0xFFFE9C88
+ arm_func_end MOD04_021DF414
+
+ arm_func_start MOD04_021DF530
+MOD04_021DF530: ; 0x021DF530
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov lr, #0
+ mov ip, lr
+ cmp r1, #0
+ ble _021DF560
+ mov r3, #1
+_021DF54C:
+ ldrb r2, [r0, ip]
+ add ip, ip, #1
+ cmp ip, r1
+ orr lr, lr, r3, lsl r2
+ blt _021DF54C
+_021DF560:
+ mov r0, lr
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF530
+
+ arm_func_start MOD04_021DF56C
+MOD04_021DF56C: ; 0x021DF56C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl MOD04_021E874C
+ mov r1, r0
+ cmp r1, #0
+ mov r0, #0
+ ble _021DF5B0
+ ldr r3, [sp]
+_021DF594:
+ ldrb r2, [r3]
+ cmp r4, r2
+ beq _021DF5B0
+ add r0, r0, #1
+ cmp r0, r1
+ add r3, r3, #1
+ blt _021DF594
+_021DF5B0:
+ cmp r0, r1
+ addeq sp, sp, #8
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021E8830
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DF56C
+
+ arm_func_start MOD04_021DF5CC
+MOD04_021DF5CC: ; 0x021DF5CC
+ ldr r1, _021DF5E8 ; =UNK04_0221053C
+ ldr r3, [r1]
+ ldr r2, [r3, #0x24]
+ str r2, [r3, #0x28]
+ ldr r1, [r1]
+ str r0, [r1, #0x24]
+ bx lr
+ .align 2, 0
+_021DF5E8: .word UNK04_0221053C
+ arm_func_end MOD04_021DF5CC
+
+ arm_func_start MOD04_021DF5EC
+MOD04_021DF5EC: ; 0x021DF5EC
+ bx lr
+ arm_func_end MOD04_021DF5EC
+
+ arm_func_start MOD04_021DF5F0
+MOD04_021DF5F0: ; 0x021DF5F0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, #0
+ ldr r4, _021DF634 ; =UNK04_02210544
+_021DF600:
+ ldr r0, [r4, r5, lsl #2]
+ cmp r0, #0
+ beq _021DF620
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ cmp r6, r0
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021DF620:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021DF600
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF634: .word UNK04_02210544
+ arm_func_end MOD04_021DF5F0
+
+ arm_func_start MOD04_021DF638
+MOD04_021DF638: ; 0x021DF638
+ ldr r1, _021DF644 ; =UNK04_022105C4
+ add r0, r1, r0, lsl #3
+ bx lr
+ .align 2, 0
+_021DF644: .word UNK04_022105C4
+ arm_func_end MOD04_021DF638
+
+ arm_func_start MOD04_021DF648
+MOD04_021DF648: ; 0x021DF648
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r1, #0
+ mov ip, #0
+ ble _021DF684
+ ldr r2, _021DF6B8 ; =UNK04_0221053C
+ ldr r3, [r2]
+_021DF664:
+ add r2, r3, ip, lsl #2
+ ldr r2, [r2, #0x448]
+ cmp r0, r2
+ beq _021DF684
+ add r2, ip, #1
+ and ip, r2, #0xff
+ cmp ip, r1
+ blt _021DF664
+_021DF684:
+ cmp ip, r1
+ addge sp, sp, #4
+ movge r0, #0
+ ldmgeia sp!, {pc}
+ ldr r0, _021DF6B8 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, ip
+ ldrb r0, [r0, #0x624]
+ bl MOD04_021DF760
+ bl MOD04_021DF730
+ bl MOD04_021DF6BC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF6B8: .word UNK04_0221053C
+ arm_func_end MOD04_021DF648
+
+ arm_func_start MOD04_021DF6BC
+MOD04_021DF6BC: ; 0x021DF6BC
+ ldr r1, _021DF6C8 ; =UNK04_02210544
+ add r0, r1, r0, lsl #2
+ bx lr
+ .align 2, 0
+_021DF6C8: .word UNK04_02210544
+ arm_func_end MOD04_021DF6BC
+
+ arm_func_start MOD04_021DF6CC
+MOD04_021DF6CC: ; 0x021DF6CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DF6FC ; =UNK04_02210544
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ ldr r1, _021DF700 ; =UNK04_022105C4
+ mov r0, #0
+ mov r2, #0x100
+ bl MIi_CpuClear32
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF6FC: .word UNK04_02210544
+_021DF700: .word UNK04_022105C4
+ arm_func_end MOD04_021DF6CC
+
+ arm_func_start MOD04_021DF704
+MOD04_021DF704: ; 0x021DF704
+ ldr r2, _021DF72C ; =UNK04_02210544
+ mov r0, #0
+_021DF70C:
+ ldr r1, [r2, r0, lsl #2]
+ cmp r1, #0
+ bxeq lr
+ add r0, r0, #1
+ cmp r0, #0x20
+ blt _021DF70C
+ mvn r0, #0
+ bx lr
+ .align 2, 0
+_021DF72C: .word UNK04_02210544
+ arm_func_end MOD04_021DF704
+
+ arm_func_start MOD04_021DF730
+MOD04_021DF730: ; 0x021DF730
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD3C4
+ ldrb r0, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF730
+
+ arm_func_start MOD04_021DF748
+MOD04_021DF748: ; 0x021DF748
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF748
+
+ arm_func_start MOD04_021DF760
+MOD04_021DF760: ; 0x021DF760
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r1, _021DF7BC ; =UNK04_0221053C
+ mov r6, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r4, _021DF7C0 ; =UNK04_02210544
+ mov r5, #0
+_021DF784:
+ ldr r0, [r4, r5, lsl #2]
+ cmp r0, #0
+ beq _021DF7A8
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ cmp r6, r0
+ ldreq r0, _021DF7C0 ; =UNK04_02210544
+ ldreq r0, [r0, r5, lsl #2]
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021DF7A8:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021DF784
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF7BC: .word UNK04_0221053C
+_021DF7C0: .word UNK04_02210544
+ arm_func_end MOD04_021DF760
+
+ arm_func_start MOD04_021DF7C4
+MOD04_021DF7C4: ; 0x021DF7C4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, #0x4000
+ bl MOD04_021DE8C8
+ add r0, r0, #0xc000
+ mov r1, r0, lsl #0x10
+ ldr r3, _021DF87C ; =UNK04_0221053C
+ mov r0, #0
+ mov r2, r0
+ mov r1, r1, lsr #0x10
+ ldr r4, [r3]
+ bl MOD04_021FFEB0
+ ldr r1, _021DF880 ; =MOD04_021DEB90
+ ldr r2, _021DF87C ; =UNK04_0221053C
+ str r1, [sp]
+ mov r1, r0
+ ldr r0, [r2]
+ ldr r2, [r4, #0x14]
+ ldr r3, [r4, #0x18]
+ bl MOD04_021FD71C
+ mov r4, r0
+ bl MOD04_021DF370
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, r4
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r1, _021DF884 ; =MOD04_021E9204
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD6C8
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r1, _021DF888 ; =MOD04_021E9464
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD434
+ mov r0, r4
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DF87C: .word UNK04_0221053C
+_021DF880: .word MOD04_021DEB90
+_021DF884: .word MOD04_021E9204
+_021DF888: .word MOD04_021E9464
+ arm_func_end MOD04_021DF7C4
+
+ arm_func_start MOD04_021DF88C
+MOD04_021DF88C: ; 0x021DF88C
+ ldr r0, _021DF8A4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrne r0, [r0, #0x24]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DF8A4: .word UNK04_0221053C
+ arm_func_end MOD04_021DF88C
+
+ arm_func_start MOD04_021DF8A8
+MOD04_021DF8A8: ; 0x021DF8A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DF8F0 ; =UNK04_0221053C
+ ldr r2, [r1]
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ mov r1, #1
+ mov r1, r1,lsl r0
+ ldr r2, [r2, #0x644]
+ ands r1, r2, r1
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021DF5F0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF8F0: .word UNK04_0221053C
+ arm_func_end MOD04_021DF8A8
+
+ arm_func_start MOD04_021DF8F4
+MOD04_021DF8F4: ; 0x021DF8F4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _021DF954 ; =UNK04_0221053C
+ ldr r3, [r2]
+ cmp r3, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldr r1, _021DF958 ; =0x00000624
+ add r1, r3, r1
+ str r1, [r0]
+ ldr r2, [r2]
+ ldrb r1, [r2, #0x369]
+ cmp r1, #2
+ beq _021DF93C
+ ldrb r1, [r2, #0x369]
+ cmp r1, #3
+ bne _021DF948
+_021DF93C:
+ bl MOD04_021E86A4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DF948:
+ bl MOD04_021E874C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF954: .word UNK04_0221053C
+_021DF958: .word 0x00000624
+ arm_func_end MOD04_021DF8F4
+
+ arm_func_start MOD04_021DF95C
+MOD04_021DF95C: ; 0x021DF95C
+ ldr r0, _021DF974 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrneb r0, [r0, #0x2c]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DF974: .word UNK04_0221053C
+ arm_func_end MOD04_021DF95C
+
+ arm_func_start MOD04_021DF978
+MOD04_021DF978: ; 0x021DF978
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DF9D0 ; =UNK04_0221053C
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF9B0
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DF9C0
+_021DF9B0:
+ bl MOD04_021E87D8
+ add sp, sp, #4
+ add r0, r0, #1
+ ldmfd sp!, {pc}
+_021DF9C0:
+ bl MOD04_021E8804
+ add r0, r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF9D0: .word UNK04_0221053C
+ arm_func_end MOD04_021DF978
+
+ arm_func_start MOD04_021DF9D4
+MOD04_021DF9D4: ; 0x021DF9D4
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DFA3C ; =UNK04_0221053C
+ mov r4, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021DFA14
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFA14
+ ldr r0, _021DFA3C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ beq _021DFA1C
+ cmp r0, #6
+ beq _021DFA1C
+_021DFA14:
+ mvn r0, #0
+ ldmia sp!, {r4, pc}
+_021DFA1C:
+ mov r0, r4
+ bl MOD04_021DF760
+ cmp r0, #0
+ mvneq r0, #1
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021FD488
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DFA3C: .word UNK04_0221053C
+ arm_func_end MOD04_021DF9D4
+
+ arm_func_start MOD04_021DFA40
+MOD04_021DFA40: ; 0x021DFA40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DFA80
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFA80
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r0, [r2, #0x24]
+ cmp r0, #5
+ beq _021DFA8C
+ cmp r0, #6
+ beq _021DFA8C
+_021DFA80:
+ add sp, sp, #4
+ mvn r0, #0
+ ldmfd sp!, {pc}
+_021DFA8C:
+ ldrb r0, [r2, #0x361]
+ cmp r0, #0
+ bne _021DFAC0
+ ldr r1, _021DFAF4 ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_02200D6C
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #4
+ mov r0, #1
+ ldmfd sp!, {pc}
+_021DFAC0:
+ mov r1, #1
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ strb r1, [r2, #0x2d]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ ldr r1, _021DFAF0 ; =UNK04_0221053C
+ mov r0, #0
+ ldr r1, [r1]
+ strb r0, [r1, #0x2d]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DFAF0: .word UNK04_0221053C
+_021DFAF4: .word UNK04_0220D334
+ arm_func_end MOD04_021DFA40
+
+ arm_func_start MOD04_021DFAF8
+MOD04_021DFAF8: ; 0x021DFAF8
+ ldr r2, _021DFB1C ; =UNK04_0221053C
+ ldr r3, [r2]
+ cmp r3, #0
+ moveq r0, #0
+ strne r0, [r3, #0x90]
+ ldrne r2, [r2]
+ movne r0, #1
+ strne r1, [r2, #0x94]
+ bx lr
+ .align 2, 0
+_021DFB1C: .word UNK04_0221053C
+ arm_func_end MOD04_021DFAF8
+
+ arm_func_start MOD04_021DFB20
+MOD04_021DFB20: ; 0x021DFB20
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x224
+ mvn ip, #0
+ mov r7, r0
+ mov r6, r1
+ mov r4, r2
+ mov r5, r3
+ str ip, [sp, #8]
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFB60
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #3
+ beq _021DFB6C
+_021DFB60:
+ add sp, sp, #0x224
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFB6C:
+ bl MOD04_021DF6CC
+ ldr r1, _021DFD04 ; =UNK04_0221053C
+ mov r0, #5
+ ldr r2, [r1]
+ str r6, [r2, #0x88]
+ ldr r1, [r1]
+ str r4, [r1, #0x8c]
+ bl MOD04_021DF5CC
+ mov r0, r7
+ bl MOD04_021E1F84
+ movs r4, r0
+ beq _021DFBB8
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ mov r1, r4
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F05F4
+ cmp r0, #0
+ bne _021DFBC0
+_021DFBB8:
+ mov r5, #0xb
+ b _021DFC8C
+_021DFBC0:
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ add r2, sp, #8
+ ldr r0, [r0]
+ mov r1, r4
+ add r0, r0, #0x1c
+ bl MOD04_021F0664
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ add r2, sp, #0x10
+ add r0, r0, #0x1c
+ bl MOD04_021F06E4
+ ldr r0, [sp, #0x14]
+ cmp r0, #6
+ movne r5, #0xb
+ bne _021DFC8C
+ ldr r0, _021DFD08 ; =UNK04_0220D344
+ mov r6, #0x30
+ add r1, sp, #0xc
+ add r2, sp, #0x18
+ mov r3, #0x2f
+ strb r6, [sp, #0xc]
+ bl MOD04_021DE9F4
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ and r6, r0, #0xff
+ ldr r0, _021DFD0C ; =UNK04_0220D348
+ add r1, sp, #0xc
+ add r2, sp, #0x18
+ mov r3, #0x2f
+ bl MOD04_021DE9F4
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ and r0, r0, #0xff
+ cmp r0, r6
+ moveq r5, #0xd
+ beq _021DFC8C
+ ldr r6, [sp, #0x238]
+ ldr r1, _021DFD10 ; =MOD04_021DF12C
+ mov r0, r4
+ mov r3, r5
+ mov r2, #0
+ str r6, [sp]
+ 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 MOD04_021DD6B0
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r4, [r0]
+ mov r0, r5
+ str r1, [sp]
+ ldr r2, [r4, #0x8c]
+ mov r3, r1
+ str r2, [sp, #4]
+ ldr r4, [r4, #0x88]
+ mov r2, #1
+ blx r4
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DFCF8
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ bne _021DFCF8
+ mov r0, #3
+ bl MOD04_021DF5CC
+ ldr r1, _021DFD14 ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+_021DFCF8:
+ mov r0, #1
+ add sp, sp, #0x224
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFD04: .word UNK04_0221053C
+_021DFD08: .word UNK04_0220D344
+_021DFD0C: .word UNK04_0220D348
+_021DFD10: .word MOD04_021DF12C
+_021DFD14: .word UNK04_0220D334
+ arm_func_end MOD04_021DFB20
+
+ 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 MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFD50
+ ldr r0, _021DFDB4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #3
+ beq _021DFD5C
+_021DFD50:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFD5C:
+ bl MOD04_021DF6CC
+ ldr r1, _021DFDB4 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r3, [r1]
+ mov r0, #5
+ str r6, [r3, #0x88]
+ ldr r3, [r1]
+ str r5, [r3, #0x8c]
+ ldr r1, [r1]
+ strb r2, [r1, #0x2c]
+ bl MOD04_021DF5CC
+ sub r0, r7, #1
+ ldr r5, [sp, #0x18]
+ ldr r1, _021DFDB8 ; =MOD04_021DF12C
+ mov r3, r4
+ and r0, r0, #0xff
+ mov r2, #0
+ str r5, [sp]
+ bl MOD04_021EA138
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFDB4: .word UNK04_0221053C
+_021DFDB8: .word MOD04_021DF12C
+ arm_func_end MOD04_021DFD18
+
+ 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 MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFDF8
+ ldr r0, _021DFE5C ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r1, [r2, #0x24]
+ cmp r1, #3
+ blt _021DFDF8
+ cmp r1, #4
+ bne _021DFE04
+_021DFDF8:
+ add sp, sp, #0x10
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFE04:
+ str r6, [r2, #0x78]
+ ldr r1, [r0]
+ mov r0, #4
+ str r5, [r1, #0x7c]
+ bl MOD04_021DF5CC
+ ldr r0, _021DFE5C ; =UNK04_0221053C
+ ldr r1, [sp, #0x20]
+ ldr r3, [r0]
+ ldr r0, [sp, #0x24]
+ str r4, [sp]
+ str r1, [sp, #4]
+ ldr r4, [sp, #0x28]
+ str r0, [sp, #8]
+ ldr r2, _021DFE60 ; =MOD04_021DF2B4
+ add r0, r3, #0xe0
+ add r1, r3, #0x1e0
+ mov r3, #0
+ str r4, [sp, #0xc]
+ bl MOD04_021E2174
+ mov r0, #1
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DFE5C: .word UNK04_0221053C
+_021DFE60: .word MOD04_021DF2B4
+ arm_func_end MOD04_021DFDBC
+
+ 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 MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFE9C
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r1, [r2, #0x24]
+ cmp r1, #0
+ beq _021DFEA4
+_021DFE9C:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFEA4:
+ str r6, [r2, #0x70]
+ ldr r1, [r0]
+ cmp r4, #0
+ str r5, [r1, #0x74]
+ beq _021DFEC4
+ ldrh r1, [r4]
+ cmp r1, #0
+ bne _021DFECC
+_021DFEC4:
+ mov r5, #0
+ b _021DFF18
+_021DFECC:
+ ldr r1, [r0]
+ mov r0, #0
+ add r1, r1, #0x2e
+ mov r2, #0x34
+ bl MIi_CpuClear16
+ mov r0, r4
+ bl MOD04_021DE89C
+ cmp r0, #0x19
+ movhi r5, #0x19
+ bhi _021DFF00
+ mov r0, r4
+ bl MOD04_021DE89C
+ mov r5, r0
+_021DFF00:
+ ldr r1, _021DFF6C ; =UNK04_0221053C
+ mov r0, r4
+ ldr r1, [r1]
+ mov r2, r5, lsl #1
+ add r1, r1, #0x2e
+ bl MIi_CpuCopy16
+_021DFF18:
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r5, lsl #1
+ strh r1, [r0, #0x2e]
+ bl MOD04_021DDC1C
+ cmp r0, #4
+ beq _021DFF4C
+ ldr r1, _021DFF70 ; =0xFFFF1596
+ mov r0, #2
+ bl MOD04_021E0EAC
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFF4C:
+ mov r0, #1
+ bl MOD04_021DF5CC
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x68]
+ bl MOD04_021EE898
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DFF6C: .word UNK04_0221053C
+_021DFF70: .word 0xFFFF1596
+ arm_func_end MOD04_021DFE64
+
+ arm_func_start MOD04_021DFF74
+MOD04_021DFF74: ; 0x021DFF74
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DD984
+ cmp r0, #0
+ beq _021DFF8C
+ bl MOD04_021DF5EC
+_021DFF8C:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #6
+ addls pc, pc, r0, lsl #2
+ b _021E0194
+_021DFFD8: ; jump table
+ b _021E0194 ; case 0
+ b _021DFFF4 ; case 1
+ b _021E0124 ; case 2
+ b _021E012C ; case 3
+ b _021E012C ; case 4
+ b _021E013C ; case 5
+ b _021E014C ; case 6
+_021DFFF4:
+ bl MOD04_021EE6A0
+ cmp r0, #1
+ beq _021E0014
+ cmp r0, #2
+ beq _021E00FC
+ cmp r0, #3
+ beq _021E0110
+ b _021E0194
+_021E0014:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ ldr r1, [r0, #0xa0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F94
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ ldr r2, _021E01E8 ; =MOD04_021DF0D4
+ mov r3, r1
+ add r0, r0, #0x1c
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01EC ; =MOD04_021DEF6C
+ ldr r0, [r0]
+ mov r1, #3
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01F0 ; =MOD04_021E20C8
+ ldr r0, [r0]
+ mov r1, #1
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01F4 ; =MOD04_021E1FE4
+ ldr r0, [r0]
+ mov r1, #2
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #2
+ bl MOD04_021DF5CC
+ bl MOD04_021E1034
+ b _021E0194
+_021E00FC:
+ ldr r1, _021E01F8 ; =0xFFFFB172
+ mov r0, #3
+ bl MOD04_021E0EAC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0110:
+ ldr r1, _021E01FC ; =0xFFFFB17B
+ mov r0, #4
+ bl MOD04_021E0EAC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0124:
+ bl MOD04_021E0F1C
+ b _021E0194
+_021E012C:
+ bl MOD04_021E2228
+ mov r0, #0
+ bl MOD04_021E9568
+ b _021E0194
+_021E013C:
+ mov r0, #1
+ bl MOD04_021E9568
+ bl MOD04_021E2228
+ b _021E0194
+_021E014C:
+ bl MOD04_021EAA64
+ bl MOD04_021E2228
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021E0174
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021E0180
+_021E0174:
+ mov r0, #1
+ bl MOD04_021E9568
+ b _021E0194
+_021E0180:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021E0194
+ mov r0, #0
+ bl MOD04_021E9568
+_021E0194:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x36c]
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, [r1, #0x364]
+ cmp r0, #0
+ beq _021E01CC
+ bl MOD04_02202280
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x364]
+_021E01CC:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x36c]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E01E4: .word UNK04_0221053C
+_021E01E8: .word MOD04_021DF0D4
+_021E01EC: .word MOD04_021DEF6C
+_021E01F0: .word MOD04_021E20C8
+_021E01F4: .word MOD04_021E1FE4
+_021E01F8: .word 0xFFFFB172
+_021E01FC: .word 0xFFFFB17B
+ arm_func_end MOD04_021DFF74
+
+ arm_func_start MOD04_021E0200
+MOD04_021E0200: ; 0x021E0200
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x364]
+ cmp r0, #0
+ beq _021E023C
+ bl MOD04_02202280
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x364]
+_021E023C:
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r1, [r0]
+ strb r2, [r1, #0x36c]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x438]
+ cmp r0, #0
+ beq _021E0270
+ bl MOD04_02203E80
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x438]
+_021E0270:
+ bl MOD04_02200D6C
+ bl MOD04_021FBE7C
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr ip, [r0]
+ ldr r0, [ip, #0x1c]
+ cmp r0, #0
+ beq _021E0324
+ mov r1, #0
+ mov r2, r1
+ mov r3, r1
+ add r0, ip, #0x1c
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r3, r2
+ add r0, r0, #0x1c
+ mov r1, #3
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r3, r2
+ add r0, r0, #0x1c
+ mov r1, #1
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #2
+ add r0, r0, #0x1c
+ mov r3, r2
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F18
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F64
+ mov r1, #0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ str r1, [r0, #0x1c]
+_021E0324:
+ bl MOD04_021E0E48
+ bl MOD04_021E1D90
+ bl MOD04_021E854C
+ bl MOD04_021EA9C4
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E035C
+ bl MOD04_021FD704
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0]
+_021E035C:
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E0370: .word UNK04_0221053C
+ arm_func_end MOD04_021E0200
+
+ arm_func_start MOD04_021E0374
+MOD04_021E0374: ; 0x021E0374
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ ldr ip, _021E05D8 ; =UNK04_0221053C
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ str r0, [ip]
+ bl MOD04_021DD6F0
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r3, _021E05DC ; =MOD04_021E8F80
+ str r2, [r1]
+ ldr r1, [r0]
+ 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 ; =MOD04_021DEBE4
+ ldr r1, _021E05E8 ; =MOD04_021DEBD8
+ str r3, [r2, #0xc]
+ ldr r0, [r0]
+ ldr r3, [sp, #0x28]
+ str r1, [r0, #0x10]
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ moveq ip, #0x2000
+ ldr r0, [r0]
+ cmp r3, #0
+ str ip, [r0, #0x14]
+ moveq r3, #0x2000
+ ldr r1, _021E05D8 ; =UNK04_0221053C
+ mov r0, #0
+ ldr r2, [r1]
+ ldr ip, _021E05EC ; =UNK04_02210F94
+ str r3, [r2, #0x18]
+ ldr r2, [r1]
+ ldr r3, _021E05F0 ; =UNK04_02211094
+ str r0, [r2, #0x1c]
+ ldr r2, [r1]
+ str r6, [r2, #0x20]
+ ldr r2, [r1]
+ str r0, [r2, #0x24]
+ ldr r2, [r1]
+ str r0, [r2, #0x28]
+ ldr r2, [r1]
+ strb r0, [r2, #0x2c]
+ ldr r2, [r1]
+ strb r0, [r2, #0x2d]
+ ldr r2, [r1]
+ str r0, [r2, #0x64]
+ ldr r2, [r1]
+ str ip, [r2, #0x68]
+ ldr r2, [r1]
+ str r3, [r2, #0x6c]
+ ldr r2, [r1]
+ str r0, [r2, #0x70]
+ ldr r2, [r1]
+ str r0, [r2, #0x74]
+ ldr r2, [r1]
+ str r0, [r2, #0x78]
+ ldr r2, [r1]
+ str r0, [r2, #0x7c]
+ ldr r2, [r1]
+ str r0, [r2, #0x80]
+ ldr r2, [r1]
+ str r0, [r2, #0x84]
+ ldr r2, [r1]
+ str r0, [r2, #0x88]
+ ldr r2, [r1]
+ str r0, [r2, #0x8c]
+ ldr r2, [r1]
+ str r0, [r2, #0x90]
+ ldr r1, [r1]
+ str r0, [r1, #0x94]
+ bl MOD04_021DF6CC
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ mov r3, r5
+ ldr r2, [r0]
+ ldr r1, [r6, #0x24]
+ ldr r0, _021E05F4 ; =MOD04_021DF304
+ str r1, [sp]
+ add r1, r2, #0x2e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r5, #0
+ add r0, r2, #0x98
+ mov r1, r6
+ add r2, r2, #0x1c
+ str r5, [sp, #0xc]
+ bl MOD04_021E1074
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ ldr r2, [sp, #0x30]
+ ldr r5, [r0]
+ ldr r3, [sp, #0x2c]
+ str r2, [sp]
+ add r0, r5, #0x2f8
+ add r1, r5, #0x1c
+ add r2, r5, #0x2e
+ bl MOD04_021E234C
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ ldr r2, [r0]
+ ldr r0, _021E05F0 ; =UNK04_02211094
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r2, #0x354
+ add r1, r2, #0x1c
+ add r3, r2, #4
+ bl MOD04_021EA368
+ ldr r1, _021E05D8 ; =UNK04_0221053C
+ ldr r0, _021E05F8 ; =0x000007D8
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl MOD04_021EACB4
+ mov r0, r4
+ bl strlen
+ cmp r0, #0x100
+ movhs r5, #0xff
+ bhs _021E0578
+ mov r0, r4
+ bl strlen
+ mov r5, r0
+_021E0578:
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ mov r0, r4
+ mov r2, r5
+ bl MI_CpuCopy8
+ ldr r0, [sp, #0x20]
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ mov r2, #0
+ strb r2, [r1, r5]
+ bl strlen
+ cmp r0, #0x100
+ movhs r4, #0xff
+ bhs _021E05B4
+ ldr r0, [sp, #0x20]
+ bl strlen
+ mov r4, r0
+_021E05B4:
+ ldr r0, [sp, #0x20]
+ ldr r1, _021E05F0 ; =UNK04_02211094
+ mov r2, r4
+ bl MI_CpuCopy8
+ ldr r0, _021E05F0 ; =UNK04_02211094
+ mov r1, #0
+ strb r1, [r0, r4]
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E05D8: .word UNK04_0221053C
+_021E05DC: .word MOD04_021E8F80
+_021E05E0: .word MOD04_021DEF60
+_021E05E4: .word MOD04_021DEBE4
+_021E05E8: .word MOD04_021DEBD8
+_021E05EC: .word UNK04_02210F94
+_021E05F0: .word UNK04_02211094
+_021E05F4: .word MOD04_021DF304
+_021E05F8: .word 0x000007D8
+ arm_func_end MOD04_021E0374
+
+ .section .data
+
+ .global UNK04_0220D334
+UNK04_0220D334: ; 0x0220D334
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D338
+UNK04_0220D338: ; 0x0220D338
+ .asciz "GPCM"
+
+ .balign 4, 0
+ .global UNK04_0220D340
+UNK04_0220D340: ; 0x0220D340
+ .asciz "MAT"
+
+ .balign 4, 0
+ .global UNK04_0220D344
+UNK04_0220D344: ; 0x0220D344
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D348
+UNK04_0220D348: ; 0x0220D348
+ .asciz "SCN"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_0221053C
+UNK04_0221053C: ; 0x0221053C
+ .space 0x4
+
+ .global UNK04_02210540
+UNK04_02210540: ; 0x02210540
+ .space 0x4
+
+ .global UNK04_02210544
+UNK04_02210544: ; 0x02210544
+ .space 0x80
+
+ .global UNK04_022105C4
+UNK04_022105C4: ; 0x022105C4
+ .space 0x100
diff --git a/arm9/modules/04/asm/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s
new file mode 100644
index 00000000..0ce6279d
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021E05FC.s
@@ -0,0 +1,830 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021E05FC
+MOD04_021E05FC: ; 0x021E05FC
+ ldr r0, _021E0624 ; =UNK04_022106C8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E061C
+ ldr r0, [r0, #4]
+ cmp r0, #5
+ moveq r0, #1
+ bxeq lr
+_021E061C:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021E0624: .word UNK04_022106C8
+ arm_func_end MOD04_021E05FC
+
+ arm_func_start MOD04_021E0628
+MOD04_021E0628: ; 0x021E0628
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x4c
+ mov r4, r1
+ ldr r1, [r4]
+ mov r5, r0
+ cmp r1, #0
+ addne sp, sp, #0x4c
+ ldmneia sp!, {r4, r5, pc}
+ ldr r1, _021E07CC ; =UNK04_022106C8
+ ldr r2, [r1]
+ ldr r1, [r2, #4]
+ cmp r1, #3
+ bne _021E0704
+ ldrsb r1, [r4, #0x8e]
+ cmp r1, #0
+ bne _021E06DC
+ ldr r0, [r2, #0x1c]
+ ldr r1, [r2, #0xc]
+ add r2, sp, #8
+ add r0, r0, #4
+ bl DWCi_Acc_LoginIdToUserName
+ ldr r1, _021E07D0 ; =0x00000705
+ add r2, sp, #8
+ mov r0, r5
+ bl MOD04_021F0B30
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ addne sp, sp, #0x4c
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ mov r3, #4
+ ldr r1, [r0]
+ ldr r0, _021E07D4 ; =MOD04_021E0628
+ str r3, [r1, #4]
+ mov r2, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r4, #4]
+ mov r0, r5
+ mov r3, r2
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
+ add sp, sp, #0x4c
+ cmp r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E06DC:
+ bl MOD04_021F0D54
+ ldr r0, _021E07D8 ; =MOD04_021E0C80
+ mov r1, #0
+ bl MOD04_021E0A00
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #0x4c
+ str r1, [r0, #4]
+ ldmia sp!, {r4, r5, pc}
+_021E0704:
+ cmp r1, #4
+ addne sp, sp, #0x4c
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, [r2, #0x1c]
+ ldr r1, [r2, #0xc]
+ add r2, sp, #0x1d
+ add r0, r0, #4
+ bl DWCi_Acc_LoginIdToUserName
+ add r1, sp, #0x1d
+ add r0, r4, #0x8e
+ bl strcmp
+ cmp r0, #0
+ bne _021E079C
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ add r2, sp, #0x32
+ ldr r0, [r0]
+ ldr r1, [r0, #0xc]
+ add r0, r0, #0x3c
+ bl DWCi_Acc_LoginIdToUserName
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ ldr r2, [r4, #4]
+ ldr r1, [r0]
+ ldr r0, [r1, #0x1c]
+ add r1, r1, #0x3c
+ bl DWCi_Acc_SetLoginIdToUserData
+ mov r0, r5
+ bl MOD04_021F0D54
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ ldr r1, _021E07DC ; =UNK04_022106C4
+ ldr r4, [r0]
+ ldr r0, _021E07E0 ; =UNK04_022106CC
+ ldr r2, [r1]
+ ldr r3, [r0]
+ add r0, r4, #0x48
+ add r1, r4, #0x148
+ blx r3
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, pc}
+_021E079C:
+ 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 MOD04_021F0B9C
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E07CC: .word UNK04_022106C8
+_021E07D0: .word 0x00000705
+_021E07D4: .word MOD04_021E0628
+_021E07D8: .word MOD04_021E0C80
+_021E07DC: .word UNK04_022106C4
+_021E07E0: .word UNK04_022106CC
+ arm_func_end MOD04_021E0628
+
+ arm_func_start MOD04_021E07E4
+MOD04_021E07E4: ; 0x021E07E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x3d4
+ bl MOD04_021D988C
+ cmp r0, #0x15
+ bne _021E08BC
+ add r0, sp, #0
+ bl MOD04_021D97F8
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ add r1, sp, #0x4a
+ ldr r0, [r0]
+ add r0, r0, #0x48
+ bl strcpy
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ add r1, sp, #0x100
+ ldr r0, [r0]
+ add r1, r1, #0x77
+ add r0, r0, #0x148
+ bl strcpy
+ bl MOD04_021D991C
+ ldr r1, _021E09DC ; =UNK04_022106C8
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, r0
+ ldr r1, [r1, #0x24]
+ bl MOD04_021DD904
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ mov r2, #0
+ ldr r1, [r0]
+ str r2, [r1, #0x24]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x1c]
+ bl DWCi_Acc_IsAuthentic
+ cmp r0, #0
+ beq _021E0898
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r1, _021E09E0 ; =UNK04_022106C4
+ ldr ip, [r0]
+ ldr r0, _021E09E4 ; =UNK04_022106CC
+ ldr r2, [r1]
+ ldr r3, [r0]
+ add r0, ip, #0x48
+ add r1, ip, #0x148
+ blx r3
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+_021E0898:
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r2, _021E09E8 ; =MOD04_021E0C98
+ ldr r1, [r0]
+ mov r3, #3
+ add r0, r1, #0x48
+ add r1, r1, #0x148
+ bl MOD04_021E0BE0
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+_021E08BC:
+ bl MOD04_021D988C
+ cmp r0, #0
+ addeq sp, sp, #0x3d4
+ ldmeqia sp!, {pc}
+ bl OS_GetTick
+ ldr r3, _021E09DC ; =UNK04_022106C8
+ ldr r2, _021E09EC ; =0x000082EA
+ ldr ip, [r3]
+ mov r3, #0
+ ldr lr, [ip, #0x28]
+ ldr ip, [ip, #0x2c]
+ subs lr, r0, lr
+ sbc r0, r1, ip
+ mov r1, r0, lsl #6
+ orr r1, r1, lr, lsr #26
+ mov r0, lr, lsl #6
+ bl _ll_udiv
+ ldr r2, _021E09F0 ; =0x00002710
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E0958
+ add r0, sp, #0x1c4
+ bl MOD04_021D97F8
+ bl MOD04_021D991C
+ ldr r1, _021E09DC ; =UNK04_022106C8
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, r0
+ ldr r1, [r1, #0x24]
+ bl MOD04_021DD904
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #2
+ str r2, [r1, #0x24]
+ ldr r1, [sp, #0x1c4]
+ bl MOD04_021E0EAC
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+_021E0958:
+ bl MOD04_021D991C
+ add r0, sp, #0x388
+ mov r1, #0
+ mov r2, #0x48
+ bl MI_CpuFill8
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bl MOD04_021DE89C
+ ldr r1, _021E09DC ; =UNK04_022106C8
+ mov r2, r0, lsl #1
+ ldr r1, [r1]
+ add r2, r2, #2
+ ldr r0, [r1, #0x10]
+ add r1, sp, #0x388
+ bl MI_CpuCopy8
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r1, _021E09F4 ; =0x00000251
+ ldr r2, [r0]
+ add r0, sp, #0x3bc
+ add r1, r2, r1
+ bl strcpy
+ ldr r2, _021E09F8 ; =MOD04_021DD944
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ str r2, [sp, #0x3c8]
+ ldr r2, _021E09FC ; =MOD04_021DD904
+ ldr r1, [r0]
+ str r2, [sp, #0x3cc]
+ ldr r1, [r1, #0x24]
+ add r0, sp, #0x388
+ bl MOD04_021D9ACC
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E09DC: .word UNK04_022106C8
+_021E09E0: .word UNK04_022106C4
+_021E09E4: .word UNK04_022106CC
+_021E09E8: .word MOD04_021E0C98
+_021E09EC: .word 0x000082EA
+_021E09F0: .word 0x00002710
+_021E09F4: .word 0x00000251
+_021E09F8: .word MOD04_021DD944
+_021E09FC: .word MOD04_021DD904
+ arm_func_end MOD04_021E07E4
+
+ arm_func_start MOD04_021E0A00
+MOD04_021E0A00: ; 0x021E0A00
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x4c
+ mov r5, r0
+ mov r4, r1
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0x48
+ bl MI_CpuFill8
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r2, _021E0BBC ; =UNK04_022106CC
+ ldr r1, _021E0BC0 ; =UNK04_022106C4
+ ldr r0, [r0]
+ str r5, [r2]
+ str r4, [r1]
+ ldr r0, [r0, #0x1c]
+ bl DWCi_Acc_IsAuthentic
+ cmp r0, #0
+ beq _021E0A68
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r1, [r0]
+ ldr r0, [r1, #0x1c]
+ add r2, r1, #0x248
+ ldr r1, [r0, #0x24]
+ add r0, r0, #0x10
+ bl DWCi_Acc_LoginIdToUserName
+ b _021E0B1C
+_021E0A68:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ add r0, r0, #0x3c
+ bl DWCi_Acc_IsValidLoginId
+ cmp r0, #0
+ bne _021E0AD0
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x1c]
+ add r0, r0, #4
+ bl DWCi_Acc_CheckConsoleUserId
+ cmp r0, #0
+ beq _021E0ABC
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r1, [r0]
+ ldr r0, [r1, #0x1c]
+ add r3, r1, #0x3c
+ add r0, r0, #4
+ ldmia r0, {r0, r1, r2}
+ stmia r3, {r0, r1, r2}
+ b _021E0B04
+_021E0ABC:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ add r0, r0, #0x3c
+ bl DWCi_Acc_CreateTempLoginId
+ b _021E0B04
+_021E0AD0:
+ bl OS_GetTick
+ ldr r2, _021E0BC4 ; =0x6C078965
+ ldr r3, _021E0BC8 ; =0x5D588B65
+ umull ip, r4, r0, r2
+ mla r4, r0, r3, r4
+ ldr r3, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, _021E0BCC ; =0x00269EC3
+ mla r4, r1, r2, r4
+ adds r0, ip, r0
+ ldr r3, [r3]
+ adc r1, r4, #0
+ add r0, r3, #0x3c
+ bl DWCi_Acc_SetPlayerId
+_021E0B04:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r2, [r0]
+ ldr r1, [r2, #0xc]
+ add r0, r2, #0x3c
+ add r2, r2, #0x248
+ bl DWCi_Acc_LoginIdToUserName
+_021E0B1C:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bl MOD04_021DE89C
+ ldr r1, _021E0BB8 ; =UNK04_022106C8
+ mov r2, r0, lsl #1
+ ldr r1, [r1]
+ add r2, r2, #2
+ ldr r0, [r1, #0x10]
+ add r1, sp, #0
+ bl MI_CpuCopy8
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r1, _021E0BD0 ; =0x00000251
+ ldr r2, [r0]
+ add r0, sp, #0x34
+ add r1, r2, r1
+ bl strcpy
+ 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 MOD04_021DD924
+ ldr r1, _021E0BB8 ; =UNK04_022106C8
+ mov r4, r0
+ ldr r0, [r1]
+ str r4, [r0, #0x24]
+ bl OS_GetTick
+ ldr r2, _021E0BB8 ; =UNK04_022106C8
+ ldr r2, [r2]
+ str r0, [r2, #0x28]
+ str r1, [r2, #0x2c]
+ mov r1, r4
+ add r0, sp, #0
+ bl MOD04_021D9ACC
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E0BB8: .word UNK04_022106C8
+_021E0BBC: .word UNK04_022106CC
+_021E0BC0: .word UNK04_022106C4
+_021E0BC4: .word 0x6C078965
+_021E0BC8: .word 0x5D588B65
+_021E0BCC: .word 0x00269EC3
+_021E0BD0: .word 0x00000251
+_021E0BD4: .word MOD04_021DD944
+_021E0BD8: .word MOD04_021DD904
+_021E0BDC: .word 0x00001C10
+ arm_func_end MOD04_021E0A00
+
+ arm_func_start MOD04_021E0BE0
+MOD04_021E0BE0: ; 0x021E0BE0
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ ldr r4, _021E0C7C ; =UNK04_022106C8
+ mov r6, r1
+ ldr r4, [r4]
+ mov r1, r0
+ add r0, r4, #0x48
+ mov r5, r2
+ mov r4, r3
+ bl strcpy
+ ldr r0, _021E0C7C ; =UNK04_022106C8
+ mov r1, r6
+ ldr r0, [r0]
+ add r0, r0, #0x148
+ bl strcpy
+ ldr r0, _021E0C7C ; =UNK04_022106C8
+ ldr r6, [r0]
+ bl OS_GetTick
+ str r0, [r6, #0x34]
+ str r1, [r6, #0x38]
+ mov r3, #1
+ ldr r0, _021E0C7C ; =UNK04_022106C8
+ str r3, [r6, #0x30]
+ ldr r2, [r0]
+ mov r1, #0
+ str r1, [sp]
+ str r5, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r2]
+ add r1, r2, #0x48
+ add r2, r2, #0x148
+ bl MOD04_021F0D8C
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ ldreq r0, _021E0C7C ; =UNK04_022106C8
+ ldreq r0, [r0]
+ streq r4, [r0, #4]
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E0C7C: .word UNK04_022106C8
+ arm_func_end MOD04_021E0BE0
+
+ 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 MOD04_021E0BE0
+_021E0C94: .word MOD04_021E0C98
+ arm_func_end MOD04_021E0C80
+
+ arm_func_start MOD04_021E0C98
+MOD04_021E0C98: ; 0x021E0C98
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r3, _021E0DA0 ; =UNK04_022106C8
+ mov r2, #0
+ ldr ip, [r3]
+ mov r4, r1
+ str r2, [ip, #0x30]
+ ldr r1, [r4]
+ cmp r1, #0
+ bne _021E0D90
+ ldr ip, [r3]
+ ldr r1, [ip, #4]
+ cmp r1, #2
+ bne _021E0D5C
+ ldr r1, [ip, #0x1c]
+ ldr r0, [r4, #4]
+ ldr r1, [r1, #0x1c]
+ cmp r1, r0
+ bne _021E0D48
+ ldr r1, _021E0DA4 ; =UNK04_0220D34C
+ mov r3, #5
+ mov r0, #1
+ str r3, [ip, #4]
+ bl MOD04_021E1E30
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021E0DA0 ; =UNK04_022106C8
+ ldr r1, [r4, #4]
+ ldr r3, [r0]
+ mov r0, #0
+ ldr r2, [r3, #0x18]
+ ldr r3, [r3, #0x14]
+ blx r3
+ bl MOD04_021DF7C4
+ cmp r0, #0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, pc}
+ ldr r0, [r4, #4]
+ bl MOD04_021EA1E0
+ add sp, sp, #8
+ cmp r0, #0
+ ldmia sp!, {r4, pc}
+_021E0D48:
+ ldr r1, _021E0DA8 ; =0xFFFF15A0
+ mov r0, #6
+ 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 ; =MOD04_021E0628
+ mov r3, r2
+ str r1, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r4, #4]
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
+ add sp, sp, #8
+ cmp r0, #0
+ ldmia sp!, {r4, pc}
+_021E0D90:
+ mov r0, r1
+ bl MOD04_021E0DB0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E0DA0: .word UNK04_022106C8
+_021E0DA4: .word UNK04_0220D34C
+_021E0DA8: .word 0xFFFF15A0
+_021E0DAC: .word MOD04_021E0628
+ arm_func_end MOD04_021E0C98
+
+ arm_func_start MOD04_021E0DB0
+MOD04_021E0DB0: ; 0x021E0DB0
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #4
+ addls pc, pc, r4, lsl #2
+ b _021E0E0C
+_021E0DCC: ; jump table
+ b _021E0E0C ; case 0
+ b _021E0DE0 ; case 1
+ b _021E0DEC ; case 2
+ b _021E0DF8 ; case 3
+ b _021E0E04 ; case 4
+_021E0DE0:
+ mov r0, #9
+ mvn r2, #0
+ b _021E0E0C
+_021E0DEC:
+ mov r0, #9
+ mvn r2, #1
+ b _021E0E0C
+_021E0DF8:
+ mov r0, #6
+ mvn r2, #9
+ b _021E0E0C
+_021E0E04:
+ mov r0, #6
+ mvn r2, #0x13
+_021E0E0C:
+ ldr r1, _021E0E20 ; =0xFFFF11B8
+ add r1, r2, r1
+ bl MOD04_021E0EAC
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E0E20: .word 0xFFFF11B8
+ arm_func_end MOD04_021E0DB0
+
+ arm_func_start MOD04_021E0E24
+MOD04_021E0E24: ; 0x021E0E24
+ ldr r0, _021E0E44 ; =UNK04_022106C8
+ ldr r2, [r0]
+ cmp r2, #0
+ movne r1, #0
+ strne r1, [r2, #4]
+ ldrne r0, [r0]
+ strne r1, [r0, #0x30]
+ bx lr
+ .align 2, 0
+_021E0E44: .word UNK04_022106C8
+ arm_func_end MOD04_021E0E24
+
+ arm_func_start MOD04_021E0E48
+MOD04_021E0E48: ; 0x021E0E48
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E0EA8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ beq _021E0E94
+ bl MOD04_021D9974
+ bl MOD04_021D991C
+ ldr r1, _021E0EA8 ; =UNK04_022106C8
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, r0
+ ldr r1, [r1, #0x24]
+ bl MOD04_021DD904
+ ldr r0, _021E0EA8 ; =UNK04_022106C8
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x24]
+_021E0E94:
+ ldr r0, _021E0EA8 ; =UNK04_022106C8
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E0EA8: .word UNK04_022106C8
+ arm_func_end MOD04_021E0E48
+
+ arm_func_start MOD04_021E0EAC
+MOD04_021E0EAC: ; 0x021E0EAC
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E0EFC ; =UNK04_022106C8
+ mov r4, r0
+ ldr r2, [r2]
+ cmp r2, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021DD6B0
+ ldr r0, _021E0EFC ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r3, [r0, #0x14]
+ cmp r3, #0
+ beq _021E0EF4
+ ldr r2, [r0, #0x18]
+ mov r0, r4
+ mov r1, #0
+ blx r3
+_021E0EF4:
+ bl MOD04_021E0E24
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E0EFC: .word UNK04_022106C8
+ arm_func_end MOD04_021E0EAC
+
+ arm_func_start MOD04_021E0F00
+MOD04_021E0F00: ; 0x021E0F00
+ ldr r0, _021E0F18 ; =UNK04_022106C8
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrne r0, [r0, #0x1c]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021E0F18: .word UNK04_022106C8
+ arm_func_end MOD04_021E0F00
+
+ arm_func_start MOD04_021E0F1C
+MOD04_021E0F1C: ; 0x021E0F1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ ldr r1, [r0]
+ ldr r0, [r1, #4]
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _021E101C
+_021E0F60: ; jump table
+ b _021E101C ; case 0
+ b _021E0F78 ; case 1
+ b _021E0F84 ; case 2
+ b _021E0F84 ; case 3
+ b _021E0F84 ; case 4
+ b _021E101C ; case 5
+_021E0F78:
+ bl MOD04_021E07E4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0F84:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021E0FA0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E0FA0
+ bl MOD04_021F0F18
+_021E0FA0:
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl OS_GetTick
+ ldr r3, _021E1024 ; =UNK04_022106C8
+ ldr r2, _021E1028 ; =0x000082EA
+ ldr ip, [r3]
+ mov r3, #0
+ ldr lr, [ip, #0x34]
+ ldr ip, [ip, #0x38]
+ subs lr, r0, lr
+ sbc r0, r1, ip
+ mov r1, r0, lsl #6
+ orr r1, r1, lr, lsr #26
+ mov r0, lr, lsl #6
+ bl _ll_udiv
+ ldr r2, _021E102C ; =0x0000EA60
+ cmp r1, #0
+ cmpeq r0, r2
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ ldr r1, _021E1030 ; =0xFFFF1172
+ mov r0, #6
+ bl MOD04_021E0EAC
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x30]
+_021E101C:
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1024: .word UNK04_022106C8
+_021E1028: .word 0x000082EA
+_021E102C: .word 0x0000EA60
+_021E1030: .word 0xFFFF1172
+ arm_func_end MOD04_021E0F1C
+
+ arm_func_start MOD04_021E1034
+MOD04_021E1034: ; 0x021E1034
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E106C ; =MOD04_021E0C80
+ mov r1, #0
+ bl MOD04_021E0A00
+ ldr r0, _021E1070 ; =UNK04_022106C8
+ mov r3, #1
+ ldr r2, [r0]
+ mov r1, #0
+ str r3, [r2, #4]
+ ldr r0, [r0]
+ str r1, [r0, #0x30]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E106C: .word MOD04_021E0C80
+_021E1070: .word UNK04_022106C8
+ arm_func_end MOD04_021E1034
+
+ arm_func_start MOD04_021E1074
+MOD04_021E1074: ; 0x021E1074
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr ip, _021E10F4 ; =UNK04_022106C8
+ mov r6, r1
+ mov r5, r2
+ mov r1, #0
+ mov r2, #0x260
+ mov r4, r3
+ str r0, [ip]
+ bl MI_CpuFill8
+ ldr r0, _021E10F4 ; =UNK04_022106C8
+ mov r2, #0
+ ldr r1, [r0]
+ ldr ip, [sp, #0x10]
+ str r5, [r1]
+ ldr r1, [r0]
+ ldr r5, [sp, #0x14]
+ str r2, [r1, #4]
+ ldr r1, [r0]
+ ldr r3, [sp, #0x18]
+ str r4, [r1, #8]
+ ldr r1, [r0]
+ ldr r2, [sp, #0x1c]
+ str ip, [r1, #0xc]
+ ldr r1, [r0]
+ str r5, [r1, #0x10]
+ ldr r1, [r0]
+ str r3, [r1, #0x14]
+ ldr r1, [r0]
+ str r2, [r1, #0x18]
+ ldr r0, [r0]
+ str r6, [r0, #0x1c]
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E10F4: .word UNK04_022106C8
+ arm_func_end MOD04_021E1074
+
+ .section .data
+
+ .global UNK04_0220D34C
+UNK04_0220D34C: ; 0x0220D34C
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .section .bss
+
+ .global UNK04_022106C4
+UNK04_022106C4: ; 0x022106C4
+ .space 0x4
+
+ .global UNK04_022106C8
+UNK04_022106C8: ; 0x022106C8
+ .space 0x4
+
+ .global UNK04_022106CC
+UNK04_022106CC: ; 0x022106CC
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021E10F8.s b/arm9/modules/04/asm/mod04_021E10F8.s
new file mode 100644
index 00000000..0216e485
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021E10F8.s
@@ -0,0 +1,1670 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021E10F8
+MOD04_021E10F8: ; 0x021E10F8
+ ldr r0, _021E1108 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bx lr
+ .align 2, 0
+_021E1108: .word UNK04_022106D0
+ arm_func_end MOD04_021E10F8
+
+ 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
+ ldr r0, [sl]
+ mov r8, #0
+ cmp r0, #0
+ mov r0, #1
+ str r0, [sp]
+ addne sp, sp, #0x24
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r4, _021E12B4 ; =UNK04_022106D0
+ mov sb, r8
+ ldr r2, [r4]
+ ldr r1, [r2, #0x14]
+ cmp r1, #0
+ ble _021E1274
+ mov r7, r8
+ str r0, [sp, #4]
+ mov fp, r8
+ mov r5, r0
+_021E115C:
+ ldr r0, [r2, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #1
+ bne _021E11C8
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ add r2, sp, #8
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_LoginIdToUserName
+ add r0, sp, #8
+ add r1, sl, #0x8e
+ bl strcmp
+ cmp r0, #0
+ bne _021E125C
+ ldr r0, [r4]
+ ldr r1, [sl, #4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWCi_SetBuddyFriendData
+ mov r8, r5
+ b _021E125C
+_021E11C8:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ beq _021E11F8
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E125C
+_021E11F8:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #1
+ streq fp, [sp]
+ beq _021E125C
+ ldr r6, [sl, #4]
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_GetGsProfileId
+ cmp r6, r0
+ bne _021E125C
+ ldr r0, [r4]
+ mov r1, r6
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWCi_SetBuddyFriendData
+ ldr r8, [sp, #4]
+_021E125C:
+ ldr r2, [r4]
+ add sb, sb, #1
+ ldr r1, [r2, #0x14]
+ add r7, r7, #0xc
+ cmp sb, r1
+ blt _021E115C
+_021E1274:
+ cmp r8, #0
+ addeq sp, sp, #0x24
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [r2, #0x18]
+ ldr r2, [sl, #4]
+ bl MOD04_021E17F0
+ ldr r1, [sp]
+ cmp r1, #0
+ beq _021E129C
+ bl MOD04_021E1DA4
+_021E129C:
+ ldr r0, _021E12B4 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x1d]
+ add sp, sp, #0x24
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E12B4: .word UNK04_022106D0
+ arm_func_end MOD04_021E110C
+
+ 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
+ ldr r1, [sb]
+ mov sl, r0
+ cmp r1, #0
+ mov fp, #0
+ addne sp, sp, #0x1c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r4, _021E1410 ; =UNK04_022106D0
+ mov r8, fp
+ ldr r1, [r4]
+ ldr r0, [r1, #0x14]
+ cmp r0, #0
+ ble _021E13E4
+ add r0, sb, #0x8e
+ mov r7, fp
+ mov r5, #1
+ str r0, [sp]
+_021E1304:
+ ldr r0, [r1, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #1
+ bne _021E136C
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ add r2, sp, #4
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_LoginIdToUserName
+ ldr r1, [sp]
+ add r0, sp, #4
+ bl strcmp
+ cmp r0, #0
+ bne _021E13CC
+ ldr r1, [sb, #4]
+ mov r0, sl
+ bl MOD04_021F0944
+ ldr r0, [r4]
+ ldr r1, [sb, #4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ mov fp, r5
+ b _021E13CC
+_021E136C:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ beq _021E139C
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E13CC
+_021E139C:
+ ldr r6, [sb, #4]
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_GetGsProfileId
+ cmp r6, r0
+ bne _021E13CC
+ mov r0, sl
+ mov r1, r6
+ bl MOD04_021F0944
+ mov fp, r5
+_021E13CC:
+ ldr r1, [r4]
+ add r8, r8, #1
+ ldr r0, [r1, #0x14]
+ add r7, r7, #0xc
+ cmp r8, r0
+ blt _021E1304
+_021E13E4:
+ cmp fp, #0
+ beq _021E13FC
+ ldr r0, [sb, #4]
+ 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 MOD04_021F0864
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E1410: .word UNK04_022106D0
+ arm_func_end MOD04_021E12B8
+
+ 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
+ ldr r1, [sb]
+ mov sl, r0
+ mov r8, r2
+ cmp r1, #0
+ bne _021E15FC
+ ldr r0, [sb, #4]
+ cmp r0, #0
+ beq _021E15FC
+ mov r0, #0xc
+ ldr r1, _021E1670 ; =UNK04_022106D0
+ mul r6, r8, r0
+ ldr r0, [r1]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWC_GetFriendDataType
+ cmp r0, #0
+ beq _021E15FC
+ ldr r7, _021E1670 ; =UNK04_022106D0
+ ldr r1, [r7]
+ ldr r0, [r1]
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, #1
+ strb r0, [r1, #0x1d]
+ ldr r0, [sb, #4]
+ mov r5, #0
+ cmp r0, #0
+ ble _021E14FC
+ mov r4, r5
+_021E1498:
+ ldr r0, [r7]
+ ldr r1, [sb, #0xc]
+ ldr r0, [r0, #0x18]
+ ldr r2, [r1, r4]
+ mov r1, r8
+ bl MOD04_021E1900
+ cmp r0, #0
+ beq _021E14E8
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r2, #1
+ ldr r4, [r0]
+ ldr r1, _021E1674 ; =0x00000601
+ ldrb r3, [r4, #0x1c]
+ add sp, sp, #4
+ add r3, r3, #1
+ strb r3, [r4, #0x1c]
+ ldr r0, [r0]
+ strb r2, [r0, #0x1e]
+ str r1, [sb, #8]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E14E8:
+ ldr r0, [sb, #4]
+ add r5, r5, #1
+ cmp r5, r0
+ add r4, r4, #0xac
+ blt _021E1498
+_021E14FC:
+ cmp r0, #0
+ mov r5, #0
+ ble _021E15C4
+ mov r7, r5
+ add fp, sp, #0
+ mvn r4, #0
+_021E1514:
+ ldr r1, [sb, #0xc]
+ mov r0, sl
+ ldr r1, [r1, r7]
+ mov r2, fp
+ bl MOD04_021F0664
+ bl MOD04_021E1678
+ ldr r0, [sp]
+ cmp r0, r4
+ bne _021E1548
+ ldr r0, [sb, #0xc]
+ ldr r0, [r0, r7]
+ bl MOD04_021E17BC
+ b _021E15B0
+_021E1548:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r1, [sb, #0xc]
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWC_SetGsProfileId
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWCi_SetBuddyFriendData
+ mov r0, r8
+ bl MOD04_021E1DA4
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r2, #1
+ ldr r4, [r0]
+ ldr r1, _021E1674 ; =0x00000601
+ ldrb r3, [r4, #0x1c]
+ add sp, sp, #4
+ add r3, r3, #1
+ strb r3, [r4, #0x1c]
+ ldr r0, [r0]
+ strb r2, [r0, #0x1e]
+ str r1, [sb, #8]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E15B0:
+ ldr r0, [sb, #4]
+ add r5, r5, #1
+ cmp r5, r0
+ add r7, r7, #0xac
+ blt _021E1514
+_021E15C4:
+ ldr r0, [sb, #8]
+ cmp r0, #0x600
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r3, [r0]
+ add sp, sp, #4
+ ldrb r2, [r3, #0x1c]
+ add r2, r2, #1
+ strb r2, [r3, #0x1c]
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E15FC:
+ ldr r0, [sb]
+ cmp r0, #0
+ beq _021E1618
+ bl MOD04_021E1678
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1618:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldr r0, [r1]
+ cmp r0, #1
+ beq _021E1648
+ ldr r1, [r1, #0x18]
+ mov r0, #0xc
+ mla r0, r8, r0, r1
+ bl DWC_GetFriendDataType
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1648:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r3, [r0]
+ ldrb r2, [r3, #0x1c]
+ add r2, r2, #1
+ strb r2, [r3, #0x1c]
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E1670: .word UNK04_022106D0
+_021E1674: .word 0x00000601
+ arm_func_end MOD04_021E1414
+
+ arm_func_start MOD04_021E1678
+MOD04_021E1678: ; 0x021E1678
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #4
+ addls pc, pc, r4, lsl #2
+ b _021E16D4
+_021E1694: ; jump table
+ b _021E16D4 ; case 0
+ b _021E16A8 ; case 1
+ b _021E16B4 ; case 2
+ b _021E16C0 ; case 3
+ b _021E16CC ; case 4
+_021E16A8:
+ mov r0, #9
+ mvn r2, #0
+ b _021E16D4
+_021E16B4:
+ mov r0, #9
+ mvn r2, #1
+ b _021E16D4
+_021E16C0:
+ mov r0, #6
+ mvn r2, #9
+ b _021E16D4
+_021E16CC:
+ mov r0, #6
+ mvn r2, #0x13
+_021E16D4:
+ ldr r1, _021E16E8 ; =0xFFFEEAA8
+ add r1, r2, r1
+ bl MOD04_021E2114
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E16E8: .word 0xFFFEEAA8
+ arm_func_end MOD04_021E1678
+
+ arm_func_start MOD04_021E16EC
+MOD04_021E16EC: ; 0x021E16EC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021E17B8 ; =UNK04_022106D0
+ mov r3, #0
+ ldr r2, [r2]
+ mov r5, r0
+ mov r4, r1
+ str r3, [sp]
+ cmp r2, #0
+ beq _021E1720
+ bl MOD04_021E05FC
+ cmp r0, #0
+ bne _021E172C
+_021E1720:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E172C:
+ bl MOD04_021E0F00
+ mov r1, r5
+ bl DWC_GetGsProfileId
+ mov r5, r0
+ cmp r5, #0
+ ble _021E176C
+ ldr r0, _021E17B8 ; =UNK04_022106D0
+ add r2, sp, #0
+ ldr r0, [r0]
+ mov r1, r5
+ ldr r0, [r0, #4]
+ bl MOD04_021F0664
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+_021E176C:
+ cmp r5, #0
+ ble _021E1784
+ ldr r1, [sp]
+ mvn r0, #0
+ cmp r1, r0
+ bne _021E1790
+_021E1784:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E1790:
+ ldr r0, _021E17B8 ; =UNK04_022106D0
+ mov r2, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F06E4
+ cmp r0, #0
+ movne r0, #0
+ moveq r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E17B8: .word UNK04_022106D0
+ arm_func_end MOD04_021E16EC
+
+ arm_func_start MOD04_021E17BC
+MOD04_021E17BC: ; 0x021E17BC
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E17E8 ; =UNK04_022106D0
+ mov r1, r0
+ ldr r0, [r2]
+ ldr r2, _021E17EC ; =UNK04_0220D350
+ ldr r0, [r0, #4]
+ bl MOD04_021F09B0
+ mov r4, r0
+ bl MOD04_021E1678
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E17E8: .word UNK04_022106D0
+_021E17EC: .word UNK04_0220D350
+ arm_func_end MOD04_021E17BC
+
+ 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
+ mov fp, r0
+ mvn r0, #0
+ str r2, [sp]
+ cmp sl, #0
+ str r0, [sp, #4]
+ mov r8, #0
+ ble _021E18F0
+ mov r6, fp
+ mov r5, fp
+ mov r0, #1
+ str r0, [sp, #8]
+_021E1828:
+ mov r0, r8
+ bl MOD04_021E1F84
+ movs sb, r0
+ beq _021E18DC
+ ldr r0, [sp]
+ add r7, r8, #1
+ cmp sb, r0
+ streq r8, [sp, #4]
+ cmp r7, sl
+ bge _021E18DC
+ mov r0, #0xc
+ mla r4, r7, r0, fp
+_021E1858:
+ mov r0, r7
+ bl MOD04_021E1F84
+ cmp sb, r0
+ bne _021E18CC
+ mov r0, r6
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E1894
+ mov r0, r4
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ bne _021E1894
+ mov r0, r5
+ mov r1, sb
+ bl DWC_SetGsProfileId
+_021E1894:
+ mov r0, r4
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ beq _021E18AC
+ mov r0, r5
+ bl DWCi_SetBuddyFriendData
+_021E18AC:
+ mov r0, fp
+ mov r1, r7
+ mov r2, r8
+ bl MOD04_021E19B8
+ ldr r0, _021E18FC ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldr r0, [sp, #8]
+ strb r0, [r1, #0x1d]
+_021E18CC:
+ add r7, r7, #1
+ cmp r7, sl
+ add r4, r4, #0xc
+ blt _021E1858
+_021E18DC:
+ add r8, r8, #1
+ cmp r8, sl
+ add r6, r6, #0xc
+ add r5, r5, #0xc
+ blt _021E1828
+_021E18F0:
+ ldr r0, [sp, #4]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E18FC: .word UNK04_022106D0
+ arm_func_end MOD04_021E17F0
+
+ arm_func_start MOD04_021E1900
+MOD04_021E1900: ; 0x021E1900
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r1
+ mov r7, r0
+ mov r5, r2
+ cmp r6, #0
+ mov r4, #0
+ ble _021E19A8
+_021E1920:
+ mov r0, r4
+ bl MOD04_021E1F84
+ cmp r0, #0
+ beq _021E199C
+ cmp r0, r5
+ bne _021E199C
+ mov r0, #0xc
+ mla r0, r6, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ beq _021E1974
+ mov r0, #0xc
+ mla r0, r4, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ bne _021E1974
+ mov r0, r7
+ mov r1, r4
+ mov r2, r6
+ bl MOD04_021E19B8
+ b _021E1984
+_021E1974:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ bl MOD04_021E19B8
+_021E1984:
+ ldr r1, _021E19B4 ; =UNK04_022106D0
+ mov r0, #1
+ ldr r1, [r1]
+ add sp, sp, #4
+ strb r0, [r1, #0x1d]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E199C:
+ add r4, r4, #1
+ cmp r4, r6
+ blt _021E1920
+_021E19A8:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E19B4: .word UNK04_022106D0
+ arm_func_end MOD04_021E1900
+
+ arm_func_start MOD04_021E19B8
+MOD04_021E19B8: ; 0x021E19B8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r3, _021E1A1C ; =UNK04_022106D0
+ mov r5, r1
+ ldr r1, [r3]
+ mov r4, r2
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ mov r2, #0xc
+ mla r0, r5, r2, r0
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _021E1A1C ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r3, [r0, #0x3c]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, [r0, #0x40]
+ mov r0, r5
+ mov r1, r4
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E1A1C: .word UNK04_022106D0
+ arm_func_end MOD04_021E19B8
+
+ arm_func_start MOD04_021E1A20
+MOD04_021E1A20: ; 0x021E1A20
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021E1A5C ; =UNK04_022106D0
+ mov r0, #0
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x1d]
+ ldr r2, [r3, #0x30]
+ ldr r3, [r3, #0x2c]
+ blx r3
+ ldr r0, _021E1A5C ; =UNK04_022106D0
+ mov r1, #2
+ ldr r0, [r0]
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1A5C: .word UNK04_022106D0
+ arm_func_end MOD04_021E1A20
+
+ 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 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r2, [r2]
+ mov r5, r1
+ ldrb r0, [r2, #0x1e]
+ cmp r0, #0
+ bne _021E1B8C
+ ldr r0, [r2, #4]
+ add r1, sp, #0x18
+ bl MOD04_021F0828
+ bl MOD04_021E1678
+ ldr r0, [sp, #0x18]
+ mov fp, #0
+ str fp, [sp, #0x1c]
+ cmp r0, #0
+ ble _021E1B7C
+ ldr r8, _021E1CC4 ; =UNK04_022106D0
+ mov sb, #1
+ mov r7, #0xc
+_021E1AB4:
+ ldr r0, [r8]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r0, #4]
+ add r2, sp, #0x38
+ bl MOD04_021F06E4
+ bl MOD04_021E1678
+ mov r4, fp
+ cmp r5, #0
+ ble _021E1B30
+_021E1AD8:
+ mov r0, r4
+ bl MOD04_021E1F84
+ ldr r1, [sp, #0x38]
+ cmp r1, r0
+ bne _021E1B24
+ mul sl, r4, r7
+ add r0, r6, sl
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ bne _021E1B30
+ add sl, r6, sl
+ ldr r1, [sp, #0x38]
+ mov r0, sl
+ bl DWC_SetGsProfileId
+ mov r0, sl
+ bl DWCi_SetBuddyFriendData
+ ldr r0, [r8]
+ strb sb, [r0, #0x1d]
+ b _021E1B30
+_021E1B24:
+ add r4, r4, #1
+ cmp r4, r5
+ blt _021E1AD8
+_021E1B30:
+ cmp r4, r5
+ bne _021E1B64
+ ldr r0, [r8]
+ ldr r1, [sp, #0x38]
+ ldr r0, [r0, #4]
+ bl MOD04_021F0580
+ bl MOD04_021E1678
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ sub r1, r1, #1
+ sub r0, r0, #1
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+_021E1B64:
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r1, r1, #1
+ str r1, [sp, #0x1c]
+ cmp r1, r0
+ blt _021E1AB4
+_021E1B7C:
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+_021E1B8C:
+ ldr sl, _021E1CC4 ; =UNK04_022106D0
+ ldr r0, [sl]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, r5
+ addge sp, sp, #0x24c
+ ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r4, sp, #0x1c
+ mov r8, #0xc
+ mvn sb, #0
+_021E1BB0:
+ bl MOD04_021E1F84
+ movs r7, r0
+ beq _021E1C08
+ ldr r1, [sl]
+ mov r0, r6
+ ldrb r1, [r1, #0x1c]
+ mov r2, r7
+ bl MOD04_021E1900
+ cmp r0, #0
+ bne _021E1C9C
+ ldr r0, [sl]
+ mov r1, r7
+ ldr r0, [r0, #4]
+ mov r2, r4
+ bl MOD04_021F0664
+ bl MOD04_021E1678
+ ldr r0, [sp, #0x1c]
+ cmp r0, sb
+ bne _021E1C9C
+ mov r0, r7
+ bl MOD04_021E17BC
+ b _021E1C9C
+_021E1C08:
+ bl MOD04_021E0F00
+ ldr r1, [sl]
+ ldrb r2, [r1, #0x1c]
+ mla r1, r2, r8, r6
+ bl DWC_GetGsProfileId
+ cmp r0, sb
+ bne _021E1C9C
+ bl MOD04_021E0F00
+ ldr r2, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #0xc
+ ldr r3, [r2]
+ add r2, sp, #0x20
+ ldrb r3, [r3, #0x1c]
+ mla r1, r3, r1, r6
+ bl DWC_LoginIdToUserName
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #0
+ ldr r4, [r0]
+ add r2, sp, #0x20
+ str r1, [sp]
+ str r2, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, _021E1CC8 ; =MOD04_021E1414
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldrb r0, [r4, #0x1c]
+ mov r2, r1
+ mov r3, r1
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #4]
+ bl MOD04_021F0C84
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #2
+ ldr r0, [r0]
+ add sp, sp, #0x24c
+ strb r1, [r0, #0x1e]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1C9C:
+ ldr r1, [sl]
+ ldrb r0, [r1, #0x1c]
+ add r0, r0, #1
+ strb r0, [r1, #0x1c]
+ ldr r0, [sl]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, r5
+ blt _021E1BB0
+ add sp, sp, #0x24c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E1CC4: .word UNK04_022106D0
+_021E1CC8: .word MOD04_021E1414
+ arm_func_end MOD04_021E1A60
+
+ arm_func_start MOD04_021E1CCC
+MOD04_021E1CCC: ; 0x021E1CCC
+ ldr r0, _021E1CF8 ; =UNK04_022106D0
+ ldr r1, [r0]
+ cmp r1, #0
+ bxeq lr
+ mov r2, #0
+ str r2, [r1]
+ ldr r1, [r0]
+ strb r2, [r1, #0x1e]
+ ldr r0, [r0]
+ strb r2, [r0, #0x1f]
+ bx lr
+ .align 2, 0
+_021E1CF8: .word UNK04_022106D0
+ arm_func_end MOD04_021E1CCC
+
+ arm_func_start MOD04_021E1CFC
+MOD04_021E1CFC: ; 0x021E1CFC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021E1D88 ; =UNK04_022106D0
+ mov r5, #0
+ ldr r4, [r0]
+ bl OS_GetTick
+ ldr r3, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ subs r3, r0, r3
+ sbc r0, r1, r2
+ mov r1, r0, lsl #6
+ ldr r2, _021E1D8C ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, r5
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, #0x12c
+ blo _021E1D7C
+ ldr r1, [r4, #8]
+ ldr r0, _021E1D88 ; =UNK04_022106D0
+ add r1, r1, #1
+ str r1, [r4, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F0F18
+ mov r5, r0
+ bl OS_GetTick
+ ldr r2, _021E1D88 ; =UNK04_022106D0
+ ldr r2, [r2]
+ str r0, [r2, #0xc]
+ str r1, [r2, #0x10]
+_021E1D7C:
+ mov r0, r5
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E1D88: .word UNK04_022106D0
+_021E1D8C: .word 0x000082EA
+ arm_func_end MOD04_021E1CFC
+
+ arm_func_start MOD04_021E1D90
+MOD04_021E1D90: ; 0x021E1D90
+ ldr r0, _021E1DA0 ; =UNK04_022106D0
+ mov r1, #0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_021E1DA0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1D90
+
+ arm_func_start MOD04_021E1DA4
+MOD04_021E1DA4: ; 0x021E1DA4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x210
+ ldr r1, _021E1E2C ; =UNK04_022106D0
+ mov r4, r0
+ ldr r3, [r1]
+ ldr r2, [r3, #0x44]
+ cmp r2, #0
+ beq _021E1DD8
+ ldr r1, [r3]
+ cmp r1, #1
+ beq _021E1DD8
+ ldr r1, [r3, #0x48]
+ blx r2
+_021E1DD8:
+ ldr r0, _021E1E2C ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldr r0, [r1, #0x34]
+ cmp r0, #0
+ addeq sp, sp, #0x210
+ ldmeqia sp!, {r4, pc}
+ ldr r1, [r1, #0x18]
+ mov r0, #0xc
+ mla r0, r4, r0, r1
+ add r1, sp, #0x108
+ bl MOD04_021E26B8
+ ldr r2, _021E1E2C ; =UNK04_022106D0
+ mov r1, r0
+ ldr r0, [r2]
+ add r2, sp, #0x108
+ ldr r3, [r0, #0x38]
+ ldr ip, [r0, #0x34]
+ mov r0, r4
+ blx ip
+ add sp, sp, #0x210
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E1E2C: .word UNK04_022106D0
+ arm_func_end MOD04_021E1DA4
+
+ arm_func_start MOD04_021E1E30
+MOD04_021E1E30: ; 0x021E1E30
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r3, _021E1ED0 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r0, [r3]
+ mov r5, r1
+ mov r4, r2
+ cmp r0, #0
+ beq _021E1E5C
+ bl MOD04_021E05FC
+ cmp r0, #0
+ bne _021E1E64
+_021E1E5C:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E1E64:
+ mvn r0, #0
+ cmp r6, r0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ ldreq r6, [r0, #0x214]
+ cmp r5, #0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ mov r1, r6
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ addeq r5, r0, #0x218
+ cmp r4, #0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ mov r2, r5
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ addeq r4, r0, #0x318
+ ldr r0, _021E1ED0 ; =UNK04_022106D0
+ mov r3, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F034C
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E1ED0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1E30
+
+ arm_func_start MOD04_021E1ED4
+MOD04_021E1ED4: ; 0x021E1ED4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E1F14 ; =UNK04_022106D0
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ str r0, [r1, #8]
+ bl OS_GetTick
+ ldr r2, _021E1F14 ; =UNK04_022106D0
+ ldr r2, [r2]
+ str r0, [r2, #0xc]
+ str r1, [r2, #0x10]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1F14: .word UNK04_022106D0
+ arm_func_end MOD04_021E1ED4
+
+ arm_func_start MOD04_021E1F18
+MOD04_021E1F18: ; 0x021E1F18
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r4, _021E1F80 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E1F38
+ cmp r6, #0
+ bne _021E1F40
+_021E1F38:
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E1F40:
+ ldr r0, [r0, #0x14]
+ mov r5, #0
+ cmp r0, #0
+ ble _021E1F78
+_021E1F50:
+ mov r0, r5
+ bl MOD04_021E1F84
+ cmp r6, r0
+ moveq r0, r5
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, [r4]
+ add r5, r5, #1
+ ldr r0, [r0, #0x14]
+ cmp r5, r0
+ blt _021E1F50
+_021E1F78:
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E1F80: .word UNK04_022106D0
+ arm_func_end MOD04_021E1F18
+
+ arm_func_start MOD04_021E1F84
+MOD04_021E1F84: ; 0x021E1F84
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _021E1FE0 ; =UNK04_022106D0
+ mov r5, r0
+ ldr r0, [r1]
+ ldr r4, [r0, #0x18]
+ cmp r4, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ bl MOD04_021E0F00
+ mov r1, #0xc
+ mla r1, r5, r1, r4
+ bl DWC_GetGsProfileId
+ cmp r0, #0
+ beq _021E1FD4
+ mvn r1, #0
+ cmp r0, r1
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+_021E1FD4:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E1FE0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1F84
+
+ arm_func_start MOD04_021E1FE4
+MOD04_021E1FE4: ; 0x021E1FE4
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x210
+ ldr r2, _021E2064 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r0, [r2]
+ mov r5, r1
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ addeq sp, sp, #0x210
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, [r5]
+ bl MOD04_021E1F18
+ mov r4, r0
+ mvn r0, #0
+ cmp r4, r0
+ addeq sp, sp, #0x210
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, [r5, #8]
+ add r2, sp, #0
+ mov r0, r6
+ bl MOD04_021F06E4
+ ldr r0, _021E2064 ; =UNK04_022106D0
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ add r2, sp, #0x108
+ ldr r3, [r0, #0x38]
+ ldr ip, [r0, #0x34]
+ mov r0, r4
+ and r1, r1, #0xff
+ blx ip
+ add sp, sp, #0x210
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E2064: .word UNK04_022106D0
+ arm_func_end MOD04_021E1FE4
+
+ arm_func_start MOD04_021E2068
+MOD04_021E2068: ; 0x021E2068
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ mov r4, r1
+ mov r5, r0
+ ldr r0, [r4, #8]
+ ldr r1, _021E20C0 ; =UNK04_0220D354
+ bl strcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ 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 MOD04_021F0B9C
+ mov r0, #1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E20C0: .word UNK04_0220D354
+_021E20C4: .word MOD04_021E110C
+ arm_func_end MOD04_021E2068
+
+ arm_func_start MOD04_021E20C8
+MOD04_021E20C8: ; 0x021E20C8
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r2, _021E210C ; =UNK04_022106D0
+ ldr r2, [r2]
+ ldr r2, [r2, #0x18]
+ cmp r2, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {pc}
+ ldr r3, _021E2110 ; =MOD04_021E12B8
+ mov r2, #0
+ str r3, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r1]
+ mov r3, r2
+ bl MOD04_021F0B9C
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E210C: .word UNK04_022106D0
+_021E2110: .word MOD04_021E12B8
+ arm_func_end MOD04_021E20C8
+
+ arm_func_start MOD04_021E2114
+MOD04_021E2114: ; 0x021E2114
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E2170 ; =UNK04_022106D0
+ mov r4, r0
+ ldr r2, [r2]
+ cmp r2, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021DD6B0
+ ldr r0, _021E2170 ; =UNK04_022106D0
+ ldr r3, [r0]
+ ldr r0, [r3]
+ cmp r0, #0
+ beq _021E2168
+ cmp r0, #2
+ beq _021E2168
+ ldrb r1, [r3, #0x1d]
+ ldr r2, [r3, #0x30]
+ ldr r3, [r3, #0x2c]
+ mov r0, r4
+ blx r3
+_021E2168:
+ bl MOD04_021E1CCC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E2170: .word UNK04_022106D0
+ arm_func_end MOD04_021E2114
+
+ arm_func_start MOD04_021E2174
+MOD04_021E2174: ; 0x021E2174
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021E2224 ; =UNK04_022106D0
+ ldr r5, [sp, #0x10]
+ ldr r1, [r0]
+ ldr r4, [sp, #0x14]
+ str r2, [r1, #0x2c]
+ ldr r1, [r0]
+ ldr lr, [sp, #0x18]
+ str r3, [r1, #0x30]
+ ldr r1, [r0]
+ ldr ip, [sp, #0x1c]
+ str r5, [r1, #0x34]
+ ldr r1, [r0]
+ mov r3, #0
+ str r4, [r1, #0x38]
+ ldr r1, [r0]
+ mov r2, #1
+ str lr, [r1, #0x3c]
+ ldr r1, [r0]
+ str ip, [r1, #0x40]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1d]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1e]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1f]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1c]
+ ldr r1, [r0]
+ str r2, [r1]
+ ldr r1, [r0]
+ ldr r0, [r1, #0x18]
+ cmp r0, #0
+ ldreqb r0, [r1, #0x1f]
+ addeq r0, r0, #1
+ streqb r0, [r1, #0x1f]
+ ldr r0, _021E2224 ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x1f]
+ add r0, r0, #1
+ strb r0, [r1, #0x1f]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E2224: .word UNK04_022106D0
+ arm_func_end MOD04_021E2174
+
+ arm_func_start MOD04_021E2228
+MOD04_021E2228: ; 0x021E2228
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x18]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD04_021E10F8
+ cmp r0, #0
+ bne _021E227C
+ bl MOD04_021FBE5C
+ cmp r0, #0
+ beq _021E2280
+_021E227C:
+ bl MOD04_021FBD00
+_021E2280:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021E231C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E231C
+ bl MOD04_021E1CFC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r3, [r0]
+ ldr r0, [r3, #0x18]
+ cmp r0, #0
+ beq _021E231C
+ ldrb r2, [r3, #0x1e]
+ cmp r2, #3
+ beq _021E231C
+ ldr r1, [r3, #8]
+ cmp r1, #7
+ bls _021E231C
+ cmp r2, #1
+ bhi _021E22EC
+ ldr r1, [r3, #0x14]
+ bl MOD04_021E1A60
+_021E22EC:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r3, [r0]
+ ldrb r2, [r3, #0x1c]
+ ldr r1, [r3, #0x14]
+ cmp r2, r1
+ blt _021E231C
+ mov r1, #3
+ strb r1, [r3, #0x1e]
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x1f]
+ add r0, r0, #1
+ strb r0, [r1, #0x1f]
+_021E231C:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x1f]
+ cmp r0, #2
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ mov r0, #0
+ strb r0, [r1, #0x1f]
+ bl MOD04_021E1A20
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E2348: .word UNK04_022106D0
+ arm_func_end MOD04_021E2228
+
+ arm_func_start MOD04_021E234C
+MOD04_021E234C: ; 0x021E234C
+ stmdb sp!, {r4, lr}
+ ldr lr, _021E2428 ; =UNK04_022106D0
+ mov ip, #0
+ str r0, [lr]
+ str ip, [r0]
+ ldr r4, [lr]
+ ldr r0, [sp, #8]
+ str r1, [r4, #4]
+ ldr r1, [lr]
+ str ip, [r1, #8]
+ ldr r1, [lr]
+ str ip, [r1, #0xc]
+ str ip, [r1, #0x10]
+ str r0, [r1, #0x14]
+ ldr r0, [lr]
+ str r3, [r0, #0x18]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1c]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1d]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1e]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1f]
+ ldr r0, [lr]
+ str ip, [r0, #0x20]
+ ldr r0, [lr]
+ str ip, [r0, #0x24]
+ ldr r0, [lr]
+ str r2, [r0, #0x28]
+ ldr r0, [lr]
+ str ip, [r0, #0x2c]
+ ldr r0, [lr]
+ str ip, [r0, #0x30]
+ ldr r0, [lr]
+ str ip, [r0, #0x34]
+ ldr r0, [lr]
+ str ip, [r0, #0x38]
+ ldr r0, [lr]
+ str ip, [r0, #0x3c]
+ ldr r0, [lr]
+ str ip, [r0, #0x40]
+ ldr r0, [lr]
+ str ip, [r0, #0x44]
+ ldr r0, [lr]
+ str ip, [r0, #0x48]
+ ldr r0, [lr]
+ str ip, [r0, #0x4c]
+ ldr r0, [lr]
+ str ip, [r0, #0x50]
+ ldr r0, [lr]
+ str ip, [r0, #0x54]
+ ldr r0, [lr]
+ str ip, [r0, #0x58]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E2428: .word UNK04_022106D0
+ arm_func_end MOD04_021E234C
+
+ arm_func_start MOD04_021E242C
+MOD04_021E242C: ; 0x021E242C
+ ldr r2, _021E2450 ; =UNK04_022106D0
+ ldr r3, [r2]
+ cmp r3, #0
+ moveq r0, #0
+ strne r0, [r3, #0x44]
+ ldrne r2, [r2]
+ movne r0, #1
+ strne r1, [r2, #0x48]
+ bx lr
+ .align 2, 0
+_021E2450: .word UNK04_022106D0
+ arm_func_end MOD04_021E242C
+
+ arm_func_start MOD04_021E2454
+MOD04_021E2454: ; 0x021E2454
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x104
+ ldr r2, _021E24DC ; =UNK04_022106D0
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ cmp r0, #0
+ beq _021E2480
+ bl MOD04_021E05FC
+ cmp r0, #0
+ bne _021E248C
+_021E2480:
+ add sp, sp, #0x104
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E248C:
+ add r2, sp, #0
+ mov r0, r5
+ mov r1, r4
+ mov r3, #0xff
+ bl MOD04_021DD4FC
+ mvn r3, #0
+ cmp r0, r3
+ addeq sp, sp, #0x104
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ add r2, sp, #0
+ mov r1, #0
+ strb r1, [r2, r0]
+ mov r0, r3
+ bl MOD04_021E1E30
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #0x104
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E24DC: .word UNK04_022106D0
+ arm_func_end MOD04_021E2454
+
+ 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 MOD04_021E259C
+ movs r5, r0
+ mvneq r1, #0
+ addeq sp, sp, #0x100
+ streq r1, [r4]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r0, sp, #0
+ bl strlen
+ mov r2, #0
+ mov r1, r0
+ add r0, sp, #0
+ mov r3, r2
+ bl MOD04_021DD36C
+ str r0, [r4]
+ cmp r6, #0
+ beq _021E2544
+ ldr r4, [r4]
+ mvn r0, #0
+ cmp r4, r0
+ bne _021E2550
+_021E2544:
+ add sp, sp, #0x100
+ mov r0, r5
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2550:
+ add r0, sp, #0
+ bl strlen
+ mov r1, r0
+ add r0, sp, #0
+ mov r2, r6
+ mov r3, r4
+ bl MOD04_021DD36C
+ mov r0, r5
+ add sp, sp, #0x100
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E24E0
+
+ 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 MOD04_021E24E0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E2578
+
+ 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 MOD04_021E16EC
+ cmp r0, #0
+ beq _021E268C
+ ldr r0, [sp, #8]
+ cmp r0, #6
+ bne _021E2650
+ cmp r6, #0
+ beq _021E260C
+ ldr r0, _021E26B0 ; =UNK04_0220D38C
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DE9F4
+ cmp r0, #0
+ movle r0, #0
+ strleb r0, [r6]
+ ble _021E260C
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ strb r0, [r6]
+_021E260C:
+ cmp r4, #0
+ beq _021E2668
+ ldr r0, _021E26B4 ; =UNK04_0220D390
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DE9F4
+ cmp r0, #0
+ movle r0, #0
+ strleb r0, [r4]
+ ble _021E2668
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ strb r0, [r4]
+ b _021E2668
+_021E2650:
+ cmp r6, #0
+ movne r0, #0
+ strneb r0, [r6]
+ cmp r4, #0
+ movne r0, #0
+ strneb r0, [r4]
+_021E2668:
+ cmp r5, #0
+ beq _021E267C
+ add r1, sp, #0x10c
+ mov r0, r5
+ bl strcpy
+_021E267C:
+ ldr r0, [sp, #8]
+ add sp, sp, #0x218
+ and r0, r0, #0xff
+ ldmia sp!, {r4, r5, r6, pc}
+_021E268C:
+ cmp r6, #0
+ movne r0, #0
+ strneb r0, [r6]
+ cmp r4, #0
+ movne r0, #0
+ strneb r0, [r4]
+ mov r0, #0
+ add sp, sp, #0x218
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E26B0: .word UNK04_0220D38C
+_021E26B4: .word UNK04_0220D390
+ arm_func_end MOD04_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 MOD04_021E259C
+ arm_func_end MOD04_021E26B8
+
+ .section .data
+
+ .global UNK04_0220D350
+UNK04_0220D350: ; 0x0220D350
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D354
+UNK04_0220D354: ; 0x0220D354
+ .asciz "I have authorized your request to add me to your list"
+
+ .balign 4, 0
+ .global UNK04_0220D38C
+UNK04_0220D38C: ; 0x0220D38C
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D390
+UNK04_0220D390: ; 0x0220D390
+ .asciz "SCN"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_022106D0
+UNK04_022106D0: ; 0x022106D0
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021E26D0.s b/arm9/modules/04/asm/mod04_021E26D0.s
new file mode 100644
index 00000000..8471cb82
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021E26D0.s
@@ -0,0 +1,9238 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021E26D0
+MOD04_021E26D0: ; 0x021E26D0
+ ldr r1, _021E26E0 ; =UNK04_022106D8
+ ldr r1, [r1]
+ str r0, [r1, #0x1a0]
+ bx lr
+ .align 2, 0
+_021E26E0: .word UNK04_022106D8
+ arm_func_end MOD04_021E26D0
+
+ arm_func_start MOD04_021E26E4
+MOD04_021E26E4: ; 0x021E26E4
+ ldr r0, _021E26F0 ; =UNK04_022106D8
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_021E26F0: .word UNK04_022106D8
+ arm_func_end MOD04_021E26E4
+
+ arm_func_start MOD04_021E26F4
+MOD04_021E26F4: ; 0x021E26F4
+ ldr r1, _021E2700 ; =UNK04_022106D8
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_021E2700: .word UNK04_022106D8
+ arm_func_end MOD04_021E26F4
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E273C
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x17d]
+ add r1, r1, #1
+ strb r1, [r0, #0x17d]
+_021E273C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E275C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17d]
+ cmp r0, #5
+ blo _021E2774
+_021E275C:
+ ldr r1, _021E2780 ; =0xFFFEAE6C
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ mov r0, #0
+ ldmfd sp!, {pc}
+_021E2774:
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E2780: .word 0xFFFEAE6C
+ arm_func_end MOD04_021E2704
+
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E27BC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, pc}
+_021E27BC:
+ cmp r4, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r5, #0
+ bne _021E29B8
+ mov r0, #0
+ str r0, [r4, #8]
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x14]
+ add r1, r1, #1
+ strb r1, [r0, #0x14]
+ bl MOD04_021E26E4
+ ldrb r1, [r4]
+ ldrb r5, [r0, #0x14]
+ cmp r1, #0
+ beq _021E2950
+ bl MOD04_021E26E4
+ ldr r1, [r6, #4]
+ add r0, r0, r5, lsl #2
+ str r1, [r0, #0x210]
+ ldrh r4, [r6, #2]
+ bl MOD04_021E26E4
+ mov r2, r4, asr #8
+ mov r1, r4, lsl #8
+ add r0, r0, r5, lsl #1
+ and r2, r2, #0xff
+ and r1, r1, #0xff00
+ orr r1, r2, r1
+ add r0, r0, #0x200
+ strh r1, [r0, #0x90]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x180]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x184]
+ str r1, [r0, #0x188]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ bne _021E2878
+ mov r0, #0xc
+ bl MOD04_021E26D0
+ b _021E2880
+_021E2878:
+ mov r0, #7
+ bl MOD04_021E26D0
+_021E2880:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ ldr r3, [r0, #0x200]
+ ldr r2, _021E2B58 ; =UNK04_0220D394
+ add r0, sp, #0x10
+ mov r1, #0xc
+ bl OS_SNPrintf
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ add r1, r6, r5, lsl #2
+ mov r2, r0
+ ldr r0, [r1, #0x210]
+ add r1, r2, r5, lsl #1
+ add r1, r1, #0x200
+ ldrh r1, [r1, #0x90]
+ mov r2, #0
+ bl MOD04_021FFEB0
+ mov r6, r0
+ bl MOD04_021E26E4
+ mvn r1, #0
+ str r1, [sp]
+ ldr r3, _021E2B5C ; =0x00001388
+ mov r1, #0
+ str r3, [sp, #4]
+ ldr r0, [r0, #8]
+ mov r2, r6
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #4]
+ add r3, sp, #0x10
+ ldr r0, [r0]
+ bl MOD04_021FD52C
+ cmp r0, #1
+ bne _021E2928
+ 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 MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ add sp, sp, #0x20
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2950:
+ cmp r6, #0
+ beq _021E2994
+ sub r4, r5, #1
+ bl MOD04_021E26E4
+ ldr r1, [r6, #4]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0x210]
+ ldrh r5, [r6, #2]
+ bl MOD04_021E26E4
+ mov r2, r5, asr #8
+ mov r1, r5, lsl #8
+ add r0, r0, r4, lsl #1
+ and r2, r2, #0xff
+ and r1, r1, #0xff00
+ orr r1, r2, r1
+ add r0, r0, #0x200
+ strh r1, [r0, #0x90]
+_021E2994:
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x18c]
+ mov r0, #7
+ str r1, [r4, #0x190]
+ bl MOD04_021E26D0
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, pc}
+_021E29B8:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, pc}
+ mov r0, r5
+ bl MOD04_021E3754
+ mov r6, r0
+ cmp r6, #2
+ beq _021E29E8
+ cmp r6, #1
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, pc}
+_021E29E8:
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _021E2A74
+ cmp r6, #1
+ beq _021E2A10
+ cmp r6, #2
+ bne _021E2A50
+ ldrb r0, [r4, #1]
+ cmp r0, #1
+ blo _021E2A50
+_021E2A10:
+ mov r0, #0
+ str r0, [r4, #8]
+ bl MOD04_021E2704
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ add sp, sp, #0x20
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2A50:
+ ldrb r1, [r4, #1]
+ mov r0, r4
+ add r1, r1, #1
+ strb r1, [r4, #1]
+ bl MOD04_021E7A44
+ bl MOD04_021E37A4
+ add sp, sp, #0x20
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2A74:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl OS_GetTick
+ str r0, [r5, #0x184]
+ str r1, [r5, #0x188]
+ cmp r6, #1
+ beq _021E2AB0
+ cmp r6, #2
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17c]
+ cmp r0, #1
+ addlo sp, sp, #0x20
+ ldmloia sp!, {r4, r5, r6, pc}
+_021E2AB0:
+ mov r0, #0
+ str r0, [r4, #8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E2AD8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E2AF0
+_021E2AD8:
+ mov r0, #1
+ bl MOD04_021E2704
+ cmp r0, #0
+ bne _021E2B04
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2AF0:
+ mov r0, #0
+ bl MOD04_021E2704
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021E2B04:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x180]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x184]
+ str r1, [r0, #0x188]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ cmp r0, #0
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E2B58: .word UNK04_0220D394
+_021E2B5C: .word 0x00001388
+ arm_func_end MOD04_021E2784
+
+ arm_func_start MOD04_021E2B60
+MOD04_021E2B60: ; 0x021E2B60
+ bx lr
+ arm_func_end MOD04_021E2B60
+
+ 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 MOD04_021DF88C
+ cmp r0, #5
+ beq _021E2BB8
+ bl MOD04_021DF88C
+ cmp r0, #6
+ addne sp, sp, #0x9c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E2BB8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ addne sp, sp, #0x9c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E2BB8:
+ cmp sb, #0x14
+ addlo sp, sp, #0x9c
+ ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r4, sp, #0x1c
+ add fp, sp, #8
+ add r5, sl, #0x14
+ mov r7, #0x14
+ mov r6, #4
+_021E2BD8:
+ mov r0, sl
+ mov r1, fp
+ mov r2, r7
+ bl MI_CpuCopy8
+ ldr r1, _021E2C74 ; =UNK04_0220D398
+ mov r0, fp
+ mov r2, r6
+ bl strncmp
+ cmp r0, #0
+ addne sp, sp, #0x9c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [sp, #0xc]
+ cmp r0, #3
+ addne sp, sp, #0x9c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldrb r2, [sp, #0x11]
+ mov r0, r5
+ mov r1, r4
+ bl MI_CpuCopy8
+ str r4, [sp]
+ ldrb r0, [sp, #0x11]
+ mov r0, r0, asr #2
+ str r0, [sp, #4]
+ ldrb r0, [sp, #0x10]
+ ldrh r3, [sp, #0x12]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ bl MOD04_021E6730
+ cmp r0, #0
+ addeq sp, sp, #0x9c
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldrb r0, [sp, #0x11]
+ add r0, r0, #0x14
+ add r8, r8, r0
+ add r0, r8, #0x14
+ cmp r0, sb
+ bls _021E2BD8
+ add sp, sp, #0x9c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E2C74: .word UNK04_0220D398
+ arm_func_end MOD04_021E2B64
+
+ arm_func_start MOD04_021E2C78
+MOD04_021E2C78: ; 0x021E2C78
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E2C9C
+ mov r0, #6
+ bl MOD04_021E26D0
+ b _021E2CBC
+_021E2C9C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E2CBC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ ldmneia sp!, {r4, pc}
+_021E2CBC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x180]
+ cmp r4, r0
+ bne _021E2CE0
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x17c]
+ add r1, r1, #1
+ strb r1, [r0, #0x17c]
+ b _021E2CF4
+_021E2CE0:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ str r4, [r0, #0x180]
+_021E2CF4:
+ bl MOD04_021E26E4
+ mov r2, #0
+ str r2, [r0, #0x184]
+ str r2, [r0, #0x188]
+ mov r1, r4
+ mov r0, #1
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E2C78
+
+ arm_func_start MOD04_021E2D2C
+MOD04_021E2D2C: ; 0x021E2D2C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl MOD04_021E26E4
+ str r5, [r0, #0x1c]
+ bl MOD04_021E26E4
+ strh r4, [r0, #0x1a]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E2D2C
+
+ arm_func_start MOD04_021E2D54
+MOD04_021E2D54: ; 0x021E2D54
+ ldr ip, _021E2D5C ; =MOD04_021E3800
+ bx ip
+ .align 2, 0
+_021E2D5C: .word MOD04_021E3800
+ arm_func_end MOD04_021E2D54
+
+ arm_func_start MOD04_021E2D60
+MOD04_021E2D60: ; 0x021E2D60
+ mov r0, #0
+ bx lr
+ arm_func_end MOD04_021E2D60
+
+ arm_func_start MOD04_021E2D68
+MOD04_021E2D68: ; 0x021E2D68
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r1
+ cmp r0, #0
+ beq _021E2D88
+ cmp r0, #1
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r0, #2
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2D88:
+ mov r0, r6
+ mov r1, #8
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0xa
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x32
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x33
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x34
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x35
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x36
+ bl MOD04_02202254
+ ldr r4, _021E2E0C ; =UNK04_02210704
+ mov r5, #0
+_021E2DE4:
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _021E2DF8
+ mov r0, r6
+ bl MOD04_02202254
+_021E2DF8:
+ add r5, r5, #1
+ cmp r5, #0x9a
+ add r4, r4, #0xc
+ blt _021E2DE4
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E2E0C: .word UNK04_02210704
+ arm_func_end MOD04_021E2D68
+
+ arm_func_start MOD04_021E2E10
+MOD04_021E2E10: ; 0x021E2E10
+ bx lr
+ arm_func_end MOD04_021E2E10
+
+ arm_func_start MOD04_021E2E14
+MOD04_021E2E14: ; 0x021E2E14
+ bx lr
+ arm_func_end MOD04_021E2E14
+
+ arm_func_start MOD04_021E2E18
+MOD04_021E2E18: ; 0x021E2E18
+ stmdb sp!, {r4, lr}
+ mov r4, r1
+ cmp r0, #0x32
+ bgt _021E2E54
+ cmp r0, #0x32
+ bge _021E2E9C
+ cmp r0, #0xa
+ bgt _021E2EF8
+ cmp r0, #8
+ blt _021E2EF8
+ cmp r0, #8
+ beq _021E2E74
+ cmp r0, #0xa
+ beq _021E2E88
+ b _021E2EF8
+_021E2E54:
+ sub r1, r0, #0x33
+ cmp r1, #3
+ addls pc, pc, r1, lsl #2
+ b _021E2EF8
+_021E2E64: ; jump table
+ b _021E2EB0 ; case 0
+ b _021E2EC4 ; case 1
+ b _021E2ED8 ; case 2
+ b _021E2EE8 ; case 3
+_021E2E74:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x14]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2E88:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x16]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2E9C:
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x200]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2EB0:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x15]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2EC4:
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x20]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2ED8:
+ mov r0, r4
+ mov r1, #3
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2EE8:
+ mov r0, r4
+ mov r1, #1
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2EF8:
+ subs r1, r0, #0x64
+ ldmmiia sp!, {r4, pc}
+ cmp r1, #0x9a
+ ldmgeia sp!, {r4, pc}
+ mov r0, #0xc
+ mul r2, r1, r0
+ ldr r0, _021E2F5C ; =UNK04_02210704
+ ldrb r0, [r0, r2]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _021E2F60 ; =UNK04_02210705
+ ldrb r0, [r0, r2]
+ cmp r0, #0
+ beq _021E2F44
+ ldr r1, _021E2F64 ; =UNK04_0221070C
+ mov r0, r4
+ ldr r1, [r1, r2]
+ bl MOD04_022021C0
+ ldmia sp!, {r4, pc}
+_021E2F44:
+ ldr r1, _021E2F64 ; =UNK04_0221070C
+ mov r0, r4
+ ldr r1, [r1, r2]
+ ldr r1, [r1]
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E2F5C: .word UNK04_02210704
+_021E2F60: .word UNK04_02210705
+_021E2F64: .word UNK04_0221070C
+ arm_func_end MOD04_021E2E18
+
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E2FF8
+ ldr r4, _021E30D8 ; =UNK04_0220BAC4
+ ldr r6, _021E30DC ; =UNK04_0220D3A0
+ mvn r5, #0
+_021E2FB4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, sb
+ bl MOD04_02203BF4
+ mov r1, r6
+ mov r2, r5
+ bl MOD04_0220394C
+ cmp r0, r8
+ movgt r8, r0
+ ldr r0, [r4, sb, lsl #2]
+ add sb, sb, #1
+ add r7, r7, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp sb, r0
+ blt _021E2FB4
+_021E2FF8:
+ mov r0, #0x64
+ bl MOD04_021DE8C8
+ mov sb, r0
+ mov r6, #0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E3090
+ add r5, sp, #0
+ mov fp, r6
+ mov r4, #0x64
+_021E3028:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ sub r0, r0, #1
+ cmp r6, r0
+ beq _021E3090
+ cmp r6, #0
+ subgt r0, r6, #1
+ ldrgt sl, [r5, r0, lsl #2]
+ ldr r0, _021E30D8 ; =UNK04_0220BAC4
+ movle sl, fp
+ ldr r2, [r0, r6, lsl #2]
+ mov r1, r7
+ mul r0, r2, r4
+ bl _s32_div_f
+ add r0, r0, sl
+ str r0, [r5, r6, lsl #2]
+ ldr r0, [r5, r6, lsl #2]
+ cmp sb, r0
+ blo _021E3090
+ add r6, r6, #1
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r6, r0
+ blt _021E3028
+_021E3090:
+ mvn r0, #0x80000000
+ cmp r8, r0
+ addlt r8, r8, #1
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r6
+ bl MOD04_02203BF4
+ ldr r1, _021E30DC ; =UNK04_0220D3A0
+ mov r2, r8
+ bl MOD04_02203A48
+ bl MOD04_021E26E4
+ mov r1, #0
+ ldr r0, [r0, #0xe4]
+ ldr r2, _021E30DC ; =UNK04_0220D3A0
+ mov r3, r1
+ bl MOD04_02203BD4
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E30D8: .word UNK04_0220BAC4
+_021E30DC: .word UNK04_0220D3A0
+ arm_func_end MOD04_021E2F68
+
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E3268
+ mov r0, #0x80
+ mov r4, #1
+ mov r5, r8
+ str r0, [sp, #8]
+ mov fp, #0x100
+_021E3120:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r8
+ bl MOD04_02203BF4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E31BC
+ ldr r1, _021E32D4 ; =UNK04_0220D3AC
+ mov r0, r6
+ mov r2, r5
+ bl MOD04_0220394C
+ mov sb, r0
+ mov sl, r5
+ mov r7, r4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E31B4
+_021E3170:
+ bl MOD04_021E26E4
+ add r0, r0, r7, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp sb, r0
+ bne _021E31A0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r6
+ bl MOD04_02203C50
+ mov sl, r4
+ sub r8, r8, #1
+ b _021E31B4
+_021E31A0:
+ add r7, r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r7, r0
+ ble _021E3170
+_021E31B4:
+ cmp sl, #0
+ bne _021E3250
+_021E31BC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x474]
+ cmp r0, #0
+ beq _021E3238
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x478]
+ ldr r2, [r7, #0x474]
+ mov r0, r8
+ blx r2
+ mov r7, r0
+ cmp r7, #0
+ ble _021E321C
+ ldr r0, _021E32D8 ; =0x007FFFFF
+ cmp r7, r0
+ movgt r7, r0
+ mov r0, fp
+ bl MOD04_021DE8C8
+ orr r2, r0, r7, lsl #8
+ ldr r1, _021E32DC ; =UNK04_0220D3A0
+ mov r0, r6
+ bl MOD04_02203A48
+ b _021E3250
+_021E321C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r6
+ bl MOD04_02203C50
+ str r4, [sp, #4]
+ sub r8, r8, #1
+ b _021E3250
+_021E3238:
+ ldr r0, [sp, #8]
+ bl MOD04_021DE8C8
+ mov r2, r0
+ ldr r1, _021E32DC ; =UNK04_0220D3A0
+ mov r0, r6
+ bl MOD04_02203A48
+_021E3250:
+ add r8, r8, #1
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r8, r0
+ blt _021E3120
+_021E3268:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _021E32A0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ beq _021E32A0
+ bl MOD04_021E26E4
+ mov r1, #0
+ ldr r0, [r0, #0xe4]
+ ldr r2, _021E32DC ; =UNK04_0220D3A0
+ mov r3, r1
+ bl MOD04_02203BD4
+_021E32A0:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _021E32C8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E32C8:
+ mov r0, #1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E32D4: .word UNK04_0220D3AC
+_021E32D8: .word 0x007FFFFF
+_021E32DC: .word UNK04_0220D3A0
+ arm_func_end MOD04_021E30E0
+
+ arm_func_start MOD04_021E32E0
+MOD04_021E32E0: ; 0x021E32E0
+ bx lr
+ arm_func_end MOD04_021E32E0
+
+ arm_func_start MOD04_021E32E4
+MOD04_021E32E4: ; 0x021E32E4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r0
+ cmp r1, #0
+ beq _021E330C
+ cmp r1, #4
+ beq _021E331C
+ add sp, sp, #4
+ cmp r1, #5
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E330C:
+ mov r0, r2
+ bl MOD04_021E32E0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E331C:
+ mov r5, #0
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E336C
+_021E332C:
+ mov r0, r6
+ mov r1, r5
+ bl MOD04_02203BF4
+ mov r4, r0
+ bl MOD04_021E3F98
+ cmp r0, #0
+ bne _021E3358
+ mov r0, r6
+ mov r1, r4
+ bl MOD04_02203C50
+ sub r5, r5, #1
+_021E3358:
+ mov r0, r6
+ add r5, r5, #1
+ bl MOD04_02203BE4
+ cmp r5, r0
+ blt _021E332C
+_021E336C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #2
+ beq _021E3394
+ cmp r0, #3
+ beq _021E348C
+ cmp r0, #5
+ beq _021E3508
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3394:
+ mov r0, r6
+ mov r5, #0
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E3424
+_021E33A8:
+ mov r0, r6
+ mov r1, r5
+ bl MOD04_02203BF4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _021E3410
+ bl MOD04_021E26E4
+ mov r7, r0
+ mov r0, r4
+ bl MOD04_02203908
+ ldr r1, [r7, #0x1c]
+ cmp r1, r0
+ bne _021E3410
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0
+ beq _021E3410
+ bl MOD04_021E26E4
+ mov r7, r0
+ mov r0, r4
+ bl MOD04_022038E4
+ ldrh r1, [r7, #0x1a]
+ cmp r1, r0
+ beq _021E3424
+_021E3410:
+ mov r0, r6
+ add r5, r5, #1
+ bl MOD04_02203BE4
+ cmp r5, r0
+ blt _021E33A8
+_021E3424:
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r5, r0
+ bge _021E3464
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3464:
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ add sp, sp, #4
+ str r1, [r4, #0xf0]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E348C:
+ mov r0, #1
+ bl MOD04_021E30E0
+ bl MOD04_021E2F68
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r0, #0
+ beq _021E34E0
+ mov r0, #0
+ mov r1, r0
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #4
+ 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 MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ add sp, sp, #4
+ str r1, [r4, #0xf0]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3508:
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r0, #0
+ beq _021E3580
+ mov r4, #0
+_021E351C:
+ mov r0, r6
+ mov r1, r4
+ bl MOD04_02203BF4
+ mov r5, r0
+ bl MOD04_02203908
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1b8]
+ cmp r7, r0
+ bne _021E3564
+ mov r0, r5
+ bl MOD04_022038E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb4]
+ cmp r7, r0
+ beq _021E3580
+_021E3564:
+ mov r0, r6
+ mov r1, r5
+ bl MOD04_02203C50
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r0, #0
+ bne _021E351C
+_021E3580:
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r0, #0
+ beq _021E3684
+ mov r0, r6
+ mov r1, #0
+ bl MOD04_02203BF4
+ ldr r1, _021E36AC ; =UNK04_0220D3AC
+ mov r2, #0
+ bl MOD04_0220394C
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E3650
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r4, r0
+ bne _021E3650
+ mov r0, #0
+ bl MOD04_021E30E0
+ cmp r0, #0
+ beq _021E3604
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E3650
+ bl MOD04_021E5824
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E3650
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3604:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, r0
+ mov r0, #0
+ ldr r2, [r1, #0xf4]
+ mov r1, r0
+ 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 MOD04_021E26D0
+ mov r0, r6
+ mov r1, #0
+ bl MOD04_02203BF4
+ mov r2, r0
+ mov r0, #0
+ mov r1, r0
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3684:
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ str r1, [r4, #0xf0]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E36AC: .word UNK04_0220D3AC
+ arm_func_end MOD04_021E32E4
+
+ arm_func_start MOD04_021E36B0
+MOD04_021E36B0: ; 0x021E36B0
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #7
+ addls pc, pc, r4, lsl #2
+ b _021E3734
+_021E36CC: ; jump table
+ b _021E3734 ; case 0
+ b _021E36EC ; case 1
+ b _021E36F8 ; case 2
+ b _021E3708 ; case 3
+ b _021E3714 ; case 4
+ b _021E36F8 ; case 5
+ b _021E3720 ; case 6
+ b _021E372C ; case 7
+_021E36EC:
+ mov r0, #9
+ mvn r2, #0
+ b _021E3734
+_021E36F8:
+ mov r0, #0
+ mov r2, r0
+ mov r4, r0
+ b _021E3734
+_021E3708:
+ mov r0, #6
+ mvn r2, #9
+ b _021E3734
+_021E3714:
+ mov r0, #6
+ mvn r2, #0x1d
+ b _021E3734
+_021E3720:
+ mov r0, #6
+ mvn r2, #0x45
+ b _021E3734
+_021E372C:
+ mov r0, #6
+ mvn r2, #0x4f
+_021E3734:
+ cmp r0, #0
+ beq _021E3748
+ ldr r1, _021E3750 ; =0xFFFEAC28
+ add r1, r2, r1
+ bl MOD04_021E8E08
+_021E3748:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E3750: .word 0xFFFEAC28
+ arm_func_end MOD04_021E36B0
+
+ arm_func_start MOD04_021E3754
+MOD04_021E3754: ; 0x021E3754
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #1
+ beq _021E3778
+ cmp r4, #2
+ beq _021E3780
+ b _021E3788
+_021E3778:
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+_021E3780:
+ mov r0, #2
+ ldmia sp!, {r4, pc}
+_021E3788:
+ movs r0, #6
+ beq _021E3798
+ ldr r1, _021E37A0 ; =0xFFFEB007
+ bl MOD04_021E8E08
+_021E3798:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E37A0: .word 0xFFFEB007
+ arm_func_end MOD04_021E3754
+
+ arm_func_start MOD04_021E37A4
+MOD04_021E37A4: ; 0x021E37A4
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #1
+ beq _021E37D4
+ cmp r4, #2
+ beq _021E37E0
+ cmp r4, #3
+ moveq r0, #6
+ mvneq r2, #0x1d
+ b _021E37E8
+_021E37D4:
+ mov r0, #9
+ mvn r2, #0
+ b _021E37E8
+_021E37E0:
+ mov r0, #6
+ mvn r2, #0x31
+_021E37E8:
+ ldr r1, _021E37FC ; =0xFFFEB010
+ add r1, r2, r1
+ bl MOD04_021E8E08
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E37FC: .word 0xFFFEB010
+ arm_func_end MOD04_021E37A4
+
+ arm_func_start MOD04_021E3800
+MOD04_021E3800: ; 0x021E3800
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r6, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r6, #5
+ addls pc, pc, r6, lsl #2
+ b _021E386C
+_021E381C: ; jump table
+ b _021E386C ; case 0
+ b _021E3834 ; case 1
+ b _021E3840 ; case 2
+ b _021E384C ; case 3
+ b _021E3858 ; case 4
+ b _021E3864 ; case 5
+_021E3834:
+ mov r4, #6
+ mvn r5, #0x31
+ b _021E386C
+_021E3840:
+ mov r4, #6
+ mvn r5, #0x3b
+ b _021E386C
+_021E384C:
+ mov r4, #6
+ mvn r5, #0x1d
+ b _021E386C
+_021E3858:
+ mov r4, #6
+ mvn r5, #0x4f
+ b _021E386C
+_021E3864:
+ mov r4, #6
+ mvn r5, #0x13
+_021E386C:
+ bl MOD04_021DF88C
+ cmp r0, #2
+ beq _021E388C
+ cmp r0, #4
+ beq _021E389C
+ cmp r0, #5
+ beq _021E38B0
+ b _021E38C4
+_021E388C:
+ mov r0, r4
+ sub r1, r5, #0xfa00
+ bl MOD04_021E0EAC
+ b _021E38D4
+_021E389C:
+ ldr r1, _021E38DC ; =0xFFFEDEF0
+ mov r0, r4
+ add r1, r5, r1
+ bl MOD04_021E2114
+ b _021E38D4
+_021E38B0:
+ ldr r1, _021E38E0 ; =0xFFFEB7E0
+ mov r0, r4
+ add r1, r5, r1
+ bl MOD04_021E8E08
+ b _021E38D4
+_021E38C4:
+ ldr r1, _021E38E4 ; =0xFFFE90D0
+ mov r0, r4
+ add r1, r5, r1
+ bl MOD04_021DD6B0
+_021E38D4:
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E38DC: .word 0xFFFEDEF0
+_021E38E0: .word 0xFFFEB7E0
+_021E38E4: .word 0xFFFE90D0
+ arm_func_end MOD04_021E3800
+
+ arm_func_start MOD04_021E38E8
+MOD04_021E38E8: ; 0x021E38E8
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #6
+ addls pc, pc, r4, lsl #2
+ b _021E3964
+_021E3904: ; jump table
+ b _021E3964 ; case 0
+ b _021E3920 ; case 1
+ b _021E392C ; case 2
+ b _021E3938 ; case 3
+ b _021E3944 ; case 4
+ b _021E3950 ; case 5
+ b _021E395C ; case 6
+_021E3920:
+ mov r0, #6
+ mvn r2, #0x31
+ b _021E3964
+_021E392C:
+ mov r0, #6
+ mvn r2, #0x1d
+ b _021E3964
+_021E3938:
+ mov r0, #6
+ mvn r2, #0x13
+ b _021E3964
+_021E3944:
+ mov r0, #6
+ mvn r2, #0x27
+ b _021E3964
+_021E3950:
+ mov r0, #9
+ mvn r2, #0
+ b _021E3964
+_021E395C:
+ mov r0, #9
+ mvn r2, #1
+_021E3964:
+ ldr r1, _021E3978 ; =0xFFFEB3F8
+ add r1, r2, r1
+ bl MOD04_021E8E08
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E3978: .word 0xFFFEB3F8
+ arm_func_end MOD04_021E38E8
+
+ arm_func_start MOD04_021E397C
+MOD04_021E397C: ; 0x021E397C
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #4
+ addls pc, pc, r4, lsl #2
+ b _021E39D8
+_021E3998: ; jump table
+ b _021E39D8 ; case 0
+ b _021E39AC ; case 1
+ b _021E39B8 ; case 2
+ b _021E39C4 ; case 3
+ b _021E39D0 ; case 4
+_021E39AC:
+ mov r0, #9
+ mvn r2, #0
+ b _021E39D8
+_021E39B8:
+ mov r0, #9
+ mvn r2, #1
+ b _021E39D8
+_021E39C4:
+ mov r0, #6
+ mvn r2, #9
+ b _021E39D8
+_021E39D0:
+ mov r0, #6
+ mvn r2, #0x13
+_021E39D8:
+ ldr r1, _021E39EC ; =0xFFFEC398
+ add r1, r2, r1
+ bl MOD04_021E8E08
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E39EC: .word 0xFFFEC398
+ arm_func_end MOD04_021E397C
+
+ 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 ; =UNK04_022106D4
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldrb r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x13
+ bne _021E3C58
+ mov r0, #0
+ bl MOD04_021E3EC4
+ ldr r1, _021E3E1C ; =UNK04_022106D4
+ ldr r5, [r1]
+ ldr r1, [r5, #8]
+ cmp r1, r0
+ bne _021E3B2C
+ ldr r1, [r5, #0xc]
+ cmp r1, r0
+ bne _021E3AB8
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x16]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ mov r0, #0
+ sub r1, r1, #1
+ strb r1, [r4, #0x1a4]
+ bl MOD04_021E51C0
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3AB8:
+ bl OS_GetTick
+ str r0, [r5, #0x18]
+ str r1, [r5, #0x1c]
+ mov r0, #0
+ str r0, [r5, #8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E3B0C
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ add sp, sp, #8
+ str r1, [r4, #0xf0]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3B0C:
+ mov r0, #4
+ bl MOD04_021E26D0
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E5D30
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3B2C:
+ ldrb r4, [r5, #2]
+ bl OS_GetTick
+ ldr r3, [r5, #0x18]
+ ldr r2, [r5, #0x1c]
+ subs r3, r0, r3
+ sbc r0, r1, r2
+ mov r1, r0, lsl #6
+ ldr r2, _021E3E20 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E3E24 ; =0x00001770
+ mul r2, r4, r2
+ cmp r1, r2, asr #31
+ cmpeq r0, r2
+ addlo sp, sp, #8
+ ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ cmp r4, #5
+ bls _021E3B98
+ mov r0, #1
+ bl MOD04_021E3E28
+ bl MOD04_021E4B40
+ mov r0, #1
+ bl MOD04_021E4CF8
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3B98:
+ mov r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E3C3C
+ ldr r8, _021E3E1C ; =UNK04_022106D4
+ mov r5, #0
+ mov r4, #0x11
+ mov r6, r7
+_021E3BBC:
+ bl MOD04_021E26E4
+ add r0, r0, r7
+ ldrb r0, [r0, #0x2d0]
+ ldr r1, [r8]
+ mov r0, r6,lsl r0
+ ldr r1, [r1, #8]
+ ands r0, r1, r0
+ bne _021E3C28
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ str r5, [sp]
+ str r5, [sp, #4]
+ add r0, r0, r7, lsl #1
+ add r1, sl, r7, lsl #2
+ add r2, sb, r7, lsl #2
+ ldrh r3, [r0, #0xa4]
+ ldr r1, [r1, #0xf4]
+ ldr r2, [r2, #0x24]
+ mov r0, r4
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r7, r0
+ ble _021E3BBC
+_021E3C3C:
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ add sp, sp, #8
+ ldr r1, [r0]
+ ldrb r0, [r1, #2]
+ add r0, r0, #1
+ strb r0, [r1, #2]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3C58:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ beq _021E3C7C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #3
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3C7C:
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ ldr r4, [r0]
+ bl MOD04_021E26E4
+ ldrb r1, [r4, #1]
+ ldrb r2, [r0, #0xd]
+ sub r0, r1, #1
+ cmp r2, r0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ bne _021E3CF0
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ ldr r4, [r0]
+ bl OS_GetTick
+ ldr r3, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ subs r3, r0, r3
+ sbc r0, r1, r2
+ mov r1, r0, lsl #6
+ ldr r2, _021E3E20 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, [r4, #4]
+ cmp r1, #0
+ cmpeq r0, r2
+ bhs _021E3D48
+_021E3CF0:
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ ldr r4, [r0]
+ bl OS_GetTick
+ ldr r3, [r4, #0x18]
+ ldr r2, [r4, #0x1c]
+ subs r3, r0, r3
+ sbc r0, r1, r2
+ mov r1, r0, lsl #6
+ ldr r2, _021E3E20 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, [r4, #4]
+ cmp r1, #0
+ cmpeq r0, r2, lsr #2
+ addlo sp, sp, #8
+ ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3D48:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r0, #0
+ beq _021E3D74
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ 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 MOD04_021E26D0
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E3DF8
+ mov r6, #0
+ mov r5, #0x11
+_021E3D98:
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ str r6, [sp]
+ str r6, [sp, #4]
+ add r0, r0, r4, lsl #1
+ add r1, r8, r4, lsl #2
+ add r2, r7, r4, lsl #2
+ ldrh r3, [r0, #0xa4]
+ ldr r1, [r1, #0xf4]
+ ldr r2, [r2, #0x24]
+ mov r0, r5
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E3D98
+_021E3DF8:
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ ldr r4, [r0]
+ bl OS_GetTick
+ str r0, [r4, #0x18]
+ str r1, [r4, #0x1c]
+ mov r0, #1
+ strb r0, [r4, #2]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_021E3E1C: .word UNK04_022106D4
+_021E3E20: .word 0x000082EA
+_021E3E24: .word 0x00001770
+ arm_func_end MOD04_021E39F0
+
+ arm_func_start MOD04_021E3E28
+MOD04_021E3E28: ; 0x021E3E28
+ stmdb sp!, {r4, lr}
+ ldr r1, _021E3E98 ; =UNK04_022106D4
+ mov r4, r0
+ ldr r3, [r1]
+ cmp r3, #0
+ ldmeqia sp!, {r4, pc}
+ ldrb r0, [r3]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ mov r2, #0
+ str r2, [r3, #8]
+ ldr r0, [r1]
+ str r2, [r0, #0xc]
+ ldr r0, [r1]
+ strb r2, [r0, #2]
+ bl OS_GetTick
+ ldr r2, _021E3E98 ; =UNK04_022106D4
+ cmp r4, #0
+ ldr r2, [r2]
+ str r0, [r2, #0x18]
+ str r1, [r2, #0x1c]
+ ldmneia sp!, {r4, pc}
+ bl OS_GetTick
+ ldr r2, _021E3E98 ; =UNK04_022106D4
+ ldr r2, [r2]
+ str r0, [r2, #0x10]
+ str r1, [r2, #0x14]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E3E98: .word UNK04_022106D4
+ arm_func_end MOD04_021E3E28
+
+ arm_func_start MOD04_021E3E9C
+MOD04_021E3E9C: ; 0x021E3E9C
+ stmdb sp!, {r4, lr}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ad]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1f8]
+ str r1, [r4, #0x1fc]
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E3E9C
+
+ arm_func_start MOD04_021E3EC4
+MOD04_021E3EC4: ; 0x021E3EC4
+ stmdb sp!, {r4, r5, r6, lr}
+ cmp r0, #0
+ mov r6, #0
+ beq _021E3EE4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x2f0]
+ bic r0, r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+_021E3EE4:
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E3F20
+ mov r4, r5
+_021E3EFC:
+ bl MOD04_021E26E4
+ add r0, r0, r5
+ ldrb r0, [r0, #0x2d0]
+ add r5, r5, #1
+ orr r6, r6, r4, lsl r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E3EFC
+_021E3F20:
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E3EC4
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ bgt _021E3F8C
+_021E3F50:
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r5, r0
+ bne _021E3F78
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E3F50
+_021E3F8C:
+ mov r0, #0xff
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E3F28
+
+ arm_func_start MOD04_021E3F98
+MOD04_021E3F98: ; 0x021E3F98
+ stmdb sp!, {r4, lr}
+ ldr r1, _021E405C ; =UNK04_0220D3B4
+ mvn r2, #0
+ mov r4, r0
+ bl MOD04_0220394C
+ mvn r2, #0
+ cmp r0, r2
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4060 ; =UNK04_0220D3C0
+ mov r0, r4
+ bl MOD04_0220394C
+ mvn r2, #0
+ cmp r0, r2
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4064 ; =UNK04_0220D3CC
+ mov r0, r4
+ bl MOD04_0220394C
+ mvn r2, #0
+ cmp r0, r2
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4068 ; =UNK04_0220D3D8
+ mov r0, r4
+ bl MOD04_0220394C
+ mvn r1, #0
+ cmp r0, r1
+ bne _021E4028
+ ldr r1, _021E4068 ; =UNK04_0220D3D8
+ mov r0, r4
+ mov r2, #0
+ bl MOD04_0220394C
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+_021E4028:
+ ldr r1, _021E406C ; =UNK04_0220D3E4
+ mov r0, r4
+ mvn r2, #0
+ bl MOD04_0220394C
+ mvn r1, #0
+ cmp r0, r1
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4070 ; =UNK04_0220D3AC
+ mov r0, r4
+ mov r2, #0
+ bl MOD04_0220394C
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E405C: .word UNK04_0220D3B4
+_021E4060: .word UNK04_0220D3C0
+_021E4064: .word UNK04_0220D3CC
+_021E4068: .word UNK04_0220D3D8
+_021E406C: .word UNK04_0220D3E4
+_021E4070: .word UNK04_0220D3AC
+ arm_func_end MOD04_021E3F98
+
+ arm_func_start MOD04_021E4074
+MOD04_021E4074: ; 0x021E4074
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x344]
+ cmp r0, #0
+ ble _021E40E8
+_021E40AC:
+ bl MOD04_021E26E4
+ add r0, r0, r4
+ ldrb r0, [r0, #0x304]
+ bl MOD04_021E1F84
+ cmp r0, #0
+ ble _021E40D4
+ cmp r0, r5
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, pc}
+_021E40D4:
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x344]
+ cmp r4, r0
+ blt _021E40AC
+_021E40E8:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E4074
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ blt _021E413C
+_021E4114:
+ bl MOD04_021E26E4
+ add r0, r0, r5
+ ldrb r0, [r0, #0x2d0]
+ cmp r6, r0
+ beq _021E413C
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r5, r0
+ ble _021E4114
+_021E413C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r5, r0
+ bgt _021E415C
+ add r0, r6, #1
+ and r6, r0, #0xff
+ cmp r6, #0x20
+ blo _021E4100
+_021E415C:
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E40F4
+
+ arm_func_start MOD04_021E4164
+MOD04_021E4164: ; 0x021E4164
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r6, _021E41BC ; =UNK04_02210704
+ mov r7, #0
+ mov r4, r7
+ mov r5, #4
+_021E417C:
+ ldr r1, [r6, #4]
+ cmp r1, #0
+ beq _021E4194
+ mov r0, r5
+ mov r2, r4
+ bl MOD04_021DD904
+_021E4194:
+ add r7, r7, #1
+ cmp r7, #0x9a
+ add r6, r6, #0xc
+ blt _021E417C
+ ldr r1, _021E41BC ; =UNK04_02210704
+ ldr r2, _021E41C0 ; =0x00000738
+ mov r0, #0
+ bl MIi_CpuClear32
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E41BC: .word UNK04_02210704
+_021E41C0: .word 0x00000738
+ arm_func_end MOD04_021E4164
+
+ arm_func_start MOD04_021E41C4
+MOD04_021E41C4: ; 0x021E41C4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #8
+ beq _021E41FC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xe
+ beq _021E41FC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xf
+ bne _021E4240
+_021E41FC:
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1e8]
+ ldr r0, [r0, #0x1ec]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E43D8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ mov r4, r0
+ mov r5, r1
+ b _021E424C
+_021E4240:
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E424C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #8
+ beq _021E4270
+ cmp r0, #0xe
+ beq _021E42A4
+ cmp r0, #0xf
+ beq _021E43AC
+ b _021E43CC
+_021E4270:
+ ldr r0, _021E43DC ; =0x00001770
+ cmp r5, #0
+ cmpeq r4, r0
+ bls _021E43CC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0xe
+ bl MOD04_021E4604
+ cmp r0, #0
+ bne _021E43CC
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E42A4:
+ ldr r0, _021E43DC ; =0x00001770
+ cmp r5, #0
+ cmpeq r4, r0
+ bls _021E43CC
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1ac]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ac]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ac]
+ cmp r0, #5
+ bls _021E4330
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d8]
+ bl MOD04_021E4A00
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E4324
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ac]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1e8]
+ str r1, [r4, #0x1ec]
+ b _021E43CC
+_021E4324:
+ mov r0, #2
+ bl MOD04_021E4CF8
+ b _021E43CC
+_021E4330:
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E43CC
+ mov r5, #0xd
+ mov r6, r4
+_021E434C:
+ bl MOD04_021E26E4
+ mov r7, r0
+ 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 MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ mov r1, r5
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E434C
+ b _021E43CC
+_021E43AC:
+ 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 MOD04_021E4CF8
+_021E43CC:
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E43D8: .word 0x000082EA
+_021E43DC: .word 0x00001770
+ arm_func_end MOD04_021E41C4
+
+ arm_func_start MOD04_021E43E0
+MOD04_021E43E0: ; 0x021E43E0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD04_021DF88C
+ cmp r0, #6
+ movne r0, #1
+ ldmneia sp!, {r4, r5, r6, pc}
+ cmp r5, #0xd
+ beq _021E441C
+ cmp r5, #0xe
+ beq _021E4458
+ cmp r5, #0xf
+ beq _021E45E0
+ b _021E45F8
+_021E441C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #8
+ beq _021E443C
+ mov r0, #8
+ bl MOD04_021E26D0
+ mov r0, r4
+ bl MOD04_021E4B78
+_021E443C:
+ mov r0, r6
+ mov r1, #0xe
+ bl MOD04_021E4604
+ cmp r0, #0
+ bne _021E45F8
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E4458:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xe
+ bne _021E45C4
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1e8]
+ ldr r0, [r0, #0x1ec]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E4600 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ mov r2, r0, lsr #1
+ mov r0, r1, lsr #1
+ cmp r0, #0
+ orr r2, r2, r1, lsl #31
+ cmpeq r2, #0x12c
+ bls _021E4524
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1e8]
+ ldr r0, [r0, #0x1ec]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E4600 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ mov r3, r0, lsr #1
+ mov r0, #0x12c
+ orr r3, r3, r1, lsl #31
+ rsb r0, r0, #0
+ mvn r2, #0
+ adds r5, r3, r0
+ adc r4, r2, r1, lsr #1
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb2]
+ cmp r4, r0, asr #31
+ cmpeq r5, r0
+ bls _021E4524
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r5, [r0, #0xb2]
+_021E4524:
+ mov r0, r6
+ mov r1, #0
+ bl MOD04_021E3F28
+ mov r4, r0
+ cmp r4, #0xff
+ beq _021E4550
+ 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 MOD04_021E3EC4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d8]
+ cmp r4, r0
+ bne _021E45F8
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E45B8
+ mov r4, #0xf
+_021E4584:
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ mov r1, r4
+ bl MOD04_021E4604
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E4584
+_021E45B8:
+ mov r0, #0xf
+ bl MOD04_021E26D0
+ b _021E45F8
+_021E45C4:
+ mov r0, r6
+ mov r1, #0xf
+ bl MOD04_021E4604
+ cmp r0, #0
+ bne _021E45F8
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E45E0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #8
+ bne _021E45F8
+ mov r0, #2
+ bl MOD04_021E4CF8
+_021E45F8:
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E4600: .word 0x000082EA
+ arm_func_end MOD04_021E43E0
+
+ arm_func_start MOD04_021E4604
+MOD04_021E4604: ; 0x021E4604
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ mov r5, r1
+ cmp r5, #0xd
+ mov r6, r0
+ movne r4, #0
+ bne _021E4630
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ mov r4, #1
+ str r0, [sp, #8]
+_021E4630:
+ add r0, sp, #8
+ str r0, [sp]
+ mov r2, #0
+ mov r0, r5
+ mov r1, r6
+ mov r3, r2
+ str r4, [sp, #4]
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x10
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1e8]
+ str r1, [r4, #0x1ec]
+ mov r0, #1
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E4604
+
+ arm_func_start MOD04_021E4684
+MOD04_021E4684: ; 0x021E4684
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #9
+ beq _021E46BC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x10
+ beq _021E46BC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x11
+ bne _021E4700
+_021E46BC:
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1e0]
+ ldr r0, [r0, #0x1e4]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E4908 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ mov r4, r0
+ mov r5, r1
+ b _021E470C
+_021E4700:
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E470C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #9
+ beq _021E4730
+ cmp r0, #0x10
+ beq _021E47A0
+ cmp r0, #0x11
+ beq _021E48DC
+ b _021E48FC
+_021E4730:
+ ldr r0, _021E490C ; =0x00001770
+ cmp r5, #0
+ cmpeq r4, r0
+ bls _021E48FC
+ bl MOD04_021DF88C
+ cmp r0, #5
+ bne _021E477C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ad]
+ cmp r0, #5
+ blo _021E477C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E48FC
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E477C:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1ad]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ad]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x2d0]
+ mov r1, #3
+ bl MOD04_021E4910
+ b _021E48FC
+_021E47A0:
+ ldr r0, _021E490C ; =0x00001770
+ cmp r5, #0
+ cmpeq r4, r0
+ bls _021E48FC
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1ab]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ab]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ab]
+ cmp r0, #5
+ bls _021E4870
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E47F0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E4800
+_021E47F0:
+ bl MOD04_021E4B40
+ mov r0, #1
+ bl MOD04_021E4CF8
+ b _021E48FC
+_021E4800:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d4]
+ bl MOD04_021E4A00
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E4850
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ab]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1e0]
+ str r1, [r4, #0x1e4]
+ b _021E48FC
+_021E4850:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E59D4
+ cmp r0, #0
+ bne _021E48FC
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E4870:
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E48FC
+ mov r5, #2
+ mov r6, r4
+_021E488C:
+ bl MOD04_021E26E4
+ mov r7, r0
+ 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 MOD04_021E26E4
+ add r0, r0, r4
+ ldrb r0, [r0, #0x2d0]
+ mov r1, r5
+ bl MOD04_021E4910
+_021E48C4:
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E488C
+ b _021E48FC
+_021E48DC:
+ 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 MOD04_021E51C0
+_021E48FC:
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4908: .word 0x000082EA
+_021E490C: .word 0x00001770
+ arm_func_end MOD04_021E4684
+
+ arm_func_start MOD04_021E4910
+MOD04_021E4910: ; 0x021E4910
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ mov r4, r1
+ mov r5, r0
+ cmp r4, #2
+ beq _021E4934
+ cmp r4, #3
+ beq _021E49AC
+ b _021E49D0
+_021E4934:
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r6, r0
+ ldrb r0, [r0, #0x2d0]
+ mov r6, #1
+ cmp r5, r0
+ moveq r0, #1
+ streqb r0, [sp]
+ movne r0, #0
+ strneb r0, [sp]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blo _021E49D0
+_021E4974:
+ bl MOD04_021E26E4
+ add r0, r0, r6
+ ldrb r0, [r0, #0x2d0]
+ cmp r5, r0
+ streqb r6, [sp, #1]
+ streqb r5, [sp, #2]
+ beq _021E49D0
+ add r0, r6, #1
+ and r6, r0, #0xff
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r6, r0
+ bls _021E4974
+ b _021E49D0
+_021E49AC:
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb0]
+ strb r0, [sp]
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb0]
+ mov r0, r0, asr #8
+ strb r0, [sp, #1]
+_021E49D0:
+ add r2, sp, #0
+ mov r0, r4
+ mov r1, r5
+ mov r3, #4
+ bl MOD04_021EAF20
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1e0]
+ str r1, [r4, #0x1e4]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E4910
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E4A8C
+ add r4, sp, #8
+ add r5, sp, #0x88
+ mov r6, r7
+_021E4A34:
+ bl MOD04_021E26E4
+ add r0, r0, r7
+ ldrb r0, [r0, #0x2d0]
+ mov r0, r6,lsl r0
+ ands r0, sl, r0
+ beq _021E4A64
+ 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 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r7, r0
+ ble _021E4A34
+_021E4A8C:
+ cmp r8, #0
+ mov sl, #0
+ ble _021E4AE4
+ add r7, sp, #8
+ add r5, sp, #0x88
+ mov r4, sl
+ mov r6, #0x10
+_021E4AA8:
+ str r7, [sp]
+ str sb, [sp, #4]
+ ldr r1, [r5, sl, lsl #2]
+ mov r0, r6
+ mov r2, r4
+ mov r3, r4
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x108
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ add sl, sl, #1
+ cmp sl, r8
+ blt _021E4AA8
+_021E4AE4:
+ bl MOD04_021E26E4
+ mov r1, #2
+ strb r1, [r0, #0x1a8]
+ cmp sb, #0
+ mov r6, #0
+ ble _021E4B28
+ add r5, sp, #8
+ mov r4, r6
+_021E4B04:
+ ldr r0, [r5, r6, lsl #2]
+ mov r1, r4
+ bl MOD04_021E3F28
+ cmp r0, #0xff
+ beq _021E4B1C
+ bl MOD04_021DF9D4
+_021E4B1C:
+ add r6, r6, #1
+ cmp r6, sb
+ blt _021E4B04
+_021E4B28:
+ 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_end MOD04_021E4A00
+
+ arm_func_start MOD04_021E4B40
+MOD04_021E4B40: ; 0x021E4B40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ mov r1, #2
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a8]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E4B40
+
+ arm_func_start MOD04_021E4B78
+MOD04_021E4B78: ; 0x021E4B78
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl MOD04_021E26E4
+ str r5, [r0, #0x20c]
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ mov r0, r5
+ add r1, r1, #1
+ bl MOD04_021DF648
+ movs r4, r0
+ beq _021E4BD4
+ bl MOD04_021E26E4
+ mov r1, #2
+ strb r1, [r0, #0x1a8]
+ ldr r0, [r4]
+ 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 MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ mov r0, r5
+ add r1, r1, #1
+ bl MOD04_021E89EC
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E4B78
+
+ arm_func_start MOD04_021E4BF4
+MOD04_021E4BF4: ; 0x021E4BF4
+ stmdb sp!, {r4, lr}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ beq _021E4CA4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E4C64
+ mov r0, #3
+ bl MOD04_021E26D0
+ mov r0, #0
+ bl MOD04_021E7E5C
+ mov r4, r0
+ bl MOD04_021E38E8
+ cmp r0, #0
+ beq _021E4CAC
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+_021E4C64:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E4CAC
+ mov r0, #4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ mov r1, #0
+ bl MOD04_021E6038
+ mov r4, r0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E4CAC
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+_021E4CA4:
+ mov r0, #1
+ bl MOD04_021E4CF8
+_021E4CAC:
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E4BF4
+
+ arm_func_start MOD04_021E4CB4
+MOD04_021E4CB4: ; 0x021E4CB4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E4B40
+ mov r0, #1
+ bl MOD04_021E4CF8
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E4CB4
+
+ arm_func_start MOD04_021E4CF8
+MOD04_021E4CF8: ; 0x021E4CF8
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ movs r4, r0
+ bne _021E4D14
+ bl MOD04_021E4ED4
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_021E4D14:
+ bl MOD04_021E8174
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E4D38
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E4D94
+_021E4D38:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r6, #1
+ movne r6, #0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_021E26E4
+ str r4, [sp]
+ ldr r1, [r0, #0x468]
+ mov r0, #0
+ str r1, [sp, #4]
+ ldr ip, [r5, #0x464]
+ mov r2, r6
+ mov r1, #1
+ mov r3, r0
+ blx ip
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_021E4D94:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E4DC8
+ cmp r4, #1
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, #0
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
+ add sp, sp, #8
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E4DC8:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+ cmp r4, #1
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, #0
+ mov r1, r0
+ mov r2, r0
+ bl MOD04_021E5D30
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E4CF8
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E4EC8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20]
+ cmp r0, #0
+ beq _021E4EC8
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r1, [r5, #0x20]
+ ldr r0, [r0, #0x200]
+ cmp r1, r0
+ beq _021E4EC8
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ add r2, sp, #8
+ mov r1, #1
+ str r2, [sp]
+ str r1, [sp, #4]
+ ldrb r3, [r0, #0xd]
+ ldrb r2, [r6, #0xd]
+ ldr r1, [r7, #0x20]
+ add r3, r3, #1
+ add r2, r2, #1
+ add r3, r4, r3, lsl #1
+ add r2, r5, r2, lsl #2
+ ldrh r3, [r3, #0xa4]
+ ldr r2, [r2, #0x24]
+ mov r0, #0xc
+ bl MOD04_021E7884
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+_021E4EC8:
+ mov r0, r4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ arm_func_end MOD04_021E4E00
+
+ arm_func_start MOD04_021E4ED4
+MOD04_021E4ED4: ; 0x021E4ED4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r1, _021E4F90 ; =UNK04_0220D3F0
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_021E397C
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E8034
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ movne r6, #1
+ bne _021E4F28
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ moveq r6, #1
+ movne r6, #0
+_021E4F28:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r7, #1
+ movne r7, #0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_021E26E4
+ str r4, [sp]
+ ldr r1, [r0, #0x468]
+ mov r2, r7
+ str r1, [sp, #4]
+ ldr ip, [r5, #0x464]
+ mov r3, r6
+ mov r0, #0
+ mov r1, #1
+ blx ip
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a9]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4F90: .word UNK04_0220D3F0
+ arm_func_end MOD04_021E4ED4
+
+ arm_func_start MOD04_021E4F94
+MOD04_021E4F94: ; 0x021E4F94
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #2
+ bne _021E4FC4
+ bl MOD04_021E4ED4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E4FC4:
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E5038
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E5010
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ b _021E502C
+_021E5010:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_021E502C:
+ bl MOD04_021E4ED4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E5038:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #5
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #7
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xc
+ bne _021E50D8
+_021E5098:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r0, #0
+ beq _021E50C4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_021E50C4:
+ bl MOD04_021E4E00
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_021E50D8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E5100
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E5100:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E512C
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+_021E512C:
+ bl MOD04_021E4ED4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E4F94
+
+ arm_func_start MOD04_021E5138
+MOD04_021E5138: ; 0x021E5138
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ beq _021E5168
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021E5168:
+ cmp r5, #0
+ mov r4, #0
+ bls _021E51B8
+_021E5174:
+ ldr r0, [r6, r4, lsl #2]
+ bl MOD04_021E4074
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ beq _021E51AC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021E51AC:
+ add r4, r4, #1
+ cmp r4, r5
+ blo _021E5174
+_021E51B8:
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E5138
+
+ 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
+ mov r5, #3
+ mov r4, #0
+ addls pc, pc, r0, lsl #2
+ b _021E57E8
+_021E51DC: ; jump table
+ b _021E51F0 ; case 0
+ b _021E5594 ; case 1
+ b _021E55D8 ; case 2
+ b _021E569C ; case 3
+ b _021E56BC ; case 4
+_021E51F0:
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ ldrb r1, [r6, #0x1a4]
+ sub r0, r0, #1
+ cmp r1, r0
+ bge _021E52B0
+ mov r0, #0xd
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r5, r0
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ add r0, r0, #1
+ add r0, r5, r0
+ ldrb r0, [r0, #0x2d0]
+ str r0, [sp, #0x10]
+ bl MOD04_021E26E4
+ mov r5, r0
+ 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 MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ mov r5, #5
+ add r0, r0, #1
+ add r0, r6, r0, lsl #1
+ ldrh r0, [r0, #0xa4]
+ str r0, [sp, #0x18]
+ b _021E54FC
+_021E52B0:
+ bl MOD04_021E26E4
+ mov r1, r4
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, r4
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E52F0
+ mov r0, r5
+ bl MOD04_021E26D0
+ b _021E5314
+_021E52F0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E530C
+ mov r0, #4
+ bl MOD04_021E26D0
+ b _021E5314
+_021E530C:
+ mov r0, #0xa
+ bl MOD04_021E26D0
+_021E5314:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E534C
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r6, #0xd]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ bne _021E53FC
+_021E534C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E5384
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ 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 MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r6, #0xf4]
+_021E53A4:
+ mov r0, #0x10
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1d4]
+ mov r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E54EC
+ mov r6, #2
+_021E53D0:
+ bl MOD04_021E26E4
+ add r0, r0, r7
+ ldrb r0, [r0, #0x2d0]
+ mov r1, r6
+ bl MOD04_021E4910
+ add r7, r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r7, r0
+ ble _021E53D0
+ b _021E54EC
+_021E53FC:
+ mov r0, #0
+ str r0, [sp, #8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r6, r0
+ ldrb r0, [r0, #0x2d0]
+ str r0, [sp, #0x10]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E5460
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl OS_GetTick
+ str r0, [r6, #0xec]
+ str r1, [r6, #0xf0]
+ b _021E54EC
+_021E5460:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E54EC
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E5D30
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ bne _021E54EC
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #2
+ blo _021E54EC
+ bl MOD04_021E26E4
+ mov r8, r0
+ mov r0, #0
+ bl MOD04_021E3EC4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ mov r1, #1
+ ldr r2, [r8, #0x1dc]
+ add r0, r7, r0
+ ldrb r0, [r0, #0x2d0]
+ mvn r0, r1, lsl r0
+ and r0, r6, r0
+ cmp r2, r0
+ beq _021E54EC
+ bl MOD04_021E4CB4
+ b _021E57E8
+_021E54EC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ movne r4, #1
+_021E54FC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x10
+ beq _021E57E8
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ add r1, sp, #8
+ str r1, [sp]
+ str r5, [sp, #4]
+ mov ip, r0
+ ldrb r3, [sb, #0xd]
+ ldrb r2, [r7, #0xd]
+ ldrb r1, [ip, #0xd]
+ add r5, sl, r3, lsl #2
+ add r2, r8, r2, lsl #2
+ add r3, r6, r1, lsl #1
+ ldrh r3, [r3, #0xa4]
+ ldr r1, [r5, #0xf4]
+ ldr r2, [r2, #0x24]
+ mov r0, #8
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x3cd]
+ b _021E57E8
+_021E5594:
+ mov r0, #1
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E55D0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ str r0, [r5, #0x20c]
+_021E55D0:
+ mov r4, #1
+ b _021E57E8
+_021E55D8:
+ mov r0, #1
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E5600
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5620
+_021E5600:
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r5, #0x20]
+_021E5620:
+ bl MOD04_021E3E9C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ bls _021E57E8
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ add r3, r8, #0xf4
+ ldrb r2, [r0, #0xd]
+ mov r1, #1
+ mov r0, #9
+ sub r2, r2, #1
+ add r2, r3, r2, lsl #2
+ str r2, [sp]
+ str r1, [sp, #4]
+ ldr r1, [r7, #0xf4]
+ ldr r2, [r6, #0x24]
+ ldrh r3, [r5, #0xa4]
+ 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 MOD04_021E26D0
+ bl MOD04_021E3E9C
+ bl MOD04_021E26E4
+ mov r1, r4
+ str r1, [r0, #0x20c]
+ mov r4, #1
+ b _021E57E8
+_021E56BC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E56DC
+ ldr r1, _021E581C ; =UNK04_0220D3F0
+ mov r0, #2
+ mov r2, r4
+ bl MOD04_021E1E30
+_021E56DC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r7, #1
+ movne r7, #0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r5, r0
+ bl MOD04_021E26E4
+ str r5, [sp]
+ ldr r1, [r0, #0x468]
+ mov r0, #0
+ str r1, [sp, #4]
+ ldr r5, [r6, #0x464]
+ mov r2, r7
+ mov r1, r0
+ mov r3, r0
+ blx r5
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E5750
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5758
+_021E5750:
+ bl MOD04_021E8034
+ b _021E57DC
+_021E5758:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ beq _021E5780
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203E80
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe4]
+_021E5780:
+ bl MOD04_02200D6C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E57C8
+ bl MOD04_021E85D4
+ bl MOD04_021E397C
+ cmp r0, #0
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldr r0, _021E5820 ; =UNK04_022106DC
+ ldrb r1, [r0]
+ cmp r1, #1
+ moveq r1, #1
+ streqb r1, [r0, #1]
+ mov r0, #0xa
+ bl MOD04_021E26D0
+ b _021E57D0
+_021E57C8:
+ mov r0, #1
+ bl MOD04_021E26D0
+_021E57D0:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+_021E57DC:
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203C04
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_021E581C: .word UNK04_0220D3F0
+_021E5820: .word UNK04_022106DC
+ arm_func_end MOD04_021E51C0
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E58BC
+ mov r5, #0xa
+_021E5844:
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ add r1, r6, #0x348
+ str r1, [sp]
+ ldr ip, [r0, #0x348]
+ add r3, r7, r4, lsl #1
+ add ip, ip, #1
+ str ip, [sp, #4]
+ add r1, sb, r4, lsl #2
+ add r2, r8, r4, lsl #2
+ ldrh r3, [r3, #0xa4]
+ ldr r1, [r1, #0xf4]
+ ldr r2, [r2, #0x24]
+ mov r0, r5
+ bl MOD04_021E7884
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E5844
+_021E58BC:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ 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_end MOD04_021E5824
+
+ arm_func_start MOD04_021E5908
+MOD04_021E5908: ; 0x021E5908
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E5950
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E5938
+ bl MOD04_021E4B40
+_021E5938:
+ ldr r1, _021E59D0 ; =0xFFFEC5D2
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E5950:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r5, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E5998
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E5998:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E59B0
+ bl MOD04_021E4CB4
+ b _021E59C4
+_021E59B0:
+ mov r0, #4
+ bl MOD04_021E26D0
+ mov r0, #0
+ bl MOD04_021E5C44
+ mov r4, r0
+_021E59C4:
+ mov r0, r4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E59D0: .word 0xFFFEC5D2
+ arm_func_end MOD04_021E5908
+
+ arm_func_start MOD04_021E59D4
+MOD04_021E59D4: ; 0x021E59D4
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E5A0C
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r4, #0x20]
+ ldr r0, [r0, #0x200]
+ cmp r1, r0
+ moveq r4, #0
+ beq _021E5A10
+_021E5A0C:
+ mov r4, #1
+_021E5A10:
+ cmp r4, #0
+ beq _021E5A3C
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+_021E5A3C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0x1f
+ bhs _021E5A6C
+ bl MOD04_021E26E4
+ mov r6, r0
+ 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 MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E5AA0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E5AA0:
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r6, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ cmp r4, #0
+ bne _021E5AE0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E5BE8
+ bl MOD04_021E4CB4
+ b _021E5BE8
+_021E5AE0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E5B1C
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ str r1, [r4, #0xf0]
+ b _021E5BE8
+_021E5B1C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5B48
+ mov r0, #4
+ bl MOD04_021E26D0
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E5D30
+ b _021E5BE8
+_021E5B48:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E5BE8
+ mov r0, #0xe
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1d8]
+ bl MOD04_021E26E4
+ add r1, r0, #0x100
+ mov r2, #0
+ mov r0, r5
+ strh r2, [r1, #0xb2]
+ bl MOD04_021E4B78
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E5BD0
+ mov r4, #0xd
+_021E5B9C:
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ mov r1, r4
+ bl MOD04_021E4604
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E5B9C
+_021E5BD0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ bne _021E5BE8
+ mov r0, #2
+ bl MOD04_021E4CF8
+_021E5BE8:
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E59D4
+
+ arm_func_start MOD04_021E5BF0
+MOD04_021E5BF0: ; 0x021E5BF0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ ldrh r3, [r0, #0xa4]
+ ldr r2, [r4, #0x24]
+ mov r1, r5
+ mov r0, #5
+ bl MOD04_021E7884
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ mov r0, r4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E5BF0
+
+ arm_func_start MOD04_021E5C44
+MOD04_021E5C44: ; 0x021E5C44
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1cc]
+ str r1, [r4, #0x1d0]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E5CC0
+ mov r0, #3
+ bl MOD04_021E26D0
+ mov r0, #0
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5CF8
+ mov r0, #0
+ mov r1, r0
+ mov r2, r5
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E5D20
+ ldr r1, _021E5D2C ; =0xFFFEC5E6
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E5D20:
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E5D2C: .word 0xFFFEC5E6
+ arm_func_end MOD04_021E5C44
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x1a5]
+ str r0, [sp, #0xc]
+ b _021E5D90
+_021E5D58:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x344]
+ ldrb r1, [r5, #0x1a5]
+ sub r0, r0, #1
+ cmp r1, r0
+ movge r0, #0
+ strge r0, [sp, #0xc]
+ bge _021E5D90
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a5]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+_021E5D90:
+ cmp r4, #0
+ moveq r0, #1
+ mov sb, #0
+ streq r0, [sp, #8]
+ strne sb, [sp, #8]
+ mov r7, #1
+ mov r8, #0
+ mov r5, #0x2f
+ mov r4, #0xa
+_021E5DB4:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bne _021E5DC8
+ cmp sb, #0
+ beq _021E5DFC
+_021E5DC8:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1a5]
+ add r1, r1, #1
+ strb r1, [r0, #0x1a5]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r6, #0x1a5]
+ ldr r0, [r0, #0x344]
+ cmp r1, r0
+ blt _021E5DFC
+ bl MOD04_021E26E4
+ strb r8, [r0, #0x1a5]
+_021E5DFC:
+ cmp sb, #0
+ beq _021E5E50
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1a5]
+ ldr r0, [sp, #0xc]
+ cmp r0, r1
+ bne _021E5E50
+ bl MOD04_021E26E4
+ ldr r1, _021E6028 ; =0x00000BB8
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1cc]
+ str r1, [r4, #0x1d0]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ add sp, sp, #0x23c
+ mov r0, r1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E5E50:
+ mov sb, r7
+ bl MOD04_021E0F00
+ mov fp, r0
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r1, r0
+ ldrb r2, [r1, #0x1a5]
+ ldr r3, [sl, #0x2fc]
+ mov r1, #0xc
+ add r2, r6, r2
+ ldrb r2, [r2, #0x304]
+ mov r0, fp
+ mla r1, r2, r1, r3
+ bl DWC_GetGsProfileId
+ movs sl, r0
+ beq _021E5DB4
+ mvn r0, #0
+ cmp sl, r0
+ beq _021E5DB4
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov fp, r0
+ bl MOD04_021E26E4
+ ldr r2, [r6, #0x2fc]
+ ldrb r1, [r0, #0x1a5]
+ mov r0, #0xc
+ add r1, fp, r1
+ ldrb r1, [r1, #0x304]
+ mla r0, r1, r0, r2
+ bl DWCi_Acc_IsValidFriendData
+ cmp r0, #0
+ beq _021E5DB4
+ mov r6, r7
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E5F1C
+_021E5EF4:
+ bl MOD04_021E26E4
+ add r0, r0, r6, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp sl, r0
+ beq _021E5F1C
+ add r6, r6, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r6, r0
+ ble _021E5EF4
+_021E5F1C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r6, r0
+ ble _021E5DB4
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ mov r1, sl
+ add r2, sp, #0x18
+ bl MOD04_021F0664
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0x28
+ bl MOD04_021F06E4
+ orrs r0, r6, r0
+ bne _021E5DB4
+ ldr r0, [sp, #0x2c]
+ cmp r0, #4
+ bne _021E5DB4
+ ldr r0, _021E602C ; =UNK04_0220D3F4
+ add r1, sp, #0x1c
+ add r2, sp, #0x30
+ mov r3, r5
+ bl MOD04_021DE9F4
+ mov r6, r0
+ ldr r0, _021E6030 ; =UNK04_0220D3F8
+ add r1, sp, #0x12
+ add r2, sp, #0x30
+ mov r3, r5
+ bl MOD04_021DE9F4
+ mov fp, r0
+ ldr r0, _021E6034 ; =UNK04_0220D3FC
+ add r1, sp, #0x10
+ add r2, sp, #0x30
+ mov r3, r5
+ bl MOD04_021DE9F4
+ cmp r6, #0
+ ble _021E5DB4
+ cmp fp, #0
+ ble _021E5DB4
+ cmp r0, #0
+ ble _021E5DB4
+ add r0, sp, #0x1c
+ mov r1, r8
+ mov r2, r4
+ bl strtoul
+ cmp r0, #3
+ bne _021E5DB4
+ add r0, sp, #0x12
+ mov r1, r8
+ mov r2, r4
+ bl strtoul
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x16]
+ cmp r6, r0
+ bne _021E5DB4
+ ldr r0, [sp, #4]
+ cmp sl, r0
+ moveq r0, #1
+ streq r0, [sp]
+ ldr r1, [sp]
+ mov r0, sl
+ bl MOD04_021E6038
+ add sp, sp, #0x23c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E6028: .word 0x00000BB8
+_021E602C: .word UNK04_0220D3F4
+_021E6030: .word UNK04_0220D3F8
+_021E6034: .word UNK04_0220D3FC
+ arm_func_end MOD04_021E5D30
+
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ bne _021E60A0
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0
+ bne _021E60A0
+_021E606C:
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1c0]
+ str r1, [r4, #0x1c4]
+ bl MOD04_021E26E4
+ str r5, [r0, #0xf4]
+ add sp, sp, #0x14
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E60A0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6124
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, #0
+ bl MOD04_02203BF4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ ldr r1, _021E61E4 ; =UNK04_0220D3AC
+ mov r0, r6
+ mov r2, #0
+ bl MOD04_0220394C
+ str r0, [r4, #0xf4]
+ bl MOD04_021E26E4
+ mov r4, r0
+ mov r0, r6
+ bl MOD04_02203908
+ str r0, [r4, #0x24]
+ bl MOD04_021E26E4
+ mov r4, r0
+ mov r0, r6
+ bl MOD04_022038E4
+ strh r0, [r4, #0xa4]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r4, #1
+ str r0, [r6, #0x204]
+ b _021E6160
+_021E6124:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E613C
+ bl MOD04_021E26E4
+ str r5, [r0, #0xf4]
+_021E613C:
+ bl MOD04_021E26E4
+ str r5, [r0, #0x204]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ mov r4, #3
+ str r0, [sp, #0x10]
+_021E6160:
+ bl MOD04_021E26E4
+ ldr r1, _021E61E8 ; =0x00001770
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl OS_GetTick
+ str r0, [r6, #0x1cc]
+ str r1, [r6, #0x1d0]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ movne r7, #0xb
+ moveq r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ str r0, [sp, #8]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ add r2, sp, #8
+ str r2, [sp]
+ mov r3, r0
+ str r4, [sp, #4]
+ ldrh r3, [r3, #0xa4]
+ ldr r2, [r6, #0x24]
+ mov r1, r5
+ mov r0, r7
+ bl MOD04_021E7884
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E61E4: .word UNK04_0220D3AC
+_021E61E8: .word 0x00001770
+ arm_func_end MOD04_021E6038
+
+ arm_func_start MOD04_021E61EC
+MOD04_021E61EC: ; 0x021E61EC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6210
+ mov r0, r4
+ bl MOD04_021E38E8
+ ldmia sp!, {r4, pc}
+_021E6210:
+ mov r0, r4
+ bl MOD04_021E397C
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E61EC
+
+ arm_func_start MOD04_021E621C
+MOD04_021E621C: ; 0x021E621C
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r1
+ ldr r1, [r5]
+ mov r6, r0
+ add r4, r1, #2
+ cmp r4, #2
+ bls _021E6250
+ 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 MOD04_021E26E4
+ sub r1, r4, #1
+ str r1, [r0, #0x348]
+ bl MOD04_021E26E4
+ str r6, [r0, #0x34c]
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E621C
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E62A4
+ 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 MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ str r6, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r7, r0, lsl #2
+ str r6, [r0, #0xf4]
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r7, r0, lsl #2
+ str r5, [r0, #0x24]
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r7, r0, lsl #1
+ strh r4, [r0, #0xa4]
+ bl MOD04_021E26E4
+ str r5, [r0, #0x1b8]
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r4, [r0, #0xb4]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E40F4
+ ldrb r1, [r4, #0x14]
+ add r1, r1, #1
+ add r1, r5, r1
+ strb r0, [r1, #0x2d0]
+ str r6, [sp, #8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r0, #1
+ blt _021E6414
+ add r6, sp, #8
+ mov r5, #2
+ mov r4, #7
+_021E63B8:
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ str r6, [sp]
+ str r5, [sp, #4]
+ add r0, r0, r7, lsl #1
+ add r1, sb, r7, lsl #2
+ add r2, r8, r7, lsl #2
+ ldrh r3, [r0, #0xa4]
+ ldr r1, [r1, #0xf4]
+ ldr r2, [r2, #0x24]
+ mov r0, r4
+ bl MOD04_021E7884
+ cmp r0, #0
+ addne sp, sp, #0x14
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ add r7, r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r7, r0
+ ble _021E63B8
+_021E6414:
+ mov r0, #1
+ bl MOD04_021E3E28
+ mov r0, #0
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ arm_func_end MOD04_021E6268
+
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E6490
+ cmp r0, #1
+ beq _021E6460
+ cmp r0, #2
+ beq _021E6670
+ b _021E6724
+_021E6460:
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ mov r1, r7
+ bl MOD04_021F05F4
+ cmp r0, #0
+ moveq r4, #0xff
+ beq _021E6724
+ mov r0, r7
+ bl MOD04_021E4074
+ cmp r0, #0
+ moveq r4, #3
+ beq _021E6724
+_021E6490:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r8, r0
+ bne _021E64F8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a9]
+ cmp r0, #0
+ bne _021E64F8
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r4, #0x14]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ beq _021E64F8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E655C
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r4, #0x20]
+ ldr r0, [r0, #0x200]
+ cmp r1, r0
+ bne _021E655C
+_021E64F8:
+ mov r4, #3
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6724
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r0, [r0, #0xb4]
+ cmp r0, #0
+ bne _021E6724
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E6724
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r1, [r5, #0x20]
+ ldr r0, [r0, #0x200]
+ cmp r1, r0
+ bne _021E6724
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ b _021E6724
+_021E655C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #3
+ beq _021E657C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E65AC
+_021E657C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ bne _021E659C
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0
+ beq _021E65AC
+_021E659C:
+ cmp r6, #0
+ bne _021E65B4
+ cmp r5, #0
+ bne _021E65B4
+_021E65AC:
+ mov r4, #4
+ b _021E6724
+_021E65B4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r0, #0
+ beq _021E6668
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r7, r0
+ bne _021E6610
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ bne _021E6600
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ cmp r0, r7
+ bge _021E6608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r7, r0
+ beq _021E6608
+_021E6600:
+ mov r4, #2
+ b _021E6724
+_021E6608:
+ mov r4, #0xff
+ b _021E6724
+_021E6610:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ bne _021E663C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ cmp r0, r7
+ bge _021E6660
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ bne _021E6660
+_021E663C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ movne r0, #0xff
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r4, #2
+ b _021E6724
+_021E6660:
+ mov r4, #3
+ b _021E6724
+_021E6668:
+ mov r4, #2
+ b _021E6724
+_021E6670:
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ mov r1, r7
+ bl MOD04_021F05F4
+ cmp r0, #0
+ moveq r4, #0xff
+ beq _021E6724
+ cmp r8, #3
+ bne _021E66B0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r4, #0x14]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ bne _021E66B8
+_021E66B0:
+ mov r4, #3
+ b _021E6724
+_021E66B8:
+ ldr r0, _021E672C ; =UNK04_022106DC
+ ldrb r1, [r0]
+ cmp r1, #1
+ bne _021E66D8
+ ldrb r0, [r0, #1]
+ cmp r0, #1
+ moveq r4, #0x13
+ beq _021E6724
+_021E66D8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xa
+ bne _021E6718
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ bne _021E6708
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0
+ beq _021E6718
+_021E6708:
+ cmp r6, #0
+ bne _021E6720
+ cmp r5, #0
+ bne _021E6720
+_021E6718:
+ mov r4, #4
+ b _021E6724
+_021E6720:
+ mov r4, #2
+_021E6724:
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021E672C: .word UNK04_022106DC
+ arm_func_end MOD04_021E6428
+
+ 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
+ mov r8, r1
+ mov r7, r2
+ mov sl, r3
+ ldr r6, [sp, #0x138]
+ ldr r5, [sp, #0x13c]
+ mov r4, #0
+ bl MOD04_021E26E4
+ cmp r0, #0
+ beq _021E6770
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0
+ bne _021E677C
+_021E6770:
+ add sp, sp, #0x118
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E677C:
+ bl MOD04_021DF88C
+ cmp r0, #5
+ bne _021E67AC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E67AC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E67AC
+ bl MOD04_021E3E9C
+_021E67AC:
+ cmp sb, #0x40
+ bgt _021E684C
+ cmp sb, #0x40
+ bge _021E7594
+ cmp sb, #0x20
+ addls pc, pc, sb, lsl #2
+ b _021E7608
+_021E67C8: ; jump table
+ b _021E7608 ; case 0
+ b _021E6854 ; case 1
+ b _021E6A20 ; case 2
+ b _021E6BF8 ; case 3
+ b _021E6C58 ; case 4
+ b _021E6D78 ; case 5
+ b _021E6DF4 ; case 6
+ b _021E6F04 ; case 7
+ b _021E701C ; case 8
+ b _021E719C ; case 9
+ b _021E71F0 ; case 10
+ b _021E6854 ; case 11
+ b _021E7298 ; case 12
+ b _021E730C ; case 13
+ b _021E730C ; case 14
+ b _021E730C ; case 15
+ b _021E7330 ; case 16
+ b _021E7380 ; case 17
+ b _021E7424 ; case 18
+ b _021E7480 ; case 19
+ b _021E7608 ; case 20
+ b _021E7608 ; case 21
+ b _021E7608 ; case 22
+ b _021E7608 ; case 23
+ b _021E7608 ; case 24
+ b _021E7608 ; case 25
+ b _021E7608 ; case 26
+ b _021E7608 ; case 27
+ b _021E7608 ; case 28
+ b _021E7608 ; case 29
+ b _021E7608 ; case 30
+ b _021E7608 ; case 31
+ b _021E7498 ; case 32
+_021E684C:
+ cmp sb, #0x41
+ b _021E7608
+_021E6854:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ ldrne r0, [r6, #8]
+ ldrne r7, [r6, #4]
+ movne r0, r0, lsl #0x10
+ movne sl, r0, lsr #0x10
+ cmp sb, #0xb
+ moveq r0, #1
+ movne r0, #0
+ str r0, [sp]
+ ldr r3, [r6]
+ mov r0, r8
+ mov r1, r7
+ mov r2, sl
+ bl MOD04_021E6428
+ mov r5, r0
+ cmp r5, #2
+ bne _021E6994
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1dc]
+ mov r0, r8
+ mov r1, r7
+ mov r2, sl
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E6918
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x46c]
+ cmp r0, #0
+ beq _021E6918
+ bl MOD04_021E26E4
+ mov r6, r0
+ mov r0, r8
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x470]
+ ldr r2, [r6, #0x46c]
+ mov r0, r4
+ blx r2
+_021E6918:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ mov r4, #1
+ str r0, [sp, #0x14]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r0, #1
+ blt _021E6960
+ add r6, sp, #0x14
+_021E693C:
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ str r0, [r6, r4, lsl #2]
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r4, r0
+ ble _021E693C
+_021E6960:
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1c]
+ add r0, sp, #0x14
+ str r1, [r0, r4, lsl #2]
+ 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 MOD04_021E26D0
+ b _021E69E0
+_021E6994:
+ cmp r5, #3
+ bne _021E69E0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021E69E0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r6, #0x14]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ bne _021E69E0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ moveq r0, #0x10
+ streq r0, [sp, #0x14]
+ moveq r4, #1
+_021E69E0:
+ cmp r5, #0xff
+ beq _021E7608
+ add r1, sp, #0x14
+ str r1, [sp]
+ mov r0, r5
+ mov r1, r8
+ mov r2, r7
+ mov r3, sl
+ str r4, [sp, #4]
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ ldr r1, [r6]
+ add r1, r6, r1, lsl #2
+ ldr r1, [r1, #4]
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ ldr r1, [r6]
+ add r1, r6, r1, lsl #2
+ ldr r1, [r1, #8]
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ ldr r1, [r6]
+ add r1, r6, r1, lsl #2
+ ldr r1, [r1, #4]
+ str r1, [r0, #0x1b8]
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E6B4C
+ ldr r1, [r6]
+ add r0, r6, #4
+ bl MOD04_021E5138
+ cmp r0, #0
+ beq _021E6B08
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E6B4C
+ mov r0, r8
+ mov r1, r6
+ bl MOD04_021E621C
+ b _021E6B4C
+_021E6B08:
+ mov r0, r8
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x118
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ mov r0, #0
+ mov r1, r0
+ mov r2, r8
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6BD0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E6B90
+ mov r0, r8
+ mov r1, r6
+ 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 MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, #0
+ bl MOD04_02203BF4
+ mov r2, r0
+ mov r0, #0
+ mov r1, r0
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
+ cmp r0, #0
+ beq _021E7608
+ add sp, sp, #0x118
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E6BD0:
+ mov r0, #5
+ bl MOD04_021E26D0
+ mov r0, r8
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r8, r0
+ bne _021E7608
+ cmp r5, #0
+ ble _021E6C44
+ ldr r0, [r6]
+ cmp r0, #0x10
+ bne _021E6C44
+ mov r0, #0xd
+ mov r1, #0
+ bl MOD04_021E8E08
+ add sp, sp, #0x118
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E6C44:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E5C44
+ add sp, sp, #0x118
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E6C58:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1cc]
+ str r1, [r4, #0x1d0]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ beq _021E6CAC
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a7]
+ cmp r0, #0x10
+ blo _021E6CBC
+_021E6CAC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E6D00
+_021E6CBC:
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1c0]
+ str r1, [r4, #0x1c4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E7608
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1a7]
+ add r1, r1, #1
+ strb r1, [r0, #0x1a7]
+ b _021E7608
+_021E6D00:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6D54
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ str r1, [r4, #0xf0]
+ b _021E7608
+_021E6D54:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E7608
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E5D30
+ b _021E7608
+_021E6D78:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E6DD8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ bne _021E6DD8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf8]
+ cmp r8, r0
+ bne _021E6DD8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+_021E6DD8:
+ mov r0, r8
+ bl MOD04_021E59D4
+ cmp r0, #0
+ bne _021E7608
+ add sp, sp, #0x118
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E6DF4:
+ ldr r0, [r6, #4]
+ ldr r4, [r6]
+ mov r0, r0, lsl #0x10
+ mov r5, r0, lsr #0x10
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E6E20
+ mov r0, #6
+ bl MOD04_021E26D0
+ b _021E6E50
+_021E6E20:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E6E40
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ bne _021E7608
+_021E6E40:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20]
+ cmp r8, r0
+ bne _021E7608
+_021E6E50:
+ bl MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ mov r6, r0
+ 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 MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ add r0, r6, r0, lsl #2
+ str r8, [r0, #0xf4]
+_021E6E9C:
+ mov r1, r5, asr #8
+ mov r0, r5, lsl #8
+ and r1, r1, #0xff
+ and r0, r0, #0xff00
+ orr r0, r1, r0
+ str r4, [sp, #0x10]
+ strh r0, [sp, #0xe]
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x194]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ mov r4, r0
+ bl MOD04_021E26E4
+ add r3, r0, #0x194
+ mov r1, r4
+ mov r0, #0
+ add r2, sp, #0xc
+ bl MOD04_021E2784
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ b _021E7608
+_021E6F04:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E7608
+ ldr r0, [r6]
+ str r0, [sp, #8]
+ ldr r0, [r6, #4]
+ and r4, r0, #0xff
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E6F98
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ bne _021E6F98
+ ldr r0, [sp, #8]
+ bl MOD04_021E4074
+ str r0, [sp, #0x14]
+ add r0, sp, #0x14
+ str r0, [sp]
+ mov r5, #1
+ mov r1, r8
+ mov r2, r7
+ mov r3, sl
+ mov r0, #0x20
+ str r5, [sp, #4]
+ 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 MOD04_021E26E4
+ mov r5, r0
+ 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 MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r5, r0
+ strb r4, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x46c]
+ cmp r0, #0
+ beq _021E7608
+ bl MOD04_021E26E4
+ mov r5, r0
+ ldr r0, [sp, #8]
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x470]
+ ldr r2, [r5, #0x46c]
+ mov r0, r4
+ blx r2
+ b _021E7608
+_021E701C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E7608
+ ldr r0, [r6]
+ str r0, [sp, #8]
+ cmp r0, #0
+ bne _021E7084
+ ldr r5, [r6, #4]
+ ldr r4, [r6, #8]
+ bl MOD04_021E26E4
+ add r0, r5, r0
+ strb r4, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r2, [r0, #0x200]
+ add r1, r4, r5, lsl #2
+ mov r0, #3
+ str r2, [r1, #0xf4]
+ bl MOD04_021E51C0
+ b _021E7608
+_021E7084:
+ ldr r0, [r6, #8]
+ ldr r4, [r6, #4]
+ and r5, r0, #0xff
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r1, [sp, #8]
+ ldr r0, [r0, #0xf4]
+ cmp r1, r0
+ bne _021E7104
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ sub r0, r0, #1
+ cmp r4, r0
+ bne _021E7104
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ add r1, sp, #8
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldrh r3, [r0, #0xa4]
+ ldr r2, [r4, #0x24]
+ mov r1, r8
+ mov r0, #9
+ 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 MOD04_021E26E4
+ ldr r1, [sp, #8]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0xf4]
+ bl MOD04_021E26E4
+ add r0, r4, r0
+ strb r5, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0xc]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0x10]
+ add r0, r0, r4, lsl #1
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0xc]
+ str r1, [r0, #0x1b8]
+ bl MOD04_021E26E4
+ add r1, r0, #0x100
+ ldr r2, [r6, #0x10]
+ mov r0, #5
+ strh r2, [r1, #0xb4]
+ bl MOD04_021E26D0
+ ldr r0, [sp, #8]
+ 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 MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ b _021E7608
+_021E719C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xd
+ bne _021E7608
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ ldr r1, [r6]
+ add r0, r0, #1
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r1, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1a4]
+ add r1, r1, #1
+ strb r1, [r0, #0x1a4]
+ mov r0, #0
+ bl MOD04_021E51C0
+ b _021E7608
+_021E71F0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ beq _021E7210
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x12
+ bne _021E7608
+_021E7210:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E7234
+ ldr r1, [r6]
+ add r0, r6, #4
+ bl MOD04_021E5138
+ cmp r0, #0
+ beq _021E7250
+_021E7234:
+ bl MOD04_021E26E4
+ ldr r1, [r6, #4]
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ b _021E725C
+_021E7250:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+_021E725C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E7280
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ b _021E7608
+_021E7280:
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E72C8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E72E4
+_021E72C8:
+ mov r0, r8
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E7608
+ bl MOD04_021E26E4
+ str r8, [r0, #0x20c]
+ bl MOD04_021E4B40
+ mov r0, #0
+ bl MOD04_021E4CF8
+ b _021E7608
+_021E730C:
+ ldr r2, [r6]
+ mov r0, r8
+ mov r1, sb
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ addne sp, sp, #0x118
+ movne r0, #1
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ cmp r5, #0
+ mov r7, #0
+ ble _021E7608
+ mov r4, r7
+_021E7358:
+ ldr r0, [r6, r7, lsl #2]
+ mov r1, r4
+ bl MOD04_021E3F28
+ cmp r0, #0xff
+ beq _021E7370
+ bl MOD04_021DF9D4
+_021E7370:
+ add r7, r7, #1
+ cmp r7, r5
+ blt _021E7358
+ b _021E7608
+_021E7380:
+ ldr r0, _021E7614 ; =UNK04_022106D4
+ ldr r4, [r0]
+ cmp r4, #0
+ beq _021E73E0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _021E73E0
+ bl OS_GetTick
+ ldr r3, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ subs r3, r0, r3
+ sbc r0, r1, r2
+ mov r1, r0, lsl #6
+ ldr r2, _021E7618 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, [r4, #4]
+ cmp r1, #0
+ cmpeq r0, r2
+ movhs r0, #1
+ strhs r0, [sp, #0x14]
+ bhs _021E73E8
+_021E73E0:
+ mov r0, #0
+ str r0, [sp, #0x14]
+_021E73E8:
+ add r0, sp, #0x14
+ str r0, [sp]
+ mov r4, #1
+ mov r1, r8
+ mov r2, r7
+ mov r3, sl
+ mov r0, #0x12
+ str r4, [sp, #4]
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x13
+ bne _021E7608
+ mov r0, r8
+ mov r1, #0
+ bl MOD04_021E3F28
+ cmp r0, #0xff
+ beq _021E7608
+ ldr r1, _021E7614 ; =UNK04_022106D4
+ mov r4, #1
+ ldr r3, [r1]
+ mov r5, r4,lsl r0
+ ldr r2, [r3, #8]
+ orr r0, r2, r4, lsl r0
+ str r0, [r3, #8]
+ ldr r0, [r6]
+ cmp r0, #0
+ ldrne r1, [r1]
+ ldrne r0, [r1, #0xc]
+ orrne r0, r0, r5
+ strne r0, [r1, #0xc]
+ b _021E7608
+_021E7480:
+ mov r0, #0xc
+ mov r1, #0
+ bl MOD04_021E8E08
+ add sp, sp, #0x118
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E7498:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ bne _021E7608
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E7608
+_021E74CC:
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E757C
+ ldr r0, [r6]
+ cmp r0, #0
+ bne _021E7554
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ beq _021E750C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xc
+ bne _021E7524
+_021E750C:
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E754C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E754C:
+ bl MOD04_021E4CB4
+ b _021E7608
+_021E7554:
+ bl MOD04_021E26E4
+ mov r4, r0
+ mov r0, r8
+ mov r1, #0
+ bl MOD04_021E3F28
+ ldr r2, [r4, #0x1dc]
+ mov r1, #1
+ orr r0, r2, r1, lsl r0
+ str r0, [r4, #0x1dc]
+ b _021E7608
+_021E757C:
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E74CC
+ b _021E7608
+_021E7594:
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E7608
+_021E75A8:
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E75F4
+ mov r4, #0
+ str r4, [sp]
+ mov r1, r8
+ mov r2, r7
+ mov r3, sl
+ mov r0, #0x41
+ str r4, [sp, #4]
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E7608
+ add sp, sp, #0x118
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E75F4:
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E75A8
+_021E7608:
+ mov r0, #1
+ add sp, sp, #0x118
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_021E7614: .word UNK04_022106D4
+_021E7618: .word 0x000082EA
+ arm_func_end MOD04_021E6730
+
+ arm_func_start MOD04_021E761C
+MOD04_021E761C: ; 0x021E761C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov sb, r1
+ mov r4, r0
+ mov r8, r2
+ mov r0, sb
+ mov r1, #0
+ bl strchr
+ mov r7, r0
+ cmp r8, #0
+ mov r6, #0
+ ble _021E767C
+ mov r5, #0x2f
+_021E7650:
+ mov r0, sb
+ mov r1, r5
+ bl strchr
+ cmp r0, #0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ add r6, r6, #1
+ cmp r6, r8
+ add sb, r0, #1
+ blt _021E7650
+_021E767C:
+ mov r0, sb
+ mov r1, #0x2f
+ bl strchr
+ cmp r0, #0
+ moveq r0, r7
+ cmp sb, r0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ sub r5, r0, sb
+ mov r0, sb
+ mov r1, r4
+ mov r2, r5
+ bl MI_CpuCopy8
+ mov r1, #0
+ mov r0, r5
+ strb r1, [r4, r5]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ arm_func_end MOD04_021E761C
+
+ arm_func_start MOD04_021E76C8
+MOD04_021E76C8: ; 0x021E76C8
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x208
+ mov r7, r0
+ mov r5, r2
+ mov r4, r3
+ mov r0, #3
+ mov r6, r1
+ str r0, [sp]
+ ldr ip, _021E7760 ; =UNK04_0220D410
+ ldr r2, _021E7764 ; =UNK04_0220D400
+ ldr r3, _021E7768 ; =UNK04_0220D408
+ add r0, sp, #8
+ mov r1, #0x200
+ str ip, [sp, #4]
+ bl OS_SNPrintf
+ add r1, sp, #8
+ add r2, sp, #9
+ strb r6, [r1, r0]
+ mov r1, #0
+ strb r1, [r2, r0]
+ cmp r4, #0
+ add r8, r2, r0
+ beq _021E7748
+ mov r0, r4
+ bl strlen
+ mov r6, r0
+ mov r0, r4
+ mov r1, r8
+ mov r2, r6
+ bl MI_CpuCopy8
+ mov r0, #0
+ strb r0, [r8, r6]
+_021E7748:
+ add r2, sp, #8
+ mov r0, r7
+ mov r1, r5
+ bl MOD04_021F02B8
+ add sp, sp, #0x208
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021E7760: .word UNK04_0220D410
+_021E7764: .word UNK04_0220D400
+_021E7768: .word UNK04_0220D408
+ arm_func_end MOD04_021E76C8
+
+ arm_func_start MOD04_021E776C
+MOD04_021E776C: ; 0x021E776C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0x9c
+ mov r5, r0
+ mov r8, r1
+ mov r7, r2
+ cmp r3, #0
+ ldr r4, [sp, #0xb8]
+ beq _021E77A8
+ cmp r4, #0
+ beq _021E77A8
+ add r1, sp, #0x18
+ mov r0, r3
+ mov r2, r4, lsl #2
+ bl MIi_CpuCopy32
+ b _021E77AC
+_021E77A8:
+ mov r4, #0
+_021E77AC:
+ ldr r6, _021E7880 ; =UNK04_0220D398
+ add sb, sp, #4
+ ldrb r3, [r6]
+ ldrb r2, [r6, #1]
+ mov r0, r4, lsl #2
+ mov r1, #3
+ strb r3, [sb]
+ strb r2, [sb, #1]
+ ldrb r3, [r6, #2]
+ ldrb r2, [r6, #3]
+ strb r3, [sb, #2]
+ strb r2, [sb, #3]
+ ldrb r2, [r6, #4]
+ strb r2, [sb, #4]
+ str r1, [sp, #8]
+ strb r5, [sp, #0xc]
+ strb r0, [sp, #0xd]
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ strh r0, [sp, #0xe]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ str r0, [sp, #0x10]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ mov r6, #0
+ str r0, [sp, #0x14]
+ mov r4, r6
+_021E781C:
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r8
+ mov r1, r4
+ mov r2, r4
+ bl MOD04_021FFEB0
+ mov r1, r0
+ ldrb r0, [sp, #0xd]
+ mov r2, r7
+ mov r3, sb
+ add r0, r0, #0x14
+ str r0, [sp]
+ ldr r0, [r5, #0xe4]
+ bl MOD04_02203CC4
+ cmp r0, #0
+ addeq sp, sp, #0x9c
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ cmp r0, #2
+ addne sp, sp, #0x9c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ add r6, r6, #1
+ cmp r6, #5
+ blt _021E781C
+ add sp, sp, #0x9c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021E7880: .word UNK04_0220D398
+ arm_func_end MOD04_021E776C
+
+ 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
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr sl, [sp, #0x248]
+ ldr sb, [sp, #0x24c]
+ mov r8, #0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E78E0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E78D8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ beq _021E7900
+_021E78D8:
+ cmp fp, #6
+ bne _021E7900
+_021E78E0:
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #0xc]
+ mov r0, fp
+ mov r3, sl
+ str sb, [sp]
+ bl MOD04_021E776C
+ mov r4, r0
+ b _021E79A0
+_021E7900:
+ cmp sl, #0
+ beq _021E7978
+ cmp sb, #0
+ beq _021E7978
+ ldr r3, [sl]
+ ldr r2, _021E7A3C ; =UNK04_0220D394
+ add r0, sp, #0x20
+ mov r1, #0x200
+ bl OS_SNPrintf
+ mov r8, r0
+ cmp sb, #1
+ mov r7, #1
+ ble _021E7978
+ add r6, sp, #0x10
+ mov r5, #0x10
+_021E793C:
+ ldr r3, [sl, r7, lsl #2]
+ ldr r2, _021E7A40 ; =UNK04_0220D414
+ mov r0, r6
+ mov r1, r5
+ bl OS_SNPrintf
+ mov r4, r0
+ add r1, sp, #0x20
+ mov r0, r6
+ add r1, r1, r8
+ mov r2, r4
+ bl MI_CpuCopy8
+ add r7, r7, #1
+ add r8, r8, r4
+ cmp r7, sb
+ blt _021E793C
+_021E7978:
+ add r0, sp, #0x20
+ mov r1, #0
+ strb r1, [r0, r8]
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ ldr r2, [sp, #4]
+ add r3, sp, #0x20
+ mov r1, fp
+ bl MOD04_021E76C8
+ mov r4, r0
+_021E79A0:
+ cmp fp, #2
+ beq _021E79C0
+ cmp fp, #6
+ beq _021E79C0
+ add r0, fp, #0xf8
+ and r0, r0, #0xff
+ cmp r0, #1
+ bhi _021E7A30
+_021E79C0:
+ bl MOD04_021E26E4
+ strb fp, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ add r1, r0, #0x300
+ ldr r0, [sp, #0xc]
+ strh r0, [r1, #0xce]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #8]
+ str r1, [r0, #0x3d0]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #4]
+ str r1, [r0, #0x454]
+ bl MOD04_021E26E4
+ str sb, [r0, #0x458]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl OS_GetTick
+ str r0, [r5, #0x45c]
+ str r1, [r5, #0x460]
+ cmp sl, #0
+ beq _021E7A30
+ cmp sb, #0
+ beq _021E7A30
+ bl MOD04_021E26E4
+ add r1, r0, #0x3d4
+ mov r0, sl
+ mov r2, sb, lsl #2
+ bl MIi_CpuCopy32
+_021E7A30:
+ mov r0, r4
+ add sp, sp, #0x224
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E7A3C: .word UNK04_0220D394
+_021E7A40: .word UNK04_0220D414
+ arm_func_end MOD04_021E7884
+
+ 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 MOD04_021E26E4
+ mov r4, r0
+ mov r1, #0
+ ldr r0, [r7, #4]
+ mov r2, r1
+ bl MOD04_021FFEB0
+ mov r1, r0
+ ldrh r2, [r7, #2]
+ ldr r0, [r4, #0xe4]
+ ldr r3, [r7, #8]
+ 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 ; =MOD04_021E2784
+ ldr r4, _021E7B00 ; =MOD04_021E2B60
+ mov r6, #0
+_021E7AA8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ str r5, [sp]
+ str r7, [sp, #4]
+ ldrb r2, [r7]
+ ldr r1, [r7, #8]
+ mov r3, r4
+ bl MOD04_022006EC
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ cmp r0, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ add r6, r6, #1
+ cmp r6, #5
+ blt _021E7AA8
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E7AFC: .word MOD04_021E2784
+_021E7B00: .word MOD04_021E2B60
+ arm_func_end MOD04_021E7A44
+
+ 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 MOD04_021E26E4
+ cmp r4, #0
+ ldrb r6, [r0, #0x14]
+ mov r4, #0
+ bne _021E7D48
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ add r1, r0, #0x100
+ ldr r2, [r5, #0x200]
+ ldr r0, _021E7DEC ; =0x0000FFFF
+ ldrh r1, [r1, #0x7e]
+ and r2, r2, r0
+ mov r0, r7
+ orr r8, r2, r1, lsl #16
+ bl MOD04_022038C4
+ cmp r0, #0
+ beq _021E7BC0
+ mov r0, r7
+ bl MOD04_02203908
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BCC
+ cmp r5, r0
+ movne r5, #1
+ bne _021E7C48
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_022038BC
+ add r1, r5, r6, lsl #2
+ str r0, [r1, #0x210]
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_02203898
+ add r1, r5, r6, lsl #1
+ add r1, r1, #0x200
+ strh r0, [r1, #0x90]
+ mov r5, r4
+ b _021E7C48
+_021E7BC0:
+ bl SOC_GetHostID
+ mov r0, r0, lsl #0x10
+ ldr r1, _021E7DEC ; =0x0000FFFF
+ ldr r2, _021E7DF0 ; =0x0000A8C0
+ and r1, r1, r0, lsr #16
+ cmp r1, r2
+ mov r0, r0, lsr #0x10
+ beq _021E7C08
+ and r1, r0, #0xff
+ cmp r1, #0xac
+ bne _021E7C00
+ and r0, r0, #0xff00
+ cmp r0, #0x1000
+ blo _021E7C00
+ cmp r0, #0x1f00
+ bls _021E7C08
+_021E7C00:
+ cmp r1, #0x10
+ bne _021E7C10
+_021E7C08:
+ mov r5, #1
+ b _021E7C48
+_021E7C10:
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_02203908
+ add r1, r5, r6, lsl #2
+ str r0, [r1, #0x210]
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_022038E4
+ add r1, r5, r6, lsl #1
+ add r1, r1, #0x200
+ strh r0, [r1, #0x90]
+ mov r5, #0
+_021E7C48:
+ cmp r5, #0
+ beq _021E7C74
+ bl MOD04_021E26E4
+ mov r6, r0
+ mov r0, #0x10000
+ bl MOD04_021DE8C8
+ add r1, r6, #0x100
+ strh r0, [r1, #0x7e]
+ bl MOD04_021E26E4
+ str r8, [r0, #0x19c]
+ b _021E7D00
+_021E7C74:
+ bl SOC_GetHostID
+ str r0, [sp, #8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD454
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ mov sb, r0
+ mov r0, r7
+ bl MOD04_02203908
+ mov r8, r0
+ mov r0, r7
+ bl MOD04_022038E4
+ add r1, sb, r6, lsl #2
+ add r6, sp, #8
+ mov r3, r0
+ mov r0, #2
+ str r6, [sp]
+ str r0, [sp, #4]
+ ldr r1, [r1, #0xf4]
+ mov r2, r8
+ mov r0, #6
+ bl MOD04_021E7884
+ mov r6, r0
+ 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 MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E7D00:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x194]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x195]
+ bl MOD04_021E26E4
+ mov r6, r0
+ mov r0, r7
+ bl MOD04_022038E4
+ add r1, r6, #0x100
+ strh r0, [r1, #0x96]
+ bl MOD04_021E26E4
+ mov r6, r0
+ mov r0, r7
+ bl MOD04_02203908
+ str r0, [r6, #0x198]
+ b _021E7D88
+_021E7D48:
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x194]
+ bl MOD04_021E26E4
+ mov r1, r4
+ strb r1, [r0, #0x195]
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ mov r1, r4
+ strh r1, [r0, #0x96]
+ bl MOD04_021E26E4
+ mov r1, r4
+ str r1, [r0, #0x198]
+ bl MOD04_021E26E4
+ str r8, [r0, #0x19c]
+ mov r5, #1
+_021E7D88:
+ cmp r5, #0
+ beq _021E7DA4
+ bl MOD04_021E26E4
+ add r0, r0, #0x194
+ bl MOD04_021E7A44
+ mov r4, r0
+ b _021E7DE0
+_021E7DA4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ mov r5, r0
+ bl MOD04_021E26E4
+ add r3, r0, #0x194
+ mov r0, #0
+ mov r1, r5
+ mov r2, r0
+ bl MOD04_021E2784
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+_021E7DE0:
+ mov r0, r4
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021E7DEC: .word 0x0000FFFF
+_021E7DF0: .word 0x0000A8C0
+ arm_func_end MOD04_021E7B04
+
+ arm_func_start MOD04_021E7DF4
+MOD04_021E7DF4: ; 0x021E7DF4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ mov lr, #3
+ ldr ip, _021E7E48 ; =UNK04_0220D3AC
+ str lr, [sp]
+ str ip, [sp, #4]
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r2, _021E7E4C ; =UNK04_0220D3CC
+ ldr r1, _021E7E50 ; =UNK04_0220D3D8
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ ldr r2, _021E7E54 ; =UNK04_0220D418
+ ldr r3, _021E7E58 ; =UNK04_0220D3E4
+ mov r1, #0x100
+ str ip, [sp, #0x20]
+ bl OS_SNPrintf
+ add sp, sp, #0x24
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E7E48: .word UNK04_0220D3AC
+_021E7E4C: .word UNK04_0220D3CC
+_021E7E50: .word UNK04_0220D3D8
+_021E7E54: .word UNK04_0220D418
+_021E7E58: .word UNK04_0220D3E4
+ arm_func_end MOD04_021E7DF4
+
+ 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
+ mov r6, #0xa
+ mov r5, #0x32
+ mov r4, #0x33
+ mov r3, #0x34
+ mov r2, #0x35
+ mov r1, #0x36
+ strb r7, [sp, #0x10c]
+ strb r6, [sp, #0x10d]
+ strb r5, [sp, #0x10e]
+ strb r4, [sp, #0x10f]
+ strb r3, [sp, #0x110]
+ strb r2, [sp, #0x111]
+ strb r1, [sp, #0x112]
+ mov r5, r0
+ mov r4, #7
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E7EC4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E7EF4
+_021E7EC4:
+ add r1, sp, #0x100
+ ldr r2, _021E8020 ; =UNK04_02210704
+ add r1, r1, #0x13
+ mov r3, #0
+_021E7ED4:
+ ldrb r0, [r2]
+ add r3, r3, #1
+ add r2, r2, #0xc
+ cmp r0, #0
+ strneb r0, [r1], #1
+ addne r4, r4, #1
+ cmp r3, #0x9a
+ blt _021E7ED4
+_021E7EF4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _021E7FAC
+_021E7F08: ; jump table
+ b _021E7FAC ; case 0
+ b _021E7FAC ; case 1
+ b _021E7F8C ; case 2
+ b _021E7F20 ; case 3
+ b _021E7F8C ; case 4
+ b _021E7F8C ; case 5
+_021E7F20:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ bne _021E7F84
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0x200]
+ ldrb r2, [r5, #0x16]
+ ldrb r3, [r0, #0x15]
+ add r0, sp, #0xc
+ bl MOD04_021E7DF4
+ ldr r0, _021E8024 ; =UNK04_022106E0
+ ldr r5, [r0]
+ cmp r5, #0
+ beq _021E7FAC
+ add r0, sp, #0xc
+ ldr r2, _021E8028 ; =UNK04_0220D470
+ mov r3, r0
+ mov r1, #0x100
+ str r5, [sp]
+ bl OS_SNPrintf
+ b _021E7FAC
+_021E7F84:
+ bl MOD04_021E26E4
+ ldr r5, [r0, #0x208]
+_021E7F8C:
+ ldr r2, _021E802C ; =UNK04_0220D47C
+ ldr r3, _021E8030 ; =UNK04_0220D3AC
+ add r0, sp, #0xc
+ mov r1, #0x100
+ str r5, [sp]
+ bl OS_SNPrintf
+ bl MOD04_021E26E4
+ str r5, [r0, #0x204]
+_021E7FAC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203C04
+ mov sl, #0
+ add sb, sp, #0xc
+ add r5, sp, #0x10c
+ mov r6, sl
+ mov r8, #6
+ mov r7, #1
+_021E7FD0:
+ bl MOD04_021E26E4
+ str r4, [sp]
+ str sb, [sp, #4]
+ str r8, [sp, #8]
+ ldr r0, [r0, #0xe4]
+ mov r1, r7
+ mov r2, r6
+ mov r3, r5
+ bl MOD04_02203D1C
+ cmp r0, #0
+ addeq sp, sp, #0x1b0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ cmp r0, #2
+ addne sp, sp, #0x1b0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ add sl, sl, #1
+ cmp sl, #5
+ blt _021E7FD0
+ add sp, sp, #0x1b0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_021E8020: .word UNK04_02210704
+_021E8024: .word UNK04_022106E0
+_021E8028: .word UNK04_0220D470
+_021E802C: .word UNK04_0220D47C
+_021E8030: .word UNK04_0220D3AC
+ arm_func_end MOD04_021E7E5C
+
+ arm_func_start MOD04_021E8034
+MOD04_021E8034: ; 0x021E8034
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ beq _021E8074
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203E80
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe4]
+_021E8074:
+ bl MOD04_02200D6C
+ mov r0, #0
+ bl MOD04_021E26D0
+ ldr r0, _021E80C0 ; =UNK04_022106E0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E80A8
+ mov r0, #4
+ mov r2, #0
+ bl MOD04_021DD904
+ ldr r0, _021E80C0 ; =UNK04_022106E0
+ mov r1, #0
+ str r1, [r0]
+_021E80A8:
+ bl MOD04_021E4164
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x18]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E80C0: .word UNK04_022106E0
+ arm_func_end MOD04_021E8034
+
+ arm_func_start MOD04_021E80C4
+MOD04_021E80C4: ; 0x021E80C4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r0, #0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl MOD04_021E8174
+ bl MOD04_021E26E4
+ strb r7, [r0, #0x15]
+ bl MOD04_021E26E4
+ strb r6, [r0, #0x16]
+ bl MOD04_021E26E4
+ str r5, [r0, #0x464]
+ bl MOD04_021E26E4
+ str r4, [r0, #0x468]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17d]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x2d0]
+ mov r0, #0x32
+ ldr r1, _021E8160 ; =UNK04_0220D3AC
+ bl MOD04_0220277C
+ mov r0, #0x33
+ ldr r1, _021E8164 ; =UNK04_0220D3CC
+ bl MOD04_0220277C
+ mov r0, #0x34
+ ldr r1, _021E8168 ; =UNK04_0220D3D8
+ bl MOD04_0220277C
+ mov r0, #0x35
+ ldr r1, _021E816C ; =UNK04_0220D3E4
+ bl MOD04_0220277C
+ mov r0, #0x36
+ ldr r1, _021E8170 ; =UNK04_0220D3A0
+ bl MOD04_0220277C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E8160: .word UNK04_0220D3AC
+_021E8164: .word UNK04_0220D3CC
+_021E8168: .word UNK04_0220D3D8
+_021E816C: .word UNK04_0220D3E4
+_021E8170: .word UNK04_0220D3A0
+ arm_func_end MOD04_021E80C4
+
+ arm_func_start MOD04_021E8174
+MOD04_021E8174: ; 0x021E8174
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, #0x10000
+ bl MOD04_021DE8C8
+ add r1, r5, #0x100
+ strh r0, [r1, #0x7e]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x180]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x184]
+ str r1, [r0, #0x188]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1aa]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ab]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ac]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb2]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1b8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1e0]
+ str r1, [r0, #0x1e4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1f0]
+ str r1, [r0, #0x1f4]
+ bl MOD04_021E26E4
+ add r1, r0, #0x3cc
+ mov r0, #0
+ mov r2, #0x98
+ bl MIi_CpuClear32
+ cmp r4, #2
+ bne _021E82F0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x14]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E82CC
+ mov r0, #1
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E82CC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0xa
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E82F0:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xd]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xe]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a5]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb0]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c0]
+ str r1, [r0, #0x1c4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1cc]
+ str r1, [r0, #0x1d0]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1d4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x2f0]
+ bl MOD04_021E26E4
+ add r1, r0, #0x24
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0xa4
+ mov r0, #0
+ mov r2, #0x40
+ bl MIi_CpuClear16
+ bl MOD04_021E26E4
+ add r1, r0, #0xf4
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0x194
+ mov r0, #0
+ mov r2, #0xc
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0x210
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0x290
+ mov r0, #0
+ mov r2, #0x40
+ bl MIi_CpuClear16
+ bl MOD04_021E26E4
+ add r0, r0, #0x2d0
+ mov r1, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ bl MOD04_021E26E4
+ add r1, r0, #0x348
+ mov r0, #0
+ mov r2, #0x84
+ bl MIi_CpuClear32
+ cmp r4, #1
+ bne _021E84A8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E8484
+ mov r0, #3
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E8484:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #4
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E84A8:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x15]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x16]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x18]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a6]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ae]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ad]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1f8]
+ str r1, [r0, #0x1fc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x46c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x470]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E8174
+
+ arm_func_start MOD04_021E852C
+MOD04_021E852C: ; 0x021E852C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E852C
+
+ arm_func_start MOD04_021E854C
+MOD04_021E854C: ; 0x021E854C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD04_021E26F4
+ ldr r0, _021E85C8 ; =UNK04_022106E0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E8584
+ mov r0, #4
+ mov r2, #0
+ bl MOD04_021DD904
+ ldr r0, _021E85C8 ; =UNK04_022106E0
+ mov r1, #0
+ str r1, [r0]
+_021E8584:
+ bl MOD04_021E4164
+ ldr r0, _021E85CC ; =UNK04_022106D4
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E85B0
+ mov r0, #4
+ mov r2, #0
+ bl MOD04_021DD904
+ ldr r0, _021E85CC ; =UNK04_022106D4
+ mov r1, #0
+ str r1, [r0]
+_021E85B0:
+ ldr r0, _021E85D0 ; =UNK04_022106DC
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E85C8: .word UNK04_022106E0
+_021E85CC: .word UNK04_022106D4
+_021E85D0: .word UNK04_022106DC
+ arm_func_end MOD04_021E854C
+
+ arm_func_start MOD04_021E85D4
+MOD04_021E85D4: ; 0x021E85D4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x2c
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addne sp, sp, #0x2c
+ movne r0, #0
+ ldmneia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x16]
+ ldr r2, _021E8694 ; =UNK04_0220D394
+ add r0, sp, #0
+ add r3, r1, #1
+ mov r1, #0xc
+ bl OS_SNPrintf
+ ldr r0, _021E8698 ; =UNK04_0220D484
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DEB54
+ bl MOD04_021E26E4
+ ldrb r2, [r0, #0xd]
+ add r0, sp, #0
+ mov r1, #0xc
+ add r3, r2, #1
+ ldr r2, _021E8694 ; =UNK04_0220D394
+ bl OS_SNPrintf
+ ldr r0, _021E869C ; =UNK04_0220D488
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DEB0C
+ ldr r2, _021E8694 ; =UNK04_0220D394
+ add r0, sp, #0
+ mov r1, #0xc
+ mov r3, #3
+ bl OS_SNPrintf
+ ldr r0, _021E86A0 ; =UNK04_0220D3F4
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DEB0C
+ mov r0, #6
+ add r1, sp, #0xc
+ mov r2, #0
+ bl MOD04_021E1E30
+ add sp, sp, #0x2c
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E8694: .word UNK04_0220D394
+_021E8698: .word UNK04_0220D484
+_021E869C: .word UNK04_0220D488
+_021E86A0: .word UNK04_0220D3F4
+ arm_func_end MOD04_021E85D4
+
+ arm_func_start MOD04_021E86A4
+MOD04_021E86A4: ; 0x021E86A4
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r7, r0
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r0, _021E8748 ; =UNK04_022106E4
+ mov r1, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ mov r6, #0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ cmp r0, #0
+ blt _021E8730
+ ldr r5, _021E8748 ; =UNK04_022106E4
+ mov r4, #1
+_021E86E8:
+ bl MOD04_021E26E4
+ mov r8, r0
+ 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 MOD04_021E26E4
+ add r0, r0, r6
+ ldrb r0, [r0, #0x2d0]
+ add r6, r6, #1
+ strb r0, [r5], #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ cmp r6, r0
+ ble _021E86E8
+_021E8730:
+ ldr r0, _021E8748 ; =UNK04_022106E4
+ str r0, [r7]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ add r0, r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021E8748: .word UNK04_022106E4
+ arm_func_end MOD04_021E86A4
+
+ arm_func_start MOD04_021E874C
+MOD04_021E874C: ; 0x021E874C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ add r0, r0, #0x2d0
+ str r0, [r4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E874C
+
+ 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 MOD04_021E26E4
+ mov r1, r4,lsl r5
+ ldr r0, [r0, #0x2f0]
+ add r5, r5, #1
+ ands r0, r1, r0
+ addne r6, r6, #1
+ cmp r5, #0x20
+ blt _021E8790
+ mvn r0, #0
+ cmp r6, r0
+ bne _021E87CC
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xe]
+ ldmia sp!, {r4, r5, r6, pc}
+_021E87CC:
+ bl MOD04_021E26E4
+ strb r6, [r0, #0xe]
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E8780
+
+ arm_func_start MOD04_021E87D8
+MOD04_021E87D8: ; 0x021E87D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E87D8
+
+ arm_func_start MOD04_021E8804
+MOD04_021E8804: ; 0x021E8804
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E8804
+
+ 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 MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_021E26E4
+ add r0, r0, sb, lsl #2
+ ldr fp, [r0, #0xf4]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ add r0, r0, sb
+ ldrb r0, [r0, #0x2d0]
+ mov r1, #1
+ ldr r2, [r4, #0x2f0]
+ mvn r0, r1, lsl r0
+ and r0, r2, r0
+ str r0, [r4, #0x2f0]
+ bl MOD04_021E8780
+ sub r0, r8, #1
+ cmp sb, r0
+ bge _021E8970
+ sub r0, r8, sb
+ sub r6, r0, #1
+ cmp r6, #0
+ mov r7, #0
+ ble _021E8970
+_021E88AC:
+ add r4, sb, r7
+ add r5, r4, #1
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r1, [r0, #0x24]
+ add r0, sl, r4, lsl #2
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #1
+ ldrh r1, [r0, #0xa4]
+ add r0, sl, r4, lsl #1
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r1, sl, r4, lsl #2
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ str r0, [r1, #0xf4]
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r1, sl, r4, lsl #2
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x210]
+ str r0, [r1, #0x210]
+ bl MOD04_021E26E4
+ mov sl, r0
+ 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 MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r1, r0, r5
+ add r0, sl, r4
+ ldrb r1, [r1, #0x2d0]
+ add r7, r7, #1
+ cmp r7, r6
+ strb r1, [r0, #0x2d0]
+ blt _021E88AC
+_021E8970:
+ cmp r8, #0
+ ble _021E89E0
+ sub r4, r8, #1
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ mov r1, #0
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #1
+ mov r1, #0
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ mov r1, #0
+ str r1, [r0, #0xf4]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ mov r1, #0
+ str r1, [r0, #0x210]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #1
+ add r0, r0, #0x200
+ mov r1, #0
+ strh r1, [r0, #0x90]
+ bl MOD04_021E26E4
+ add r0, r0, r4
+ mov r1, #0
+ strb r1, [r0, #0x2d0]
+_021E89E0:
+ mov r0, fp
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ arm_func_end MOD04_021E8830
+
+ arm_func_start MOD04_021E89EC
+MOD04_021E89EC: ; 0x021E89EC
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r5, #0
+ mov r4, #0
+ ble _021E8A48
+_021E8A14:
+ 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 MOD04_021E8830
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8A3C:
+ add r4, r4, #1
+ cmp r4, r5
+ blt _021E8A14
+_021E8A48:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E89EC
+
+ arm_func_start MOD04_021E8A50
+MOD04_021E8A50: ; 0x021E8A50
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a8]
+ cmp r0, #2
+ ldmeqia sp!, {r4, pc}
+ mov r0, r4
+ bl MOD04_021E59D4
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E8A50
+
+ arm_func_start MOD04_021E8A74
+MOD04_021E8A74: ; 0x021E8A74
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl MOD04_021DF88C
+ cmp r0, #5
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r5, #0
+ beq _021E8AD4
+ ldr r1, _021E8C00 ; =0xFFFEC780
+ mov r0, r5
+ add r1, r4, r1
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, pc}
+_021E8AD4:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a9]
+ cmp r0, #1
+ beq _021E8B10
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a8]
+ cmp r0, #1
+ beq _021E8B10
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a8]
+ cmp r0, #2
+ bne _021E8B1C
+_021E8B10:
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, pc}
+_021E8B1C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E8B44
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E8B44:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E8B84
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a8]
+ cmp r0, #0
+ bne _021E8BF4
+ bl MOD04_021E26E4
+ mov r1, #3
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ b _021E8BF4
+_021E8B84:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E8BA4
+ ldr r1, _021E8C04 ; =0xFFFEC5D2
+ mov r0, #6
+ bl MOD04_021E8E08
+ b _021E8BF4
+_021E8BA4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ beq _021E8BBC
+ bl MOD04_021E4BF4
+ b _021E8BF4
+_021E8BBC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E8BEC
+ mov r0, #0x12
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1f0]
+ str r1, [r4, #0x1f4]
+ b _021E8BF4
+_021E8BEC:
+ mov r0, #1
+ bl MOD04_021E4CF8
+_021E8BF4:
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E8C00: .word 0xFFFEC780
+_021E8C04: .word 0xFFFEC5D2
+ arm_func_end MOD04_021E8A74
+
+ arm_func_start MOD04_021E8C08
+MOD04_021E8C08: ; 0x021E8C08
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r0
+ mov r4, r2
+ cmp r1, #2
+ beq _021E8C30
+ cmp r1, #3
+ beq _021E8CDC
+ cmp r1, #4
+ beq _021E8DA4
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8C30:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E8CCC
+ ldrb r0, [r4]
+ cmp r0, #1
+ bne _021E8C58
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+_021E8C58:
+ ldrb r6, [r4, #1]
+ bl MOD04_021E26E4
+ ldrb r1, [r4, #2]
+ add r0, r0, r6
+ strb r1, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x200]
+ add r0, r4, r6, lsl #2
+ str r1, [r0, #0xf4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E8CA4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E8CB8
+_021E8CA4:
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x16]
+_021E8CB8:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ad]
+ mov r0, #9
+ bl MOD04_021E26D0
+_021E8CCC:
+ mov r0, r5
+ mov r1, #3
+ bl MOD04_021E4910
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8CDC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x10
+ bne _021E8D94
+ bl MOD04_021E26E4
+ ldr r2, [r0, #0x1d4]
+ mov r1, #1
+ orr r1, r2, r1, lsl r5
+ str r1, [r0, #0x1d4]
+ ldrb r1, [r4]
+ ldrb r0, [r4, #1]
+ orr r4, r1, r0, lsl #8
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb0]
+ cmp r4, r0
+ ble _021E8D2C
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r4, [r0, #0xb0]
+_021E8D2C:
+ mov r0, #0
+ bl MOD04_021E3EC4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d4]
+ cmp r4, r0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E8D88
+ mov r4, #4
+_021E8D60:
+ bl MOD04_021E26E4
+ add r0, r0, r5
+ ldrb r0, [r0, #0x2d0]
+ mov r1, r4
+ bl MOD04_021E4910
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E8D60
+_021E8D88:
+ mov r0, #0x11
+ bl MOD04_021E26D0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8D94:
+ mov r0, r5
+ mov r1, #4
+ bl MOD04_021E4910
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8DA4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #9
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, #4
+ bl MOD04_021E51C0
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E8C08
+
+ arm_func_start MOD04_021E8DC0
+MOD04_021E8DC0: ; 0x021E8DC0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x16]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E8DC0
+
+ 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 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 MOD04_021E4B40
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021DD6B0
+ ldr r1, _021E8EC8 ; =UNK04_0220D3F0
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ moveq r7, #1
+ movne r7, #0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r8, #1
+ movne r8, #0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r5, r0
+ bl MOD04_021E26E4
+ str r5, [sp]
+ ldr r1, [r0, #0x468]
+ mov r0, r4
+ str r1, [sp, #4]
+ ldr r4, [r6, #0x464]
+ mov r2, r8
+ mov r3, r7
+ mov r1, #0
+ blx r4
+ bl MOD04_021E8034
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021E8EC8: .word UNK04_0220D3F0
+ arm_func_end MOD04_021E8E08
+
+ arm_func_start MOD04_021E8ECC
+MOD04_021E8ECC: ; 0x021E8ECC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x3cd]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E8ECC
+
+ 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
+ mov sl, #0
+ str r1, [sp, #8]
+ add sb, sp, #0xc
+ add r5, sp, #0x1c
+ mov r7, sl
+ add r8, fp, #1
+ mov r6, #0xa
+ mvn r4, #0
+_021E8F20:
+ mov r0, sb
+ mov r1, r8
+ mov r2, sl
+ bl MOD04_021E761C
+ cmp r0, r4
+ beq _021E8F58
+ mov r0, sb
+ mov r1, r7
+ mov r2, r6
+ bl strtoul
+ str r0, [r5, sl, lsl #2]
+ add sl, sl, #1
+ cmp sl, #0x80
+ blt _021E8F20
+_021E8F58:
+ add r0, sp, #0x1c
+ str r0, [sp]
+ str sl, [sp, #4]
+ ldrb r0, [fp]
+ mov r2, #0
+ ldr r1, [sp, #8]
+ mov r3, r2
+ bl MOD04_021E6730
+ add sp, sp, #0x21c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ arm_func_end MOD04_021E8EF4
+
+ 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 MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #0x1c
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #7
+ beq _021E8FC4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xc
+ addne sp, sp, #0x1c
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+_021E8FC4:
+ cmp r4, #0
+ beq _021E9140
+ cmp r4, #5
+ addeq sp, sp, #0x1c
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ cmp r4, #6
+ bne _021E9114
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xc]
+ add r1, r1, #1
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xc]
+ cmp r0, #5
+ bls _021E9030
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9030:
+ bl MOD04_021E26E4
+ ldr r3, [r0, #0x200]
+ ldr r2, _021E91F8 ; =UNK04_0220D394
+ add r0, sp, #0x10
+ mov r1, #0xc
+ bl OS_SNPrintf
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r2, [r6, #0x14]
+ ldrb r1, [r0, #0x14]
+ add r0, r7, r2, lsl #2
+ add r1, r5, r1, lsl #1
+ add r1, r1, #0x200
+ ldrh r1, [r1, #0x90]
+ ldr r0, [r0, #0x210]
+ mov r2, #0
+ bl MOD04_021FFEB0
+ mov r5, r0
+ bl MOD04_021E26E4
+ mvn r1, #0
+ str r1, [sp]
+ ldr r3, _021E91FC ; =0x00001388
+ mov r1, #0
+ str r3, [sp, #4]
+ ldr r0, [r0, #8]
+ mov r2, r5
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #4]
+ add r3, sp, #0x10
+ ldr r0, [r0]
+ bl MOD04_021FD52C
+ cmp r0, #1
+ bne _021E90E0
+ 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 MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ add sp, sp, #0x1c
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9114:
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ add sp, sp, #0x1c
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9140:
+ bl MOD04_021DF704
+ mov r5, r0
+ mvn r1, #0
+ cmp r5, r1
+ bne _021E9168
+ ldr r1, _021E9200 ; =0xFFFEABC4
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9168:
+ bl MOD04_021DF6BC
+ mov r4, r0
+ mov r0, r5
+ bl MOD04_021DF638
+ str r6, [r4]
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r2, [r0, #0xd]
+ mov r1, #0
+ add r2, r2, #1
+ strb r2, [r0, #0xd]
+ strb r5, [r4]
+ strh r1, [r4, #2]
+ str r1, [r4, #4]
+ bl MOD04_021E26E4
+ mov r5, r0
+ 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 MOD04_021FD3F8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xc
+ bne _021E91E8
+ mov r0, #0
+ bl MOD04_021E51C0
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E91E8:
+ mov r0, #1
+ bl MOD04_021E51C0
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E91F8: .word UNK04_0220D394
+_021E91FC: .word 0x00001388
+_021E9200: .word 0xFFFEABC4
+ arm_func_end MOD04_021E8F80
+
+ 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 MOD04_021E26E4
+ cmp r0, #0
+ beq _021E9244
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #7
+ bne _021E9244
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a9]
+ cmp r0, #0
+ beq _021E925C
+_021E9244:
+ ldr r1, _021E944C ; =UNK04_0220D48C
+ mov r0, r8
+ mvn r2, #0
+ bl MOD04_021FD6B0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E925C:
+ bl MOD04_021DF704
+ mov r5, r0
+ mvn r2, #0
+ cmp r5, r2
+ bne _021E9290
+ ldr r1, _021E9450 ; =UNK04_0220D498
+ mov r0, r8
+ bl MOD04_021FD6B0
+ ldr r1, _021E9454 ; =0xFFFEABC4
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E9290:
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0x210]
+ cmp r7, r0
+ bne _021E92D4
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #1
+ add r0, r0, #0x200
+ ldrh r0, [r0, #0x90]
+ cmp r6, r0
+ beq _021E9364
+_021E92D4:
+ ldr r0, [sp, #0x24]
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _021E934C
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, sb, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r4, r0
+ bne _021E934C
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ str r7, [r0, #0x210]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #1
+ add r0, r0, #0x200
+ strh r6, [r0, #0x90]
+ b _021E9364
+_021E934C:
+ ldr r1, _021E9458 ; =UNK04_0220D4A4
+ mov r0, r8
+ mvn r2, #0
+ bl MOD04_021FD6B0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E9364:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ bl MOD04_021E26E4
+ ldr r1, [r0, #8]
+ mov r0, r8
+ bl MOD04_021FD6BC
+ cmp r0, #0
+ bne _021E93A0
+ ldr r1, _021E945C ; =0xFFFEC5E6
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E93A0:
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ bne _021E93D4
+ ldr r1, [sp, #0x20]
+ ldr r0, _021E9460 ; =0x0000FFFF
+ mov r4, r1, asr #1
+ cmp r4, r0
+ movge r4, r0
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r4, [r0, #0xb0]
+_021E93D4:
+ mov r0, r5
+ bl MOD04_021DF6BC
+ mov r4, r0
+ mov r0, r5
+ bl MOD04_021DF638
+ str r8, [r4]
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ add r1, r1, #1
+ strb r1, [r0, #0xd]
+ strb r5, [r4]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ mov r0, r8
+ mov r2, #0
+ sub r1, r1, #1
+ add r1, r5, r1
+ ldrb r3, [r1, #0x2d0]
+ mov r1, r4
+ strb r3, [r4, #1]
+ strh r2, [r4, #2]
+ str r2, [r4, #4]
+ bl MOD04_021FD3F8
+ mov r0, #2
+ bl MOD04_021E51C0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021E944C: .word UNK04_0220D48C
+_021E9450: .word UNK04_0220D498
+_021E9454: .word 0xFFFEABC4
+_021E9458: .word UNK04_0220D4A4
+_021E945C: .word 0xFFFEC5E6
+_021E9460: .word 0x0000FFFF
+ arm_func_end MOD04_021E9204
+
+ arm_func_start MOD04_021E9464
+MOD04_021E9464: ; 0x021E9464
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ ldr r0, [sp, #0x18]
+ mov r5, r1
+ mov r6, r2
+ mov r4, r3
+ cmp r0, #0
+ beq _021E948C
+ cmp r4, #0
+ bne _021E9498
+_021E948C:
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E9498:
+ add r1, sp, #0
+ mov r0, #0
+ mov r2, #8
+ bl MIi_CpuClear32
+ mov r1, r6, asr #8
+ mov r0, r6, lsl #8
+ mov r2, #2
+ and r1, r1, #0xff
+ and r0, r0, #0xff00
+ orr r0, r1, r0
+ strb r2, [sp, #1]
+ strh r0, [sp, #2]
+ str r5, [sp, #4]
+ ldrb r5, [r4]
+ cmp r5, #0xfe
+ bne _021E94E4
+ ldrb r0, [r4, #1]
+ cmp r0, #0xfd
+ beq _021E94EC
+_021E94E4:
+ cmp r5, #0x5c
+ bne _021E9518
+_021E94EC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ beq _021E9558
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r2, [sp, #0x18]
+ add r3, sp, #0
+ mov r1, r4
+ bl MOD04_022011A8
+ b _021E9558
+_021E9518:
+ ldr r1, _021E9564 ; =UNK04_0220F018
+ mov r0, r4
+ mov r2, #6
+ bl memcmp
+ cmp r0, #0
+ bne _021E9544
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0
+ mov r0, r4
+ bl MOD04_021FFF78
+ b _021E9558
+_021E9544:
+ cmp r5, #0xfe
+ moveq r0, #0
+ add sp, sp, #8
+ movne r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E9558:
+ mov r0, #1
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E9564: .word UNK04_0220F018
+ arm_func_end MOD04_021E9464
+
+ arm_func_start MOD04_021E9568
+MOD04_021E9568: ; 0x021E9568
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ mov r4, r0
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ cmp r4, #0
+ bne _021E95E4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ beq _021E95B8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202534
+_021E95B8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD6D4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E95E4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xd
+ addls pc, pc, r0, lsl #2
+ b _021E9D04
+_021E960C: ; jump table
+ b _021E9D04 ; case 0
+ b _021E9C0C ; case 1
+ b _021E97B8 ; case 2
+ b _021E97B8 ; case 3
+ b _021E9644 ; case 4
+ b _021E97B8 ; case 5
+ b _021E9D04 ; case 6
+ b _021E9870 ; case 7
+ b _021E9D04 ; case 8
+ b _021E9D04 ; case 9
+ b _021E9D04 ; case 10
+ b _021E99F8 ; case 11
+ b _021E9D04 ; case 12
+ b _021E9AEC ; case 13
+_021E9644:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c8]
+ cmp r0, #0
+ beq _021E9730
+ bl OS_GetTick
+ mov r6, r0
+ mov r7, r1
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ ldr r1, [r5, #0x1cc]
+ ldr r0, [r5, #0x1d0]
+ subs r2, r6, r1
+ sbc r0, r7, r0
+ mov r1, r0, lsl #6
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ mov r3, #0
+ bl _ll_udiv
+ cmp r1, #0
+ ldr r1, [r4, #0x1c8]
+ cmpeq r0, r1
+ bls _021E9730
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E971C
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1aa]
+ add r1, r1, #1
+ strb r1, [r0, #0x1aa]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1aa]
+ cmp r0, #5
+ bls _021E96F8
+ ldr r1, _021E9EFC ; =0xFFFEC5D2
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E96F8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0
+ 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 MOD04_021E5C44
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+_021E9730:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1bc]
+ cmp r0, #0
+ beq _021E9D04
+ 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 MOD04_021E26E4
+ ldr r1, [r0, #0x1c0]
+ ldr r0, [r0, #0x1c4]
+ subs r2, r4, r1
+ sbc r0, r6, r0
+ mov r1, r0, lsl #6
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ mov r3, #0
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, r5
+ blo _021E9D04
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E97B8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe8]
+ cmp r0, #0
+ ble _021E9D04
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #3
+ bne _021E97EC
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ ldr r0, _021E9F00 ; =0x00000BB8
+ mla r5, r1, r0, r0
+ b _021E9800
+_021E97EC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe8]
+ cmp r0, #1
+ moveq r5, #0x3e8
+ ldrne r5, _021E9F00 ; =0x00000BB8
+_021E9800:
+ bl OS_GetTick
+ mov r4, r0
+ mov r6, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0xec]
+ ldr r0, [r0, #0xf0]
+ subs r3, r4, r1
+ sbc r0, r6, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, r5
+ bls _021E9D04
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe8]
+ b _021E9D04
+_021E9870:
+ bl MOD04_021E26E4
+ ldr r2, [r0, #0x18c]
+ ldr r1, [r0, #0x190]
+ mov r0, #0
+ cmp r1, r0
+ cmpeq r2, r0
+ beq _021E9900
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x18c]
+ ldr r0, [r0, #0x190]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F04 ; =0x000061A8
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E9D04
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9900:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cc]
+ cmp r0, #6
+ bne _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x45c]
+ ldr r0, [r0, #0x460]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F08 ; =0x00001770
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E9D04
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x3cd]
+ add r1, r1, #1
+ strb r1, [r0, #0x3cd]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cd]
+ cmp r0, #5
+ bls _021E9998
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9998:
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ add r1, r4, #0x3d4
+ str r1, [sp]
+ add r3, r5, #0x300
+ ldr r1, [r0, #0x458]
+ mov r0, #6
+ str r1, [sp, #4]
+ ldr r1, [r7, #0x454]
+ ldr r2, [r6, #0x3d0]
+ ldrh r3, [r3, #0xce]
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E99F8:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cc]
+ cmp r0, #2
+ bne _021E9D04
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E9A60
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x45c]
+ ldr r0, [r0, #0x460]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F08 ; =0x00001770
+ cmp r1, #0
+ cmpeq r0, r2
+ bhi _021E9AB8
+_021E9A60:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x45c]
+ ldr r0, [r0, #0x460]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F0C ; =0x00004A38
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E9D04
+_021E9AB8:
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9AEC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cc]
+ cmp r0, #8
+ bne _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x45c]
+ ldr r0, [r0, #0x460]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F10 ; =0x00007530
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E9D04
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x3cd]
+ add r1, r1, #1
+ strb r1, [r0, #0x3cd]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cd]
+ cmp r0, #0
+ beq _021E9BAC
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E9BA4
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9BA4:
+ bl MOD04_021E4CB4
+ b _021E9D04
+_021E9BAC:
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ add r1, r4, #0x3d4
+ str r1, [sp]
+ add r3, r5, #0x300
+ ldr r1, [r0, #0x458]
+ mov r0, #8
+ str r1, [sp, #4]
+ ldr r1, [r7, #0x454]
+ ldr r2, [r6, #0x3d0]
+ ldrh r3, [r3, #0xce]
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9C0C:
+ bl MOD04_021DF88C
+ cmp r0, #5
+ bne _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1f8]
+ ldr r0, [r0, #0x1fc]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F10 ; =0x00007530
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E9D04
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ad]
+ cmp r0, #5
+ blo _021E9C8C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9C8C:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ ldrh r3, [r0, #0xa4]
+ ldr r1, [r5, #0xf4]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x40
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1ad]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ad]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ ldr r2, _021E9F14 ; =0xFF403B3A
+ mvn r3, #0
+ adds r0, r0, r2
+ str r0, [r4, #0x1f8]
+ adc r0, r1, r3
+ str r0, [r4, #0x1fc]
+_021E9D04:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ beq _021E9D24
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ bne _021E9DA0
+_021E9D24:
+ bl MOD04_021E26E4
+ ldr r2, [r0, #0x184]
+ ldr r1, [r0, #0x188]
+ mov r0, #0
+ cmp r1, r0
+ cmpeq r2, r0
+ beq _021E9DA0
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x184]
+ ldr r0, [r0, #0x188]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F18 ; =0x00002710
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E9DA0
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r3, r0, #0x194
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E2784
+_021E9DA0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ beq _021E9DBC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203C38
+_021E9DBC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_021E9F1C
+ bl MOD04_02200468
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021E9DEC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD6D4
+_021E9DEC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x12
+ bne _021E9E54
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1f0]
+ ldr r0, [r0, #0x1f4]
+ subs r3, r4, r1
+ sbc r0, r5, r0
+ mov r1, r0, lsl #6
+ ldr r2, _021E9EF8 ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021E9F00 ; =0x00000BB8
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E9E54
+ bl MOD04_021E4BF4
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+_021E9E54:
+ bl MOD04_021E4684
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E41C4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xa
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x16]
+ bl MOD04_021E85D4
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ae]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x47c]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x480]
+ ldr r1, [r4, #0x47c]
+ blx r1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E9EF8: .word 0x000082EA
+_021E9EFC: .word 0xFFFEC5D2
+_021E9F00: .word 0x00000BB8
+_021E9F04: .word 0x000061A8
+_021E9F08: .word 0x00001770
+_021E9F0C: .word 0x00004A38
+_021E9F10: .word 0x00007530
+_021E9F14: .word 0xFF403B3A
+_021E9F18: .word 0x00002710
+ arm_func_end MOD04_021E9568
+
+ arm_func_start MOD04_021E9F1C
+MOD04_021E9F1C: ; 0x021E9F1C
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_02202534
+ ldr r0, [r4, #0xb4]
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E9F5C
+ cmp r0, #1
+ beq _021E9F5C
+ cmp r0, #2
+ beq _021E9FB0
+ ldmia sp!, {r4, pc}
+_021E9F5C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ addls pc, pc, r0, lsl #2
+ ldmia sp!, {r4, pc}
+_021E9F70: ; jump table
+ ldmia sp!, {r4, pc} ; case 0
+ b _021E9FA0 ; case 1
+ b _021E9FA0 ; case 2
+ b _021E9FA0 ; case 3
+ b _021E9FA0 ; case 4
+ ldmia sp!, {r4, pc} ; case 5
+ b _021E9FA0 ; case 6
+ ldmia sp!, {r4, pc} ; case 7
+ ldmia sp!, {r4, pc} ; case 8
+ ldmia sp!, {r4, pc} ; case 9
+ ldmia sp!, {r4, pc} ; case 10
+ b _021E9FA0 ; case 11
+_021E9FA0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ ldmia sp!, {r4, pc}
+_021E9FB0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E9F1C
+
+ arm_func_start MOD04_021E9FD0
+MOD04_021E9FD0: ; 0x021E9FD0
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x18
+ mov r5, r2
+ mov r6, r0
+ mov r4, r3
+ mov r2, r1
+ mov r3, r5
+ mov r0, #3
+ mov r1, #0
+ bl MOD04_021E80C4
+ bl MOD04_021E26E4
+ str r4, [r0, #0x46c]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x28]
+ str r1, [r0, #0x470]
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r4, #0x20]
+ bl MOD04_021E26E4
+ str r6, [r0, #0xf4]
+ mov r0, #4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ bne _021EA0A4
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r2, r0
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r3, #0
+ str r3, [sp, #8]
+ 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 MOD04_02203EA4
+ str r0, [r6, #0xe4]
+_021EA0A4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ bne _021EA0C8
+ mov r0, #5
+ bl MOD04_021E38E8
+ cmp r0, #0
+ addne sp, sp, #0x18
+ ldmneia sp!, {r4, r5, r6, pc}
+_021EA0C8:
+ ldr r1, _021EA134 ; =UNK04_0220D3F0
+ mov r0, #5
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_021E397C
+ cmp r0, #0
+ addne sp, sp, #0x18
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ bne _021EA110
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ bl MOD04_021EA1E0
+ cmp r0, #0
+ addne sp, sp, #0x18
+ ldmneia sp!, {r4, r5, r6, pc}
+_021EA110:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
+ cmp r0, #0
+ add sp, sp, #0x18
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021EA130: .word MOD04_021E32E4
+_021EA134: .word UNK04_0220D3F0
+ arm_func_end MOD04_021E9FD0
+
+ arm_func_start MOD04_021EA138
+MOD04_021EA138: ; 0x021EA138
+ stmdb sp!, {r4, lr}
+ mov lr, r1
+ mov ip, r2
+ mov r4, r3
+ mov r1, r0
+ mov r2, lr
+ mov r3, ip
+ mov r0, #2
+ bl MOD04_021E80C4
+ bl MOD04_021E26E4
+ str r4, [r0, #0x46c]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #8]
+ str r1, [r0, #0x470]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r4, #0xf4]
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0x2f0]
+ bl MOD04_021E26E4
+ mov r2, #0
+ strb r2, [r0, #0xe]
+ ldr r1, _021EA1DC ; =UNK04_022106DC
+ mov r0, #0xa
+ strb r2, [r1, #1]
+ bl MOD04_021E26D0
+ bl MOD04_021E85D4
+ bl MOD04_021E397C
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ bl MOD04_021EA1E0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021EA1DC: .word UNK04_022106DC
+ arm_func_end MOD04_021EA138
+
+ 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 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 MOD04_021E26E4
+ str r4, [r0, #0x200]
+ mov sl, #0
+ ldr fp, _021EA344 ; =MOD04_021E2E18
+ mov r4, sl
+ mov r5, #1
+_021EA21C:
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ mov r8, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD454
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r3, [r0, #0x2f8]
+ mov r1, r8
+ str r3, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ ldr r3, _021EA348 ; =MOD04_021E2E14
+ str fp, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r3, _021EA34C ; =MOD04_021E2E10
+ mov r2, r7
+ str r3, [sp, #0x14]
+ ldr r3, _021EA350 ; =MOD04_021E2D68
+ add r0, sb, #0x10
+ str r3, [sp, #0x18]
+ ldr r3, _021EA354 ; =MOD04_021E2D60
+ str r3, [sp, #0x1c]
+ ldr r3, _021EA358 ; =MOD04_021E2D54
+ str r3, [sp, #0x20]
+ str r4, [sp, #0x24]
+ ldr r3, [r6, #0x2f4]
+ bl MOD04_022025B0
+ movs r6, r0
+ beq _021EA2E4
+ cmp r6, #3
+ bne _021EA2C4
+ cmp sl, #4
+ bne _021EA2D8
+_021EA2C4:
+ mov r0, r6
+ bl MOD04_021E3800
+ add sp, sp, #0x2c
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021EA2D8:
+ add sl, sl, #1
+ cmp sl, #5
+ blt _021EA21C
+_021EA2E4:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strh r1, [r0, #0x1a]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r1, _021EA35C ; =MOD04_021E2D2C
+ bl MOD04_02202568
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r1, _021EA360 ; =MOD04_021E2C78
+ bl MOD04_02202598
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r1, _021EA364 ; =MOD04_021E2B64
+ bl MOD04_02202580
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ 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 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_end MOD04_021EA1E0
+
+ arm_func_start MOD04_021EA368
+MOD04_021EA368: ; 0x021EA368
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl MOD04_021E26F4
+ bl MOD04_021E26E4
+ str r6, [r0]
+ bl MOD04_021E26E4
+ str r5, [r0, #4]
+ bl MOD04_021E26E4
+ str r4, [r0, #8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x10]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strh r1, [r0, #0x1a]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe4]
+ mov r0, r1
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xf]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x19]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1af]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb6]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1dc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x200]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x10]
+ str r1, [r0, #0x2f4]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x14]
+ str r1, [r0, #0x2f8]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x18]
+ str r1, [r0, #0x2fc]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x1c]
+ str r1, [r0, #0x300]
+ bl MOD04_021E26E4
+ add r0, r0, #0x304
+ mov r1, #0
+ mov r2, #0x40
+ bl MI_CpuFill8
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x344]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x464]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x468]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x474]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x478]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x47c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x480]
+ bl MOD04_021E4164
+ ldr r1, _021EA4D0 ; =UNK04_022106DC
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ strh r0, [r1, #2]
+ bl MOD04_021E8174
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021EA4D0: .word UNK04_022106DC
+ arm_func_end MOD04_021EA368
+
+ arm_func_start MOD04_021EA4D4
+MOD04_021EA4D4: ; 0x021EA4D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+ bl MOD04_021E26E4
+ cmp r0, #0
+ beq _021EA518
+ bl MOD04_021DF88C
+ cmp r0, #5
+ bne _021EA518
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a9]
+ cmp r0, #0
+ beq _021EA524
+_021EA518:
+ add sp, sp, #4
+ mov r0, #0
+ ldmfd sp!, {pc}
+_021EA524:
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021EA4D4
+
+ arm_func_start MOD04_021EA530
+MOD04_021EA530: ; 0x021EA530
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021EA4D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021E4F94
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021EA530
+
+ .section .rodata
+
+ .global UNK04_0220BAC4
+UNK04_0220BAC4: ; 0x0220BAC4
+ .word 0x00000003, 0x00000003, 0x00000002, 0x00000002
+ .word 0x00000001, 0x00000001
+
+ .section .data
+
+ .global UNK04_0220D394
+UNK04_0220D394: ; 0x0220D394
+ .asciz "%u"
+
+ .balign 4, 0
+ .global UNK04_0220D398
+UNK04_0220D398: ; 0x0220D398
+ .asciz "SBCM"
+
+ .balign 4, 0
+ .global UNK04_0220D3A0
+UNK04_0220D3A0: ; 0x0220D3A0
+ .asciz "dwc_eval"
+
+ .balign 4, 0
+ .global UNK04_0220D3AC
+UNK04_0220D3AC: ; 0x0220D3AC
+ .asciz "dwc_pid"
+
+ .balign 4, 0
+ .global UNK04_0220D3B4
+UNK04_0220D3B4: ; 0x0220D3B4
+ .asciz "numplayers"
+
+ .balign 4, 0
+ .global UNK04_0220D3C0
+UNK04_0220D3C0: ; 0x0220D3C0
+ .asciz "maxplayers"
+
+ .balign 4, 0
+ .global UNK04_0220D3CC
+UNK04_0220D3CC: ; 0x0220D3CC
+ .asciz "dwc_mtype"
+
+ .balign 4, 0
+ .global UNK04_0220D3D8
+UNK04_0220D3D8: ; 0x0220D3D8
+ .asciz "dwc_mresv"
+
+ .balign 4, 0
+ .global UNK04_0220D3E4
+UNK04_0220D3E4: ; 0x0220D3E4
+ .asciz "dwc_mver"
+
+ .balign 4, 0
+ .global UNK04_0220D3F0
+UNK04_0220D3F0: ; 0x0220D3F0
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D3F4
+UNK04_0220D3F4: ; 0x0220D3F4
+ .asciz "VER"
+
+ .balign 4, 0
+ .global UNK04_0220D3F8
+UNK04_0220D3F8: ; 0x0220D3F8
+ .asciz "FME"
+
+ .balign 4, 0
+ .global UNK04_0220D3FC
+UNK04_0220D3FC: ; 0x0220D3FC
+ .asciz "MDF"
+
+ .balign 4, 0
+ .global UNK04_0220D400
+UNK04_0220D400: ; 0x0220D400
+ .asciz "%s%dv%s"
+
+ .balign 4, 0
+ .global UNK04_0220D408
+UNK04_0220D408: ; 0x0220D408
+ .asciz "GPCM"
+
+ .balign 4, 0
+ .global UNK04_0220D410
+UNK04_0220D410: ; 0x0220D410
+ .asciz "MAT"
+
+ .balign 4, 0
+ .global UNK04_0220D414
+UNK04_0220D414: ; 0x0220D414
+ .asciz "/%u"
+
+ .balign 4, 0
+ .global UNK04_0220D418
+UNK04_0220D418: ; 0x0220D418
+ .asciz "%s = %d and %s != %u and maxplayers = %d and numplayers < %d and %s = %d and %s != %s"
+
+ .balign 4, 0
+ .global UNK04_0220D470
+UNK04_0220D470: ; 0x0220D470
+ .asciz "%s and (%s)"
+
+ .balign 4, 0
+ .global UNK04_0220D47C
+UNK04_0220D47C: ; 0x0220D47C
+ .asciz "%s = %u"
+
+ .balign 4, 0
+ .global UNK04_0220D484
+UNK04_0220D484: ; 0x0220D484
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D488
+UNK04_0220D488: ; 0x0220D488
+ .asciz "SCN"
+
+ .balign 4, 0
+ .global UNK04_0220D48C
+UNK04_0220D48C: ; 0x0220D48C
+ .asciz "Init state"
+
+ .balign 4, 0
+ .global UNK04_0220D498
+UNK04_0220D498: ; 0x0220D498
+ .asciz "Server full"
+
+ .balign 4, 0
+ .global UNK04_0220D4A4
+UNK04_0220D4A4: ; 0x0220D4A4
+ .asciz "Unknown connect attempt"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_022106D4
+UNK04_022106D4: ; 0x022106D4
+ .space 0x4
+
+ .global UNK04_022106D8
+UNK04_022106D8: ; 0x022106D8
+ .space 0x4
+
+ .global UNK04_022106DC
+UNK04_022106DC: ; 0x022106DC
+ .space 0x4
+
+ .global UNK04_022106E0
+UNK04_022106E0: ; 0x022106E0
+ .space 0x4
+
+ .global UNK04_022106E4
+UNK04_022106E4: ; 0x022106E4
+ .space 0x20
+
+ .global UNK04_02210704
+UNK04_02210704: ; 0x02210704
+ .space 0x1
+
+ .global UNK04_02210705
+UNK04_02210705: ; 0x02210705
+ .space 0x7
+
+ .global UNK04_0221070C
+UNK04_0221070C: ; 0x0221070C
+ .space 0x730
diff --git a/arm9/modules/04/asm/mod04_0220C680_certs.s b/arm9/modules/04/asm/mod04_0220C680_certs.s
new file mode 100644
index 00000000..0117740f
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_0220C680_certs.s
@@ -0,0 +1,325 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .data
+ .balign 4, 0
+
+ .global UNK04_0220C680
+UNK04_0220C680: ; 0x0220C680
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220C684
+UNK04_0220C684: ; 0x0220C684
+ .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003
+ .word UNK04_0220C680
+
+ .global UNK04_0220C698
+UNK04_0220C698: ; 0x0220C698
+ .asciz "BE, GlobalSign nv-sa, Root CA, GlobalSign Root CA"
+
+ .balign 4, 0
+ .global UNK04_0220C6CC
+UNK04_0220C6CC: ; 0x0220C6CC
+ .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB
+ .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD
+ .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89
+ .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70
+ .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C
+ .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35
+ .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39
+ .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC
+ .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74
+ .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5
+ .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F
+ .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77
+ .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9
+ .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19
+ .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C
+ .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F
+ .byte 0x7F, 0x93, 0x90, 0xCF
+
+ .global UNK04_0220C7CC
+UNK04_0220C7CC: ; 0x0220C7CC
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220C7D0
+UNK04_0220C7D0: ; 0x0220C7D0
+ .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003
+ .word UNK04_0220C7CC
+
+ .global UNK04_0220C7E4
+UNK04_0220C7E4: ; 0x0220C7E4
+ .asciz "IE, Baltimore, CyberTrust, Baltimore CyberTrust Root"
+
+ .balign 4, 0
+ .global UNK04_0220C81C
+UNK04_0220C81C: ; 0x0220C81C
+ .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A
+ .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29
+ .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2
+ .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52
+ .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8
+ .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8
+ .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F
+ .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12
+ .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68
+ .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC
+ .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C
+ .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F
+ .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9
+ .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99
+ .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68
+ .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90
+ .byte 0xDC, 0x27, 0x1A, 0x39
+
+ .global UNK04_0220C91C
+UNK04_0220C91C: ; 0x0220C91C
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220C920
+UNK04_0220C920: ; 0x0220C920
+ .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003
+ .word UNK04_0220C91C
+
+ .global UNK04_0220C934
+UNK04_0220C934: ; 0x0220C934
+ .asciz "US, GTE Corporation, GTE CyberTrust Solutions, Inc., GTE CyberTrust Global Root"
+
+ .balign 4, 0
+ .global UNK04_0220C984
+UNK04_0220C984: ; 0x0220C984
+ .byte 0x95, 0x0F, 0xA0, 0xB6
+ .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B
+ .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A
+ .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F
+ .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95
+ .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9
+ .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85
+ .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80
+ .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99
+
+ .global UNK04_0220CA04
+UNK04_0220CA04: ; 0x0220CA04
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CA08
+UNK04_0220CA08: ; 0x0220CA08
+ .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003
+ .word UNK04_0220CA04
+
+ .global UNK04_0220CA1C
+UNK04_0220CA1C: ; 0x0220CA1C
+ .asciz "US, GTE Corporation, GTE CyberTrust Root"
+
+ .balign 4, 0
+ .global UNK04_0220CA48
+UNK04_0220CA48: ; 0x0220CA48
+ .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9
+ .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD
+ .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66
+ .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5
+ .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF
+ .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25
+ .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24
+ .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03
+
+ .global UNK04_0220CAC8
+UNK04_0220CAC8: ; 0x0220CAC8
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CACC
+UNK04_0220CACC: ; 0x0220CACC
+ .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003
+ .word UNK04_0220CAC8
+
+ .global UNK04_0220CAE0
+UNK04_0220CAE0: ; 0x0220CAE0
+ .asciz "US, Washington, Nintendo of America Inc, NOA, Nintendo CA, ca@noa.nintendo.com"
+
+ .balign 4, 0
+ .global UNK04_0220CB30
+UNK04_0220CB30: ; 0x0220CB30
+ .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF
+ .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21
+ .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD
+ .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B
+ .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40
+ .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31
+ .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66
+ .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C
+ .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B
+
+ .global UNK04_0220CBB0
+UNK04_0220CBB0: ; 0x0220CBB0
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CBB4
+UNK04_0220CBB4: ; 0x0220CBB4
+ .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003
+ .word UNK04_0220CBB0
+
+ .global UNK04_0220CBC8
+UNK04_0220CBC8: ; 0x0220CBC8
+ .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE
+ .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A
+ .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17
+ .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0
+ .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C
+ .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F
+ .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD
+ .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37
+
+ .global UNK04_0220CC48
+UNK04_0220CC48: ; 0x0220CC48
+ .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, "
+ .asciz "Thawte Premium Server CA, premium-server@thawte.com"
+
+ .balign 4, 0
+ .global UNK04_0220CCD0
+UNK04_0220CCD0: ; 0x0220CCD0
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CCD4
+UNK04_0220CCD4: ; 0x0220CCD4
+ .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003
+ .word UNK04_0220CCD0
+
+ .global UNK04_0220CCE8
+UNK04_0220CCE8: ; 0x0220CCE8
+ .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, "
+ .asciz "Thawte Server CA, server-certs@thawte.com"
+
+ .balign 4, 0
+ .global UNK04_0220CD68
+UNK04_0220CD68: ; 0x0220CD68
+ .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75
+ .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20
+ .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15
+ .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD
+ .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B
+ .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C
+ .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B
+ .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D
+
+ .global UNK04_0220CDE8
+UNK04_0220CDE8: ; 0x0220CDE8
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CDEC
+UNK04_0220CDEC: ; 0x0220CDEC
+ .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003
+ .word UNK04_0220CDE8
+
+ .global UNK04_0220CE00
+UNK04_0220CE00: ; 0x0220CE00
+ .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0
+ .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D
+ .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F
+ .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47
+ .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77
+ .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D
+ .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97
+ .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61
+ .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67
+
+ .global UNK04_0220CE80
+UNK04_0220CE80: ; 0x0220CE80
+ .ascii "US, VeriSign, Inc., Class 3 Public Primary Certification Authority - G2, (c) 1998 VeriSign, Inc."
+ .asciz " - For authorized use only, VeriSign Trust Network"
+
+ .balign 4, 0
+ .global UNK04_0220CF14
+UNK04_0220CF14: ; 0x0220CF14
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CF18
+UNK04_0220CF18: ; 0x0220CF18
+ .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003
+ .word UNK04_0220CF14
+
+ .global UNK04_0220CF2C
+UNK04_0220CF2C: ; 0x0220CF2C
+ .ascii "US, VeriSign, Inc., VeriSign Trust Network, (c) 1999 VeriSign, Inc. - For authorized use only, "
+ .asciz "VeriSign Class 3 Public Primary Certification Authority - G3"
+
+ .balign 4, 0
+ .global UNK04_0220CFC8
+UNK04_0220CFC8: ; 0x0220CFC8
+ .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9
+ .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5
+ .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D
+ .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67
+ .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69
+ .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0
+ .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC
+ .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3
+ .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED
+ .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF
+ .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76
+ .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8
+ .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2
+ .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63
+ .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D
+ .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97
+
+ .global UNK04_0220D0C8
+UNK04_0220D0C8: ; 0x0220D0C8
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220D0CC
+UNK04_0220D0CC: ; 0x0220D0CC
+ .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003
+ .word UNK04_0220D0C8
+
+ .global UNK04_0220D0E0
+UNK04_0220D0E0: ; 0x0220D0E0
+ .asciz "US, VeriSign, Inc., Class 3 Public Primary Certification Authority"
+
+ .balign 4, 0
+ .global UNK04_0220D124
+UNK04_0220D124: ; 0x0220D124
+ .byte 0xC9, 0x5C, 0x59, 0x9E
+ .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45
+ .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25
+ .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00
+ .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6
+ .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F
+ .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20
+ .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15
+ .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7
+
+ .global UNK04_0220D1A4
+UNK04_0220D1A4: ; 0x0220D1A4
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220D1A8
+UNK04_0220D1A8: ; 0x0220D1A8
+ .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003
+ .word UNK04_0220D1A4
+
+ .global UNK04_0220D1BC
+UNK04_0220D1BC: ; 0x0220D1BC
+ .asciz "US, RSA Data Security, Inc., Secure Server Certification Authority"
+
+ .balign 4, 0
+ .global UNK04_0220D200
+UNK04_0220D200: ; 0x0220D200
+ .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A
+ .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB
+ .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82
+ .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05
+ .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D
+ .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98
+ .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49
+ .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD
+ .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
index 52073cac..4b30f2d3 100644
--- a/arm9/modules/05/asm/mod05_021D74E0.s
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -10,7 +10,7 @@ MOD05_021D74E0: ; 0x021D74E0
ldr r0, [r4, #8]
bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r0, [r4, #0x34]
bl FUN_020583A0
bl MOD05_021F2D48
@@ -744,10 +744,10 @@ MOD05_021D7B38: ; 0x021D7B38
thumb_func_start MOD05_021D7B5C
MOD05_021D7B5C: ; 0x021D7B5C
- ldr r3, _021D7B60 ; =FUN_02009FA0
+ ldr r3, _021D7B60 ; =DeinitOamData
bx r3
.balign 4, 0
-_021D7B60: .word FUN_02009FA0
+_021D7B60: .word DeinitOamData
thumb_func_start MOD05_021D7B64
MOD05_021D7B64: ; 0x021D7B64
diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s
index 20fc2752..78c16fd0 100644
--- a/arm9/modules/05/asm/mod05_021E1AD8.s
+++ b/arm9/modules/05/asm/mod05_021E1AD8.s
@@ -290,7 +290,7 @@ _021E1CA8:
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0
bl MOD05_021E1DE4
add r1, r4, #0
@@ -541,7 +541,7 @@ MOD05_021E1ECC: ; 0x021E1ECC
add r0, #0xa8
ldr r0, [r0]
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r6, #0
add r0, #0xa8
ldr r0, [r0]
@@ -727,7 +727,7 @@ _021E2032:
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0
bl MOD05_021E2170
add r2, r4, #0
@@ -1139,7 +1139,7 @@ MOD05_021E2368: ; 0x021E2368
lsl r0, r0, #4
ldr r0, [r6, r0]
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r6, #0
add r0, #8
bl RemoveWindow
@@ -1307,7 +1307,7 @@ _021E2496:
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
lsl r0, r4, #0x13
lsr r0, r0, #0x10
str r0, [sp]
@@ -1407,7 +1407,7 @@ MOD05_021E25A4: ; 0x021E25A4
add r0, #0xa8
ldr r0, [r0]
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r6, #0
add r0, #0xa8
ldr r0, [r0]
@@ -1642,7 +1642,7 @@ _021E270A:
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r1, r6, #0
add r2, r4, #0
@@ -1747,7 +1747,7 @@ MOD05_021E27E8: ; 0x021E27E8
add r0, r4, #0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -1788,7 +1788,7 @@ MOD05_021E288C: ; 0x021E288C
push {r4, lr}
add r4, r0, #0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
mov r1, #1
bl WindowArray_dtor
@@ -1907,7 +1907,7 @@ MOD05_021E2950: ; 0x021E2950
add r0, r4, #0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r1, r4, #0
bl MOD05_021E29C8
@@ -1922,7 +1922,7 @@ MOD05_021E29B4: ; 0x021E29B4
push {r4, lr}
add r4, r0, #0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
mov r1, #1
bl WindowArray_dtor
@@ -2036,7 +2036,7 @@ MOD05_021E2A70: ; 0x021E2A70
add r0, r4, #0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r1, r4, #0
bl MOD05_021E2AD4
diff --git a/arm9/modules/05/asm/mod05_021E3340.s b/arm9/modules/05/asm/mod05_021E3340.s
index 8fb0d143..5aeaf2cc 100644
--- a/arm9/modules/05/asm/mod05_021E3340.s
+++ b/arm9/modules/05/asm/mod05_021E3340.s
@@ -35,14 +35,14 @@ _021E3370:
sub r1, #0x12
mov r2, #0
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021E3414
_021E3388:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021E3414
ldr r0, [r5, #8]
@@ -67,7 +67,7 @@ _021E33A0:
add r0, r6, #0
bl Sav2_Poketch_Give
mov r0, #1
- bl FUN_0200A03C
+ bl GetOamManager
str r0, [sp]
ldr r1, [r5, #4]
ldr r2, [r5, #0xc]
@@ -87,14 +87,14 @@ _021E33E4:
mov r0, #4
sub r2, #0x10
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021E3414
_021E33FE:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021E3414
add r0, r4, #0
diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s
index 6c9c422b..d6f55205 100644
--- a/arm9/modules/05/asm/mod05_021E8310.s
+++ b/arm9/modules/05/asm/mod05_021E8310.s
@@ -286,7 +286,7 @@ MOD05_021E84F4: ; 0x021E84F4
ldr r2, _021E8568 ; =0x000003D9
mov r1, #0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add sp, #0x14
pop {r3, r4, pc}
.balign 4, 0
@@ -299,7 +299,7 @@ MOD05_021E856C: ; 0x021E856C
add r4, r0, #0
ldr r0, [r4, #0x10]
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, [r4, #0x10]
bl RemoveWindow
ldr r0, [r4, #0x10]
diff --git a/arm9/modules/05/asm/mod05_021E8648.s b/arm9/modules/05/asm/mod05_021E8648.s
new file mode 100644
index 00000000..12fe946f
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E8648.s
@@ -0,0 +1,279 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8648
+MOD05_021E8648: ; 0x021E8648
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021E8690 ; =MOD05_021E8728
+ ldr r3, [r5, #0x28]
+ mov r1, #0x38
+ mov r2, #5
+ bl FUN_020061E8
+ add r6, r0, #0
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ add r2, r4, #4
+ mov r3, #5
+_021E8664:
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ sub r3, r3, #1
+ bne _021E8664
+ ldr r0, [r5]
+ str r0, [r2]
+ str r6, [r4, #0x34]
+ mov r0, #0
+ str r0, [r4, #0x30]
+ bl GX_GetBankForLCDC
+ str r0, [r4]
+ add r0, r4, #4
+ bl MOD05_021E87C8
+ ldr r0, _021E8694 ; =MOD05_021E8768
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA98
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E8690: .word MOD05_021E8728
+_021E8694: .word MOD05_021E8768
+
+ thumb_func_start MOD05_021E8698
+MOD05_021E8698: ; 0x021E8698
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ add r2, r3, #0
+ bl GX_SetGraphicsMode
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl GX_SetBankForLCDC
+ ldr r0, [r4]
+ ldr r0, [r0, #4]
+ cmp r0, #0xa
+ bgt _021E86C8
+ bge _021E86EC
+ cmp r0, #6
+ bgt _021E8708
+ cmp r0, #2
+ blt _021E8708
+ beq _021E86CE
+ cmp r0, #6
+ beq _021E86DE
+ b _021E8708
+_021E86C8:
+ cmp r0, #0xe
+ beq _021E86FA
+ b _021E8708
+_021E86CE:
+ mov r1, #0x1a
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+ b _021E870E
+_021E86DE:
+ mov r2, #2
+ ldr r1, _021E871C ; =0x06820000
+ mov r0, #0
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+ b _021E870E
+_021E86EC:
+ mov r2, #2
+ ldr r1, _021E8720 ; =0x06840000
+ mov r0, #0
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+ b _021E870E
+_021E86FA:
+ mov r2, #2
+ ldr r1, _021E8724 ; =0x06860000
+ mov r0, #0
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+ b _021E870E
+_021E8708:
+ mov r0, #0
+ bl GX_SetBankForLCDC
+_021E870E:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x34]
+ bl FUN_0200621C
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+ .balign 4, 0
+_021E871C: .word 0x06820000
+_021E8720: .word 0x06840000
+_021E8724: .word 0x06860000
+
+ thumb_func_start MOD05_021E8728
+MOD05_021E8728: ; 0x021E8728
+ push {r4, r5, r6, r7}
+ ldr r0, [r1, #0x30]
+ cmp r0, #0
+ beq _021E8760
+ ldr r6, [r1, #0x20]
+ ldr r5, [r1, #0x10]
+ ldr r4, [r1, #0x1c]
+ ldr r3, [r1, #0x18]
+ ldr r2, [r1, #0x14]
+ ldr r0, [r1, #0x24]
+ ldr r1, [r1, #0x28]
+ lsl r5, r5, #0x14
+ lsl r7, r1, #8
+ lsl r1, r3, #0x18
+ lsl r3, r2, #0x1d
+ mov r2, #2
+ lsl r2, r2, #0x1e
+ orr r3, r2
+ lsl r2, r4, #0x19
+ orr r2, r3
+ orr r1, r2
+ lsl r6, r6, #0x10
+ orr r1, r5
+ orr r1, r6
+ orr r1, r7
+ orr r1, r0
+ ldr r0, _021E8764 ; =0x04000064
+ str r1, [r0]
+_021E8760:
+ pop {r4, r5, r6, r7}
+ bx lr
+ .balign 4, 0
+_021E8764: .word 0x04000064
+
+ thumb_func_start MOD05_021E8768
+MOD05_021E8768: ; 0x021E8768
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0xa
+ bgt _021E8786
+ bge _021E879C
+ cmp r0, #6
+ bgt _021E87AC
+ cmp r0, #2
+ blt _021E87AC
+ beq _021E878C
+ cmp r0, #6
+ beq _021E8794
+ b _021E87AC
+_021E8786:
+ cmp r0, #0xe
+ beq _021E87A4
+ b _021E87AC
+_021E878C:
+ mov r0, #1
+ bl GX_SetBankForLCDC
+ b _021E87B2
+_021E8794:
+ mov r0, #2
+ bl GX_SetBankForLCDC
+ b _021E87B2
+_021E879C:
+ mov r0, #4
+ bl GX_SetBankForLCDC
+ b _021E87B2
+_021E87A4:
+ mov r0, #8
+ bl GX_SetBankForLCDC
+ b _021E87B2
+_021E87AC:
+ mov r0, #0
+ bl GX_SetBankForLCDC
+_021E87B2:
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ bl GX_SetGraphicsMode
+ mov r0, #1
+ str r0, [r4, #0x30]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E87C8
+MOD05_021E87C8: ; 0x021E87C8
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0xa
+ bgt _021E87E4
+ bge _021E8808
+ cmp r0, #6
+ bgt _021E8822
+ cmp r0, #2
+ blt _021E8822
+ beq _021E87EA
+ cmp r0, #6
+ beq _021E87FA
+ b _021E8822
+_021E87E4:
+ cmp r0, #0xe
+ beq _021E8816
+ b _021E8822
+_021E87EA:
+ mov r1, #0x1a
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+ b _021E8822
+_021E87FA:
+ mov r2, #2
+ ldr r1, _021E8850 ; =0x06820000
+ mov r0, #0
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+ b _021E8822
+_021E8808:
+ mov r2, #2
+ ldr r1, _021E8854 ; =0x06840000
+ mov r0, #0
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+ b _021E8822
+_021E8816:
+ mov r2, #2
+ ldr r1, _021E8858 ; =0x06860000
+ mov r0, #0
+ lsl r2, r2, #0x10
+ bl MIi_CpuClearFast
+_021E8822:
+ ldr r5, [r4, #0x10]
+ ldr r1, [r4, #0x1c]
+ ldr r3, [r4, #0x18]
+ ldr r6, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ mov r4, #2
+ lsl r2, r1, #0x10
+ lsl r1, r0, #0x14
+ lsl r5, r5, #0x1d
+ lsl r4, r4, #0x1e
+ orr r4, r5
+ lsl r3, r3, #0x19
+ lsl r0, r6, #0x18
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ add r1, r2, #0
+ orr r1, r0
+ mov r0, #0x10
+ orr r1, r0
+ ldr r0, _021E885C ; =0x04000064
+ str r1, [r0]
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E8850: .word 0x06820000
+_021E8854: .word 0x06840000
+_021E8858: .word 0x06860000
+_021E885C: .word 0x04000064
diff --git a/arm9/modules/05/asm/mod05_021E8860.s b/arm9/modules/05/asm/mod05_021E8860.s
new file mode 100644
index 00000000..2adced2f
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E8860.s
@@ -0,0 +1,77 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8860
+MOD05_021E8860: ; 0x021E8860
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #2
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ mov r0, #4
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ mov r0, #8
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ bl GX_ResetBankForBG
+ mov r0, #4
+ add r1, r0, #0
+ bl AllocFromHeap
+ add r7, r0, #0
+ mov r0, #0
+ add r1, r7, #0
+ mov r2, #4
+ bl MIi_CpuClear32
+ ldr r6, _021E88BC ; =UNK05_021F78E4
+ add r3, sp, #0
+ mov r2, #5
+_021E889E:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021E889E
+ ldr r0, [r6]
+ str r0, [r3]
+ add r0, sp, #0
+ str r5, [sp, #0x20]
+ str r4, [sp, #0x24]
+ bl MOD05_021E8648
+ str r0, [r7]
+ add r0, r7, #0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E88BC: .word UNK05_021F78E4
+
+ thumb_func_start MOD05_021E88C0
+MOD05_021E88C0: ; 0x021E88C0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ ldr r0, [r4]
+ mov r2, #0
+ add r3, r1, #0
+ bl MOD05_021E8698
+ mov r0, #4
+ bl GX_SetBankForBG
+ mov r0, #0xe
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r1, [r4]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ pop {r4, pc}
+
+ .section .rodata
+
+ .global UNK05_021F78E4
+UNK05_021F78E4: ; 0x021F78E4
+ .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021E88E8.s b/arm9/modules/05/asm/mod05_021E88E8.s
new file mode 100644
index 00000000..d8dcb1a0
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E88E8.s
@@ -0,0 +1,7400 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E88E8
+MOD05_021E88E8: ; 0x021E88E8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #5
+ bls _021E88FA
+ b _021E8A56
+_021E88FA:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E8906: ; jump table
+ .short _021E8912 - _021E8906 - 2 ; case 0
+ .short _021E8936 - _021E8906 - 2 ; case 1
+ .short _021E8952 - _021E8906 - 2 ; case 2
+ .short _021E899C - _021E8906 - 2 ; case 3
+ .short _021E89F4 - _021E8906 - 2 ; case 4
+ .short _021E8A1C - _021E8906 - 2 ; case 5
+_021E8912:
+ mov r0, #4
+ mov r1, #0x20
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ mov r1, #0
+ mov r2, #0x20
+ bl memset
+ ldr r5, [r4, #0xc]
+ bl MOD05_021E3768
+ str r0, [r5, #0x1c]
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8936:
+ mov r1, #0x10
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r4, #4
+ bl MOD05_021E3474
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8952:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021E8A56
+ mov r1, #0
+ str r1, [r4, #4]
+ ldr r0, [r4]
+ mov r2, #2
+ add r0, r0, #1
+ str r0, [r4]
+ ldr r0, _021E8A5C ; =0xFFFFD000
+ str r1, [sp]
+ str r0, [sp, #4]
+ lsl r0, r0, #2
+ str r0, [sp, #8]
+ ldr r1, [r5, #0x1c]
+ add r0, r4, #0
+ mov r3, #7
+ bl MOD05_021E37CC
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ str r0, [r5]
+ bl Camera_GetDistance
+ mov r2, #0x32
+ add r1, r0, #0
+ mov r0, #6
+ lsl r2, r2, #0xc
+ mov r3, #0x1e
+ str r0, [sp]
+ add r0, r5, #4
+ add r2, r1, r2
+ lsl r3, r3, #0xc
+ bl MOD05_021E3644
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021E899C:
+ add r0, r5, #4
+ bl MOD05_021E36A4
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl Camera_SetDistance
+ cmp r6, #1
+ bne _021E8A56
+ ldr r0, [r4]
+ mov r2, #2
+ add r0, r0, #1
+ str r0, [r4]
+ ldr r0, _021E8A5C ; =0xFFFFD000
+ mov r3, #6
+ str r0, [sp]
+ mov r0, #0xff
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0x1e
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r1, [r5, #0x1c]
+ add r0, r4, #0
+ bl MOD05_021E3888
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ str r0, [r5]
+ bl Camera_GetDistance
+ mov r2, #0x32
+ add r1, r0, #0
+ mov r0, #6
+ lsl r2, r2, #0xc
+ str r0, [sp]
+ ldr r3, _021E8A60 ; =0xFFF01000
+ add r0, r5, #4
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021E89F4:
+ add r0, r5, #4
+ bl MOD05_021E36A4
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl Camera_SetDistance
+ cmp r6, #1
+ bne _021E8A56
+ add r0, r4, #0
+ bl MOD05_021E35AC
+ cmp r0, #1
+ bne _021E8A56
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8A1C:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, _021E8A64 ; =0x04000010
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021E8A42
+ mov r0, #1
+ str r0, [r1]
+_021E8A42:
+ ldr r0, [r5, #0x1c]
+ bl MOD05_021E37A4
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+_021E8A56:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E8A5C: .word 0xFFFFD000
+_021E8A60: .word 0xFFF01000
+_021E8A64: .word 0x04000010
+
+ thumb_func_start MOD05_021E8A68
+MOD05_021E8A68: ; 0x021E8A68
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #5
+ bls _021E8A7A
+ b _021E8BD6
+_021E8A7A:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E8A86: ; jump table
+ .short _021E8A92 - _021E8A86 - 2 ; case 0
+ .short _021E8AB6 - _021E8A86 - 2 ; case 1
+ .short _021E8AD2 - _021E8A86 - 2 ; case 2
+ .short _021E8B1C - _021E8A86 - 2 ; case 3
+ .short _021E8B74 - _021E8A86 - 2 ; case 4
+ .short _021E8B9C - _021E8A86 - 2 ; case 5
+_021E8A92:
+ mov r0, #4
+ mov r1, #0x20
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ mov r1, #0
+ mov r2, #0x20
+ bl memset
+ ldr r5, [r4, #0xc]
+ bl MOD05_021E3768
+ str r0, [r5, #0x1c]
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8AB6:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r0, #0
+ sub r1, #0x11
+ add r2, r1, #0
+ add r3, r4, #4
+ bl MOD05_021E3474
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8AD2:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021E8BD6
+ mov r1, #0
+ str r1, [r4, #4]
+ ldr r0, [r4]
+ mov r2, #5
+ add r0, r0, #1
+ str r0, [r4]
+ ldr r0, _021E8BDC ; =0xFFFFE000
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021E8BE0 ; =0xFFFF4000
+ mov r3, #7
+ str r0, [sp, #8]
+ ldr r1, [r5, #0x1c]
+ add r0, r4, #0
+ bl MOD05_021E37CC
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ str r0, [r5]
+ bl Camera_GetDistance
+ mov r2, #0x32
+ add r1, r0, #0
+ mov r0, #6
+ lsl r2, r2, #0xc
+ mov r3, #0x1e
+ str r0, [sp]
+ add r0, r5, #4
+ add r2, r1, r2
+ lsl r3, r3, #0xc
+ bl MOD05_021E3644
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021E8B1C:
+ add r0, r5, #4
+ bl MOD05_021E36A4
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl Camera_SetDistance
+ cmp r6, #1
+ bne _021E8BD6
+ ldr r0, [r4]
+ mov r2, #5
+ add r0, r0, #1
+ str r0, [r4]
+ ldr r0, _021E8BDC ; =0xFFFFE000
+ mov r3, #6
+ str r0, [sp]
+ mov r0, #0xff
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0x1e
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r1, [r5, #0x1c]
+ add r0, r4, #0
+ bl MOD05_021E3888
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ str r0, [r5]
+ bl Camera_GetDistance
+ mov r2, #0x1e
+ add r1, r0, #0
+ mov r0, #6
+ lsl r2, r2, #0xc
+ str r0, [sp]
+ ldr r3, _021E8BE4 ; =0xFFF9C000
+ add r0, r5, #4
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021E8B74:
+ add r0, r5, #4
+ bl MOD05_021E36A4
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl Camera_SetDistance
+ cmp r6, #1
+ bne _021E8BD6
+ add r0, r4, #0
+ bl MOD05_021E35AC
+ cmp r0, #1
+ bne _021E8BD6
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8B9C:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, _021E8BE8 ; =0x04000010
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021E8BC2
+ mov r0, #1
+ str r0, [r1]
+_021E8BC2:
+ ldr r0, [r5, #0x1c]
+ bl MOD05_021E37A4
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+_021E8BD6:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E8BDC: .word 0xFFFFE000
+_021E8BE0: .word 0xFFFF4000
+_021E8BE4: .word 0xFFF9C000
+_021E8BE8: .word 0x04000010
+
+ thumb_func_start MOD05_021E8BEC
+MOD05_021E8BEC: ; 0x021E8BEC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #6
+ bls _021E8BFE
+ b _021E8D16
+_021E8BFE:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E8C0A: ; jump table
+ .short _021E8C18 - _021E8C0A - 2 ; case 0
+ .short _021E8C4A - _021E8C0A - 2 ; case 1
+ .short _021E8C6A - _021E8C0A - 2 ; case 2
+ .short _021E8CA0 - _021E8C0A - 2 ; case 3
+ .short _021E8CB2 - _021E8C0A - 2 ; case 4
+ .short _021E8CD4 - _021E8C0A - 2 ; case 5
+ .short _021E8CE6 - _021E8C0A - 2 ; case 6
+_021E8C18:
+ mov r0, #4
+ mov r1, #0x10
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ mov r2, #0x10
+ mov r1, #0
+_021E8C26:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021E8C26
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ bl MOD05_021E8E8C
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8C4A:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r0, #0
+ sub r1, #0x11
+ add r2, r1, #0
+ add r3, r4, #4
+ bl MOD05_021E3474
+ mov r0, #0xa
+ str r0, [r5, #0xc]
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8C6A:
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #1
+ str r0, [r5, #0xc]
+ bpl _021E8D16
+ ldr r0, [r4]
+ mov r3, #0x32
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0xc
+ str r0, [r5, #0xc]
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ lsl r3, r3, #4
+ str r3, [sp, #4]
+ ldr r0, _021E8D1C ; =0x04000010
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ mov r2, #0xbf
+ sub r3, #0x76
+ bl MOD05_021E8EC0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021E8CA0:
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #1
+ str r0, [r5, #0xc]
+ bpl _021E8D16
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8CB2:
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ mov r1, #0x1e
+ add r3, r2, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8CD4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021E8D16
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8CE6:
+ add r0, r5, #0
+ bl MOD05_021E8EA8
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021E8D00
+ mov r0, #1
+ str r0, [r1]
+_021E8D00:
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+_021E8D16:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E8D1C: .word 0x04000010
+
+ thumb_func_start MOD05_021E8D20
+MOD05_021E8D20: ; 0x021E8D20
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #6
+ bls _021E8D32
+ b _021E8E4C
+_021E8D32:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E8D3E: ; jump table
+ .short _021E8D4C - _021E8D3E - 2 ; case 0
+ .short _021E8D7E - _021E8D3E - 2 ; case 1
+ .short _021E8D9E - _021E8D3E - 2 ; case 2
+ .short _021E8DD6 - _021E8D3E - 2 ; case 3
+ .short _021E8DE8 - _021E8D3E - 2 ; case 4
+ .short _021E8E0A - _021E8D3E - 2 ; case 5
+ .short _021E8E1C - _021E8D3E - 2 ; case 6
+_021E8D4C:
+ mov r0, #4
+ mov r1, #0x10
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ mov r2, #0x10
+ mov r1, #0
+_021E8D5A:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021E8D5A
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ bl MOD05_021E8E8C
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8D7E:
+ mov r1, #0x10
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r4, #4
+ bl MOD05_021E3474
+ mov r0, #0xa
+ str r0, [r5, #0xc]
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8D9E:
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #1
+ str r0, [r5, #0xc]
+ bpl _021E8E4C
+ ldr r0, [r4]
+ mov r3, #0x32
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0xc
+ str r0, [r5, #0xc]
+ mov r0, #0xf
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ lsl r3, r3, #4
+ str r3, [sp, #4]
+ ldr r0, _021E8E50 ; =0x04000010
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ mov r2, #0xbf
+ add r3, #0xdf
+ bl MOD05_021E8EC0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021E8DD6:
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #1
+ str r0, [r5, #0xc]
+ bpl _021E8E4C
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8DE8:
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ mov r1, #0x1e
+ add r3, r2, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8E0A:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021E8E4C
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8E1C:
+ add r0, r5, #0
+ bl MOD05_021E8EA8
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021E8E36
+ mov r0, #1
+ str r0, [r1]
+_021E8E36:
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+_021E8E4C:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+_021E8E50: .word 0x04000010
+
+ thumb_func_start MOD05_021E8E54
+MOD05_021E8E54: ; 0x021E8E54
+ ldr r3, _021E8E60 ; =FUN_0200CA60
+ mov r2, #1
+ add r1, r0, #0
+ ldr r0, _021E8E64 ; =MOD05_021E8E68
+ lsl r2, r2, #0xa
+ bx r3
+ .balign 4, 0
+_021E8E60: .word FUN_0200CA60
+_021E8E64: .word MOD05_021E8E68
+
+ thumb_func_start MOD05_021E8E68
+MOD05_021E8E68: ; 0x021E8E68
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #8]
+ cmp r0, #2
+ blo _021E8E7C
+ ldr r0, [r4]
+ bl FUN_02012B30
+ mov r0, #0
+ str r0, [r4, #8]
+_021E8E7C:
+ ldr r0, [r4]
+ bl FUN_02012B68
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8E8C
+MOD05_021E8E8C: ; 0x021E8E8C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl FUN_02012A00
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD05_021E8E54
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8EA8
+MOD05_021E8EA8: ; 0x021E8EA8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ ldr r0, [r4]
+ bl FUN_02012AC4
+ ldr r0, [r4]
+ bl FUN_02012B00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E8EC0
+MOD05_021E8EC0: ; 0x021E8EC0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x20]
+ add r5, sp, #0x10
+ str r4, [sp]
+ mov r4, #0x14
+ ldrsh r4, [r5, r4]
+ str r4, [sp, #4]
+ ldr r4, [sp, #0x28]
+ str r4, [sp, #8]
+ ldr r4, [sp, #0x2c]
+ str r4, [sp, #0xc]
+ ldr r4, [sp, #0x30]
+ str r4, [sp, #0x10]
+ ldr r0, [r0]
+ bl FUN_02012A30
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8EE8
+MOD05_021E8EE8: ; 0x021E8EE8
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, [r0]
+ add r7, r1, #0
+ bl FUN_02012B20
+ add r5, r0, #0
+ mov r6, #0
+_021E8EF6:
+ ldr r0, [r5]
+ add r1, r7, #0
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ add r0, r6, #0
+ bl _u32_div_f
+ mov r1, #1
+ tst r0, r1
+ bne _021E8F0E
+ lsl r0, r4, #0x10
+ b _021E8F12
+_021E8F0E:
+ neg r0, r4
+ lsl r0, r0, #0x10
+_021E8F12:
+ lsr r0, r0, #0x10
+ str r0, [r5]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #0xc0
+ blt _021E8EF6
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E8F20
+MOD05_021E8F20: ; 0x021E8F20
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #5
+ bhi _021E9026
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E8F3C: ; jump table
+ .short _021E8F48 - _021E8F3C - 2 ; case 0
+ .short _021E8F68 - _021E8F3C - 2 ; case 1
+ .short _021E8F84 - _021E8F3C - 2 ; case 2
+ .short _021E8F92 - _021E8F3C - 2 ; case 3
+ .short _021E8FDC - _021E8F3C - 2 ; case 4
+ .short _021E8FFC - _021E8F3C - 2 ; case 5
+_021E8F48:
+ mov r0, #4
+ mov r1, #0x1c
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ mov r2, #0x1c
+ mov r1, #0
+_021E8F56:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021E8F56
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8F68:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r0, #0
+ sub r1, #0x11
+ add r2, r1, #0
+ add r3, r4, #4
+ bl MOD05_021E3474
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8F84:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021E9026
+ add r0, r0, #1
+ add sp, #0xc
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8F92:
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ mov r0, #0xc
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r1, #0x10
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ str r0, [r5]
+ bl Camera_GetDistance
+ mov r2, #0x19
+ add r1, r0, #0
+ mov r0, #0xc
+ lsl r2, r2, #0x10
+ str r0, [sp]
+ ldr r3, _021E902C ; =0xFFFFE000
+ add r0, r5, #4
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8FDC:
+ add r0, r5, #4
+ bl MOD05_021E36A4
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl Camera_SetDistance
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021E9026
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E8FFC:
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021E9010
+ mov r0, #1
+ str r0, [r1]
+_021E9010:
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+_021E9026:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E902C: .word 0xFFFFE000
+
+ thumb_func_start MOD05_021E9030
+MOD05_021E9030: ; 0x021E9030
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #5
+ bhi _021E9136
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E904C: ; jump table
+ .short _021E9058 - _021E904C - 2 ; case 0
+ .short _021E9078 - _021E904C - 2 ; case 1
+ .short _021E9094 - _021E904C - 2 ; case 2
+ .short _021E90A2 - _021E904C - 2 ; case 3
+ .short _021E90EC - _021E904C - 2 ; case 4
+ .short _021E910C - _021E904C - 2 ; case 5
+_021E9058:
+ mov r0, #4
+ mov r1, #0x1c
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ mov r2, #0x1c
+ mov r1, #0
+_021E9066:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021E9066
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E9078:
+ mov r1, #0x10
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r4, #4
+ bl MOD05_021E3474
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E9094:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021E9136
+ add r0, r0, #1
+ add sp, #0xc
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E90A2:
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ mov r0, #0xc
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r1, #0x10
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ str r0, [r5]
+ bl Camera_GetDistance
+ mov r2, #0x32
+ add r1, r0, #0
+ mov r0, #0xc
+ lsl r2, r2, #0x10
+ str r0, [sp]
+ ldr r3, _021E913C ; =0xFFFFB000
+ add r0, r5, #4
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E90EC:
+ add r0, r5, #4
+ bl MOD05_021E36A4
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl Camera_SetDistance
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021E9136
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021E910C:
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021E9120
+ mov r0, #1
+ str r0, [r1]
+_021E9120:
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+_021E9136:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E913C: .word 0xFFFFB000
+
+ thumb_func_start MOD05_021E9140
+MOD05_021E9140: ; 0x021E9140
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ add r7, r1, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r7]
+ ldr r4, [r7, #0xc]
+ cmp r0, #7
+ bls _021E9152
+ b _021E948A
+_021E9152:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E915E: ; jump table
+ .short _021E916E - _021E915E - 2 ; case 0
+ .short _021E9228 - _021E915E - 2 ; case 1
+ .short _021E9242 - _021E915E - 2 ; case 2
+ .short _021E924E - _021E915E - 2 ; case 3
+ .short _021E92B2 - _021E915E - 2 ; case 4
+ .short _021E931A - _021E915E - 2 ; case 5
+ .short _021E93A6 - _021E915E - 2 ; case 6
+ .short _021E9430 - _021E915E - 2 ; case 7
+_021E916E:
+ mov r1, #0x1e
+ mov r0, #4
+ lsl r1, r1, #4
+ bl AllocFromHeap
+ mov r2, #0x1e
+ str r0, [r7, #0xc]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl memset
+ ldr r0, [r7, #0x10]
+ ldr r4, [r7, #0xc]
+ ldr r1, [r0, #0x20]
+ mov r0, #7
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ bl MOD05_021E3768
+ str r0, [r4, #0x44]
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #2
+ mov r2, #1
+ bl MOD05_021E3E14
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ ldr r0, _021E949C ; =0x000927C0
+ mov r1, #0x61
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x48
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r0, #0
+ str r0, [sp, #0x14]
+ add r6, r0, #0
+ add r0, r4, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x48
+ add r5, r4, #0
+ str r0, [sp, #0x1c]
+_021E91D4:
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x61
+ str r0, [sp, #4]
+ lsl r1, r1, #2
+ mov r2, #2
+ mov r3, #6
+ ldr r0, [sp, #0x1c]
+ add r1, r4, r1
+ lsl r2, r2, #0x12
+ lsl r3, r3, #0x10
+ bl MOD05_021E3FC4
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_02020310
+ ldr r0, [sp, #0x14]
+ add r5, r5, #4
+ add r0, r0, #1
+ add r6, r6, #2
+ str r0, [sp, #0x14]
+ cmp r0, #2
+ blt _021E91D4
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E948A
+_021E9228:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r0, #0
+ sub r1, #0x11
+ add r2, r1, #0
+ add r3, r7, #4
+ bl MOD05_021E3474
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E948A
+_021E9242:
+ ldr r1, [r7, #4]
+ cmp r1, #0
+ beq _021E9310
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E948A
+_021E924E:
+ mov r0, #0xa
+ mov r2, #1
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x29
+ lsl r2, r2, #0xc
+ mov r3, #2
+ bl MOD05_021E3644
+ ldr r1, [r4]
+ add r0, sp, #0x50
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD05_021E3FF8
+ mov r6, #0
+ add r5, r4, #0
+_021E9270:
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x50
+ bl FUN_02020064
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E9270
+ add r0, r4, #0
+ ldr r2, _021E94A0 ; =0x0000FFFF
+ add r0, #0x18
+ mov r1, #0
+ mov r3, #0xa
+ bl MOD05_021E35B0
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E948A
+_021E92B2:
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ ldr r1, [r4]
+ str r0, [sp, #0x18]
+ add r0, sp, #0x50
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD05_021E3FF8
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E35C0
+ mov r6, #0
+ add r5, r4, #0
+_021E92D2:
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x50
+ bl FUN_02020064
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E92D2
+ mov r0, #0x6e
+ ldr r1, [r4, #0x18]
+ lsl r0, r0, #2
+ lsl r1, r1, #0x10
+ ldr r0, [r4, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ mov r1, #0x6f
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ ldr r2, [r4, #0x18]
+ sub r1, #0xbc
+ sub r1, r2, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ ldr r0, [sp, #0x18]
+ cmp r0, #1
+ beq _021E9312
+_021E9310:
+ b _021E948A
+_021E9312:
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E948A
+_021E931A:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0xa
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r1, [r4, #0x44]
+ add r0, r7, #0
+ mov r2, #0x60
+ mov r3, #6
+ bl MOD05_021E37CC
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_02020130
+ mov r0, #6
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0xff
+ mov r3, #0xa
+ add r0, #0x2c
+ mov r1, #0
+ lsl r2, r2, #0xc
+ lsl r3, r3, #0xc
+ bl MOD05_021E3644
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ bl Camera_GetDistance
+ add r1, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0x71
+ mov r2, #0x7d
+ lsl r0, r0, #2
+ lsl r2, r2, #0xe
+ ldr r3, _021E94A4 ; =0xFFFF6000
+ add r0, r4, r0
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020088
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020088
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E948A
+_021E93A6:
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD05_021E36A4
+ mov r1, #2
+ ldr r2, [r4, #0x2c]
+ lsl r1, r1, #0x12
+ sub r1, r1, r2
+ mov r2, #6
+ add r0, sp, #0x2c
+ lsl r2, r2, #0x10
+ mov r3, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x2c
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x44
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #2
+ str r0, [r2]
+ ldr r2, [r4, #0x2c]
+ lsl r1, r1, #0x12
+ add r1, r2, r1
+ mov r2, #6
+ add r0, sp, #0x20
+ lsl r2, r2, #0x10
+ mov r3, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x20
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x38
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, sp, #0x44
+ str r0, [r2]
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02020044
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x38
+ bl FUN_02020044
+ mov r0, #0x71
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD05_021E36A4
+ mov r1, #0x71
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl Camera_SetDistance
+ add r0, r7, #0
+ bl MOD05_021E35AC
+ cmp r0, #0
+ beq _021E948A
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E948A
+_021E9430:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r1, [r7, #0x14]
+ cmp r1, #0
+ beq _021E944A
+ mov r0, #1
+ str r0, [r1]
+_021E944A:
+ mov r6, #0
+ add r5, r4, #0
+_021E944E:
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0201FFC8
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E944E
+ mov r1, #0x61
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x48
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ add r0, #0x48
+ bl MOD05_021E3E44
+ ldr r0, [r4, #0x44]
+ bl MOD05_021E37A4
+ ldr r1, [r7, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ ldr r0, [sp, #0x10]
+ bl FUN_0200621C
+_021E948A:
+ ldr r0, [r7]
+ cmp r0, #7
+ beq _021E9496
+ ldr r0, [r4, #0x48]
+ bl FUN_0201FDEC
+_021E9496:
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E949C: .word 0x000927C0
+_021E94A0: .word 0x0000FFFF
+_021E94A4: .word 0xFFFF6000
+
+ thumb_func_start MOD05_021E94A8
+MOD05_021E94A8: ; 0x021E94A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x78
+ add r6, r1, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r6]
+ ldr r4, [r6, #0xc]
+ cmp r0, #7
+ bhi _021E95A2
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E94C4: ; jump table
+ .short _021E94D4 - _021E94C4 - 2 ; case 0
+ .short _021E9582 - _021E94C4 - 2 ; case 1
+ .short _021E959C - _021E94C4 - 2 ; case 2
+ .short _021E95AA - _021E94C4 - 2 ; case 3
+ .short _021E9638 - _021E94C4 - 2 ; case 4
+ .short _021E96C8 - _021E94C4 - 2 ; case 5
+ .short _021E9702 - _021E94C4 - 2 ; case 6
+ .short _021E972C - _021E94C4 - 2 ; case 7
+_021E94D4:
+ mov r1, #0x71
+ mov r0, #4
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ mov r2, #0x71
+ str r0, [r6, #0xc]
+ mov r1, #0
+ lsl r2, r2, #2
+ bl memset
+ ldr r0, [r6, #0x10]
+ ldr r4, [r6, #0xc]
+ ldr r1, [r0, #0x20]
+ mov r0, #0x69
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ bl MOD05_021E39FC
+ str r0, [r4, #0x28]
+ add r0, r4, #0
+ add r0, #0x2c
+ mov r1, #2
+ mov r2, #1
+ bl MOD05_021E3E14
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, _021E9798 ; =0x000927C0
+ mov r1, #0x5a
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x2c
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ add r0, r4, #0
+ str r0, [sp, #0x14]
+ add r0, #0x2c
+ mov r7, #0
+ add r5, r4, #0
+ str r0, [sp, #0x14]
+_021E9536:
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x5a
+ str r0, [sp, #4]
+ lsl r1, r1, #2
+ mov r2, #2
+ ldr r0, [sp, #0x14]
+ add r1, r4, r1
+ lsl r2, r2, #0x12
+ mov r3, #0
+ bl MOD05_021E3FC4
+ mov r1, #0x67
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #2
+ blt _021E9536
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021E9786
+_021E9582:
+ mov r1, #0x10
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r6, #4
+ bl MOD05_021E3474
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021E9786
+_021E959C:
+ ldr r1, [r6, #4]
+ cmp r1, #0
+ bne _021E95A4
+_021E95A2:
+ b _021E9786
+_021E95A4:
+ add r0, r0, #1
+ str r0, [r6]
+ b _021E9786
+_021E95AA:
+ mov r2, #3
+ ldr r1, _021E979C ; =0xFFF40000
+ add r0, r4, #0
+ lsl r2, r2, #0x12
+ mov r3, #8
+ bl MOD05_021E35EC
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r2, #2
+ ldr r1, [r4]
+ lsl r2, r2, #0x12
+ sub r1, r2, r1
+ add r0, sp, #0x3c
+ lsr r2, r2, #1
+ mov r3, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x3c
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x6c
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r3, #0
+ str r0, [r2]
+ mov r2, #2
+ ldr r1, [r4]
+ lsl r2, r2, #0x12
+ add r0, sp, #0x30
+ add r1, r1, r2
+ bl MOD05_021E3FF8
+ add r3, sp, #0x30
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x60
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, sp, #0x6c
+ str r0, [r2]
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02020044
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x60
+ bl FUN_02020044
+ add r0, r4, #0
+ ldr r2, _021E97A0 ; =0x0001FFFE
+ add r0, #0x14
+ mov r1, #0
+ mov r3, #8
+ bl MOD05_021E35B0
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021E9786
+_021E9638:
+ add r0, r4, #0
+ bl MOD05_021E35FC
+ mov r2, #2
+ add r5, r0, #0
+ ldr r1, [r4]
+ lsl r2, r2, #0x12
+ sub r1, r2, r1
+ add r0, sp, #0x24
+ lsr r2, r2, #1
+ mov r3, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x24
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x54
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r3, #0
+ str r0, [r2]
+ mov r2, #2
+ ldr r1, [r4]
+ lsl r2, r2, #0x12
+ add r0, sp, #0x18
+ add r1, r1, r2
+ bl MOD05_021E3FF8
+ add r3, sp, #0x18
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x48
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, sp, #0x54
+ str r0, [r2]
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02020044
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x48
+ bl FUN_02020044
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD05_021E35C0
+ mov r0, #0x67
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #2
+ lsl r1, r1, #0x10
+ ldr r0, [r4, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ ldr r1, [r4, #0x14]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ neg r1, r1
+ lsl r1, r1, #0x10
+ ldr r0, [r4, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ cmp r5, #1
+ bne _021E9786
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021E9786
+_021E96C8:
+ mov r3, #1
+ lsl r3, r3, #0xc
+ str r3, [sp]
+ ldr r1, [r4, #0x28]
+ add r0, r6, #0
+ mov r2, #8
+ bl MOD05_021E3A70
+ mov r0, #0x69
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl Camera_GetDistance
+ add r1, r0, #0
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x6a
+ mov r2, #0x7d
+ lsl r0, r0, #2
+ lsl r2, r2, #0xe
+ ldr r3, _021E97A4 ; =0xFFFF6000
+ add r0, r4, r0
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021E9786
+_021E9702:
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD05_021E36A4
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl Camera_SetDistance
+ add r0, r6, #0
+ bl MOD05_021E35AC
+ cmp r0, #1
+ bne _021E9786
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021E9786
+_021E972C:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r1, [r6, #0x14]
+ cmp r1, #0
+ beq _021E9746
+ mov r0, #1
+ str r0, [r1]
+_021E9746:
+ mov r7, #0
+ add r5, r4, #0
+_021E974A:
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0201FFC8
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #2
+ blt _021E974A
+ mov r1, #0x5a
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x2c
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD05_021E3E44
+ ldr r0, [r4, #0x28]
+ bl MOD05_021E3A48
+ ldr r1, [r6, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ ldr r0, [sp, #0x10]
+ bl FUN_0200621C
+_021E9786:
+ ldr r0, [r6]
+ cmp r0, #7
+ beq _021E9792
+ ldr r0, [r4, #0x2c]
+ bl FUN_0201FDEC
+_021E9792:
+ add sp, #0x78
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E9798: .word 0x000927C0
+_021E979C: .word 0xFFF40000
+_021E97A0: .word 0x0001FFFE
+_021E97A4: .word 0xFFFF6000
+
+ thumb_func_start MOD05_021E97A8
+MOD05_021E97A8: ; 0x021E97A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ add r7, r1, #0
+ str r0, [sp, #0x14]
+ ldr r0, [r7]
+ ldr r4, [r7, #0xc]
+ cmp r0, #7
+ bls _021E97BA
+ b _021E9B2A
+_021E97BA:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E97C6: ; jump table
+ .short _021E97D6 - _021E97C6 - 2 ; case 0
+ .short _021E9892 - _021E97C6 - 2 ; case 1
+ .short _021E98AC - _021E97C6 - 2 ; case 2
+ .short _021E98F2 - _021E97C6 - 2 ; case 3
+ .short _021E9958 - _021E97C6 - 2 ; case 4
+ .short _021E99E4 - _021E97C6 - 2 ; case 5
+ .short _021E9A68 - _021E97C6 - 2 ; case 6
+ .short _021E9AD0 - _021E97C6 - 2 ; case 7
+_021E97D6:
+ mov r1, #0x7a
+ mov r0, #4
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ mov r2, #0x7a
+ str r0, [r7, #0xc]
+ mov r1, #0
+ lsl r2, r2, #2
+ bl memset
+ ldr r0, [r7, #0x10]
+ ldr r4, [r7, #0xc]
+ ldr r1, [r0, #0x20]
+ mov r0, #0x72
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0x40
+ mov r1, #4
+ bl MOD05_021E8E8C
+ mov r0, #0x79
+ mov r1, #0xc
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0x50
+ mov r1, #2
+ mov r2, #1
+ bl MOD05_021E3E14
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ ldr r0, _021E9B4C ; =0x000927C0
+ mov r1, #0x63
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x50
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ add r0, r4, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x50
+ mov r6, #0
+ add r5, r4, #0
+ str r0, [sp, #0x1c]
+_021E9844:
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x63
+ str r0, [sp, #4]
+ lsl r1, r1, #2
+ mov r2, #2
+ mov r3, #6
+ ldr r0, [sp, #0x1c]
+ add r1, r4, r1
+ lsl r2, r2, #0x12
+ lsl r3, r3, #0x10
+ bl MOD05_021E3FC4
+ mov r1, #7
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_02020310
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E9844
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E9B2A
+_021E9892:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r0, #0
+ sub r1, #0x11
+ add r2, r1, #0
+ add r3, r7, #4
+ bl MOD05_021E3474
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E9B2A
+_021E98AC:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021E98E4
+ mov r0, #3
+ lsl r0, r0, #0xe
+ mov r3, #0x32
+ str r0, [sp]
+ lsl r3, r3, #4
+ str r3, [sp, #4]
+ ldr r0, _021E9B50 ; =0x04000010
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0x40
+ mov r2, #0xbf
+ sub r3, #0x76
+ bl MOD05_021E8EC0
+ mov r0, #1
+ str r0, [r4, #0x4c]
+_021E98E4:
+ ldr r0, [r7, #4]
+ cmp r0, #0
+ beq _021E99BE
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E9B2A
+_021E98F2:
+ add r0, r4, #0
+ add r0, #0x18
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #8
+ bl MOD05_021E35B0
+ ldr r3, [r4, #0x18]
+ mov r0, #0x10
+ sub r0, r0, r3
+ str r0, [sp]
+ ldr r0, _021E9B54 ; =0x04000050
+ mov r1, #0
+ mov r2, #0xf
+ bl G2x_SetBlendAlpha_
+ mov r6, #0
+ add r5, r4, #0
+_021E9916:
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020398
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E9916
+ add r0, r4, #0
+ ldr r2, _021E9B58 ; =0x0000FFFF
+ add r0, #0x2c
+ mov r1, #0
+ mov r3, #8
+ bl MOD05_021E35B0
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E9B2A
+_021E9958:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E35C0
+ add r6, r0, #0
+ ldr r1, [r4, #0x18]
+ mov r0, #0x10
+ sub r0, r0, r1
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _021E9B5C ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [r4, #0x2c]
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD05_021E35C0
+ cmp r0, #0
+ bne _021E99A2
+ mov r0, #7
+ ldr r1, [r4, #0x2c]
+ lsl r0, r0, #6
+ lsl r1, r1, #0x10
+ ldr r0, [r4, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ mov r0, #0x71
+ lsl r0, r0, #2
+ lsl r1, r5, #0x10
+ ldr r0, [r4, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ b _021E99BA
+_021E99A2:
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020088
+ mov r0, #0x71
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020088
+_021E99BA:
+ cmp r6, #1
+ beq _021E99C0
+_021E99BE:
+ b _021E9B2A
+_021E99C0:
+ ldr r0, _021E9B54 ; =0x04000050
+ mov r6, #0
+ strh r6, [r0]
+ add r5, r4, #0
+_021E99C8:
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02020398
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E99C8
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E9B2A
+_021E99E4:
+ mov r1, #8
+ str r1, [sp]
+ ldr r3, _021E9B60 ; =0x0000019A
+ add r0, r4, #0
+ lsl r1, r1, #9
+ mov r2, #0x29
+ bl MOD05_021E3644
+ ldr r1, [r4]
+ add r0, sp, #0x34
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x34
+ add r2, sp, #0x4c
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #0x20]
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r6, #0
+ str r0, [r2]
+ add r5, r4, #0
+_021E9A12:
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x20]
+ bl FUN_02020064
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E9A12
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl Camera_GetDistance
+ add r1, r0, #0
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x73
+ mov r2, #0x7d
+ lsl r0, r0, #2
+ lsl r2, r2, #0xe
+ ldr r3, _021E9B64 ; =0xFFFF6000
+ add r0, r4, r0
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ mov r1, #0x18
+ add r3, r2, #0
+ bl FUN_0200E1D0
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E9B2A
+_021E9A68:
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ ldr r1, [r4]
+ str r0, [sp, #0x18]
+ add r0, sp, #0x28
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x28
+ add r2, sp, #0x40
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #0x24]
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r6, #0
+ str r0, [r2]
+ add r5, r4, #0
+_021E9A8E:
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x24]
+ bl FUN_02020064
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E9A8E
+ mov r0, #0x73
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD05_021E36A4
+ mov r1, #0x73
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl Camera_SetDistance
+ ldr r0, [sp, #0x18]
+ cmp r0, #1
+ bne _021E9B2A
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021E9B2A
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021E9B2A
+_021E9AD0:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r1, [r7, #0x14]
+ cmp r1, #0
+ beq _021E9AE2
+ mov r0, #1
+ str r0, [r1]
+_021E9AE2:
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD05_021E8EA8
+ mov r6, #0
+ str r6, [r4, #0x4c]
+ add r5, r4, #0
+_021E9AF0:
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ bl FUN_0201FFC8
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021E9AF0
+ mov r1, #0x63
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x50
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r4, #0x50
+ add r0, r4, #0
+ bl MOD05_021E3E44
+ ldr r1, [r7, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ ldr r0, [sp, #0x14]
+ bl FUN_0200621C
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+_021E9B2A:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #1
+ bne _021E9B3A
+ add r0, r4, #0
+ add r0, #0x40
+ mov r1, #2
+ bl MOD05_021E8EE8
+_021E9B3A:
+ ldr r0, [r7]
+ cmp r0, #7
+ beq _021E9B46
+ ldr r0, [r4, #0x50]
+ bl FUN_0201FDEC
+_021E9B46:
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E9B4C: .word 0x000927C0
+_021E9B50: .word 0x04000010
+_021E9B54: .word 0x04000050
+_021E9B58: .word 0x0000FFFF
+_021E9B5C: .word 0x04000052
+_021E9B60: .word 0x0000019A
+_021E9B64: .word 0xFFFF6000
+
+ thumb_func_start MOD05_021E9B68
+MOD05_021E9B68: ; 0x021E9B68
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ str r0, [sp, #0x18]
+ add r0, r1, #0
+ ldr r0, [r0]
+ str r1, [sp, #0x1c]
+ ldr r4, [r1, #0xc]
+ cmp r0, #7
+ bls _021E9B7C
+ b _021EA01A
+_021E9B7C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E9B88: ; jump table
+ .short _021E9B98 - _021E9B88 - 2 ; case 0
+ .short _021E9CAA - _021E9B88 - 2 ; case 1
+ .short _021E9CCA - _021E9B88 - 2 ; case 2
+ .short _021E9D24 - _021E9B88 - 2 ; case 3
+ .short _021E9DE4 - _021E9B88 - 2 ; case 4
+ .short _021E9E82 - _021E9B88 - 2 ; case 5
+ .short _021E9F1C - _021E9B88 - 2 ; case 6
+ .short _021E9F70 - _021E9B88 - 2 ; case 7
+_021E9B98:
+ mov r1, #9
+ mov r0, #4
+ lsl r1, r1, #6
+ bl AllocFromHeap
+ ldr r1, [sp, #0x1c]
+ mov r2, #9
+ str r0, [r1, #0xc]
+ mov r1, #0
+ lsl r2, r2, #6
+ bl memset
+ ldr r0, [sp, #0x1c]
+ ldr r4, [r0, #0xc]
+ ldr r0, [r0, #0x10]
+ ldr r1, [r0, #0x20]
+ mov r0, #0x22
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ sub r0, #0x10
+ add r0, r4, r0
+ mov r1, #4
+ bl MOD05_021E8E8C
+ mov r0, #0x8f
+ mov r1, #0xe
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #1
+ bl MOD05_021E3E14
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, _021E9F5C ; =0x000927C0
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r7, #0x4f
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #2
+_021E9C02:
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r4, r7
+ add r3, r2, #0
+ bl MOD05_021E3FC4
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r0, #4
+ bl MOD05_021E4140
+ mov r1, #0x7d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _021E9C02
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ mov r0, #4
+ mov r1, #1
+ bl AllocWindows
+ mov r1, #0x83
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r3, #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, [sp, #0x1c]
+ ldr r1, [r4, r1]
+ ldr r0, [r0, #0x10]
+ mov r2, #3
+ ldr r0, [r0, #8]
+ bl AddWindowParameterized
+ mov r1, #0
+ add r0, sp, #0x28
+ strh r1, [r0]
+ mov r0, #3
+ add r1, sp, #0x28
+ mov r2, #2
+ mov r3, #0x1e
+ bl BG_LoadPlttData
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FillWindowPixelBuffer
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl ScheduleWindowCopyToVram
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ b _021EA01A
+_021E9CAA:
+ mov r1, #0x10
+ ldr r3, [sp, #0x1c]
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r3, #4
+ bl MOD05_021E3474
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ b _021EA01A
+_021E9CCA:
+ mov r3, #0x8f
+ lsl r3, r3, #2
+ ldr r0, [r4, r3]
+ sub r0, r0, #1
+ str r0, [r4, r3]
+ ldr r0, [r4, r3]
+ cmp r0, #0
+ bne _021E9D08
+ mov r0, #3
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0xe4
+ str r0, [sp, #4]
+ ldr r0, _021E9F60 ; =0x04000010
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ add r0, r3, #0
+ sub r0, #0x2c
+ add r0, r4, r0
+ mov r2, #0xbf
+ add r3, #0x6e
+ bl MOD05_021E8EC0
+ mov r0, #0x87
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021E9D08:
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021E9D34
+ mov r0, #0x8f
+ mov r1, #6
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ b _021EA01A
+_021E9D24:
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ blt _021E9D36
+_021E9D34:
+ b _021EA01A
+_021E9D36:
+ sub r0, #0x1c
+ ldr r0, [r4, r0]
+ bl Camera_GetDistance
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0x89
+ mov r2, #0x7d
+ lsl r0, r0, #2
+ lsl r2, r2, #0xe
+ ldr r3, _021E9F64 ; =0xFFFF6000
+ add r0, r4, r0
+ sub r2, r1, r2
+ bl MOD05_021E3644
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r2, _021E9F68 ; =0x0000FFFF
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #6
+ bl MOD05_021E35B0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ mov r2, #0x1f
+ add r0, r4, r0
+ mov r1, #0xe7
+ mvn r2, r2
+ mov r3, #6
+ bl MOD05_021E35B0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r3, #0x40
+ str r1, [sp, #8]
+ mov r1, #0x56
+ str r1, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r1, #0xf
+ str r1, [sp, #0x14]
+ sub r0, #0x18
+ mov r1, #0x2b
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ add r3, #0xf8
+ bl MOD05_021E4160
+ mov r1, #0x2b
+ mov r2, #0xe7
+ add r0, sp, #0x38
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x38
+ bl FUN_02020044
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r1, #1
+ lsl r0, r1, #9
+ str r1, [r4, r0]
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ mov r0, #0x8f
+ mov r1, #4
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021EA01A
+_021E9DE4:
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bge _021E9E92
+ sub r0, #0xac
+ mov r2, #0x1f
+ add r0, r4, r0
+ mov r1, #0xe7
+ mvn r2, r2
+ mov r3, #6
+ bl MOD05_021E35B0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r2, _021E9F6C ; =0xFFFF0001
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #6
+ bl MOD05_021E35B0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r0, #0x14
+ str r1, [sp, #8]
+ mov r1, #0x56
+ str r1, [sp, #0xc]
+ mov r1, #0x40
+ str r1, [sp, #0x10]
+ mov r1, #0xf
+ str r1, [sp, #0x14]
+ mov r1, #0xd7
+ add r3, r1, #0
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ add r3, #0x61
+ bl MOD05_021E4160
+ mov r1, #0xd7
+ mov r2, #0xe7
+ add r0, sp, #0x38
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ mov r3, #1
+ bl MOD05_021E3FF8
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x38
+ bl FUN_02020044
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r1, #0x81
+ mov r0, #1
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [sp, #0x1c]
+ add r1, #0x38
+ ldr r0, [r0]
+ add r2, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r2, [r0]
+ mov r0, #2
+ str r0, [r4, r1]
+ b _021EA01A
+_021E9E82:
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ blt _021E9E94
+_021E9E92:
+ b _021EA01A
+_021E9E94:
+ sub r0, #0x98
+ mov r2, #0x1f
+ add r0, r4, r0
+ mov r1, #0xe7
+ mvn r2, r2
+ mov r3, #6
+ bl MOD05_021E35B0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r2, _021E9F68 ; =0x0000FFFF
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #6
+ bl MOD05_021E35B0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r0, #0x10
+ str r1, [sp, #8]
+ mov r1, #0x56
+ str r1, [sp, #0xc]
+ mov r1, #0x40
+ str r1, [sp, #0x10]
+ mov r1, #0xf
+ str r1, [sp, #0x14]
+ mov r1, #0x81
+ add r3, r1, #0
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ add r3, #0xb7
+ bl MOD05_021E4160
+ mov r1, #0x81
+ mov r2, #0xe7
+ add r0, sp, #0x38
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ mov r3, #2
+ bl MOD05_021E3FF8
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x38
+ bl FUN_02020044
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x82
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ b _021EA01A
+_021E9F1C:
+ mov r0, #0x89
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD05_021E36A4
+ mov r1, #0x89
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl Camera_SetDistance
+ mov r1, #2
+ lsl r1, r1, #8
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021EA01A
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021EA01A
+ add r1, #8
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021EA01A
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ b _021EA01A
+ nop
+_021E9F5C: .word 0x000927C0
+_021E9F60: .word 0x04000010
+_021E9F64: .word 0xFFFF6000
+_021E9F68: .word 0x0000FFFF
+_021E9F6C: .word 0xFFFF0001
+_021E9F70:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r0, #0x14]
+ cmp r1, #0
+ beq _021E9F8C
+ mov r0, #1
+ str r0, [r1]
+_021E9F8C:
+ mov r0, #0x21
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD05_021E8EA8
+ mov r0, #0x87
+ lsl r0, r0, #2
+ mov r6, #0
+ add r7, r0, #0
+ str r6, [r4, r0]
+ add r5, r4, #0
+ sub r7, #0x28
+_021E9FA4:
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_0201FFC8
+ ldr r0, [r5, r7]
+ bl MOD05_021E4158
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _021E9FA4
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ bl MOD05_021E3E44
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl ClearWindowTilemapAndCopyToVram
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl RemoveWindow
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl WindowArray_dtor
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #4
+ bl BG_ClearCharDataRange
+ ldr r0, [sp, #0x1c]
+ mov r1, #3
+ ldr r0, [r0, #0x10]
+ ldr r0, [r0, #8]
+ bl BgClearTilemapBufferAndCommit
+ ldr r1, [sp, #0x1c]
+ mov r0, #4
+ ldr r1, [r1, #0xc]
+ bl FreeToHeapExplicit
+ ldr r0, [sp, #0x18]
+ bl FUN_0200621C
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+_021EA01A:
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bne _021EA02E
+ sub r0, #0xc
+ add r0, r4, r0
+ mov r1, #2
+ bl MOD05_021E8EE8
+_021EA02E:
+ mov r1, #0x5f
+ mov r0, #0
+ lsl r1, r1, #2
+ str r0, [sp, #0x20]
+ add r0, r4, r1
+ add r1, #0x3c
+ add r5, r4, #0
+ str r0, [sp, #0x24]
+ add r7, r4, r1
+ add r6, r4, #0
+_021EA042:
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r5, r0]
+ cmp r0, #1
+ bne _021EA0B0
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD05_021E41B8
+ cmp r0, #0
+ beq _021EA062
+ mov r0, #2
+ mov r1, #0
+ lsl r0, r0, #8
+ str r1, [r5, r0]
+_021EA062:
+ ldr r0, [sp, #0x24]
+ bl MOD05_021E35C0
+ add r0, r7, #0
+ bl MOD05_021E35C0
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ mov r0, #0x17
+ ldr r1, [r6, r1]
+ lsl r0, r0, #4
+ lsl r1, r1, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_0202011C
+ add r3, r0, #0
+ add r2, sp, #0x2c
+ ldmia r3!, {r0, r1}
+ mov ip, r2
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, ip
+ str r0, [r2]
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02020044
+_021EA0B0:
+ ldr r0, [sp, #0x24]
+ add r5, r5, #4
+ add r0, #0x14
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ add r7, #0x14
+ add r0, r0, #1
+ add r6, #0x14
+ str r0, [sp, #0x20]
+ cmp r0, #3
+ blt _021EA042
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl ScheduleWindowCopyToVram
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ cmp r0, #7
+ beq _021EA0DE
+ ldr r0, [r4]
+ bl FUN_0201FDEC
+_021EA0DE:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EA0E4
+MOD05_021EA0E4: ; 0x021EA0E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5]
+ ldr r4, [r5, #0xc]
+ cmp r0, #7
+ bhi _021EA1B8
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EA100: ; jump table
+ .short _021EA110 - _021EA100 - 2 ; case 0
+ .short _021EA198 - _021EA100 - 2 ; case 1
+ .short _021EA1B2 - _021EA100 - 2 ; case 2
+ .short _021EA1C0 - _021EA100 - 2 ; case 3
+ .short _021EA236 - _021EA100 - 2 ; case 4
+ .short _021EA2C2 - _021EA100 - 2 ; case 5
+ .short _021EA310 - _021EA100 - 2 ; case 6
+ .short _021EA338 - _021EA100 - 2 ; case 7
+_021EA110:
+ mov r1, #0x1f
+ mov r0, #4
+ lsl r1, r1, #4
+ bl AllocFromHeap
+ mov r2, #0x1f
+ str r0, [r5, #0xc]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl memset
+ ldr r0, [r5, #0x10]
+ ldr r4, [r5, #0xc]
+ ldr r1, [r0, #0x20]
+ mov r0, #0x1d
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x5c
+ add r2, r1, #0
+ bl MOD05_021E3E14
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, _021EA394 ; =0x000927C0
+ mov r1, #0x66
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x5c
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x66
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #2
+ ldr r3, _021EA398 ; =0xFFFE0000
+ add r0, #0x5c
+ add r1, r4, r1
+ lsl r2, r2, #0x12
+ bl MOD05_021E3FC4
+ mov r1, #0x73
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EA382
+_021EA198:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r0, #0
+ sub r1, #0x11
+ add r2, r1, #0
+ add r3, r5, #4
+ bl MOD05_021E3474
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EA382
+_021EA1B2:
+ ldr r1, [r5, #4]
+ cmp r1, #0
+ bne _021EA1BA
+_021EA1B8:
+ b _021EA382
+_021EA1BA:
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EA382
+_021EA1C0:
+ mov r2, #1
+ mov r0, #0xc
+ lsl r2, r2, #0x14
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ lsr r3, r2, #7
+ bl MOD05_021E3644
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #2
+ ldr r1, _021EA39C ; =0x0000019A
+ add r0, #0x18
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl MOD05_021E3644
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #2
+ ldr r1, _021EA39C ; =0x0000019A
+ add r0, #0x30
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl MOD05_021E3644
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x30]
+ add r0, sp, #0x28
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x28
+ mov r2, #2
+ bl FUN_02020074
+ add r0, r4, #0
+ ldr r2, _021EA3A0 ; =0x0000FFFF
+ add r0, #0x48
+ mov r1, #0
+ mov r3, #0xc
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EA382
+_021EA236:
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ mov r1, #2
+ lsl r1, r1, #0x12
+ add r6, r0, #0
+ ldr r3, [r4]
+ lsr r2, r1, #2
+ sub r2, r3, r2
+ add r0, sp, #0x10
+ mov r3, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x10
+ add r2, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ add r7, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r7, #0
+ str r0, [r2]
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02020044
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E36A4
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E36A4
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x30]
+ add r0, sp, #0x28
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x28
+ bl FUN_02020064
+ add r0, r4, #0
+ add r0, #0x48
+ bl MOD05_021E35C0
+ mov r0, #0x73
+ ldr r1, [r4, #0x48]
+ lsl r0, r0, #2
+ lsl r1, r1, #0x10
+ ldr r0, [r4, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ cmp r6, #1
+ bne _021EA382
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EA382
+_021EA2C2:
+ ldr r0, [r5, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ mov r0, #0x1d
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl Camera_GetDistance
+ add r1, r0, #0
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x75
+ mov r2, #0xfa
+ lsl r0, r0, #2
+ lsl r2, r2, #0xe
+ mov r3, #0xa
+ add r0, r4, r0
+ sub r2, r1, r2
+ lsl r3, r3, #0xc
+ bl MOD05_021E3644
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ mov r1, #0x12
+ add r3, r2, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EA382
+_021EA310:
+ mov r0, #0x75
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD05_021E36A4
+ mov r1, #0x75
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl Camera_SetDistance
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021EA382
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EA382
+_021EA338:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, [r5, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r5, #0x14]
+ cmp r1, #0
+ beq _021EA354
+ mov r0, #1
+ str r0, [r1]
+_021EA354:
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ mov r1, #0x66
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x5c
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ add r0, #0x5c
+ bl MOD05_021E3E44
+ ldr r1, [r5, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+_021EA382:
+ ldr r0, [r5]
+ cmp r0, #7
+ beq _021EA38E
+ ldr r0, [r4, #0x5c]
+ bl FUN_0201FDEC
+_021EA38E:
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EA394: .word 0x000927C0
+_021EA398: .word 0xFFFE0000
+_021EA39C: .word 0x0000019A
+_021EA3A0: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021EA3A4
+MOD05_021EA3A4: ; 0x021EA3A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ str r0, [sp, #0x14]
+ add r0, r1, #0
+ ldr r0, [r0]
+ str r1, [sp, #0x18]
+ ldr r4, [r1, #0xc]
+ cmp r0, #9
+ bls _021EA3B8
+ b _021EA7DE
+_021EA3B8:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EA3C4: ; jump table
+ .short _021EA3D8 - _021EA3C4 - 2 ; case 0
+ .short _021EA4CE - _021EA3C4 - 2 ; case 1
+ .short _021EA4EE - _021EA3C4 - 2 ; case 2
+ .short _021EA506 - _021EA3C4 - 2 ; case 3
+ .short _021EA582 - _021EA3C4 - 2 ; case 4
+ .short _021EA5FE - _021EA3C4 - 2 ; case 5
+ .short _021EA674 - _021EA3C4 - 2 ; case 6
+ .short _021EA6B4 - _021EA3C4 - 2 ; case 7
+ .short _021EA6FA - _021EA3C4 - 2 ; case 8
+ .short _021EA748 - _021EA3C4 - 2 ; case 9
+_021EA3D8:
+ mov r1, #0x8a
+ mov r0, #4
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ ldr r1, [sp, #0x18]
+ mov r2, #0x8a
+ str r0, [r1, #0xc]
+ mov r1, #0
+ lsl r2, r2, #2
+ bl memset
+ ldr r0, [sp, #0x18]
+ mov r2, #1
+ ldr r4, [r0, #0xc]
+ ldr r0, [r0, #0x10]
+ ldr r1, [r0, #0x20]
+ mov r0, #0x82
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD05_021E3E14
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, _021EA738 ; =0x000927C0
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r7, #0x4f
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #2
+_021EA430:
+ mov r0, #0
+ mov r2, #0
+ str r0, [sp]
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r4, r7
+ sub r3, #0x20
+ bl MOD05_021E3FC4
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _021EA430
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ mov r0, #4
+ mov r1, #1
+ bl AllocWindows
+ mov r1, #2
+ lsl r1, r1, #8
+ str r0, [r4, r1]
+ mov r3, #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, [sp, #0x18]
+ ldr r1, [r4, r1]
+ ldr r0, [r0, #0x10]
+ mov r2, #3
+ ldr r0, [r0, #8]
+ bl AddWindowParameterized
+ mov r1, #0
+ add r0, sp, #0x28
+ strh r1, [r0]
+ mov r0, #3
+ add r1, sp, #0x28
+ mov r2, #2
+ mov r3, #0x1e
+ bl BG_LoadPlttData
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FillWindowPixelBuffer
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl ScheduleWindowCopyToVram
+ mov r0, #4
+ bl MOD05_021E4394
+ mov r1, #0x81
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ b _021EA7DE
+_021EA4CE:
+ mov r1, #0x10
+ ldr r3, [sp, #0x18]
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r3, #4
+ bl MOD05_021E3474
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ b _021EA7DE
+_021EA4EE:
+ ldr r1, [sp, #0x18]
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ beq _021EA516
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ mov r0, #0x89
+ mov r1, #0
+ lsl r0, r0, #2
+ strh r1, [r4, r0]
+ b _021EA7DE
+_021EA506:
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #1
+ strh r1, [r4, r0]
+ ldrsh r1, [r4, r0]
+ cmp r1, #0
+ ble _021EA518
+_021EA516:
+ b _021EA7DE
+_021EA518:
+ sub r0, #0xa8
+ mov r1, #0x1f
+ add r0, r4, r0
+ mvn r1, r1
+ mov r2, #0xe0
+ mov r3, #5
+ bl MOD05_021E35B0
+ mov r1, #2
+ ldr r2, _021EA73C ; =0xFFFE0000
+ add r0, sp, #0x38
+ lsl r1, r1, #0x12
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x38
+ bl FUN_02020044
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r2, _021EA740 ; =0x0000FFFF
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #5
+ bl MOD05_021E35B0
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r1, #0x7d
+ mov r3, #1
+ lsl r1, r1, #2
+ str r3, [r4, r1]
+ ldr r0, [sp, #0x18]
+ add r1, #0x30
+ ldr r0, [r0]
+ add r2, r0, #1
+ ldr r0, [sp, #0x18]
+ str r2, [r0]
+ strh r3, [r4, r1]
+ b _021EA7DE
+_021EA582:
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #1
+ strh r1, [r4, r0]
+ ldrsh r1, [r4, r0]
+ cmp r1, #0
+ bgt _021EA68E
+ sub r0, #0x94
+ mov r1, #0x1f
+ add r0, r4, r0
+ mvn r1, r1
+ mov r2, #0xe0
+ mov r3, #5
+ bl MOD05_021E35B0
+ mov r1, #0xd
+ ldr r2, _021EA73C ; =0xFFFE0000
+ add r0, sp, #0x38
+ lsl r1, r1, #0x10
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x38
+ bl FUN_02020044
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r2, _021EA744 ; =0xFFFF0001
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #5
+ bl MOD05_021E35B0
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r1, #0x7e
+ mov r0, #1
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [sp, #0x18]
+ add r1, #0x2c
+ ldr r0, [r0]
+ add r2, r0, #1
+ ldr r0, [sp, #0x18]
+ str r2, [r0]
+ mov r0, #3
+ strh r0, [r4, r1]
+ b _021EA7DE
+_021EA5FE:
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #1
+ strh r1, [r4, r0]
+ ldrsh r1, [r4, r0]
+ cmp r1, #0
+ bgt _021EA68E
+ sub r0, #0x80
+ mov r1, #0x1f
+ add r0, r4, r0
+ mvn r1, r1
+ mov r2, #0xe0
+ mov r3, #5
+ bl MOD05_021E35B0
+ mov r1, #3
+ ldr r2, _021EA73C ; =0xFFFE0000
+ add r0, sp, #0x38
+ lsl r1, r1, #0x10
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x38
+ bl FUN_02020044
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r2, _021EA740 ; =0x0000FFFF
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #5
+ bl MOD05_021E35B0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r0, #0x7f
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ b _021EA7DE
+_021EA674:
+ mov r1, #0x7d
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021EA68E
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021EA68E
+ add r1, #8
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021EA690
+_021EA68E:
+ b _021EA7DE
+_021EA690:
+ mov r7, #0x17
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #4
+_021EA698:
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _021EA698
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ b _021EA7DE
+_021EA6B4:
+ mov r0, #0xf
+ mov r1, #1
+ str r0, [sp]
+ mov r0, #0x81
+ lsl r0, r0, #2
+ lsl r3, r1, #9
+ ldr r0, [r4, r0]
+ ldr r3, [r4, r3]
+ add r2, r1, #0
+ bl MOD05_021E43E4
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl Camera_GetDistance
+ add r1, r0, #0
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0x83
+ mov r2, #0xfa
+ lsl r0, r0, #2
+ lsl r2, r2, #0xe
+ mov r3, #0xa
+ add r0, r4, r0
+ sub r2, r1, r2
+ lsl r3, r3, #0xc
+ bl MOD05_021E3644
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ b _021EA7DE
+_021EA6FA:
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD05_021E4424
+ add r5, r0, #0
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl ScheduleWindowCopyToVram
+ mov r0, #0x83
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD05_021E36A4
+ mov r1, #0x83
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl Camera_SetDistance
+ cmp r5, #1
+ bne _021EA7DE
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ b _021EA7DE
+ .balign 4, 0
+_021EA738: .word 0x000927C0
+_021EA73C: .word 0xFFFE0000
+_021EA740: .word 0x0000FFFF
+_021EA744: .word 0xFFFF0001
+_021EA748:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, [sp, #0x18]
+ ldr r1, [r0, #0x14]
+ cmp r1, #0
+ beq _021EA764
+ mov r0, #1
+ str r0, [r1]
+_021EA764:
+ mov r7, #0x17
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #4
+_021EA76C:
+ ldr r0, [r5, r7]
+ bl FUN_0201FFC8
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _021EA76C
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ bl MOD05_021E3E44
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD05_021E43C4
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl ClearWindowTilemapAndCopyToVram
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl RemoveWindow
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl WindowArray_dtor
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #4
+ bl BG_ClearCharDataRange
+ ldr r0, [sp, #0x18]
+ mov r1, #3
+ ldr r0, [r0, #0x10]
+ ldr r0, [r0, #8]
+ bl BgClearTilemapBufferAndCommit
+ ldr r1, [sp, #0x18]
+ mov r0, #4
+ ldr r1, [r1, #0xc]
+ bl FreeToHeapExplicit
+ ldr r0, [sp, #0x14]
+ bl FUN_0200621C
+_021EA7DE:
+ mov r1, #0x5f
+ mov r0, #0
+ lsl r1, r1, #2
+ str r0, [sp, #0x1c]
+ add r0, r4, r1
+ add r1, #0x3c
+ add r5, r4, #0
+ str r0, [sp, #0x20]
+ add r7, r4, r1
+ add r6, r4, #0
+_021EA7F2:
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #1
+ bne _021EA85A
+ ldr r0, [sp, #0x20]
+ bl MOD05_021E35C0
+ str r0, [sp, #0x24]
+ add r0, r7, #0
+ bl MOD05_021E35C0
+ ldr r0, [sp, #0x24]
+ cmp r0, #0
+ beq _021EA818
+ mov r0, #0x7d
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021EA818:
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_0202011C
+ add r3, r0, #0
+ add r2, sp, #0x2c
+ ldmia r3!, {r0, r1}
+ mov ip, r2
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, ip
+ str r0, [r2]
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02020044
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ mov r0, #0x17
+ ldr r1, [r6, r1]
+ lsl r0, r0, #4
+ lsl r1, r1, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+_021EA85A:
+ ldr r0, [sp, #0x20]
+ add r5, r5, #4
+ add r0, #0x14
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r7, #0x14
+ add r0, r0, #1
+ add r6, #0x14
+ str r0, [sp, #0x1c]
+ cmp r0, #3
+ blt _021EA7F2
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ cmp r0, #9
+ beq _021EA87E
+ ldr r0, [r4]
+ bl FUN_0201FDEC
+_021EA87E:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EA884
+MOD05_021EA884: ; 0x021EA884
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #7
+ bls _021EA896
+ b _021EAAC6
+_021EA896:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EA8A2: ; jump table
+ .short _021EA8B2 - _021EA8A2 - 2 ; case 0
+ .short _021EA93E - _021EA8A2 - 2 ; case 1
+ .short _021EA958 - _021EA8A2 - 2 ; case 2
+ .short _021EA964 - _021EA8A2 - 2 ; case 3
+ .short _021EA996 - _021EA8A2 - 2 ; case 4
+ .short _021EA9C8 - _021EA8A2 - 2 ; case 5
+ .short _021EAA38 - _021EA8A2 - 2 ; case 6
+ .short _021EAA7C - _021EA8A2 - 2 ; case 7
+_021EA8B2:
+ mov r1, #0x69
+ mov r0, #4
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ mov r2, #0x69
+ str r0, [r4, #0xc]
+ mov r1, #0
+ lsl r2, r2, #2
+ bl memset
+ ldr r5, [r4, #0xc]
+ mov r1, #1
+ add r0, r5, #0
+ add r0, #0x2c
+ add r2, r1, #0
+ bl MOD05_021E3E14
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ ldr r0, _021EAAD8 ; =0x000927C0
+ mov r1, #0x5a
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ add r0, #0x2c
+ add r1, r5, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x5a
+ str r0, [sp, #4]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ mov r2, #2
+ mov r3, #6
+ add r0, #0x2c
+ add r1, r5, r1
+ lsl r2, r2, #0x12
+ lsl r3, r3, #0x10
+ bl MOD05_021E3FC4
+ mov r1, #0x67
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020398
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EAAC6
+_021EA93E:
+ mov r1, #0x10
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r4, #4
+ bl MOD05_021E3474
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EAAC6
+_021EA958:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021EA9AE
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EAAC6
+_021EA964:
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #0xc
+ bl MOD05_021E35B0
+ ldr r3, [r5]
+ mov r0, #0x10
+ sub r0, r0, r3
+ str r0, [sp]
+ ldr r0, _021EAADC ; =0x04000050
+ mov r1, #0
+ mov r2, #0xf
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EAAC6
+_021EA996:
+ add r0, r5, #0
+ bl MOD05_021E35C0
+ ldr r2, [r5]
+ mov r1, #0x10
+ sub r1, r1, r2
+ lsl r1, r1, #8
+ orr r1, r2
+ ldr r2, _021EAAE0 ; =0x04000052
+ cmp r0, #1
+ strh r1, [r2]
+ beq _021EA9B0
+_021EA9AE:
+ b _021EAAC6
+_021EA9B0:
+ mov r1, #0
+ sub r0, r2, #2
+ strh r1, [r0]
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02020398
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EAAC6
+_021EA9C8:
+ mov r0, #6
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #1
+ ldr r2, _021EAAE4 ; =0x0000019A
+ add r0, #0x14
+ lsl r1, r1, #0xc
+ mov r3, #1
+ bl MOD05_021E3644
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ ldr r1, [r5, #0x14]
+ add r0, sp, #0x1c
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD05_021E3FF8
+ add r6, sp, #0x1c
+ add r3, sp, #0x34
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02020064
+ 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 r0, #4
+ mov r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ mov r1, #0x10
+ add r3, r2, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EAAC6
+_021EAA38:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021E36A4
+ ldr r1, [r5, #0x14]
+ add r6, r0, #0
+ add r0, sp, #0x10
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD05_021E3FF8
+ add r3, sp, #0x10
+ add r2, sp, #0x28
+ ldmia r3!, {r0, r1}
+ add r7, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r7, #0
+ str r0, [r2]
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02020064
+ cmp r6, #1
+ bne _021EAAC6
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021EAAC6
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EAAC6
+_021EAA7C:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021EAA98
+ mov r0, #1
+ str r0, [r1]
+_021EAA98:
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0201FFC8
+ mov r1, #0x5a
+ add r0, r5, #0
+ lsl r1, r1, #2
+ add r0, #0x2c
+ add r1, r5, r1
+ bl MOD05_021E3F3C
+ add r0, r5, #0
+ add r0, #0x2c
+ bl MOD05_021E3E44
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+_021EAAC6:
+ ldr r0, [r4]
+ cmp r0, #7
+ beq _021EAAD2
+ ldr r0, [r5, #0x2c]
+ bl FUN_0201FDEC
+_021EAAD2:
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EAAD8: .word 0x000927C0
+_021EAADC: .word 0x04000050
+_021EAAE0: .word 0x04000052
+_021EAAE4: .word 0x0000019A
+
+ thumb_func_start MOD05_021EAAE8
+MOD05_021EAAE8: ; 0x021EAAE8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r6, r1, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r6]
+ ldr r4, [r6, #0xc]
+ cmp r0, #7
+ bhi _021EABBC
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EAB04: ; jump table
+ .short _021EAB14 - _021EAB04 - 2 ; case 0
+ .short _021EAB9C - _021EAB04 - 2 ; case 1
+ .short _021EABB6 - _021EAB04 - 2 ; case 2
+ .short _021EABC4 - _021EAB04 - 2 ; case 3
+ .short _021EAC0E - _021EAB04 - 2 ; case 4
+ .short _021EACC0 - _021EAB04 - 2 ; case 5
+ .short _021EACEA - _021EAB04 - 2 ; case 6
+ .short _021EACFA - _021EAB04 - 2 ; case 7
+_021EAB14:
+ mov r1, #0x1b
+ mov r0, #4
+ lsl r1, r1, #4
+ bl AllocFromHeap
+ mov r2, #0x1b
+ str r0, [r6, #0xc]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl memset
+ ldr r4, [r6, #0xc]
+ mov r1, #4
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD05_021E3E14
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, _021EAD5C ; =0x000927C0
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r7, #0
+ add r5, r4, #0
+_021EAB5A:
+ mov r0, #0
+ mov r1, #0x4f
+ str r0, [sp]
+ lsl r1, r1, #2
+ mov r2, #2
+ mov r3, #6
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r4, r1
+ lsl r2, r2, #0x12
+ lsl r3, r3, #0x10
+ bl MOD05_021E3FC4
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #4
+ blt _021EAB5A
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021EAD4C
+_021EAB9C:
+ mov r1, #0x10
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r6, #4
+ bl MOD05_021E3474
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021EAD4C
+_021EABB6:
+ ldr r1, [r6, #4]
+ cmp r1, #0
+ bne _021EABBE
+_021EABBC:
+ b _021EAD4C
+_021EABBE:
+ add r0, r0, #1
+ str r0, [r6]
+ b _021EAD4C
+_021EABC4:
+ mov r3, #6
+ mov r2, #4
+ lsl r3, r3, #6
+ str r2, [sp]
+ add r0, r4, r3
+ mov r1, #0
+ lsl r2, r2, #0x11
+ add r3, #0x1a
+ bl MOD05_021E3644
+ mov r3, #0x66
+ mov r0, #4
+ mov r2, #0xa
+ lsl r3, r3, #2
+ str r0, [sp]
+ add r0, r4, r3
+ mov r1, #0
+ lsl r2, r2, #0x10
+ add r3, r3, #2
+ bl MOD05_021E3644
+ mov r7, #0
+ add r5, r4, #0
+_021EABF2:
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #4
+ blt _021EABF2
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021EAD4C
+_021EAC0E:
+ mov r0, #6
+ lsl r0, r0, #6
+ mov r7, #0
+ add r5, r4, r0
+_021EAC16:
+ add r0, r5, #0
+ bl MOD05_021E36A4
+ add r7, r7, #1
+ add r5, #0x18
+ str r0, [sp, #0x14]
+ cmp r7, #2
+ blt _021EAC16
+ mov r2, #6
+ lsl r2, r2, #6
+ ldr r3, [r4, r2]
+ mov r1, #2
+ lsl r2, r2, #0xa
+ sub r2, r2, r3
+ add r0, sp, #0x18
+ lsl r1, r1, #0x12
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x18
+ bl FUN_02020044
+ mov r2, #6
+ lsl r2, r2, #6
+ ldr r3, [r4, r2]
+ mov r1, #2
+ lsl r2, r2, #0xa
+ add r2, r3, r2
+ add r0, sp, #0x18
+ lsl r1, r1, #0x12
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x18
+ bl FUN_02020044
+ mov r1, #0x66
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r1, #2
+ lsl r1, r1, #0x12
+ sub r1, r1, r2
+ mov r2, #6
+ add r0, sp, #0x18
+ lsl r2, r2, #0x10
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x18
+ bl FUN_02020044
+ mov r1, #0x66
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r1, #2
+ lsl r1, r1, #0x12
+ add r1, r2, r1
+ mov r2, #6
+ add r0, sp, #0x18
+ lsl r2, r2, #0x10
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x18
+ bl FUN_02020044
+ ldr r0, [sp, #0x14]
+ cmp r0, #1
+ bne _021EAD4C
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021EAD4C
+_021EACC0:
+ ldr r0, [r6, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ mov r1, #0x22
+ add r3, r2, #0
+ bl FUN_0200E1D0
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021EAD4C
+_021EACEA:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021EAD4C
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ b _021EAD4C
+_021EACFA:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, [r6, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r6, #0x14]
+ cmp r1, #0
+ beq _021EAD16
+ mov r0, #1
+ str r0, [r1]
+_021EAD16:
+ mov r7, #0
+ add r5, r4, #0
+_021EAD1A:
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_0201FFC8
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #4
+ blt _021EAD1A
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ bl MOD05_021E3E44
+ ldr r1, [r6, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ ldr r0, [sp, #0x10]
+ bl FUN_0200621C
+_021EAD4C:
+ ldr r0, [r6]
+ cmp r0, #7
+ beq _021EAD58
+ ldr r0, [r4]
+ bl FUN_0201FDEC
+_021EAD58:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EAD5C: .word 0x000927C0
+
+ thumb_func_start MOD05_021EAD60
+MOD05_021EAD60: ; 0x021EAD60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x48
+ str r0, [sp, #0x10]
+ add r0, r1, #0
+ ldr r0, [r0]
+ str r1, [sp, #0x14]
+ ldr r4, [r1, #0xc]
+ cmp r0, #7
+ bhi _021EAE6E
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EAD7E: ; jump table
+ .short _021EAD8E - _021EAD7E - 2 ; case 0
+ .short _021EAE1A - _021EAD7E - 2 ; case 1
+ .short _021EAE3A - _021EAD7E - 2 ; case 2
+ .short _021EAE5E - _021EAD7E - 2 ; case 3
+ .short _021EAF9C - _021EAD7E - 2 ; case 4
+ .short _021EAFAE - _021EAD7E - 2 ; case 5
+ .short _021EAFDE - _021EAD7E - 2 ; case 6
+ .short _021EAFF2 - _021EAD7E - 2 ; case 7
+_021EAD8E:
+ mov r1, #0x3d
+ mov r0, #4
+ lsl r1, r1, #4
+ bl AllocFromHeap
+ ldr r1, [sp, #0x14]
+ mov r2, #0x3d
+ str r0, [r1, #0xc]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl memset
+ ldr r0, [sp, #0x14]
+ mov r1, #6
+ ldr r4, [r0, #0xc]
+ mov r2, #1
+ add r0, r4, #0
+ bl MOD05_021E3E14
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, _021EB138 ; =0x000927C0
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r7, #0x4f
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #2
+_021EADDC:
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r4, r7
+ add r3, r2, #0
+ bl MOD05_021E3FC4
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #6
+ blt _021EADDC
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [r0]
+ b _021EB04A
+_021EAE1A:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r0, #0
+ ldr r3, [sp, #0x14]
+ sub r1, #0x11
+ add r2, r1, #0
+ add r3, r3, #4
+ bl MOD05_021E3474
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [r0]
+ b _021EB04A
+_021EAE3A:
+ ldr r1, [sp, #0x14]
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ beq _021EAE6E
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [r0]
+ mov r0, #0xf2
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ add r0, r0, #4
+ lsl r2, r1, #5
+ ldr r1, _021EB13C ; =UNK05_021F7A50
+ ldr r1, [r1, r2]
+ str r1, [r4, r0]
+ b _021EB04A
+_021EAE5E:
+ mov r0, #0xf3
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ blt _021EAE70
+_021EAE6E:
+ b _021EB04A
+_021EAE70:
+ sub r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #8
+ str r1, [sp]
+ mov r1, #0x86
+ lsl r1, r1, #2
+ add r2, r4, r1
+ mov r1, #0x18
+ mul r1, r0
+ lsl r3, r0, #5
+ add r0, r2, r1
+ ldr r1, _021EB140 ; =UNK05_021F7A38
+ ldr r2, _021EB144 ; =UNK05_021F7A3C
+ ldr r5, _021EB148 ; =UNK05_021F7A40
+ ldr r1, [r1, r3]
+ ldr r2, [r2, r3]
+ ldr r3, [r5, r3]
+ bl MOD05_021E3644
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #8
+ str r1, [sp]
+ mov r1, #0xaa
+ lsl r1, r1, #2
+ add r2, r4, r1
+ mov r1, #0x18
+ mul r1, r0
+ lsl r3, r0, #5
+ add r0, r2, r1
+ ldr r1, _021EB14C ; =UNK05_021F7A44
+ ldr r2, _021EB150 ; =UNK05_021F7A48
+ ldr r5, _021EB154 ; =UNK05_021F7A4C
+ ldr r1, [r1, r3]
+ ldr r2, [r2, r3]
+ ldr r3, [r5, r3]
+ bl MOD05_021E3644
+ mov r0, #0x62
+ lsl r0, r0, #2
+ mov r1, #8
+ add r3, r4, r0
+ mov r0, #0xf2
+ str r1, [sp]
+ lsl r0, r0, #2
+ ldr r2, [r4, r0]
+ mov r0, #0x18
+ mul r0, r2
+ add r0, r3, r0
+ ldr r3, _021EB158 ; =0xFFFFF99A
+ lsl r1, r1, #0xa
+ mov r2, #0x29
+ bl MOD05_021E3644
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldr r2, [r4, r0]
+ sub r0, #0x90
+ add r1, r4, r0
+ mov r0, #0x14
+ mul r0, r2
+ lsl r3, r2, #5
+ ldr r2, _021EB15C ; =UNK05_021F7A54
+ add r0, r1, r0
+ ldr r2, [r2, r3]
+ mov r1, #0
+ mov r3, #8
+ bl MOD05_021E35B0
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021EB140 ; =UNK05_021F7A38
+ lsl r3, r0, #5
+ ldr r2, _021EB14C ; =UNK05_021F7A44
+ ldr r1, [r1, r3]
+ ldr r2, [r2, r3]
+ add r0, sp, #0x3c
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r1, sp, #0x3c
+ bl FUN_02020044
+ mov r1, #2
+ lsl r1, r1, #0xc
+ add r0, sp, #0x30
+ add r2, r1, #0
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r2, #2
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r1, sp, #0x30
+ bl FUN_02020074
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ mov r3, #1
+ lsl r0, r0, #2
+ add r2, r4, r0
+ add r0, r1, #0
+ sub r0, #0x18
+ str r3, [r2, r0]
+ ldr r0, [r4, r1]
+ add r0, r0, #1
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #6
+ blt _021EAF90
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [r0]
+ b _021EB04A
+_021EAF90:
+ lsl r2, r0, #5
+ ldr r0, _021EB13C ; =UNK05_021F7A50
+ ldr r2, [r0, r2]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ b _021EB04A
+_021EAF9C:
+ mov r1, #0xf1
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ bne _021EB04A
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [r0]
+ b _021EB04A
+_021EAFAE:
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ mov r0, #0xc
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ mov r1, #0x22
+ add r3, r2, #0
+ bl FUN_0200E1D0
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [r0]
+ b _021EB04A
+_021EAFDE:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021EB04A
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [r0]
+ b _021EB04A
+_021EAFF2:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r0, [sp, #0x14]
+ ldr r1, [r0, #0x14]
+ cmp r1, #0
+ beq _021EB012
+ mov r0, #1
+ str r0, [r1]
+_021EB012:
+ mov r7, #0x17
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #4
+_021EB01A:
+ ldr r0, [r5, r7]
+ bl FUN_0201FFC8
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #6
+ blt _021EB01A
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ bl MOD05_021E3E44
+ ldr r1, [sp, #0x14]
+ mov r0, #4
+ ldr r1, [r1, #0xc]
+ bl FreeToHeapExplicit
+ ldr r0, [sp, #0x10]
+ bl FUN_0200621C
+_021EB04A:
+ mov r1, #0x86
+ mov r0, #0
+ lsl r1, r1, #2
+ str r0, [sp, #0x18]
+ add r0, r4, r1
+ str r0, [sp, #0x28]
+ add r0, r1, #0
+ add r0, #0x90
+ add r0, r4, r0
+ sub r1, #0x90
+ str r0, [sp, #0x24]
+ add r0, r4, r1
+ str r0, [sp, #0x20]
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r5, r4, #0
+ str r0, [sp, #0x1c]
+ add r6, r4, #0
+ add r7, r4, #0
+_021EB072:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #1
+ bne _021EB0FE
+ ldr r0, [sp, #0x28]
+ bl MOD05_021E36A4
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ bl MOD05_021E36A4
+ ldr r0, [sp, #0x20]
+ bl MOD05_021E36A4
+ ldr r0, [sp, #0x1c]
+ bl MOD05_021E35C0
+ ldr r0, [sp, #0x2c]
+ cmp r0, #0
+ beq _021EB0AE
+ mov r0, #0x3b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+_021EB0AE:
+ mov r1, #0x86
+ mov r2, #0xaa
+ lsl r1, r1, #2
+ lsl r2, r2, #2
+ ldr r1, [r6, r1]
+ ldr r2, [r6, r2]
+ add r0, sp, #0x3c
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, sp, #0x3c
+ bl FUN_02020044
+ mov r0, #0x62
+ lsl r0, r0, #2
+ ldr r1, [r6, r0]
+ add r0, sp, #0x30
+ add r2, r1, #0
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, sp, #0x30
+ bl FUN_02020064
+ mov r1, #0xce
+ lsl r1, r1, #2
+ mov r0, #0x17
+ ldr r1, [r7, r1]
+ lsl r0, r0, #4
+ lsl r1, r1, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+_021EB0FE:
+ ldr r0, [sp, #0x28]
+ add r5, r5, #4
+ add r0, #0x18
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ add r6, #0x18
+ add r0, #0x18
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ add r7, #0x14
+ add r0, #0x18
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r0, #0x14
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #6
+ blt _021EB072
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ cmp r0, #7
+ beq _021EB134
+ ldr r0, [r4]
+ bl FUN_0201FDEC
+_021EB134:
+ add sp, #0x48
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EB138: .word 0x000927C0
+_021EB13C: .word UNK05_021F7A50
+_021EB140: .word UNK05_021F7A38
+_021EB144: .word UNK05_021F7A3C
+_021EB148: .word UNK05_021F7A40
+_021EB14C: .word UNK05_021F7A44
+_021EB150: .word UNK05_021F7A48
+_021EB154: .word UNK05_021F7A4C
+_021EB158: .word 0xFFFFF99A
+_021EB15C: .word UNK05_021F7A54
+
+ thumb_func_start MOD05_021EB160
+MOD05_021EB160: ; 0x021EB160
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5]
+ ldr r4, [r5, #0xc]
+ cmp r0, #7
+ bls _021EB172
+ b _021EB3F2
+_021EB172:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EB17E: ; jump table
+ .short _021EB18E - _021EB17E - 2 ; case 0
+ .short _021EB272 - _021EB17E - 2 ; case 1
+ .short _021EB28C - _021EB17E - 2 ; case 2
+ .short _021EB29A - _021EB17E - 2 ; case 3
+ .short _021EB2D4 - _021EB17E - 2 ; case 4
+ .short _021EB312 - _021EB17E - 2 ; case 5
+ .short _021EB344 - _021EB17E - 2 ; case 6
+ .short _021EB374 - _021EB17E - 2 ; case 7
+_021EB18E:
+ mov r1, #0x6f
+ mov r0, #4
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ mov r2, #0x6f
+ str r0, [r5, #0xc]
+ mov r1, #0
+ lsl r2, r2, #2
+ bl memset
+ ldr r4, [r5, #0xc]
+ mov r1, #1
+ add r0, r4, #0
+ add r0, #8
+ add r2, r1, #0
+ bl MOD05_021E3E14
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #9
+ str r0, [sp, #8]
+ ldr r0, _021EB404 ; =0x000927C0
+ mov r1, #0x51
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #1
+ add r0, #8
+ add r1, r4, r1
+ add r3, r2, #0
+ bl MOD05_021E3E64
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x51
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #2
+ mov r3, #6
+ add r0, #8
+ add r1, r4, r1
+ lsl r2, r2, #0x12
+ lsl r3, r3, #0x10
+ bl MOD05_021E3FC4
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_02020398
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_02020238
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ mov r0, #4
+ bl MOD05_021E4688
+ str r0, [r4, #4]
+ mov r0, #4
+ mov r1, #1
+ bl AllocWindows
+ str r0, [r4]
+ mov r3, #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, [r5, #0x10]
+ ldr r1, [r4]
+ ldr r0, [r0, #8]
+ mov r2, #3
+ bl AddWindowParameterized
+ mov r1, #0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ mov r0, #3
+ add r1, sp, #0x14
+ mov r2, #2
+ mov r3, #0x1e
+ bl BG_LoadPlttData
+ ldr r0, [r4]
+ mov r1, #0
+ bl FillWindowPixelBuffer
+ ldr r0, [r4]
+ bl ScheduleWindowCopyToVram
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EB3F2
+_021EB272:
+ mov r1, #0x10
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x20
+ add r3, r5, #4
+ bl MOD05_021E3474
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EB3F2
+_021EB28C:
+ ldr r1, [r5, #4]
+ cmp r1, #0
+ bne _021EB294
+ b _021EB3F2
+_021EB294:
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EB3F2
+_021EB29A:
+ mov r0, #0x19
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #0xf
+ bl MOD05_021E35B0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r3, [r4, r0]
+ mov r0, #0x10
+ sub r0, r0, r3
+ str r0, [sp]
+ ldr r0, _021EB408 ; =0x04000050
+ mov r1, #0
+ mov r2, #0xf
+ bl G2x_SetBlendAlpha_
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EB3F2
+_021EB2D4:
+ mov r0, #0x19
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD05_021E35C0
+ mov r2, #0x19
+ lsl r2, r2, #4
+ ldr r1, [r4, r2]
+ mov r3, #0x10
+ sub r3, r3, r1
+ lsl r3, r3, #8
+ orr r1, r3
+ ldr r3, _021EB40C ; =0x04000052
+ cmp r0, #1
+ strh r1, [r3]
+ bne _021EB3F2
+ mov r1, #0
+ sub r0, r3, #2
+ sub r2, #0x18
+ strh r1, [r0]
+ ldr r0, [r4, r2]
+ bl FUN_02020398
+ ldr r0, [r5]
+ mov r1, #0x10
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021EB3F2
+_021EB312:
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bgt _021EB3F2
+ sub r0, #0x3c
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #0xe
+ mov r3, #0x10
+ bl MOD05_021E35B0
+ ldr r0, [r4, #4]
+ ldr r2, [r4]
+ mov r1, #0x10
+ mov r3, #0xf
+ bl MOD05_021E46D4
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EB3F2
+_021EB344:
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD05_021E35C0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ lsl r0, r1, #4
+ orr r1, r0
+ ldr r0, _021EB410 ; =0x0400004D
+ strb r1, [r0]
+ ldr r0, [r4, #4]
+ bl MOD05_021E4754
+ cmp r0, #0
+ beq _021EB36C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+_021EB36C:
+ ldr r0, [r4]
+ bl ScheduleWindowCopyToVram
+ b _021EB3F2
+_021EB374:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, [r4, #4]
+ bl MOD05_021E46B4
+ ldr r1, [r5, #0x14]
+ cmp r1, #0
+ beq _021EB394
+ mov r0, #1
+ str r0, [r1]
+_021EB394:
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ mov r1, #0x51
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #8
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r0, r4, #0
+ add r0, #8
+ bl MOD05_021E3E44
+ ldr r0, [r4]
+ bl ClearWindowTilemapAndCopyToVram
+ ldr r0, [r4]
+ bl RemoveWindow
+ ldr r0, [r4]
+ mov r1, #1
+ bl WindowArray_dtor
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #4
+ bl BG_ClearCharDataRange
+ ldr r0, [r5, #0x10]
+ mov r1, #3
+ ldr r0, [r0, #8]
+ bl BgClearTilemapBufferAndCommit
+ ldr r0, _021EB410 ; =0x0400004D
+ mov r1, #0
+ strb r1, [r0]
+ ldr r1, [r5, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+_021EB3F2:
+ ldr r0, [r5]
+ cmp r0, #7
+ beq _021EB3FE
+ ldr r0, [r4, #8]
+ bl FUN_0201FDEC
+_021EB3FE:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ nop
+_021EB404: .word 0x000927C0
+_021EB408: .word 0x04000050
+_021EB40C: .word 0x04000052
+_021EB410: .word 0x0400004D
+
+ thumb_func_start MOD05_021EB414
+MOD05_021EB414: ; 0x021EB414
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4, #8]
+ ldr r1, [r5, #0x20]
+ bl Camera_SetPerspectiveAngle
+ ldr r0, [r4]
+ ldr r1, [r5, #0x20]
+ bl Camera_SetDistance
+ ldrh r1, [r4, #4]
+ add r0, sp, #0
+ strh r1, [r0]
+ ldrh r1, [r4, #6]
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ ldr r1, [r5, #0x20]
+ add r0, sp, #0
+ bl Camera_SetAngle
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EB448
+MOD05_021EB448: ; 0x021EB448
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #7
+ bls _021EB45A
+ b _021EB5A0
+_021EB45A:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EB466: ; jump table
+ .short _021EB476 - _021EB466 - 2 ; case 0
+ .short _021EB4AE - _021EB466 - 2 ; case 1
+ .short _021EB4C6 - _021EB466 - 2 ; case 2
+ .short _021EB4D4 - _021EB466 - 2 ; case 3
+ .short _021EB4F8 - _021EB466 - 2 ; case 4
+ .short _021EB534 - _021EB466 - 2 ; case 5
+ .short _021EB556 - _021EB466 - 2 ; case 6
+ .short _021EB56C - _021EB466 - 2 ; case 7
+_021EB476:
+ mov r0, #4
+ mov r1, #0x10
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ mov r2, #0x10
+ mov r1, #0
+_021EB484:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021EB484
+ mov r0, #2
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ mov r0, #4
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ mov r0, #8
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB4AE:
+ mov r0, #1
+ mov r1, #0x10
+ str r0, [sp]
+ add r2, r1, #0
+ add r3, r4, #4
+ bl MOD05_021E3474
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB4C6:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021EB5A0
+ add r0, r0, #1
+ add sp, #0xc
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB4D4:
+ mov r0, #3
+ mov r1, #0xf
+ bl MOD05_021E8860
+ mov r2, #0
+ str r0, [r5]
+ mov r0, #0xc
+ add r1, r2, #0
+ mul r1, r0
+ ldr r0, _021EB5A4 ; =UNK05_021F7982
+ str r2, [r5, #8]
+ ldrh r0, [r0, r1]
+ add sp, #0xc
+ str r0, [r5, #0xc]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB4F8:
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #1
+ str r0, [r5, #0xc]
+ bpl _021EB5A0
+ ldr r2, [r5, #8]
+ mov r1, #0xc
+ ldr r3, _021EB5A8 ; =UNK05_021F7978
+ mul r1, r2
+ ldr r0, [r4, #0x10]
+ add r1, r3, r1
+ bl MOD05_021EB414
+ ldr r0, [r5, #8]
+ add r2, r0, #1
+ str r2, [r5, #8]
+ cmp r2, #0x10
+ blo _021EB524
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB524:
+ mov r0, #0xc
+ add r1, r2, #0
+ mul r1, r0
+ ldr r0, _021EB5A4 ; =UNK05_021F7982
+ add sp, #0xc
+ ldrh r0, [r0, r1]
+ str r0, [r5, #0xc]
+ pop {r3, r4, r5, r6, pc}
+_021EB534:
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r1, #0
+ str r0, [sp, #8]
+ ldr r3, _021EB5AC ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB556:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021EB5A0
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB56C:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ add r0, r5, #0
+ bl MOD05_021E88C0
+ ldr r0, _021EB5B0 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021EB58A
+ mov r0, #1
+ str r0, [r1]
+_021EB58A:
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+_021EB5A0:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+_021EB5A4: .word UNK05_021F7982
+_021EB5A8: .word UNK05_021F7978
+_021EB5AC: .word 0x00007FFF
+_021EB5B0: .word 0x04000050
+
+ thumb_func_start MOD05_021EB5B4
+MOD05_021EB5B4: ; 0x021EB5B4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #9
+ bhi _021EB636
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EB5D0: ; jump table
+ .short _021EB5E4 - _021EB5D0 - 2 ; case 0
+ .short _021EB618 - _021EB5D0 - 2 ; case 1
+ .short _021EB630 - _021EB5D0 - 2 ; case 2
+ .short _021EB640 - _021EB5D0 - 2 ; case 3
+ .short _021EB66E - _021EB5D0 - 2 ; case 4
+ .short _021EB698 - _021EB5D0 - 2 ; case 5
+ .short _021EB6C6 - _021EB5D0 - 2 ; case 6
+ .short _021EB6E8 - _021EB5D0 - 2 ; case 7
+ .short _021EB70A - _021EB5D0 - 2 ; case 8
+ .short _021EB720 - _021EB5D0 - 2 ; case 9
+_021EB5E4:
+ mov r0, #4
+ mov r1, #0x38
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x38
+ str r0, [r4, #0xc]
+ bl memset
+ mov r0, #2
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ mov r0, #4
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ mov r0, #8
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB618:
+ mov r0, #1
+ mov r1, #0x10
+ str r0, [sp]
+ add r2, r1, #0
+ add r3, r4, #4
+ bl MOD05_021E3474
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB630:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _021EB638
+_021EB636:
+ b _021EB754
+_021EB638:
+ add r0, r0, #1
+ add sp, #0xc
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB640:
+ mov r0, #5
+ mov r1, #0xd
+ bl MOD05_021E8860
+ str r0, [r5]
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ bl Camera_GetPerspectiveAngle
+ mov r2, #1
+ add r1, r0, #0
+ add r5, #8
+ lsl r2, r2, #8
+ add r0, r5, #0
+ add r2, r1, r2
+ mov r3, #0x28
+ bl MOD05_021E35B0
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB66E:
+ add r0, r5, #0
+ add r0, #8
+ bl MOD05_021E35C0
+ add r6, r0, #0
+ ldr r0, [r5, #8]
+ ldr r1, [r4, #0x10]
+ lsl r0, r0, #0x10
+ ldr r1, [r1, #0x20]
+ lsr r0, r0, #0x10
+ bl Camera_SetPerspectiveAngle
+ cmp r6, #1
+ bne _021EB754
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #5
+ str r0, [r5, #0x34]
+ pop {r3, r4, r5, r6, pc}
+_021EB698:
+ ldr r0, [r5, #0x34]
+ sub r0, r0, #1
+ str r0, [r5, #0x34]
+ bpl _021EB754
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x20]
+ bl Camera_GetDistance
+ mov r3, #8
+ str r3, [sp]
+ ldr r2, _021EB758 ; =0x0092E000
+ add r1, r0, #0
+ add r5, #0x1c
+ add r0, r5, #0
+ sub r2, r1, r2
+ lsl r3, r3, #8
+ bl MOD05_021E3644
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB6C6:
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD05_021E36A4
+ ldr r1, [r4, #0x10]
+ add r6, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r1, [r1, #0x20]
+ bl Camera_SetDistance
+ cmp r6, #1
+ bne _021EB754
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB6E8:
+ mov r0, #0x3c
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r1, #0
+ str r0, [sp, #8]
+ ldr r3, _021EB75C ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB70A:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021EB754
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_021EB720:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ add r0, r5, #0
+ bl MOD05_021E88C0
+ ldr r0, _021EB760 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021EB73E
+ mov r0, #1
+ str r0, [r1]
+_021EB73E:
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r0, r6, #0
+ bl FUN_0200621C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+_021EB754:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+_021EB758: .word 0x0092E000
+_021EB75C: .word 0x00007FFF
+_021EB760: .word 0x04000050
+
+ thumb_func_start MOD05_021EB764
+MOD05_021EB764: ; 0x021EB764
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ str r1, [sp, #0x14]
+ ldr r1, [r5]
+ add r6, r2, #0
+ ldr r4, [r5, #0xc]
+ cmp r1, #0xe
+ bls _021EB778
+ b _021EBB72
+_021EB778:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021EB784: ; jump table
+ .short _021EB7A2 - _021EB784 - 2 ; case 0
+ .short _021EB848 - _021EB784 - 2 ; case 1
+ .short _021EB85E - _021EB784 - 2 ; case 2
+ .short _021EB86A - _021EB784 - 2 ; case 3
+ .short _021EB8B8 - _021EB784 - 2 ; case 4
+ .short _021EB8D6 - _021EB784 - 2 ; case 5
+ .short _021EB99C - _021EB784 - 2 ; case 6
+ .short _021EB9EE - _021EB784 - 2 ; case 7
+ .short _021EBA04 - _021EB784 - 2 ; case 8
+ .short _021EBA34 - _021EB784 - 2 ; case 9
+ .short _021EBA4A - _021EB784 - 2 ; case 10
+ .short _021EBA72 - _021EB784 - 2 ; case 11
+ .short _021EBA8A - _021EB784 - 2 ; case 12
+ .short _021EBAAA - _021EB784 - 2 ; case 13
+ .short _021EBB0E - _021EB784 - 2 ; case 14
+_021EB7A2:
+ mov r1, #0x1f
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #4
+ bl AllocFromHeap
+ mov r2, #0x1f
+ str r0, [r5, #0xc]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl memset
+ ldr r4, [r5, #0xc]
+ mov r1, #1
+ add r0, r4, #0
+ add r0, #0x44
+ add r2, r1, #0
+ bl MOD05_021E3E14
+ mov r0, #0x17
+ str r0, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ mov r0, #0x19
+ str r0, [sp, #8]
+ ldr r0, _021EBB4C ; =0x000927C0
+ lsl r1, r1, #4
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x44
+ add r1, r4, r1
+ mov r2, #0x16
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #6
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r1, r1, #6
+ mov r3, #0x11
+ ldr r2, _021EBB50 ; =0xFFFE0000
+ add r0, #0x44
+ add r1, r4, r1
+ lsl r3, r3, #0xe
+ bl MOD05_021E3FC4
+ mov r1, #0x6d
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r0, #0
+ str r0, [sp]
+ ldrh r0, [r6, #6]
+ ldr r1, [sp, #0x14]
+ mov r3, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldrh r2, [r6, #4]
+ ldr r0, [r4, r0]
+ bl MOD05_021E4014
+ ldr r0, [r5, #0x10]
+ ldr r0, [r0, #8]
+ bl MOD05_021E3C00
+ bl MOD05_021E4788
+ str r0, [r4, #0x40]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EB848:
+ mov r0, #1
+ mov r1, #0x10
+ str r0, [sp]
+ add r2, r1, #0
+ add r3, r5, #4
+ bl MOD05_021E3474
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EB85E:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021EB8E6
+ add r0, r1, #1
+ str r0, [r5]
+ b _021EBB72
+_021EB86A:
+ ldr r3, [r5, #0x10]
+ mov r0, #0xd
+ ldr r3, [r3, #8]
+ mov r1, #0xc
+ mov r2, #0xb
+ bl MOD05_021E3D20
+ mov r0, #0x79
+ mov r2, #8
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0x1f
+ str r0, [sp, #4]
+ mov r0, #0x17
+ str r0, [sp, #8]
+ ldr r1, [r4, #0x40]
+ add r0, r5, #0
+ add r3, r2, #0
+ bl MOD05_021E47BC
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0x2c
+ add r2, r1, #0
+ mov r3, #0xf
+ bl MOD05_021E35EC
+ mov r0, #8
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EB8B8:
+ bl MOD05_021E35AC
+ cmp r0, #0
+ beq _021EB8E6
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x40]
+ bl MOD05_021E47A0
+ mov r0, #0x7b
+ mov r1, #0xa
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021EBB72
+_021EB8D6:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ blt _021EB8E8
+_021EB8E6:
+ b _021EBB72
+_021EB8E8:
+ mov r1, #2
+ lsl r1, r1, #0xc
+ add r0, sp, #0x18
+ add r2, r1, #0
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x18
+ bl FUN_02020064
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r0, [sp, #4]
+ mov r0, #0x11
+ mov r2, #2
+ lsl r0, r0, #0xe
+ mov r1, #0x62
+ lsl r2, r2, #0xc
+ mov r3, #0x40
+ bl MOD05_021E49F0
+ ldr r3, _021EBB54 ; =0x04000048
+ mov r0, #0x3f
+ ldrh r2, [r3]
+ mov r1, #0x1f
+ bic r2, r0
+ orr r2, r1
+ mov r1, #0x20
+ orr r2, r1
+ strh r2, [r3]
+ ldrh r2, [r3, #2]
+ bic r2, r0
+ mov r0, #0xf
+ orr r0, r2
+ orr r0, r1
+ strh r0, [r3, #2]
+ lsl r0, r1, #0x15
+ ldr r3, [r0]
+ ldr r2, _021EBB58 ; =0xFFFF1FFF
+ lsl r1, r1, #8
+ and r2, r3
+ orr r1, r2
+ str r1, [r0]
+ mov r3, #4
+ str r3, [sp]
+ ldr r1, _021EBB50 ; =0xFFFE0000
+ ldr r2, [r6]
+ add r0, r4, #0
+ lsl r3, r3, #0x10
+ bl MOD05_021E3644
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020238
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ mov r2, #0x11
+ ldr r1, [r4]
+ add r0, sp, #0x24
+ lsl r2, r2, #0xe
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x24
+ bl FUN_02020044
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EB99C:
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ mov r2, #0x11
+ add r6, r0, #0
+ ldr r1, [r4]
+ add r0, sp, #0x24
+ lsl r2, r2, #0xe
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x24
+ bl FUN_02020044
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202011C
+ mov r1, #0
+ str r1, [sp]
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ add r1, r4, r1
+ str r1, [sp, #4]
+ mov r2, #2
+ ldr r0, [r0, #4]
+ mov r1, #0x62
+ lsl r2, r2, #0xc
+ mov r3, #0x40
+ bl MOD05_021E49F0
+ cmp r6, #1
+ bne _021EBA60
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EB9EE:
+ add r0, r4, #0
+ add r0, #0x18
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #3
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EBA04:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E35C0
+ add r7, r0, #0
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E4AD0
+ cmp r7, #1
+ bne _021EBA60
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldrh r2, [r6, #4]
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x14]
+ bl MOD05_021E3F68
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EBA34:
+ add r0, r4, #0
+ add r0, #0x18
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #3
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EBA4A:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E35C0
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E4AD0
+ cmp r6, #1
+ beq _021EBA62
+_021EBA60:
+ b _021EBB72
+_021EBA62:
+ ldr r0, [r5]
+ mov r1, #0x1a
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021EBB72
+_021EBA72:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bge _021EBB72
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EBA8A:
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r1, #0
+ str r0, [sp, #8]
+ ldr r3, _021EBB5C ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EBAAA:
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD05_021E35FC
+ mov r2, #1
+ ldr r3, [r4, #0x2c]
+ lsl r2, r2, #0xc
+ add r1, r3, r2
+ add r2, r3, r2
+ add r0, sp, #0x18
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x18
+ bl FUN_02020064
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202011C
+ add r6, r0, #0
+ ldr r0, [r4, #0x2c]
+ mov r1, #0x44
+ mov r2, #0x1e
+ bl MOD05_021E4A3C
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r0, [sp, #4]
+ ldr r0, [r6, #4]
+ ldr r2, [sp, #0x1c]
+ mov r3, #0x40
+ bl MOD05_021E49F0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021EBB72
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EBB72
+_021EBB0E:
+ ldr r1, _021EBB5C ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+ ldr r1, [r5, #0x14]
+ cmp r1, #0
+ beq _021EBB20
+ mov r0, #1
+ str r0, [r1]
+_021EBB20:
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ mov r1, #6
+ add r0, r4, #0
+ lsl r1, r1, #6
+ add r0, #0x44
+ add r1, r4, r1
+ bl MOD05_021E3F3C
+ add r4, #0x44
+ add r0, r4, #0
+ bl MOD05_021E3E44
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021EBB58 ; =0xFFFF1FFF
+ b _021EBB60
+ nop
+_021EBB4C: .word 0x000927C0
+_021EBB50: .word 0xFFFE0000
+_021EBB54: .word 0x04000048
+_021EBB58: .word 0xFFFF1FFF
+_021EBB5C: .word 0x00007FFF
+_021EBB60:
+ and r0, r1
+ str r0, [r2]
+ ldr r1, [r5, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add sp, #0x30
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBB72:
+ mov r1, #0x79
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _021EBBB6
+ ldr r3, [r4, #0x2c]
+ mov r0, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x80
+ str r0, [sp, #8]
+ mov r0, #0x44
+ str r0, [sp, #0xc]
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ sub r1, #0x24
+ str r0, [sp, #0x10]
+ add r0, r4, r1
+ ldr r1, [r5, #0x10]
+ mov r2, #3
+ ldr r1, [r1, #8]
+ bl MOD05_021E3DA0
+ mov r3, #0x7a
+ lsl r3, r3, #2
+ ldr r0, [r4, r3]
+ sub r0, #0xf
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x17
+ sub r1, r1, r2
+ mov r0, #0x17
+ ror r1, r0
+ add r0, r2, r1
+ str r0, [r4, r3]
+_021EBBB6:
+ ldr r0, [r5]
+ cmp r0, #0xe
+ beq _021EBBC2
+ ldr r0, [r4, #0x44]
+ bl FUN_0201FDEC
+_021EBBC2:
+ mov r0, #0
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EBBC8
+MOD05_021EBBC8: ; 0x021EBBC8
+ push {r4, lr}
+ ldr r2, _021EBBE4 ; =UNK05_021F7938
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBBE0
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBBE0:
+ pop {r4, pc}
+ nop
+_021EBBE4: .word UNK05_021F7938
+
+ thumb_func_start MOD05_021EBBE8
+MOD05_021EBBE8: ; 0x021EBBE8
+ push {r4, lr}
+ ldr r2, _021EBC04 ; =UNK05_021F7940
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBC00
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBC00:
+ pop {r4, pc}
+ nop
+_021EBC04: .word UNK05_021F7940
+
+ thumb_func_start MOD05_021EBC08
+MOD05_021EBC08: ; 0x021EBC08
+ push {r4, lr}
+ ldr r2, _021EBC24 ; =UNK05_021F7948
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBC20
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBC20:
+ pop {r4, pc}
+ nop
+_021EBC24: .word UNK05_021F7948
+
+ thumb_func_start MOD05_021EBC28
+MOD05_021EBC28: ; 0x021EBC28
+ push {r4, lr}
+ ldr r2, _021EBC44 ; =UNK05_021F7950
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBC40
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBC40:
+ pop {r4, pc}
+ nop
+_021EBC44: .word UNK05_021F7950
+
+ thumb_func_start MOD05_021EBC48
+MOD05_021EBC48: ; 0x021EBC48
+ push {r4, lr}
+ ldr r2, _021EBC64 ; =UNK05_021F7958
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBC60
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBC60:
+ pop {r4, pc}
+ nop
+_021EBC64: .word UNK05_021F7958
+
+ thumb_func_start MOD05_021EBC68
+MOD05_021EBC68: ; 0x021EBC68
+ push {r4, lr}
+ ldr r2, _021EBC84 ; =UNK05_021F7960
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBC80
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBC80:
+ pop {r4, pc}
+ nop
+_021EBC84: .word UNK05_021F7960
+
+ thumb_func_start MOD05_021EBC88
+MOD05_021EBC88: ; 0x021EBC88
+ push {r4, lr}
+ ldr r2, _021EBCA4 ; =UNK05_021F7968
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBCA0
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBCA0:
+ pop {r4, pc}
+ nop
+_021EBCA4: .word UNK05_021F7968
+
+ thumb_func_start MOD05_021EBCA8
+MOD05_021EBCA8: ; 0x021EBCA8
+ push {r4, lr}
+ ldr r2, _021EBCC4 ; =UNK05_021F7970
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EB764
+ cmp r0, #1
+ bne _021EBCC0
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EBCC0:
+ pop {r4, pc}
+ nop
+_021EBCC4: .word UNK05_021F7970
+
+ thumb_func_start MOD05_021EBCC8
+MOD05_021EBCC8: ; 0x021EBCC8
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl Sav2_PlayerData_GetProfileAddr
+ bl PlayerProfile_GetTrainerGender
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EBCD8
+MOD05_021EBCD8: ; 0x021EBCD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ ldr r0, [r5]
+ str r1, [sp, #0x10]
+ str r2, [sp, #0x14]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0x13
+ bls _021EBCEC
+ b _021EC3A0
+_021EBCEC:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EBCF8: ; jump table
+ .short _021EBD20 - _021EBCF8 - 2 ; case 0
+ .short _021EBEC0 - _021EBCF8 - 2 ; case 1
+ .short _021EBED6 - _021EBCF8 - 2 ; case 2
+ .short _021EBEE4 - _021EBCF8 - 2 ; case 3
+ .short _021EBF6C - _021EBCF8 - 2 ; case 4
+ .short _021EBFBA - _021EBCF8 - 2 ; case 5
+ .short _021EBFD0 - _021EBCF8 - 2 ; case 6
+ .short _021EC002 - _021EBCF8 - 2 ; case 7
+ .short _021EC018 - _021EBCF8 - 2 ; case 8
+ .short _021EC038 - _021EBCF8 - 2 ; case 9
+ .short _021EC0D4 - _021EBCF8 - 2 ; case 10
+ .short _021EC122 - _021EBCF8 - 2 ; case 11
+ .short _021EC138 - _021EBCF8 - 2 ; case 12
+ .short _021EC16A - _021EBCF8 - 2 ; case 13
+ .short _021EC180 - _021EBCF8 - 2 ; case 14
+ .short _021EC19E - _021EBCF8 - 2 ; case 15
+ .short _021EC1E8 - _021EBCF8 - 2 ; case 16
+ .short _021EC21C - _021EBCF8 - 2 ; case 17
+ .short _021EC284 - _021EBCF8 - 2 ; case 18
+ .short _021EC342 - _021EBCF8 - 2 ; case 19
+_021EBD20:
+ mov r1, #0x9b
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ mov r2, #0x9b
+ str r0, [r5, #0xc]
+ mov r1, #0
+ lsl r2, r2, #2
+ bl memset
+ ldr r4, [r5, #0xc]
+ mov r1, #4
+ add r0, r4, #0
+ add r0, #0x44
+ mov r2, #3
+ bl MOD05_021E3E14
+ mov r0, #0x17
+ str r0, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ mov r0, #0x19
+ str r0, [sp, #8]
+ ldr r0, _021EC0C0 ; =0x000927C0
+ lsl r1, r1, #4
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x44
+ add r1, r4, r1
+ mov r2, #0x16
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #0x19
+ str r0, [sp, #8]
+ ldr r0, _021EC0C4 ; =0x000927C1
+ mov r1, #0x6d
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x44
+ add r1, r4, r1
+ mov r2, #0x16
+ mov r3, #1
+ bl MOD05_021E3E64
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x11
+ str r0, [sp, #8]
+ ldr r0, _021EC0C8 ; =0x000927C2
+ mov r1, #0x7a
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ lsl r1, r1, #2
+ ldrb r2, [r2, #6]
+ add r0, #0x44
+ add r1, r4, r1
+ mov r3, #0xc
+ bl MOD05_021E3E64
+ mov r1, #2
+ lsl r1, r1, #0xc
+ add r0, sp, #0x34
+ add r2, r1, #0
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #6
+ lsl r0, r0, #6
+ add r0, r4, r0
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x20]
+ add r0, r4, #0
+ str r0, [sp, #0x24]
+ add r0, #0x44
+ mov r7, #0
+ add r6, r4, #0
+ str r0, [sp, #0x24]
+_021EBDCE:
+ cmp r7, #3
+ bge _021EBDDA
+ mov r0, #0
+ ldr r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ b _021EBDEA
+_021EBDDA:
+ sub r1, r7, #1
+ mov r0, #0x34
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, [sp, #0x20]
+ add r1, r0, r2
+ mov r0, #1
+ str r0, [sp, #0x1c]
+_021EBDEA:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r2, #0
+ ldr r0, [sp, #0x24]
+ add r3, r2, #0
+ bl MOD05_021E3FC4
+ mov r1, #0x87
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add r0, r1, #0
+ ldr r0, [r6, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r1, [sp, #0x1c]
+ bl FUN_02020130
+ ldr r0, [sp, #0x18]
+ add r7, r7, #1
+ add r0, #0x34
+ add r6, r6, #4
+ str r0, [sp, #0x18]
+ cmp r7, #4
+ blt _021EBDCE
+ ldr r0, [r5, #0x10]
+ bl MOD05_021EBCC8
+ cmp r0, #0
+ bne _021EBE48
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x10]
+ mov r3, #0xa
+ bl MOD05_021E4014
+ mov r1, #0
+ b _021EBE60
+_021EBE48:
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r0, #0x87
+ str r2, [sp, #4]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x10]
+ mov r3, #0xa
+ bl MOD05_021E4014
+ mov r1, #1
+_021EBE60:
+ mov r0, #0x99
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x34
+ bl FUN_02020064
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x14]
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldrb r2, [r2, #5]
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x10]
+ mov r3, #0xa
+ bl MOD05_021E4014
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x34
+ bl FUN_02020064
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EBEC0:
+ mov r0, #1
+ mov r1, #0x10
+ str r0, [sp]
+ add r2, r1, #0
+ add r3, r5, #4
+ bl MOD05_021E3474
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EBED6:
+ ldr r1, [r5, #4]
+ cmp r1, #0
+ bne _021EBEDE
+ b _021EC3A0
+_021EBEDE:
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EBEE4:
+ mov r0, #6
+ mov r2, #0x2e
+ mov r3, #1
+ str r0, [sp]
+ ldr r1, _021EC0CC ; =0xFFFB0000
+ add r0, r4, #0
+ lsl r2, r2, #0xc
+ lsl r3, r3, #0x12
+ bl MOD05_021E3644
+ mov r2, #0x72
+ ldr r1, [r4]
+ add r0, sp, #0x40
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #9
+ ldr r1, [sp, #0x44]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ ldr r1, [sp, #0x40]
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x40]
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x89
+ lsl r0, r0, #2
+ mov r1, #1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EBF6C:
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ mov r2, #0x72
+ add r6, r0, #0
+ ldr r1, [r4]
+ add r0, sp, #0x40
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #9
+ ldr r1, [sp, #0x44]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ ldr r1, [sp, #0x40]
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x40]
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ cmp r6, #1
+ bne _021EC02E
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EBFBA:
+ add r0, r4, #0
+ add r0, #0x30
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #3
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EBFD0:
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E35C0
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E4AD0
+ cmp r6, #1
+ bne _021EC02E
+ mov r3, #0
+ mov r2, #0x87
+ str r3, [sp]
+ lsl r2, r2, #2
+ ldr r0, [r4, r2]
+ add r2, #0x48
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, r2]
+ bl MOD05_021E3F68
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC002:
+ add r0, r4, #0
+ add r0, #0x30
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #3
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC018:
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E35C0
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E4AD0
+ cmp r6, #1
+ beq _021EC030
+_021EC02E:
+ b _021EC3A0
+_021EC030:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC038:
+ mov r0, #6
+ mov r1, #0x15
+ mov r2, #0xd
+ str r0, [sp]
+ ldr r3, _021EC0D0 ; =0xFFFC0000
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ bl MOD05_021E3644
+ mov r2, #0x11
+ ldr r1, [r4]
+ add r0, sp, #0x40
+ lsl r2, r2, #0xe
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #9
+ ldr r1, [sp, #0x44]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ ldr r1, [sp, #0x40]
+ lsl r0, r0, #0x10
+ sub r0, r1, r0
+ str r0, [sp, #0x40]
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ mov r1, #1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+ .balign 4, 0
+_021EC0C0: .word 0x000927C0
+_021EC0C4: .word 0x000927C1
+_021EC0C8: .word 0x000927C2
+_021EC0CC: .word 0xFFFB0000
+_021EC0D0: .word 0xFFFC0000
+_021EC0D4:
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ mov r2, #0x11
+ add r6, r0, #0
+ ldr r1, [r4]
+ add r0, sp, #0x40
+ lsl r2, r2, #0xe
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #9
+ ldr r1, [sp, #0x44]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ ldr r1, [sp, #0x40]
+ lsl r0, r0, #0x10
+ sub r0, r1, r0
+ str r0, [sp, #0x40]
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ cmp r6, #1
+ bne _021EC212
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC122:
+ add r0, r4, #0
+ add r0, #0x30
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #3
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC138:
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E35C0
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E4AD0
+ cmp r6, #1
+ bne _021EC212
+ mov r3, #0
+ mov r0, #0x22
+ ldr r2, [sp, #0x14]
+ str r3, [sp]
+ lsl r0, r0, #4
+ ldrb r2, [r2, #5]
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x10]
+ bl MOD05_021E3F68
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC16A:
+ add r0, r4, #0
+ add r0, #0x30
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #3
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC180:
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E35C0
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD05_021E4AD0
+ cmp r6, #1
+ bne _021EC212
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC19E:
+ ldr r0, [r5, #0x10]
+ mov r1, #0x8b
+ ldr r0, [r0, #0x20]
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ add r0, sp, #0x2c
+ bl Camera_GetAngle
+ add r1, sp, #0x2c
+ mov r2, #0x92
+ ldrh r0, [r1]
+ lsl r2, r2, #2
+ strh r0, [r4, r2]
+ ldrh r3, [r1, #2]
+ add r0, r2, #2
+ strh r3, [r4, r0]
+ ldrh r3, [r1, #4]
+ add r0, r2, #4
+ strh r3, [r4, r0]
+ ldrh r1, [r1, #6]
+ add r0, r2, #6
+ ldr r3, [sp, #0x14]
+ strh r1, [r4, r0]
+ ldrh r1, [r4, r2]
+ add r2, #8
+ add r0, r4, r2
+ ldr r2, [sp, #0x14]
+ ldrb r3, [r3, #4]
+ ldr r2, [r2]
+ add r2, r1, r2
+ bl MOD05_021E35B0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC1E8:
+ mov r0, #0x25
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD05_021E35C0
+ mov r1, #0x25
+ lsl r1, r1, #4
+ add r6, r0, #0
+ add r0, r1, #0
+ ldr r2, [r4, r1]
+ sub r0, #8
+ strh r2, [r4, r0]
+ add r0, r1, #0
+ sub r1, #0x24
+ sub r0, #8
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ bl Camera_SetAngle
+ cmp r6, #1
+ beq _021EC214
+_021EC212:
+ b _021EC3A0
+_021EC214:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC21C:
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl Camera_GetDistance
+ add r1, r0, #0
+ mov r0, #0x1e
+ str r0, [sp]
+ mov r0, #0x23
+ mov r2, #0xfa
+ lsl r0, r0, #4
+ lsl r2, r2, #0xc
+ add r0, r4, r0
+ sub r2, r1, r2
+ mov r3, #0
+ bl MOD05_021E3644
+ mov r0, #0x1e
+ mov r1, #0
+ mov r2, #6
+ str r0, [sp]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ add r3, r1, #0
+ bl MOD05_021E3644
+ mov r0, #0x1e
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #6
+ add r0, #0x18
+ lsl r2, r2, #0x10
+ add r3, r1, #0
+ bl MOD05_021E3644
+ mov r0, #0x1e
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r1, #0
+ str r0, [sp, #8]
+ ldr r3, _021EC3B4 ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC284:
+ mov r0, #0x23
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD05_021E36A4
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E36A4
+ mov r1, #0x23
+ lsl r1, r1, #4
+ ldr r0, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl Camera_SetDistance
+ mov r1, #0x2e
+ ldr r2, [r4]
+ lsl r1, r1, #0xc
+ sub r1, r1, r2
+ mov r2, #0x72
+ ldr r3, [r4, #0x18]
+ lsl r2, r2, #0xc
+ add r2, r3, r2
+ add r0, sp, #0x40
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #9
+ ldr r1, [sp, #0x44]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ ldr r1, [sp, #0x40]
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x40]
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r1, #0xd
+ ldr r2, [r4]
+ lsl r1, r1, #0x10
+ add r1, r2, r1
+ mov r2, #0x11
+ ldr r3, [r4, #0x18]
+ lsl r2, r2, #0xe
+ sub r2, r2, r3
+ add r0, sp, #0x40
+ mov r3, #0
+ bl MOD05_021E3FF8
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ mov r0, #9
+ ldr r1, [sp, #0x44]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ ldr r1, [sp, #0x40]
+ lsl r0, r0, #0x10
+ sub r0, r1, r0
+ str r0, [sp, #0x40]
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x40
+ bl FUN_02020044
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021EC3A0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021EC3A0
+_021EC342:
+ ldr r1, _021EC3B4 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+ ldr r1, [r5, #0x14]
+ cmp r1, #0
+ beq _021EC354
+ mov r0, #1
+ str r0, [r1]
+_021EC354:
+ mov r7, #0
+ add r6, r4, #0
+_021EC358:
+ mov r0, #0x87
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_0201FFC8
+ add r7, r7, #1
+ add r6, r6, #4
+ cmp r7, #4
+ blt _021EC358
+ mov r0, #6
+ lsl r0, r0, #6
+ add r6, r4, r0
+ add r0, r4, #0
+ str r0, [sp, #0x28]
+ add r0, #0x44
+ mov r7, #0
+ str r0, [sp, #0x28]
+_021EC37A:
+ ldr r0, [sp, #0x28]
+ add r1, r6, #0
+ bl MOD05_021E3F3C
+ add r7, r7, #1
+ add r6, #0x34
+ cmp r7, #3
+ blt _021EC37A
+ add r4, #0x44
+ add r0, r4, #0
+ bl MOD05_021E3E44
+ ldr r1, [r5, #0xc]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add sp, #0x4c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021EC3A0:
+ ldr r0, [r5]
+ cmp r0, #0x13
+ beq _021EC3AC
+ ldr r0, [r4, #0x44]
+ bl FUN_0201FDEC
+_021EC3AC:
+ mov r0, #0
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EC3B4: .word 0x00007FFF
+
+ thumb_func_start MOD05_021EC3B8
+MOD05_021EC3B8: ; 0x021EC3B8
+ push {r4, lr}
+ ldr r2, _021EC3D4 ; =UNK05_021F7910
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EBCD8
+ cmp r0, #1
+ bne _021EC3D0
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EC3D0:
+ pop {r4, pc}
+ nop
+_021EC3D4: .word UNK05_021F7910
+
+ thumb_func_start MOD05_021EC3D8
+MOD05_021EC3D8: ; 0x021EC3D8
+ push {r4, lr}
+ ldr r2, _021EC3F4 ; =UNK05_021F7918
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EBCD8
+ cmp r0, #1
+ bne _021EC3F0
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EC3F0:
+ pop {r4, pc}
+ nop
+_021EC3F4: .word UNK05_021F7918
+
+ thumb_func_start MOD05_021EC3F8
+MOD05_021EC3F8: ; 0x021EC3F8
+ push {r4, lr}
+ ldr r2, _021EC414 ; =UNK05_021F7920
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EBCD8
+ cmp r0, #1
+ bne _021EC410
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EC410:
+ pop {r4, pc}
+ nop
+_021EC414: .word UNK05_021F7920
+
+ thumb_func_start MOD05_021EC418
+MOD05_021EC418: ; 0x021EC418
+ push {r4, lr}
+ ldr r2, _021EC434 ; =UNK05_021F7928
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EBCD8
+ cmp r0, #1
+ bne _021EC430
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EC430:
+ pop {r4, pc}
+ nop
+_021EC434: .word UNK05_021F7928
+
+ thumb_func_start MOD05_021EC438
+MOD05_021EC438: ; 0x021EC438
+ push {r4, lr}
+ ldr r2, _021EC454 ; =UNK05_021F7930
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #4
+ bl MOD05_021EBCD8
+ cmp r0, #1
+ bne _021EC450
+ add r0, r4, #0
+ bl FUN_0200621C
+_021EC450:
+ pop {r4, pc}
+ nop
+_021EC454: .word UNK05_021F7930
+
+ .section .rodata
+
+ .global UNK05_021F7910
+UNK05_021F7910: ; 0x021F7910
+ .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x41, 0x0E, 0x00
+
+ .global UNK05_021F7918
+UNK05_021F7918: ; 0x021F7918
+ .byte 0xDC, 0x05, 0x00, 0x00
+ .byte 0x0F, 0x42, 0x12, 0x00
+
+ .global UNK05_021F7920
+UNK05_021F7920: ; 0x021F7920
+ .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x43, 0x13, 0x00
+
+ .global UNK05_021F7928
+UNK05_021F7928: ; 0x021F7928
+ .byte 0xDC, 0x05, 0x00, 0x00
+ .byte 0x0F, 0x44, 0x14, 0x00
+
+ .global UNK05_021F7930
+UNK05_021F7930: ; 0x021F7930
+ .byte 0xB8, 0x0B, 0x00, 0x00, 0x1E, 0x45, 0x15, 0x00
+
+ .global UNK05_021F7938
+UNK05_021F7938: ; 0x021F7938
+ .byte 0x00, 0x00, 0x0B, 0x00
+ .byte 0x3E, 0x00, 0x01, 0x00
+
+ .global UNK05_021F7940
+UNK05_021F7940: ; 0x021F7940
+ .byte 0x00, 0x00, 0x0B, 0x00, 0x4A, 0x00, 0x01, 0x00
+
+ .global UNK05_021F7948
+UNK05_021F7948: ; 0x021F7948
+ .byte 0x00, 0x00, 0x0C, 0x00
+ .byte 0x4B, 0x00, 0x00, 0x00
+
+ .global UNK05_021F7950
+UNK05_021F7950: ; 0x021F7950
+ .byte 0x00, 0x00, 0x0B, 0x00, 0x4C, 0x00, 0x01, 0x00
+
+ .global UNK05_021F7958
+UNK05_021F7958: ; 0x021F7958
+ .byte 0x00, 0x00, 0x0C, 0x00
+ .byte 0x4D, 0x00, 0x01, 0x00
+
+ .global UNK05_021F7960
+UNK05_021F7960: ; 0x021F7960
+ .byte 0x00, 0x00, 0x0B, 0x00, 0x4E, 0x00, 0x01, 0x00
+
+ .global UNK05_021F7968
+UNK05_021F7968: ; 0x021F7968
+ .byte 0x00, 0x00, 0x0B, 0x00
+ .byte 0x40, 0x00, 0x01, 0x00
+
+ .global UNK05_021F7970
+UNK05_021F7970: ; 0x021F7970
+ .byte 0x00, 0x00, 0x0B, 0x00, 0x4F, 0x00, 0x01, 0x00
+
+ .global UNK05_021F7978
+UNK05_021F7978: ; 0x021F7978
+ .byte 0xC1, 0xAE, 0x29, 0x00
+ .byte 0x02, 0xD6, 0x00, 0x00, 0xC1, 0x05
+
+ .global UNK05_021F7982
+UNK05_021F7982: ; 0x021F7982
+ .byte 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xCF, 0x00, 0xFF
+ .byte 0x01, 0x06, 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE6, 0x00, 0x10, 0x91, 0x06, 0x04, 0x00
+ .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x0A, 0x11, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00
+ .byte 0x02, 0xE1, 0x00, 0xF0, 0x80, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xC6, 0x00, 0x00
+ .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0x00, 0x08, 0x03, 0x00
+ .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x02, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00
+ .byte 0x02, 0xD0, 0x00, 0x10, 0x00, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD9, 0x00, 0xF5
+ .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD0, 0x00, 0x0A, 0xC1, 0x04, 0x02, 0x00
+ .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0xC1, 0x03, 0x02, 0x00, 0xC1, 0xAE, 0x29, 0x00
+ .byte 0x02, 0xD0, 0x00, 0xF0, 0x50, 0x06, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xA0
+ .byte 0x41, 0x02, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0xA2, 0xE1, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00
+ .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x41, 0x02, 0x01, 0x00
+
+ .global UNK05_021F7A38
+UNK05_021F7A38: ; 0x021F7A38
+ .byte 0x00, 0x40, 0x10, 0x00
+
+ .global UNK05_021F7A3C
+UNK05_021F7A3C: ; 0x021F7A3C
+ .byte 0x00, 0x00, 0x08, 0x00
+
+ .global UNK05_021F7A40
+UNK05_021F7A40: ; 0x021F7A40
+ .byte 0x00, 0x20, 0xFE, 0xFF
+
+ .global UNK05_021F7A44
+UNK05_021F7A44: ; 0x021F7A44
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021F7A48
+UNK05_021F7A48: ; 0x021F7A48
+ .byte 0x00, 0x40, 0x06, 0x00
+
+ .global UNK05_021F7A4C
+UNK05_021F7A4C: ; 0x021F7A4C
+ .byte 0x00, 0x40, 0x01, 0x00
+
+ .global UNK05_021F7A50
+UNK05_021F7A50: ; 0x021F7A50
+ .byte 0x04, 0x00, 0x00, 0x00
+
+ .global UNK05_021F7A54
+UNK05_021F7A54: ; 0x021F7A54
+ .byte 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF
+ .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00
+ .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x40, 0x06, 0x00
+ .byte 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0xC0, 0x08, 0x00
+ .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00
+ .byte 0x00, 0xC0, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x40, 0x10, 0x00
+ .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x40, 0x06, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00
+ .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021EC458.s b/arm9/modules/05/asm/mod05_021EC458.s
new file mode 100644
index 00000000..216dfbb7
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021EC458.s
@@ -0,0 +1,2938 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC458
+MOD05_021EC458: ; 0x021EC458
+ push {r3, lr}
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetBoxMon
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021EC464
+MOD05_021EC464: ; 0x021EC464
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r6, r0, #0
+ add r5, r4, #0
+ mov r7, #5
+_021EC46E:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetBoxMon
+ add r1, r7, #0
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ beq _021EC48C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_021EC48C:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #2
+ blo _021EC46E
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC49C
+MOD05_021EC49C: ; 0x021EC49C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021EC4D8 ; =UNK05_021FD680
+ mov r4, #0
+ str r5, [r0]
+ mov r6, #5
+ add r7, r4, #0
+_021EC4AA:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetBoxMon
+ add r1, r6, #0
+ add r2, r7, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ bne _021EC4C6
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021EC4C6:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #2
+ blo _021EC4AA
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EC4D8: .word UNK05_021FD680
+
+ thumb_func_start MOD05_021EC4DC
+MOD05_021EC4DC: ; 0x021EC4DC
+ push {r3, lr}
+ mov r1, #6
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl ItemIdIsMail
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021EC4F0
+MOD05_021EC4F0: ; 0x021EC4F0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r2, #0
+ add r6, r0, #0
+ str r1, [sp]
+ add r7, r3, #0
+ bl GetPartyMonByIndex
+ add r4, r0, #0
+ add r0, r5, #0
+ bl DayCareMon_GetExtras
+ str r0, [sp, #8]
+ add r0, r5, #0
+ bl DayCareMon_GetBoxMon
+ str r0, [sp, #4]
+ add r0, r7, #0
+ bl Sav2_PlayerData_GetProfileAddr
+ bl PlayerProfile_GetNamePtr
+ add r0, r4, #0
+ mov r1, #0x74
+ add r2, sp, #0xc
+ bl GetMonData
+ add r0, r4, #0
+ bl FUN_020690E4
+ bl MOD05_021EC4DC
+ cmp r0, #0
+ beq _021EC544
+ ldr r0, [sp, #8]
+ bl DayCareMail_GetCapsule
+ add r2, r0, #0
+ add r0, r4, #0
+ mov r1, #0xa9
+ bl GetMonData
+_021EC544:
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl CopyBoxPokemonToBoxPokemon
+ add r0, r5, #0
+ mov r1, #0
+ bl DayCareMon_SetSteps
+ ldr r1, [sp]
+ add r0, r6, #0
+ bl RemoveMonFromParty
+ ldr r1, _021EC578 ; =0x000001B9
+ add r0, r6, #0
+ bl PartyHasMon
+ cmp r0, #0
+ bne _021EC572
+ add r0, r7, #0
+ bl Sav2_Chatot_get
+ bl Chatot_invalidate
+_021EC572:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EC578: .word 0x000001B9
+
+ thumb_func_start MOD05_021EC57C
+MOD05_021EC57C: ; 0x021EC57C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r3, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ bl FUN_02029FC8
+ mov r1, #0x28
+ bl FUN_0202A0E8
+ add r0, r4, #0
+ bl MOD05_021EC49C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl Sav2_DayCare_GetMonX
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD05_021EC4F0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC5B0
+MOD05_021EC5B0: ; 0x021EC5B0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ mov r1, #0
+ bl Sav2_DayCare_GetMonX
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl Sav2_DayCare_GetMonX
+ add r4, r0, #0
+ add r0, r5, #0
+ bl DayCareMon_GetBoxMon
+ add r6, r0, #0
+ add r0, r4, #0
+ bl DayCareMon_GetBoxMon
+ add r7, r0, #0
+ add r0, r6, #0
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ bne _021EC600
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ beq _021EC600
+ add r0, r5, #0
+ add r1, r4, #0
+ bl DayCareMon_Copy
+ add r0, r4, #0
+ bl DayCareMon_Init
+_021EC600:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC604
+MOD05_021EC604: ; 0x021EC604
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #8]
+ add r4, sp, #8
+ add r6, sp, #4
+ add r7, sp, #4
+_021EC616:
+ add r0, r5, #0
+ bl FUN_020690E8
+ cmp r0, #0
+ beq _021EC658
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02069818
+ cmp r0, #0
+ beq _021EC64E
+_021EC632:
+ ldr r1, _021EC664 ; =0x0000FFFF
+ cmp r0, r1
+ bne _021EC640
+ ldrh r1, [r7]
+ add r0, r5, #0
+ bl FUN_02069708
+_021EC640:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02069818
+ cmp r0, #0
+ bne _021EC632
+_021EC64E:
+ ldr r0, [sp]
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, #0x64
+ blt _021EC616
+_021EC658:
+ add r0, r5, #0
+ bl CalcMonLevelAndStats
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EC664: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021EC668
+MOD05_021EC668: ; 0x021EC668
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r0, [sp]
+ add r6, r1, #0
+ mov r0, #4
+ add r7, r2, #0
+ bl AllocMonZeroed
+ add r4, r0, #0
+ add r0, r6, #0
+ bl DayCareMon_GetBoxMon
+ add r5, r0, #0
+ add r0, r6, #0
+ bl DayCareMon_GetExtras
+ str r0, [sp, #4]
+ add r0, r7, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl BufferBoxMonNickname
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ add r0, r5, #0
+ add r1, r4, #0
+ bl CopyBoxPokemonToPokemon
+ add r0, r4, #0
+ mov r1, #0xa0
+ mov r2, #0
+ bl GetMonData
+ cmp r0, #0x64
+ beq _021EC6E0
+ add r0, r4, #0
+ mov r1, #8
+ mov r2, #0
+ bl GetMonData
+ str r0, [sp, #8]
+ add r0, r6, #0
+ bl DayCareMon_GetSteps
+ ldr r1, [sp, #8]
+ add r2, sp, #8
+ add r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #8
+ bl SetMonData
+ add r0, r4, #0
+ bl MOD05_021EC604
+_021EC6E0:
+ add r0, r5, #0
+ bl MOD05_021EC4DC
+ cmp r0, #0
+ beq _021EC6FA
+ ldr r0, [sp, #4]
+ bl DayCareMail_GetCapsule
+ add r2, r0, #0
+ add r0, r4, #0
+ mov r1, #0xa9
+ bl SetMonData
+_021EC6FA:
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl AddMonToParty
+ add r0, r5, #0
+ bl ZeroBoxMonData
+ add r0, r6, #0
+ mov r1, #0
+ bl DayCareMon_SetSteps
+ add r0, r4, #0
+ bl FreeToHeap
+ add r0, r7, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EC71C
+MOD05_021EC71C: ; 0x021EC71C
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ add r1, r3, #0
+ bl Sav2_DayCare_GetMonX
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD05_021EC668
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #0
+ bl MOD05_021EC5B0
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021EC744
+MOD05_021EC744: ; 0x021EC744
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #4
+ add r5, r1, #0
+ bl AllocMonZeroed
+ add r7, r0, #0
+ bl FUN_020690E4
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl CopyPokemonToBoxPokemon
+ add r0, r4, #0
+ mov r1, #8
+ mov r2, #0
+ bl GetBoxMonData
+ str r0, [sp]
+ add r0, r0, r5
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #8
+ add r2, sp, #0
+ bl SetBoxMonData
+ add r0, r4, #0
+ bl CalcBoxMonLevel
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FreeToHeap
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EC78C
+MOD05_021EC78C: ; 0x021EC78C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl DayCareMon_GetBoxMon
+ add r6, r0, #0
+ bl CalcBoxMonLevel
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0
+ bl DayCareMon_GetSteps
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD05_021EC744
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r0, r0, r4
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021EC7B4
+MOD05_021EC7B4: ; 0x021EC7B4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl DayCareMon_GetBoxMon
+ add r4, r0, #0
+ add r0, r5, #0
+ bl DayCareMon_GetSteps
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021EC744
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC7D4
+MOD05_021EC7D4: ; 0x021EC7D4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r5, r1, #0
+ bl DayCareMon_GetBoxMon
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD05_021EC78C
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #1
+ add r0, r5, #0
+ add r2, r4, #0
+ mov r3, #3
+ str r1, [sp, #4]
+ bl BufferIntegerAsString
+ add r0, r5, #0
+ mov r1, #0
+ add r2, r6, #0
+ bl BufferBoxMonNickname
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC810
+MOD05_021EC810: ; 0x021EC810
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r5, r1, #0
+ bl DayCareMon_GetBoxMon
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD05_021EC78C
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0
+ mov r1, #0
+ add r2, r6, #0
+ bl BufferBoxMonNickname
+ add r1, r4, #1
+ mov r0, #0x64
+ mul r0, r1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #1
+ add r0, r5, #0
+ add r2, r4, #0
+ mov r3, #5
+ str r1, [sp, #4]
+ bl BufferIntegerAsString
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021EC854
+MOD05_021EC854: ; 0x021EC854
+ push {r4, lr}
+ add r4, r2, #0
+ bl Sav2_DayCare_GetMonX
+ add r1, r4, #0
+ bl MOD05_021EC810
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EC864
+MOD05_021EC864: ; 0x021EC864
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ bl Sav2_DayCare_GetMonX
+ add r4, r0, #0
+ bl DayCareMon_GetBoxMon
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ beq _021EC888
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021EC7D4
+ pop {r3, r4, r5, pc}
+_021EC888:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021EC88C
+MOD05_021EC88C: ; 0x021EC88C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0
+ bl MOD05_021EC458
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD05_021EC458
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC8A8
+MOD05_021EC8A8: ; 0x021EC8A8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r1, #0
+ mvn r1, r1
+ str r1, [sp]
+ add r1, sp, #4
+ bl MOD05_021EC88C
+ mov r4, #0
+ add r5, sp, #4
+_021EC8BC:
+ ldr r0, [r5]
+ bl GetBoxMonGender
+ cmp r0, #1
+ bne _021EC8C8
+ str r4, [sp]
+_021EC8C8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021EC8BC
+ mov r7, #0
+ add r6, r7, #0
+ add r4, sp, #4
+ add r5, sp, #0xc
+_021EC8D8:
+ ldr r0, [r4]
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ str r0, [r5]
+ cmp r0, #0x84
+ bne _021EC8EC
+ add r7, r7, #1
+ str r6, [sp]
+_021EC8EC:
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021EC8D8
+ cmp r7, #2
+ bne _021EC90E
+ bl LCRandom
+ ldr r1, _021EC940 ; =0x00007FFF
+ cmp r0, r1
+ blo _021EC90A
+ mov r0, #0
+ str r0, [sp]
+ b _021EC90E
+_021EC90A:
+ mov r0, #1
+ str r0, [sp]
+_021EC90E:
+ ldr r0, [sp]
+ mov r2, #0
+ lsl r1, r0, #2
+ add r0, sp, #4
+ ldr r0, [r0, r1]
+ mov r1, #6
+ bl GetBoxMonData
+ cmp r0, #0xe5
+ bne _021EC938
+ bl LCRandom
+ ldr r1, _021EC940 ; =0x00007FFF
+ cmp r0, r1
+ blo _021EC932
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp]
+_021EC932:
+ ldr r0, [sp]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021EC938:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EC940: .word 0x00007FFF
+
+ thumb_func_start MOD05_021EC944
+MOD05_021EC944: ; 0x021EC944
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ mov r5, #0
+ bl MOD05_021EC8A8
+ add r1, r0, #0
+ bpl _021EC960
+ bl MTRandom
+ add r1, r0, #0
+ ldr r0, [sp]
+ bl Sav2_DayCare_SetEggPID
+ pop {r3, r4, r5, r6, r7, pc}
+_021EC960:
+ ldr r0, [sp]
+ bl MOD05_021EC458
+ add r1, r5, #0
+ add r2, r1, #0
+ bl GetBoxMonData
+ bl GetNatureFromPersonality
+ mov r7, #0x96
+ add r6, r0, #0
+ lsl r7, r7, #4
+_021EC978:
+ bl MTRandom
+ add r4, r0, #0
+ bl GetNatureFromPersonality
+ cmp r6, r0
+ bne _021EC98A
+ cmp r4, #0
+ bne _021EC990
+_021EC98A:
+ add r5, r5, #1
+ cmp r5, r7
+ ble _021EC978
+_021EC990:
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl Sav2_DayCare_SetEggPID
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC99C
+MOD05_021EC99C: ; 0x021EC99C
+ push {r3, r4}
+ sub sp, #8
+ mov r2, #0xff
+ strb r2, [r0, r1]
+ mov r2, #0
+ add r3, sp, #0
+_021EC9A8:
+ ldrb r1, [r0, r2]
+ add r2, r2, #1
+ strb r1, [r3]
+ add r3, r3, #1
+ cmp r2, #6
+ blt _021EC9A8
+ mov r2, #0
+ add r4, r2, #0
+ add r3, sp, #0
+_021EC9BA:
+ ldrb r1, [r3]
+ cmp r1, #0xff
+ beq _021EC9C4
+ strb r1, [r0, r2]
+ add r2, r2, #1
+_021EC9C4:
+ add r4, r4, #1
+ add r3, r3, #1
+ cmp r4, #6
+ blt _021EC9BA
+ add sp, #8
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EC9D4
+MOD05_021EC9D4: ; 0x021EC9D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ str r1, [sp]
+ mov r0, #0
+ add r1, sp, #8
+_021EC9E0:
+ strb r0, [r1, r0]
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #6
+ blo _021EC9E0
+ add r7, sp, #0xc
+ mov r5, #0
+ add r6, sp, #8
+ add r7, #2
+_021EC9F4:
+ bl LCRandom
+ mov r1, #6
+ sub r1, r1, r5
+ bl _s32_div_f
+ ldrb r0, [r6, r1]
+ add r1, r5, #0
+ strb r0, [r7, r5]
+ add r0, r6, #0
+ bl MOD05_021EC99C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #3
+ blo _021EC9F4
+ add r6, sp, #4
+ mov r5, #0
+ add r6, #1
+ mov r7, #0x1f
+_021ECA1E:
+ bl LCRandom
+ lsr r1, r0, #0x1f
+ lsl r0, r0, #0x1f
+ sub r0, r0, r1
+ ror r0, r7
+ add r0, r1, r0
+ strb r0, [r6, r5]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #3
+ blo _021ECA1E
+ mov r5, #0
+ add r7, sp, #4
+ add r6, sp, #4
+_021ECA3E:
+ add r1, sp, #4
+ add r1, #1
+ ldrb r1, [r1, r5]
+ ldr r0, [sp]
+ bl MOD05_021EC458
+ add r1, sp, #0xc
+ add r1, #2
+ ldrb r1, [r1, r5]
+ cmp r1, #5
+ bhi _021ECAEE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021ECA60: ; jump table
+ .short _021ECA6C - _021ECA60 - 2 ; case 0
+ .short _021ECA82 - _021ECA60 - 2 ; case 1
+ .short _021ECA98 - _021ECA60 - 2 ; case 2
+ .short _021ECAAE - _021ECA60 - 2 ; case 3
+ .short _021ECAC4 - _021ECA60 - 2 ; case 4
+ .short _021ECADA - _021ECA60 - 2 ; case 5
+_021ECA6C:
+ mov r1, #0x46
+ mov r2, #0
+ bl GetBoxMonData
+ strb r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x46
+ add r2, r7, #0
+ bl SetMonData
+ b _021ECAEE
+_021ECA82:
+ mov r1, #0x47
+ mov r2, #0
+ bl GetBoxMonData
+ strb r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x47
+ add r2, r7, #0
+ bl SetMonData
+ b _021ECAEE
+_021ECA98:
+ mov r1, #0x48
+ mov r2, #0
+ bl GetBoxMonData
+ strb r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x48
+ add r2, r7, #0
+ bl SetMonData
+ b _021ECAEE
+_021ECAAE:
+ mov r1, #0x49
+ mov r2, #0
+ bl GetBoxMonData
+ strb r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x49
+ add r2, r7, #0
+ bl SetMonData
+ b _021ECAEE
+_021ECAC4:
+ mov r1, #0x4a
+ mov r2, #0
+ bl GetBoxMonData
+ strb r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x4a
+ add r2, r7, #0
+ bl SetMonData
+ b _021ECAEE
+_021ECADA:
+ mov r1, #0x4b
+ mov r2, #0
+ bl GetBoxMonData
+ strb r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x4b
+ add r2, r7, #0
+ bl SetMonData
+_021ECAEE:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #3
+ blo _021ECA3E
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021ECAFC
+MOD05_021ECAFC: ; 0x021ECAFC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r5, r1, #0
+ mov r1, #5
+ add r2, r4, #0
+ add r6, r4, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ ldr r0, _021ECB60 ; =0x00004E20
+ ldr r3, _021ECB64 ; =0x00000775
+ add r2, r2, r0
+ ldr r0, _021ECB68 ; =UNK05_021F7B48
+ add r1, r4, #0
+_021ECB1A:
+ lsl r7, r1, #1
+ ldrh r7, [r0, r7]
+ cmp r2, r7
+ bne _021ECB2A
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ b _021ECB34
+_021ECB2A:
+ add r1, r1, #1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ cmp r1, r3
+ blo _021ECB1A
+_021ECB34:
+ ldr r2, _021ECB68 ; =UNK05_021F7B48
+ lsl r0, r6, #1
+ ldr r3, _021ECB60 ; =0x00004E20
+ mov r1, #0
+ add r0, r2, r0
+_021ECB3E:
+ lsl r6, r1, #1
+ ldrh r2, [r0, r6]
+ cmp r2, r3
+ bhi _021ECB58
+ add r1, r1, #1
+ strh r2, [r5, r6]
+ add r2, r4, #1
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsr r1, r1, #0x10
+ lsr r4, r2, #0x10
+ cmp r1, #0x10
+ blo _021ECB3E
+_021ECB58:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021ECB60: .word 0x00004E20
+_021ECB64: .word 0x00000775
+_021ECB68: .word UNK05_021F7B48
+
+ thumb_func_start MOD05_021ECB6C
+MOD05_021ECB6C: ; 0x021ECB6C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #4
+ mov r1, #0xb4
+ str r2, [sp, #4]
+ bl AllocFromHeap
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ mov r2, #0xb4
+ str r0, [sp, #0x1c]
+ bl MIi_CpuClearFast
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x18]
+ add r0, r7, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ add r2, r4, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0xc]
+ add r2, #0x30
+ bl Species_LoadLearnsetTable
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ mov r5, #0
+_021ECBC0:
+ lsl r0, r5, #2
+ add r6, r5, #0
+ str r0, [sp, #0x20]
+ add r0, r4, r0
+ add r6, #0x36
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ add r1, r6, #0
+ mov r2, #0
+ bl GetBoxMonData
+ ldr r1, [sp, #0x20]
+ mov r2, #0
+ str r0, [r4, r1]
+ ldr r0, [sp, #4]
+ add r1, r6, #0
+ bl GetBoxMonData
+ ldr r1, [sp, #0x10]
+ str r0, [r1, #0x20]
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #4
+ blo _021ECBC0
+ add r1, r4, #0
+ add r0, r7, #0
+ add r1, #0x94
+ bl MOD05_021ECAFC
+ add r5, r0, #0
+ mov r6, #0
+_021ECC00:
+ lsl r0, r6, #2
+ ldr r1, [r4, r0]
+ str r0, [sp, #0x24]
+ cmp r1, #0
+ beq _021ECC50
+ mov r0, #0
+ cmp r5, #0
+ bls _021ECC46
+_021ECC10:
+ lsl r2, r0, #1
+ add r2, r4, r2
+ add r2, #0x94
+ ldrh r2, [r2]
+ cmp r1, r2
+ bne _021ECC3C
+ lsl r1, r1, #0x10
+ add r0, r7, #0
+ lsr r1, r1, #0x10
+ bl FUN_02069698
+ ldr r1, _021ECD60 ; =0x0000FFFF
+ cmp r0, r1
+ bne _021ECC46
+ ldr r1, [sp, #0x24]
+ add r0, r7, #0
+ ldr r1, [r4, r1]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02069708
+ b _021ECC46
+_021ECC3C:
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, r5
+ blo _021ECC10
+_021ECC46:
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #4
+ blo _021ECC00
+_021ECC50:
+ mov r0, #0
+ str r0, [sp, #8]
+_021ECC54:
+ ldr r0, [sp, #8]
+ lsl r6, r0, #2
+ ldr r0, [r4, r6]
+ cmp r0, #0
+ beq _021ECCAC
+ mov r5, #0
+_021ECC60:
+ mov r0, #0x52
+ lsl r0, r0, #2
+ add r0, r5, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl TMHMGetMove
+ ldr r1, [r4, r6]
+ cmp r1, r0
+ bne _021ECCA2
+ lsl r2, r5, #0x18
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0xc]
+ lsr r2, r2, #0x18
+ bl FUN_0206A16C
+ cmp r0, #0
+ beq _021ECCA2
+ ldr r1, [r4, r6]
+ add r0, r7, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02069698
+ ldr r1, _021ECD60 ; =0x0000FFFF
+ cmp r0, r1
+ bne _021ECCA2
+ ldr r1, [r4, r6]
+ add r0, r7, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02069708
+_021ECCA2:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x64
+ blo _021ECC60
+_021ECCAC:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ cmp r0, #4
+ blo _021ECC54
+ mov r6, #0
+_021ECCBC:
+ lsl r1, r6, #2
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021ECCFC
+ mov r3, #0
+_021ECCC6:
+ lsl r2, r3, #2
+ add r2, r4, r2
+ ldr r0, [r4, r1]
+ ldr r2, [r2, #0x20]
+ cmp r0, r2
+ bne _021ECCE8
+ cmp r0, #0
+ beq _021ECCE8
+ ldr r2, [sp, #0x1c]
+ add r5, r2, #0
+ add r5, r5, #1
+ lsl r5, r5, #0x10
+ lsr r5, r5, #0x10
+ lsl r2, r2, #2
+ str r5, [sp, #0x1c]
+ add r2, r4, r2
+ str r0, [r2, #0x10]
+_021ECCE8:
+ add r0, r3, #1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #4
+ blo _021ECCC6
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #4
+ blo _021ECCBC
+_021ECCFC:
+ mov r6, #0
+_021ECCFE:
+ lsl r0, r6, #2
+ add r5, r4, r0
+ ldr r3, [r5, #0x10]
+ cmp r3, #0
+ beq _021ECD54
+ ldr r0, [sp, #0x14]
+ mov r2, #0
+ cmp r0, #0
+ bls _021ECD4A
+_021ECD10:
+ lsl r0, r2, #1
+ add r0, r4, r0
+ ldrh r1, [r0, #0x30]
+ cmp r1, #0
+ beq _021ECD3E
+ ldr r0, [r5, #0x10]
+ cmp r0, r1
+ bne _021ECD3E
+ lsl r1, r3, #0x10
+ add r0, r7, #0
+ lsr r1, r1, #0x10
+ bl FUN_02069698
+ ldr r1, _021ECD60 ; =0x0000FFFF
+ cmp r0, r1
+ bne _021ECD4A
+ ldr r1, [r5, #0x10]
+ add r0, r7, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02069708
+ b _021ECD4A
+_021ECD3E:
+ add r0, r2, #1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ ldr r0, [sp, #0x14]
+ cmp r2, r0
+ blo _021ECD10
+_021ECD4A:
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #4
+ blo _021ECCFE
+_021ECD54:
+ add r0, r4, #0
+ bl FreeToHeap
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021ECD60: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021ECD64
+MOD05_021ECD64: ; 0x021ECD64
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ bl Sav2_DayCare_SetEggPID
+ add r0, r4, #0
+ mov r1, #0
+ bl Sav2_DayCare_SetEggCycleCounter
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021ECD78
+MOD05_021ECD78: ; 0x021ECD78
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, sp, #0
+ bl MOD05_021EC88C
+ ldr r2, _021ECDE8 ; =UNK05_021F7B12
+ mov r3, #0
+ mov r1, #6
+_021ECD8C:
+ add r0, r3, #0
+ mul r0, r1
+ ldrh r0, [r2, r0]
+ cmp r5, r0
+ bne _021ECD9A
+ add r6, r3, #0
+ b _021ECDA4
+_021ECD9A:
+ add r0, r3, #1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #9
+ blo _021ECD8C
+_021ECDA4:
+ cmp r3, #9
+ bne _021ECDAE
+ add sp, #8
+ add r0, r5, #0
+ pop {r4, r5, r6, pc}
+_021ECDAE:
+ ldr r0, [sp]
+ mov r1, #6
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [sp, #4]
+ mov r1, #6
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r0, #6
+ add r1, r6, #0
+ mul r1, r0
+ ldr r0, _021ECDEC ; =UNK05_021F7B14
+ ldrh r0, [r0, r1]
+ cmp r4, r0
+ beq _021ECDE0
+ cmp r2, r0
+ beq _021ECDE0
+ ldr r0, _021ECDF0 ; =UNK05_021F7B16
+ ldrh r5, [r0, r1]
+_021ECDE0:
+ add r0, r5, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_021ECDE8: .word UNK05_021F7B12
+_021ECDEC: .word UNK05_021F7B14
+_021ECDF0: .word UNK05_021F7B16
+
+ thumb_func_start MOD05_021ECDF4
+MOD05_021ECDF4: ; 0x021ECDF4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, sp, #0
+ bl MOD05_021EC88C
+ ldr r0, [sp]
+ mov r1, #6
+ mov r2, #0
+ bl GetBoxMonData
+ add r5, r0, #0
+ ldr r0, [sp, #4]
+ mov r1, #6
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r5, #0xec
+ beq _021ECE20
+ cmp r0, #0xec
+ bne _021ECE3A
+_021ECE20:
+ mov r1, #0x56
+ add r0, r4, #0
+ lsl r1, r1, #2
+ bl FUN_02069698
+ ldr r1, _021ECE40 ; =0x0000FFFF
+ cmp r0, r1
+ bne _021ECE3A
+ mov r1, #0x56
+ add r0, r4, #0
+ lsl r1, r1, #2
+ bl FUN_02069708
+_021ECE3A:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_021ECE40: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021ECE44
+MOD05_021ECE44: ; 0x021ECE44
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r1, sp, #4
+ str r0, [sp]
+ bl MOD05_021EC88C
+ mov r4, #0
+ add r7, sp, #4
+_021ECE56:
+ lsl r6, r4, #2
+ ldr r0, [r7, r6]
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r1, r4, #1
+ add r2, sp, #0xc
+ strh r0, [r2, r1]
+ add r0, r2, #0
+ ldrh r0, [r0, r1]
+ cmp r0, #0x84
+ bne _021ECE7A
+ mov r0, #1
+ eor r0, r4
+ strb r0, [r5]
+ strb r4, [r5, #1]
+ b _021ECE8C
+_021ECE7A:
+ ldr r0, [r7, r6]
+ bl GetBoxMonGender
+ cmp r0, #1
+ bne _021ECE8C
+ mov r0, #1
+ strb r4, [r5]
+ eor r0, r4
+ strb r0, [r5, #1]
+_021ECE8C:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #2
+ blo _021ECE56
+ ldrb r0, [r5]
+ lsl r1, r0, #1
+ add r0, sp, #0xc
+ ldrh r0, [r0, r1]
+ bl ReadFromPersonalPmsNarc
+ add r4, r0, #0
+ cmp r4, #0x1d
+ bne _021ECEBC
+ ldr r0, [sp]
+ bl Sav2_DayCare_GetEggPID
+ mov r1, #2
+ lsl r1, r1, #0xe
+ tst r0, r1
+ beq _021ECEBA
+ mov r4, #0x20
+ b _021ECEBC
+_021ECEBA:
+ mov r4, #0x1d
+_021ECEBC:
+ ldr r0, _021ECF08 ; =0x0000013A
+ cmp r4, r0
+ bne _021ECED6
+ ldr r0, [sp]
+ bl Sav2_DayCare_GetEggPID
+ mov r1, #2
+ lsl r1, r1, #0xe
+ tst r0, r1
+ beq _021ECED4
+ ldr r4, _021ECF0C ; =0x00000139
+ b _021ECED6
+_021ECED4:
+ ldr r4, _021ECF08 ; =0x0000013A
+_021ECED6:
+ ldr r0, _021ECF10 ; =0x000001EA
+ cmp r4, r0
+ bne _021ECEDE
+ sub r4, r0, #1
+_021ECEDE:
+ ldrb r0, [r5, #1]
+ lsl r1, r0, #1
+ add r0, sp, #0xc
+ ldrh r0, [r0, r1]
+ cmp r0, #0x84
+ bne _021ECF02
+ ldrb r0, [r5]
+ lsl r1, r0, #2
+ add r0, sp, #4
+ ldr r0, [r0, r1]
+ bl GetBoxMonGender
+ cmp r0, #1
+ beq _021ECF02
+ ldrb r1, [r5, #1]
+ ldrb r0, [r5]
+ strb r0, [r5, #1]
+ strb r1, [r5]
+_021ECF02:
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021ECF08: .word 0x0000013A
+_021ECF0C: .word 0x00000139
+_021ECF10: .word 0x000001EA
+
+ thumb_func_start MOD05_SetEggStats
+MOD05_SetEggStats: ; 0x021ECF14
+ push {r0, r1, r2, r3}
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #0x13 ; BASE_EGG_CYCLES
+ add r4, r3, #0
+ bl GetMonBaseStat
+ add r1, sp, #0x10
+ strb r0, [r1]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #1
+ mov r3, #0x20
+ bl CreateMon
+ mov r1, #0
+ add r0, sp, #0x10
+ strb r1, [r0, #2]
+ mov r1, #4
+ strh r1, [r0, #4]
+ add r0, r5, #0
+ mov r1, #0x9a
+ add r2, sp, #0x14
+ bl SetMonData
+ add r0, r5, #0
+ mov r1, #9
+ add r2, sp, #0x10
+ bl SetMonData
+ add r2, sp, #0x10
+ add r0, r5, #0
+ mov r1, #0x9b
+ add r2, #2
+ bl SetMonData
+ add r0, sp, #0x30
+ ldrb r0, [r0, #8]
+ cmp r0, #0
+ beq _021ECF7E
+ add r0, r5, #0
+ mov r1, #0x97
+ add r2, sp, #0x38
+ bl SetMonData
+_021ECF7E:
+ add r2, sp, #0x10
+ mov r1, #1
+ add r0, sp, #0x10
+ strb r1, [r0, #1]
+ add r0, r5, #0
+ mov r1, #0x4c
+ add r2, #1
+ bl SetMonData
+ ldr r0, _021ED008 ; =0x000001EE
+ mov r1, #4
+ bl GetSpeciesName
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #0x76
+ add r2, r6, #0
+ bl SetMonData
+ add r0, r6, #0
+ bl String_dtor
+ ldr r0, [sp, #0x40]
+ cmp r0, #4
+ bne _021ECFEE
+ add r0, r4, #0
+ bl PlayerProfile_GetTrainerID
+ str r0, [sp, #0x1c]
+ add r0, r4, #0
+ bl PlayerProfile_GetTrainerGender
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ mov r1, #0x20
+ bl PlayerProfile_GetPlayerName_NewString
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #0x90
+ add r2, r6, #0
+ bl SetMonData
+ add r0, r5, #0
+ mov r1, #7
+ add r2, sp, #0x1c
+ bl SetMonData
+ add r0, r5, #0
+ mov r1, #0x9c
+ add r2, sp, #0x18
+ bl SetMonData
+ add r0, r6, #0
+ bl String_dtor
+_021ECFEE:
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0208089C
+ add sp, #0x20
+ pop {r4, r5, r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4, 0
+_021ED008: .word 0x000001EE
+
+ thumb_func_start MOD05_DayCare_CreateEgg
+MOD05_DayCare_CreateEgg: ; 0x021ED00C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ add r7, r0, #0
+ ldr r0, [sp, #0x10]
+ mov r1, #0x13 ; BASE_EGG_CYCLES
+ add r5, r2, #0
+ add r6, r3, #0
+ bl GetMonBaseStat
+ add r1, sp, #0x14
+ strb r0, [r1]
+ add r0, r5, #0
+ bl Sav2_DayCare_GetEggPID
+ add r4, r0, #0
+ add r0, r5, #0
+ bl Sav2_DayCare_MasudaCheck
+ cmp r0, #0
+ beq _021ED05E
+ add r0, r6, #0
+ add r1, r4, #0
+ bl CalcShininessByOtIdAndPersonality
+ cmp r0, #0
+ bne _021ED05E
+ mov r5, #0
+_021ED044:
+ add r0, r4, #0
+ bl PRandom
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl CalcShininessByOtIdAndPersonality
+ cmp r0, #0
+ bne _021ED05E
+ add r5, r5, #1
+ cmp r5, #4
+ blt _021ED044
+_021ED05E:
+ mov r2, #1
+ str r2, [sp]
+ str r4, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0
+ mov r3, #0x20
+ bl CreateMon
+ add r2, sp, #0x14
+ mov r1, #0
+ add r0, sp, #0x14
+ strb r1, [r0, #1]
+ mov r1, #4
+ strh r1, [r0, #2]
+ add r0, r7, #0
+ mov r1, #0x9a
+ add r2, #2
+ bl SetMonData
+ add r0, r7, #0
+ mov r1, #9
+ add r2, sp, #0x14
+ bl SetMonData
+ add r2, sp, #0x14
+ add r0, r7, #0
+ mov r1, #0x9b
+ add r2, #1
+ bl SetMonData
+ add r0, r7, #0
+ mov r1, #0x70
+ add r2, sp, #0x30
+ bl SetMonData
+ ldr r0, _021ED0C8 ; =0x000001EE
+ mov r1, #4
+ bl GetSpeciesName
+ add r4, r0, #0
+ add r0, r7, #0
+ mov r1, #0x76
+ add r2, r4, #0
+ bl SetMonData
+ add r0, r4, #0
+ bl String_dtor
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021ED0C8: .word 0x000001EE
+
+ thumb_func_start MOD05_DayCare_GiveEggToPlayer
+MOD05_DayCare_GiveEggToPlayer: ; 0x021ED0CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #4
+ str r1, [sp, #4]
+ add r7, r2, #0
+ bl AllocMonZeroed
+ add r1, sp, #0x10
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, #1
+ bl MOD05_021ECE44
+ add r1, r5, #0
+ bl MOD05_021ECD78
+ add r6, r0, #0
+ add r0, r7, #0
+ bl PlayerProfile_GetTrainerID
+ add r1, sp, #0x10
+ str r0, [sp, #8]
+ ldrb r1, [r1, #1]
+ add r0, r5, #0
+ bl MOD05_021EC458
+ mov r1, #0x70
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD05_DayCare_CreateEgg
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021EC9D4
+ add r1, sp, #0x10
+ ldrb r1, [r1, #2]
+ add r0, r5, #0
+ bl MOD05_021EC458
+ add r1, sp, #0x10
+ str r0, [sp, #0xc]
+ ldrb r1, [r1, #1]
+ add r0, r5, #0
+ bl MOD05_021EC458
+ add r2, r0, #0
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0
+ bl MOD05_021ECB6C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_02015CF8
+ add r3, r0, #0
+ mov r0, #4
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r7, #0
+ mov r2, #3
+ bl FUN_0208089C
+ cmp r6, #0xac
+ bne _021ED168
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021ECDF4
+_021ED168:
+ mov r1, #1
+ add r0, sp, #0x10
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x4c
+ add r2, sp, #0x10
+ bl SetMonData
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ bl AddMonToParty
+ add r0, r5, #0
+ bl MOD05_021ECD64
+ add r0, r4, #0
+ bl FreeToHeap
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021ED190
+MOD05_021ED190: ; 0x021ED190
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl GetPartyCount
+ add r6, r0, #0
+ mov r4, #0
+ cmp r6, #0
+ ble _021ED1E0
+ mov r7, #0xac
+_021ED1A2:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl GetPartyMonByIndex
+ add r1, r7, #0
+ mov r2, #0
+ bl GetMonData
+ cmp r0, #0
+ bne _021ED1D6
+ add r0, r5, #0
+ add r1, r4, #0
+ bl GetPartyMonByIndex
+ mov r1, #0xa
+ mov r2, #0
+ bl GetMonData
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x28
+ beq _021ED1D2
+ cmp r0, #0x31
+ bne _021ED1D6
+_021ED1D2:
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_021ED1D6:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, r6
+ blt _021ED1A2
+_021ED1E0:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021ED1E4
+MOD05_021ED1E4: ; 0x021ED1E4
+ push {r4, r5, r6, r7}
+ mov r4, #0
+ add r3, r4, #0
+_021ED1EA:
+ ldrh r7, [r0]
+ add r5, r3, #0
+ add r6, r1, #0
+_021ED1F0:
+ ldrh r2, [r6]
+ cmp r7, r2
+ bne _021ED1FC
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+_021ED1FC:
+ add r5, r5, #1
+ add r6, r6, #2
+ cmp r5, #2
+ blt _021ED1F0
+ add r4, r4, #1
+ add r0, r0, #2
+ cmp r4, #2
+ blt _021ED1EA
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED214
+MOD05_021ED214: ; 0x021ED214
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, sp, #0x10
+ add r4, sp, #0x18
+ str r0, [sp]
+ add r7, sp, #8
+ add r6, sp, #0x1c
+_021ED228:
+ ldr r0, [r5]
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ strh r0, [r4]
+ ldr r0, [r5]
+ mov r1, #7
+ mov r2, #0
+ bl GetBoxMonData
+ ldr r1, [sp]
+ str r0, [r1]
+ mov r1, #0
+ ldr r0, [r5]
+ add r2, r1, #0
+ bl GetBoxMonData
+ add r1, r0, #0
+ ldrh r0, [r4]
+ bl GetGenderBySpeciesAndPersonality
+ stmia r7!, {r0}
+ ldrh r0, [r4]
+ mov r1, #0x16 ; BASE_EGG_GROUP_1
+ bl GetMonBaseStat
+ strh r0, [r6]
+ ldrh r0, [r4]
+ mov r1, #0x17 ; GASE_EGG_GROUP_2
+ bl GetMonBaseStat
+ strh r0, [r6, #2]
+ ldr r0, [sp]
+ add r5, r5, #4
+ add r0, r0, #4
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r4, r4, #2
+ add r0, r0, #1
+ add r6, r6, #4
+ str r0, [sp, #4]
+ cmp r0, #2
+ blo _021ED228
+ add r0, sp, #8
+ ldrh r1, [r0, #0x14]
+ cmp r1, #0xf
+ beq _021ED28E
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0xf
+ bne _021ED294
+_021ED28E:
+ add sp, #0x24
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021ED294:
+ cmp r1, #0xd
+ bne _021ED2A2
+ cmp r0, #0xd
+ bne _021ED2A2
+ add sp, #0x24
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021ED2A2:
+ cmp r1, #0xd
+ beq _021ED2AA
+ cmp r0, #0xd
+ bne _021ED2BE
+_021ED2AA:
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bne _021ED2B8
+ add sp, #0x24
+ mov r0, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021ED2B8:
+ add sp, #0x24
+ mov r0, #0x32
+ pop {r4, r5, r6, r7, pc}
+_021ED2BE:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #8]
+ cmp r0, r1
+ bne _021ED2CC
+ add sp, #0x24
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021ED2CC:
+ cmp r0, #2
+ beq _021ED2D4
+ cmp r1, #2
+ bne _021ED2DA
+_021ED2D4:
+ add sp, #0x24
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021ED2DA:
+ add r0, sp, #0x1c
+ add r1, sp, #0x20
+ bl MOD05_021ED1E4
+ cmp r0, #0
+ bne _021ED2EC
+ add sp, #0x24
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021ED2EC:
+ add r0, sp, #8
+ ldrh r1, [r0, #0x10]
+ ldrh r0, [r0, #0x12]
+ cmp r1, r0
+ bne _021ED30A
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ beq _021ED304
+ add sp, #0x24
+ mov r0, #0x46
+ pop {r4, r5, r6, r7, pc}
+_021ED304:
+ add sp, #0x24
+ mov r0, #0x32
+ pop {r4, r5, r6, r7, pc}
+_021ED30A:
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ beq _021ED318
+ add sp, #0x24
+ mov r0, #0x32
+ pop {r4, r5, r6, r7, pc}
+_021ED318:
+ mov r0, #0x14
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED320
+MOD05_021ED320: ; 0x021ED320
+ push {r3, lr}
+ sub sp, #8
+ add r1, sp, #0
+ bl MOD05_021EC88C
+ add r0, sp, #0
+ bl MOD05_021ED214
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021ED334
+MOD05_021ED334: ; 0x021ED334
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl Script_GetDay
+ add r5, r0, #0
+ add r0, r4, #0
+ bl Script_GetMonth
+ mov r1, #0x64
+ mul r1, r0
+ add r0, r4, #0
+ add r5, r5, r1
+ bl FUN_0204B33C
+ cmp r0, #0
+ beq _021ED358
+ mov r0, #0xff
+ pop {r3, r4, r5, pc}
+_021ED358:
+ ldr r2, _021ED374 ; =UNK05_021F7AF8
+ mov r1, #0
+_021ED35C:
+ ldrh r0, [r2]
+ cmp r5, r0
+ bne _021ED366
+ mov r0, #0xe6
+ pop {r3, r4, r5, pc}
+_021ED366:
+ add r1, r1, #1
+ add r2, r2, #2
+ cmp r1, #0xd
+ blo _021ED35C
+ mov r0, #0xff
+ pop {r3, r4, r5, pc}
+ nop
+_021ED374: .word UNK05_021F7AF8
+
+ thumb_func_start MOD05_021ED378
+MOD05_021ED378: ; 0x021ED378
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r1, sp, #8
+ str r0, [sp]
+ str r2, [sp, #4]
+ bl MOD05_021EC88C
+ mov r6, #0
+ add r4, r6, #0
+ add r5, sp, #8
+_021ED38E:
+ ldr r0, [r5]
+ mov r1, #0xab
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ beq _021ED3AC
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl Sav2_DayCare_GetMonX
+ mov r1, #1
+ bl DayCareMon_AddSteps
+ add r6, r6, #1
+_021ED3AC:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blo _021ED38E
+ ldr r0, [sp]
+ bl Sav2_DayCare_GetEggPID
+ cmp r0, #0
+ bne _021ED3F8
+ cmp r6, #2
+ bne _021ED3F8
+ ldr r0, [sp]
+ mov r1, #1
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetSteps
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0xff
+ bne _021ED3F8
+ ldr r0, [sp]
+ bl MOD05_021ED320
+ add r4, r0, #0
+ bl LCRandom
+ mov r1, #0x64
+ mul r1, r0
+ add r0, r1, #0
+ ldr r1, _021ED498 ; =0x0000FFFF
+ bl _u32_div_f
+ cmp r4, r0
+ bls _021ED3F8
+ ldr r0, [sp]
+ bl MOD05_021EC944
+_021ED3F8:
+ ldr r0, [sp]
+ bl Sav2_DayCare_GetEggCycleCounter
+ add r4, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #1
+ bl Sav2_DayCare_SetEggCycleCounter
+ ldr r0, [sp, #4]
+ bl MOD05_021ED334
+ add r1, r4, #1
+ cmp r1, r0
+ bne _021ED490
+ ldr r0, [sp]
+ mov r1, #0
+ bl Sav2_DayCare_SetEggCycleCounter
+ add r0, r7, #0
+ bl MOD05_021ED190
+ add r6, r0, #0
+ add r0, r7, #0
+ mov r5, #0
+ bl GetPartyCount
+ cmp r0, #0
+ bls _021ED490
+_021ED430:
+ add r0, r7, #0
+ add r1, r5, #0
+ bl GetPartyMonByIndex
+ mov r1, #0x4c
+ mov r2, #0
+ add r4, r0, #0
+ bl GetMonData
+ cmp r0, #0
+ beq _021ED484
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #0
+ bl GetMonData
+ cmp r0, #0
+ bne _021ED484
+ add r0, r4, #0
+ mov r1, #9
+ mov r2, #0
+ bl GetMonData
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ beq _021ED47E
+ cmp r0, r6
+ blo _021ED46E
+ sub r0, r0, r6
+ str r0, [sp, #0x10]
+ b _021ED472
+_021ED46E:
+ sub r0, r0, #1
+ str r0, [sp, #0x10]
+_021ED472:
+ add r0, r4, #0
+ mov r1, #9
+ add r2, sp, #0x10
+ bl SetMonData
+ b _021ED484
+_021ED47E:
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021ED484:
+ add r0, r7, #0
+ add r5, r5, #1
+ bl GetPartyCount
+ cmp r5, r0
+ blo _021ED430
+_021ED490:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021ED498: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021ED49C
+MOD05_021ED49C: ; 0x021ED49C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl GetPartyCount
+ add r6, r0, #0
+ mov r5, #0
+ cmp r6, #0
+ ble _021ED4DA
+_021ED4AC:
+ add r0, r7, #0
+ add r1, r5, #0
+ bl GetPartyMonByIndex
+ mov r1, #0x4c
+ mov r2, #0
+ add r4, r0, #0
+ bl GetMonData
+ cmp r0, #0
+ beq _021ED4D4
+ add r0, r4, #0
+ mov r1, #9
+ mov r2, #0
+ bl GetMonData
+ cmp r0, #0
+ bne _021ED4D4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021ED4D4:
+ add r5, r5, #1
+ cmp r5, r6
+ blt _021ED4AC
+_021ED4DA:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED4E0
+MOD05_021ED4E0: ; 0x021ED4E0
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r1, sp, #0
+ bl MOD05_021EC88C
+ ldr r0, [sp]
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ beq _021ED50E
+ ldr r2, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ bl BufferBoxMonNickname
+ ldr r2, [sp]
+ add r0, r4, #0
+ mov r1, #2
+ bl BufferBoxMonOTName
+_021ED50E:
+ ldr r0, [sp, #4]
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ beq _021ED526
+ ldr r2, [sp, #4]
+ add r0, r4, #0
+ mov r1, #1
+ bl BufferBoxMonNickname
+_021ED526:
+ add sp, #8
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED52C
+MOD05_021ED52C: ; 0x021ED52C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r1, sp, #0x18
+ ldrb r6, [r1, #0x10]
+ add r5, r0, #0
+ add r7, r2, #0
+ add r1, r6, #0
+ str r3, [sp, #8]
+ bl Sav2_DayCare_GetMonX
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021EC458
+ add r5, r0, #0
+ ldr r0, [sp, #0x2c]
+ add r1, r4, #0
+ add r2, r5, #0
+ bl BufferBoxMonNickname
+ ldr r0, [sp, #0xc]
+ bl DayCareMon_GetSteps
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021EC744
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0
+ mov r3, #3
+ bl BufferIntegerAsString
+ add r0, r5, #0
+ mov r1, #0x6f
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #2
+ beq _021ED5B4
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl GetBoxMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x1d
+ beq _021ED5A4
+ cmp r0, #0x20
+ bne _021ED5B4
+_021ED5A4:
+ add r0, r5, #0
+ mov r1, #0x4d
+ mov r2, #0
+ bl GetBoxMonData
+ cmp r0, #0
+ bne _021ED5B4
+ mov r4, #2
+_021ED5B4:
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #8]
+ add r2, r4, #0
+ bl BufferGenderSymbol
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED5C4
+MOD05_021ED5C4: ; 0x021ED5C4
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ bl GetPartyMonByIndex
+ add r4, r0, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ bl BufferBoxMonNickname
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021ED5EC
+MOD05_021ED5EC: ; 0x021ED5EC
+ push {r4, lr}
+ add r4, r0, #0
+ bl Sav2_DayCare_GetEggPID
+ cmp r0, #0
+ beq _021ED5FC
+ mov r0, #1
+ pop {r4, pc}
+_021ED5FC:
+ add r0, r4, #0
+ bl MOD05_021EC464
+ cmp r0, #0
+ beq _021ED60E
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r4, pc}
+_021ED60E:
+ mov r0, #0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED614
+MOD05_021ED614: ; 0x021ED614
+ cmp r0, #0x14
+ bhi _021ED620
+ bhs _021ED632
+ cmp r0, #0
+ beq _021ED62E
+ b _021ED63E
+_021ED620:
+ cmp r0, #0x32
+ bhi _021ED628
+ beq _021ED636
+ b _021ED63E
+_021ED628:
+ cmp r0, #0x46
+ beq _021ED63A
+ b _021ED63E
+_021ED62E:
+ mov r0, #3
+ bx lr
+_021ED632:
+ mov r0, #2
+ bx lr
+_021ED636:
+ mov r0, #1
+ bx lr
+_021ED63A:
+ mov r0, #0
+ bx lr
+_021ED63E:
+ mov r0, #0
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED644
+MOD05_021ED644: ; 0x021ED644
+ push {r3, lr}
+ bl MOD05_021ED320
+ bl MOD05_021ED614
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021ED650
+MOD05_021ED650: ; 0x021ED650
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ bl String_ctor
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ bl AllocMonZeroed
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ mov r5, #0
+ add r7, sp, #0x34
+_021ED67C:
+ add r1, r5, #0
+ add r0, r4, #0
+ add r1, #0x36
+ mov r2, #0
+ bl GetMonData
+ lsl r1, r5, #1
+ strh r0, [r7, r1]
+ add r1, r5, #0
+ add r0, r4, #0
+ add r1, #0x3a
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x30
+ strb r0, [r1, r5]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #4
+ blo _021ED67C
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl GetMonData
+ add r7, r0, #0
+ mov r5, #0
+_021ED6B4:
+ add r1, r5, #0
+ add r0, r4, #0
+ add r1, #0x46
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x24
+ add r1, #2
+ strb r0, [r1, r5]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #6
+ blo _021ED6B4
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #9]
+ add r0, r4, #0
+ mov r1, #0x79
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #8]
+ add r0, r4, #0
+ mov r1, #0xb
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #7]
+ add r0, r4, #0
+ mov r1, #0x99
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #0xa]
+ add r0, r4, #0
+ mov r1, #0x6e
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #5]
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x90
+ bl GetMonData
+ add r0, r4, #0
+ mov r1, #0x9c
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #3]
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #0
+ bl GetMonData
+ str r0, [sp, #0x2c]
+ add r0, r4, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #4]
+ ldr r1, _021ED93C ; =0x000001EA
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ bne _021ED788
+ add r0, r4, #0
+ mov r1, #0x97
+ mov r2, #0
+ bl GetMonData
+ add r5, r0, #0
+ mov r0, #2
+ mov r1, #1
+ bl FUN_02015CF8
+ cmp r5, r0
+ bne _021ED788
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0
+ bl CalcShininessByOtIdAndPersonality
+ cmp r0, #0
+ beq _021ED788
+_021ED774:
+ add r0, r7, #0
+ bl PRandom
+ add r7, r0, #0
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0
+ bl CalcShininessByOtIdAndPersonality
+ cmp r0, #0
+ bne _021ED774
+_021ED788:
+ mov r2, #1
+ str r2, [sp]
+ str r7, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x14]
+ add r0, r6, #0
+ mov r3, #0x20
+ bl CreateMon
+ mov r5, #0
+ add r7, sp, #0x34
+_021ED7A2:
+ add r1, r5, #0
+ lsl r2, r5, #1
+ add r0, r6, #0
+ add r1, #0x36
+ add r2, r7, r2
+ bl SetMonData
+ add r1, r5, #0
+ add r2, sp, #0x30
+ add r0, r6, #0
+ add r1, #0x3a
+ add r2, r2, r5
+ bl SetMonData
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #4
+ blo _021ED7A2
+ add r7, sp, #0x24
+ mov r5, #0
+ add r7, #2
+_021ED7CE:
+ add r1, r5, #0
+ add r0, r6, #0
+ add r1, #0x46
+ add r2, r7, r5
+ bl SetMonData
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #6
+ blo _021ED7CE
+ add r2, sp, #0x20
+ add r0, r6, #0
+ mov r1, #0xc
+ add r2, #1
+ bl SetMonData
+ add r0, r6, #0
+ mov r1, #0x79
+ add r2, sp, #0x20
+ bl SetMonData
+ add r2, sp, #0x1c
+ add r0, r6, #0
+ mov r1, #0xb
+ add r2, #3
+ bl SetMonData
+ add r2, sp, #0x1c
+ mov r1, #0x78
+ add r0, sp, #0x18
+ strb r1, [r0, #6]
+ add r0, r6, #0
+ mov r1, #9
+ add r2, #2
+ bl SetMonData
+ add r2, sp, #0x20
+ add r0, r6, #0
+ mov r1, #0x99
+ add r2, #2
+ bl SetMonData
+ add r2, sp, #0x1c
+ add r0, r6, #0
+ mov r1, #0x6e
+ add r2, #1
+ bl SetMonData
+ ldr r2, [sp, #0x10]
+ add r0, r6, #0
+ mov r1, #0x90
+ bl SetMonData
+ add r2, sp, #0x18
+ add r0, r6, #0
+ mov r1, #0x9c
+ add r2, #3
+ bl SetMonData
+ add r0, r6, #0
+ mov r1, #7
+ add r2, sp, #0x2c
+ bl SetMonData
+ add r0, r6, #0
+ mov r1, #0x70
+ add r2, sp, #0x1c
+ bl SetMonData
+ add r0, r4, #0
+ mov r1, #0x97
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strh r0, [r1, #0xc]
+ add r0, r4, #0
+ mov r1, #0x91
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #2]
+ add r0, r4, #0
+ mov r1, #0x92
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #1]
+ add r0, r4, #0
+ mov r1, #0x93
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1]
+ add r0, r6, #0
+ mov r1, #0x97
+ add r2, sp, #0x24
+ bl SetMonData
+ add r2, sp, #0x18
+ add r0, r6, #0
+ mov r1, #0x91
+ add r2, #2
+ bl SetMonData
+ add r2, sp, #0x18
+ add r0, r6, #0
+ mov r1, #0x92
+ add r2, #1
+ bl SetMonData
+ add r0, r6, #0
+ mov r1, #0x93
+ add r2, sp, #0x18
+ bl SetMonData
+ add r0, r4, #0
+ mov r1, #0x98
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strh r0, [r1, #0xc]
+ add r0, r4, #0
+ mov r1, #0x94
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #2]
+ add r0, r4, #0
+ mov r1, #0x95
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1, #1]
+ add r0, r4, #0
+ mov r1, #0x96
+ mov r2, #0
+ bl GetMonData
+ add r1, sp, #0x18
+ strb r0, [r1]
+ add r0, r6, #0
+ mov r1, #0x98
+ add r2, sp, #0x24
+ bl SetMonData
+ add r2, sp, #0x18
+ add r0, r6, #0
+ mov r1, #0x94
+ add r2, #2
+ bl SetMonData
+ add r2, sp, #0x18
+ add r0, r6, #0
+ mov r1, #0x95
+ add r2, #1
+ bl SetMonData
+ add r0, r6, #0
+ mov r1, #0x96
+ add r2, sp, #0x18
+ bl SetMonData
+ add r0, r6, #0
+ add r1, r4, #0
+ bl CopyPokemonToPokemon
+ ldr r0, [sp, #0x10]
+ bl String_dtor
+ add r0, r6, #0
+ bl FreeToHeap
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021ED93C: .word 0x000001EA
+
+ thumb_func_start MOD05_021ED940
+MOD05_021ED940: ; 0x021ED940
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ mov r3, #0x46
+ add r2, sp, #0
+ strb r3, [r2, #3]
+ mov r5, #0
+ strb r5, [r2, #2]
+ mov r3, #4
+ strb r3, [r2, #1]
+ add r4, r0, #0
+ strb r5, [r2]
+ bl MOD05_021ED650
+ add r2, sp, #0
+ add r0, r4, #0
+ mov r1, #0x4c
+ add r2, #3
+ bl SetMonData
+ add r0, r4, #0
+ mov r1, #5
+ add r2, r5, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r5, #0
+ add r2, sp, #4
+ bl GetSpeciesNameIntoArray
+ add r0, r4, #0
+ mov r1, #0x74
+ add r2, sp, #4
+ bl SetMonData
+ add r2, sp, #0
+ add r0, r4, #0
+ mov r1, #0x4d
+ add r2, #2
+ bl SetMonData
+ add r2, sp, #0
+ add r0, r4, #0
+ mov r1, #0x9a
+ add r2, #1
+ bl SetMonData
+ add r0, r4, #0
+ mov r1, #0x9b
+ add r2, sp, #0
+ bl SetMonData
+ add r0, r4, #0
+ bl CalcMonLevelAndStats
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED9B4
+MOD05_021ED9B4: ; 0x021ED9B4
+ push {r3, lr}
+ bl MOD05_021ED214
+ bl MOD05_021ED614
+ pop {r3, pc}
+
+ .section .rodata
+
+ .global UNK05_021F7AF8
+UNK05_021F7AF8: ; 0x021F7AF8
+ .byte 0x70, 0x00, 0xD6, 0x00
+ .byte 0x2F, 0x01, 0x91, 0x01, 0xF5, 0x01, 0x63, 0x02, 0xC3, 0x02, 0x35, 0x03, 0xA0, 0x03, 0x07, 0x04
+ .byte 0x61, 0x04, 0xC8, 0x04, 0xC9, 0x04
+
+ .global UNK05_021F7B12
+UNK05_021F7B12: ; 0x021F7B12
+ .byte 0x68, 0x01
+
+ .global UNK05_021F7B14
+UNK05_021F7B14: ; 0x021F7B14
+ .byte 0xFF, 0x00
+
+ .global UNK05_021F7B16
+UNK05_021F7B16: ; 0x021F7B16
+ .byte 0xCA, 0x00, 0x2A, 0x01, 0xFE, 0x00
+ .byte 0xB7, 0x00, 0xB7, 0x01, 0x3A, 0x01, 0x7A, 0x00, 0xB6, 0x01, 0x3B, 0x01, 0xB9, 0x00, 0xBE, 0x01
+ .byte 0x3C, 0x01, 0x8F, 0x00, 0xCA, 0x01, 0x3D, 0x01, 0xE2, 0x00, 0x96, 0x01, 0x3E, 0x01, 0x3B, 0x01
+ .byte 0xB8, 0x01, 0x3F, 0x01, 0x71, 0x00, 0xB1, 0x01, 0x40, 0x01, 0x66, 0x01
+
+ .global UNK05_021F7B48
+UNK05_021F7B48: ; 0x021F7B48
+ .byte 0x21, 0x4E, 0x71, 0x00
+ .byte 0x82, 0x00, 0xDB, 0x00, 0xCC, 0x00, 0x50, 0x00, 0x59, 0x01, 0x40, 0x01, 0xAE, 0x00, 0x13, 0x01
+ .byte 0x0B, 0x01, 0x85, 0x00, 0xB5, 0x01, 0x24, 0x4E, 0xBB, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00
+ .byte 0xC8, 0x00, 0xFB, 0x00, 0x0E, 0x00, 0x5D, 0x01, 0xF2, 0x00, 0x97, 0x01, 0xE8, 0x00, 0x8A, 0x01
+ .byte 0x27, 0x4E, 0xF3, 0x00, 0x72, 0x00, 0x36, 0x00, 0xC1, 0x00, 0xAF, 0x00, 0x1F, 0x01, 0x2C, 0x01
+ .byte 0x19, 0x01, 0x4A, 0x01, 0xFC, 0x00, 0x88, 0x01, 0xC5, 0x01, 0x30, 0x4E, 0xE4, 0x00, 0xB9, 0x00
+ .byte 0xC1, 0x00, 0xD3, 0x00, 0x3A, 0x01, 0x93, 0x01, 0x9D, 0x01, 0xFD, 0x00, 0x33, 0x4E, 0x67, 0x00
+ .byte 0xAC, 0x00, 0x9A, 0x00, 0x2C, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFD, 0x00, 0xCF, 0x00, 0x83, 0x01
+ .byte 0x7E, 0x01, 0x35, 0x4E, 0xB9, 0x00, 0xCE, 0x00, 0xB8, 0x00, 0x62, 0x00, 0xA1, 0x00, 0x36, 0x01
+ .byte 0x8F, 0x00, 0x12, 0x00, 0xFD, 0x00, 0x37, 0x4E, 0xE4, 0x00, 0x15, 0x00, 0xB4, 0x00, 0xFB, 0x00
+ .byte 0x31, 0x01, 0xB8, 0x00, 0x56, 0x01, 0x32, 0x00, 0x3B, 0x4E, 0xAF, 0x00, 0xDB, 0x00, 0x44, 0x00
+ .byte 0xE5, 0x00, 0x9D, 0x00, 0xE8, 0x00, 0x0E, 0x00, 0x32, 0x01, 0x90, 0x01, 0x3D, 0x4E, 0x30, 0x00
+ .byte 0x32, 0x00, 0x24, 0x00, 0x74, 0x00, 0xCC, 0x00, 0x44, 0x00, 0xFB, 0x00, 0xE4, 0x00, 0x40, 0x4E
+ .byte 0x44, 0x00, 0x32, 0x00, 0x30, 0x00, 0x24, 0x00, 0x85, 0x00, 0x5D, 0x00, 0xFB, 0x00, 0x85, 0x01
+ .byte 0x45, 0x4E, 0xB9, 0x00, 0x5F, 0x00, 0xAF, 0x00, 0xB4, 0x00, 0x32, 0x00, 0x50, 0x01, 0xF4, 0x00
+ .byte 0x01, 0x01, 0x8A, 0x01, 0x46, 0x01, 0x9C, 0x01, 0x49, 0x4E, 0x62, 0x00, 0xE4, 0x00, 0xB9, 0x00
+ .byte 0x10, 0x00, 0x12, 0x00, 0xAE, 0x00, 0xA1, 0x01, 0x5F, 0x00, 0xAC, 0x01, 0x9D, 0x01, 0x4B, 0x4E
+ .byte 0x0E, 0x00, 0x4B, 0x00, 0xAF, 0x00, 0xEB, 0x00, 0xCC, 0x00, 0x13, 0x01, 0x41, 0x01, 0x4E, 0x4E
+ .byte 0xCE, 0x00, 0x67, 0x00, 0x44, 0x00, 0x3C, 0x00, 0xAF, 0x00, 0xE6, 0x00, 0x71, 0x00, 0xE4, 0x00
+ .byte 0xE8, 0x00, 0xC2, 0x01, 0xB8, 0x01, 0x50, 0x4E, 0xE2, 0x00, 0x67, 0x00, 0xCA, 0x00, 0x44, 0x01
+ .byte 0x61, 0x00, 0xEA, 0x00, 0x86, 0x01, 0xC2, 0x01, 0x52, 0x4E, 0xB9, 0x00, 0x67, 0x00, 0xF6, 0x00
+ .byte 0xE4, 0x00, 0xFB, 0x00, 0xFD, 0x00, 0x9D, 0x00, 0xAA, 0x01, 0x36, 0x01, 0x54, 0x4E, 0xB4, 0x00
+ .byte 0xCC, 0x00, 0x5F, 0x00, 0x85, 0x00, 0xF4, 0x00, 0x12, 0x01, 0x3C, 0x01, 0xAF, 0x00, 0x83, 0x01
+ .byte 0x82, 0x01, 0x56, 0x4E, 0x5F, 0x00, 0x3C, 0x00, 0xC1, 0x00, 0x71, 0x00, 0xF8, 0x00, 0x5E, 0x00
+ .byte 0xEE, 0x00, 0x1F, 0x01, 0x6D, 0x00, 0x19, 0x01, 0xAA, 0x01, 0x58, 0x4E, 0x9D, 0x00, 0xC1, 0x00
+ .byte 0x60, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFB, 0x00, 0x17, 0x01, 0x09, 0x01, 0x72, 0x01, 0x5A, 0x4E
+ .byte 0x22, 0x00, 0xDB, 0x00, 0xF2, 0x00, 0x25, 0x00, 0x53, 0x00, 0x50, 0x01, 0x01, 0x01, 0x26, 0x00
+ .byte 0x8A, 0x01, 0x5C, 0x4E, 0x36, 0x00, 0x96, 0x00, 0x3D, 0x00, 0x72, 0x00, 0xAA, 0x00, 0x5A, 0x01
+ .byte 0x2D, 0x01, 0x55, 0x01, 0x1F, 0x01, 0x1B, 0x01, 0x5F, 0x4E, 0xE3, 0x00, 0x70, 0x00, 0x1A, 0x01
+ .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x7B, 0x01, 0x81, 0x01, 0x62, 0x4E, 0x71, 0x00, 0x60, 0x00
+ .byte 0x1B, 0x00, 0xE3, 0x00, 0x09, 0x01, 0x44, 0x00, 0x9D, 0x00, 0x72, 0x01, 0x07, 0x00, 0x09, 0x00
+ .byte 0x08, 0x00, 0xA2, 0x01, 0x65, 0x4E, 0x0E, 0x00, 0xE3, 0x00, 0x73, 0x00, 0xEB, 0x00, 0x8D, 0x00
+ .byte 0x13, 0x01, 0x59, 0x01, 0x84, 0x01, 0x41, 0x01, 0x68, 0x4E, 0x3E, 0x00, 0xF3, 0x00, 0xE5, 0x00
+ .byte 0x72, 0x00, 0xDB, 0x00, 0x6D, 0x00, 0x1A, 0x01, 0x6F, 0x01, 0x6A, 0x4E, 0x05, 0x00, 0x9D, 0x00
+ .byte 0x4F, 0x01, 0x67, 0x01, 0xAF, 0x00, 0x6D, 0x4E, 0xAC, 0x00, 0x25, 0x00, 0x18, 0x00, 0x5F, 0x00
+ .byte 0xCC, 0x00, 0x26, 0x00, 0x20, 0x00, 0x6F, 0x4E, 0xDB, 0x00, 0xBB, 0x00, 0xF8, 0x00, 0x17, 0x00
+ .byte 0x2C, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0x7E, 0x01, 0x4F, 0x01, 0xAC, 0x01, 0x73, 0x4E, 0xD3, 0x00
+ .byte 0xC1, 0x00, 0x77, 0x00, 0x10, 0x00, 0x62, 0x00, 0xAF, 0x00, 0x29, 0x01, 0xAE, 0x00, 0x57, 0x01
+ .byte 0xBD, 0x00, 0x90, 0x01, 0x74, 0x4E, 0x62, 0x00, 0x30, 0x00, 0x72, 0x00, 0xB9, 0x00, 0xAF, 0x00
+ .byte 0x1B, 0x01, 0x77, 0x00, 0x9D, 0x01, 0x76, 0x4E, 0x7A, 0x00, 0xC3, 0x00, 0x32, 0x00, 0x20, 0x00
+ .byte 0x15, 0x00, 0xE3, 0x00, 0xFC, 0x00, 0x4D, 0x01, 0x44, 0x01, 0x78, 0x4E, 0x72, 0x00, 0xD4, 0x00
+ .byte 0x7A, 0x00, 0x1E, 0x01, 0xAE, 0x00, 0x45, 0x01, 0x99, 0x00, 0xA9, 0x01, 0xFE, 0x00, 0x00, 0x01
+ .byte 0xFF, 0x00, 0x7A, 0x4E, 0x3D, 0x00, 0x24, 0x00, 0x70, 0x00, 0xE5, 0x00, 0x67, 0x00, 0x4D, 0x01
+ .byte 0x55, 0x01, 0x7C, 0x4E, 0x95, 0x00, 0xC3, 0x00, 0x72, 0x00, 0x36, 0x01, 0x05, 0x01, 0x20, 0x01
+ .byte 0x99, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x7F, 0x4E, 0x9D, 0x00, 0xAF, 0x00, 0x99, 0x00
+ .byte 0x4F, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x5E, 0x01, 0x80, 0x4E, 0x70, 0x00, 0x12, 0x01, 0x10, 0x01
+ .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xA1, 0x01, 0x04, 0x01, 0xAB, 0x01, 0x82, 0x4E, 0x5B, 0x00
+ .byte 0x72, 0x00, 0x85, 0x00, 0xAF, 0x00, 0x15, 0x00, 0x1A, 0x01, 0x0E, 0x00, 0x41, 0x01, 0xF6, 0x00
+ .byte 0x86, 0x4E, 0xEB, 0x00, 0xEC, 0x00, 0x73, 0x00, 0xF6, 0x00, 0xF4, 0x00, 0x13, 0x01, 0xAE, 0x00
+ .byte 0x0B, 0x01, 0x7D, 0x01, 0xB5, 0x01, 0x88, 0x4E, 0x9D, 0x00, 0xF6, 0x00, 0xBB, 0x00, 0x67, 0x00
+ .byte 0x82, 0x00, 0xC3, 0x00, 0x0E, 0x00, 0x18, 0x00, 0xBA, 0x01, 0x8C, 0x4E, 0xBB, 0x00, 0xDE, 0x00
+ .byte 0x22, 0x00, 0xAE, 0x00, 0x09, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0xA4, 0x00, 0x85, 0x00, 0x67, 0x01
+ .byte 0x8D, 0x4E, 0x67, 0x00, 0x95, 0x00, 0x3C, 0x00, 0xC2, 0x00, 0xDC, 0x00, 0x05, 0x01, 0x20, 0x01
+ .byte 0xB4, 0x00, 0xAE, 0x00, 0x8F, 0x4E, 0xF2, 0x00, 0xB3, 0x00, 0x9D, 0x00, 0x44, 0x00, 0xDE, 0x00
+ .byte 0x0E, 0x00, 0xAE, 0x00, 0x32, 0x01, 0x97, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x91, 0x4E
+ .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01
+ .byte 0x92, 0x4E, 0xAF, 0x00, 0x5D, 0x00, 0x48, 0x00, 0x73, 0x00, 0x85, 0x00, 0x49, 0x00, 0x0B, 0x01
+ .byte 0x1B, 0x01, 0xB5, 0x01, 0x93, 0x4E, 0x17, 0x00, 0xC1, 0x00, 0x74, 0x00, 0xDB, 0x00, 0x32, 0x00
+ .byte 0x44, 0x00, 0x32, 0x01, 0xA4, 0x00, 0x26, 0x00, 0x1B, 0x01, 0x67, 0x01, 0x94, 0x4E, 0xAF, 0x00
+ .byte 0x3E, 0x00, 0xBE, 0x00, 0x32, 0x00, 0x96, 0x00, 0x52, 0x00, 0xE1, 0x00, 0x44, 0x01, 0x96, 0x4E
+ .byte 0x3C, 0x00, 0x72, 0x00, 0x38, 0x00, 0xD6, 0x00, 0x2C, 0x01, 0xBD, 0x00, 0x91, 0x01, 0x9A, 0x4E
+ .byte 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01
+ .byte 0x2A, 0x01, 0x9B, 0x4E, 0x44, 0x00, 0xDB, 0x00, 0xE2, 0x00, 0x0D, 0x00, 0xB3, 0x00, 0x71, 0x00
+ .byte 0xCB, 0x00, 0x3E, 0x01, 0x95, 0x01, 0x90, 0x01, 0x9F, 0x4E, 0x1F, 0x00, 0xAF, 0x00, 0xCE, 0x00
+ .byte 0xB9, 0x00, 0x62, 0x00, 0x72, 0x01, 0x6C, 0x01, 0xA3, 0x4E, 0xC1, 0x00, 0xA4, 0x00, 0x41, 0x01
+ .byte 0x1F, 0x01, 0x5D, 0x01, 0xAE, 0x00, 0xD6, 0x00, 0x20, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x5A, 0x00
+ .byte 0xA5, 0x4E, 0xCC, 0x00, 0xAF, 0x00, 0xCB, 0x00, 0xAE, 0x00, 0x41, 0x01, 0x11, 0x01, 0x19, 0x01
+ .byte 0x39, 0x01, 0x57, 0x01, 0xAA, 0x4E, 0x3D, 0x00, 0x3E, 0x00, 0x15, 0x00, 0x30, 0x00, 0x72, 0x00
+ .byte 0x9D, 0x00, 0xBF, 0x00, 0x1A, 0x01, 0x7A, 0x01, 0x86, 0x01, 0xAC, 0x4E, 0x3D, 0x00, 0x3E, 0x00
+ .byte 0xE5, 0x00, 0x5B, 0x00, 0xAF, 0x00, 0x1A, 0x01, 0x6D, 0x00, 0x55, 0x01, 0xC4, 0x00, 0x67, 0x00
+ .byte 0xAE, 0x4E, 0x12, 0x00, 0xE4, 0x00, 0xC1, 0x00, 0xD3, 0x00, 0xE1, 0x00, 0xAE, 0x00, 0x74, 0x01
+ .byte 0xAF, 0x4E, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xA4, 0x00, 0x12, 0x00
+ .byte 0xE4, 0x00, 0xB3, 0x4E, 0x71, 0x00, 0x36, 0x00, 0x72, 0x00, 0x30, 0x00, 0xE1, 0x00, 0x5D, 0x01
+ .byte 0x97, 0x01, 0xB8, 0x4E, 0x16, 0x00, 0x49, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xAF, 0x00, 0x0B, 0x01
+ .byte 0x13, 0x01, 0x40, 0x01, 0xB5, 0x01, 0x38, 0x01, 0x7A, 0x01, 0xBB, 0x4E, 0x9A, 0x00, 0x62, 0x00
+ .byte 0xB3, 0x00, 0x25, 0x00, 0xC1, 0x00, 0x57, 0x01, 0x50, 0x01, 0x32, 0x01, 0x26, 0x00, 0x18, 0x00
+ .byte 0x8A, 0x01, 0xBE, 0x4E, 0xF2, 0x00, 0x25, 0x00, 0x38, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x01
+ .byte 0x5A, 0x01, 0x51, 0x01, 0x08, 0x00, 0xE8, 0x00, 0x5D, 0x01, 0xC1, 0x4E, 0x26, 0x00, 0xE4, 0x00
+ .byte 0xA3, 0x00, 0x74, 0x00, 0xB3, 0x00, 0xA4, 0x00, 0x0F, 0x01, 0x12, 0x01, 0x83, 0x01, 0xCC, 0x00
+ .byte 0x57, 0x01, 0xC3, 0x4E, 0x77, 0x00, 0x30, 0x00, 0xB9, 0x00, 0x11, 0x00, 0x12, 0x00, 0x8F, 0x00
+ .byte 0x29, 0x01, 0x61, 0x00, 0x65, 0x00, 0xC5, 0x4E, 0x3C, 0x00, 0x75, 0x00, 0x3E, 0x01, 0x95, 0x01
+ .byte 0x67, 0x00, 0xE3, 0x00, 0x1A, 0x01, 0xC2, 0x01, 0xC7, 0x4E, 0x3C, 0x00, 0x32, 0x00, 0x31, 0x00
+ .byte 0xE2, 0x00, 0xE4, 0x00, 0x44, 0x01, 0x86, 0x01, 0x8E, 0x01, 0xCA, 0x4E, 0xAF, 0x00, 0x67, 0x00
+ .byte 0x85, 0x00, 0x3C, 0x00, 0xFA, 0x00, 0x61, 0x00, 0x36, 0x00, 0xCC, 0x4E, 0xB3, 0x00, 0x75, 0x00
+ .byte 0xD9, 0x00, 0xE3, 0x00, 0x03, 0x00, 0x11, 0x01, 0x0C, 0x01, 0xFC, 0x00, 0x09, 0x00, 0x41, 0x01
+ .byte 0xCD, 0x4E, 0xD9, 0x00, 0x76, 0x00, 0x85, 0x00, 0xBB, 0x00, 0x96, 0x00, 0x66, 0x00, 0x11, 0x01
+ .byte 0xA4, 0x00, 0x39, 0x01, 0x57, 0x01, 0xCE, 0x4E, 0xC3, 0x00, 0xD9, 0x00, 0xB9, 0x00, 0x11, 0x01
+ .byte 0x39, 0x01, 0x83, 0x01, 0x57, 0x01, 0x64, 0x01, 0xCF, 0x4E, 0xD9, 0x00, 0x77, 0x00, 0x40, 0x00
+ .byte 0xC1, 0x00, 0xF8, 0x00, 0xA4, 0x00, 0xF4, 0x00, 0xA1, 0x01, 0x77, 0x01, 0x7D, 0x01, 0xD1, 0x4E
+ .byte 0x72, 0x00, 0x41, 0x00, 0x62, 0x00, 0xB9, 0x00, 0xD3, 0x00, 0xF4, 0x00, 0x29, 0x01, 0x1F, 0x01
+ .byte 0xAC, 0x01, 0x85, 0x01, 0xD3, 0x4E, 0x24, 0x00, 0x22, 0x00, 0xDB, 0x00, 0x67, 0x00, 0x73, 0x00
+ .byte 0x3C, 0x01, 0x0C, 0x01, 0x04, 0x01, 0x1C, 0x00, 0xD7, 0x4E, 0x71, 0x00, 0xD9, 0x00, 0x85, 0x00
+ .byte 0xF8, 0x00, 0xBB, 0x00, 0xC3, 0x00, 0x30, 0x00, 0xA4, 0x00, 0xC5, 0x01, 0x14, 0x01, 0x1F, 0x01
+ .byte 0xD9, 0x4E, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xDB, 0x4E
+ .byte 0x5D, 0x00, 0xE3, 0x00, 0x26, 0x00, 0x73, 0x00, 0x85, 0x00, 0x0E, 0x01, 0xF4, 0x00, 0x38, 0x01
+ .byte 0x84, 0x01, 0xDE, 0x4E, 0x44, 0x00, 0x67, 0x00, 0xE4, 0x00, 0x61, 0x00, 0xB4, 0x00, 0x15, 0x00
+ .byte 0x03, 0x00, 0xFB, 0x00, 0xFC, 0x00, 0x57, 0x01, 0x54, 0x01, 0xDF, 0x4E, 0x40, 0x01, 0xE3, 0x00
+ .byte 0x49, 0x00, 0x0B, 0x01, 0xAE, 0x00, 0x0E, 0x01, 0x13, 0x01, 0xE6, 0x00, 0xE1, 0x4E, 0x12, 0x00
+ .byte 0xB3, 0x00, 0x8D, 0x00, 0x44, 0x01, 0x3E, 0x01, 0x6C, 0x01, 0xB9, 0x00, 0xE4, 0x00, 0xE2, 0x4E
+ .byte 0x22, 0x00, 0xF6, 0x00, 0xDB, 0x00, 0xAE, 0x00, 0x2C, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00
+ .byte 0x44, 0x00, 0xE3, 0x00, 0x18, 0x00, 0xE6, 0x4E, 0x12, 0x00, 0x41, 0x00, 0x77, 0x00, 0x11, 0x00
+ .byte 0x8F, 0x00, 0x6D, 0x00, 0x29, 0x01, 0xC3, 0x00, 0x77, 0x01, 0x67, 0x00, 0xB9, 0x00, 0xE8, 0x4E
+ .byte 0x67, 0x00, 0xC2, 0x00, 0xF4, 0x00, 0x1E, 0x01, 0x06, 0x01, 0x85, 0x01, 0xA9, 0x01, 0xAE, 0x00
+ .byte 0xB4, 0x00, 0xD2, 0x01, 0xEB, 0x4E, 0x24, 0x00, 0x85, 0x00, 0xC1, 0x00, 0xF8, 0x00, 0xFB, 0x00
+ .byte 0xF4, 0x00, 0x11, 0x01, 0x15, 0x01, 0x18, 0x00, 0xF3, 0x00, 0xEC, 0x4E, 0x73, 0x00, 0x2A, 0x00
+ .byte 0xAF, 0x00, 0x81, 0x00, 0x44, 0x00, 0x48, 0x01, 0x17, 0x01, 0x26, 0x00, 0x86, 0x01, 0xEE, 0x4E
+ .byte 0x75, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00, 0x1D, 0x00, 0x36, 0x01, 0xAE, 0x00, 0x78, 0x01
+ .byte 0x15, 0x01, 0xAD, 0x00, 0xEF, 0x4E, 0xE8, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x44, 0x00, 0x48, 0x01
+ .byte 0x61, 0x00, 0xE2, 0x00, 0x26, 0x00, 0x6C, 0x01, 0x90, 0x01, 0xB8, 0x01, 0xF1, 0x4E, 0x76, 0x00
+ .byte 0xB9, 0x00, 0x73, 0x00, 0xD9, 0x00, 0xF2, 0x00, 0xD7, 0x00, 0xAD, 0x00, 0x09, 0x01, 0x72, 0x01
+ .byte 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xF3, 0x4E, 0xAF, 0x00, 0x72, 0x00, 0x3D, 0x00, 0x30, 0x00
+ .byte 0x36, 0x01, 0x44, 0x01, 0x8E, 0x01, 0xF5, 0x4E, 0xE6, 0x00, 0x1A, 0x01, 0x0E, 0x01, 0x6F, 0x01
+ .byte 0x48, 0x01, 0xBD, 0x00, 0xF6, 0x4E, 0x6A, 0x00, 0x75, 0x00, 0xAF, 0x00, 0xCE, 0x00, 0x17, 0x01
+ .byte 0xE4, 0x00, 0x26, 0x00, 0xF7, 0x4E, 0x44, 0x00, 0xB4, 0x00, 0xC1, 0x00, 0x73, 0x00, 0x2C, 0x00
+ .byte 0x32, 0x01, 0xFC, 0x00, 0xCA, 0x01, 0x82, 0x01, 0xE4, 0x00, 0xA4, 0x01, 0x08, 0x00, 0xF8, 0x4E
+ .byte 0xF2, 0x00, 0x24, 0x00, 0x45, 0x00, 0x44, 0x00, 0xE8, 0x00, 0x39, 0x01, 0x19, 0x01, 0xD6, 0x00
+ .byte 0xEE, 0x00, 0x26, 0x00, 0x72, 0x01, 0x90, 0x01, 0xFA, 0x4E, 0x97, 0x00, 0x01, 0x01, 0xAE, 0x00
+ .byte 0x6C, 0x00, 0x06, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x4E, 0x24, 0x00, 0x2C, 0x00
+ .byte 0x22, 0x00, 0x9D, 0x00, 0xF6, 0x00, 0x55, 0x01, 0x4D, 0x01, 0x26, 0x00, 0x5A, 0x00, 0xAE, 0x00
+ .byte 0xFE, 0x4E, 0x9D, 0x00, 0x67, 0x00, 0x36, 0x00, 0x85, 0x00, 0x70, 0x00, 0x13, 0x01, 0x6D, 0x00
+ .byte 0x4D, 0x01, 0x0B, 0x01, 0x88, 0x01, 0xFF, 0x4E, 0x3E, 0x00, 0xBE, 0x00, 0x30, 0x00, 0x72, 0x00
+ .byte 0x67, 0x00, 0x56, 0x00, 0x5E, 0x01, 0xAD, 0x00, 0xAF, 0x00, 0x01, 0x4F, 0x3E, 0x00, 0x62, 0x00
+ .byte 0xF8, 0x00, 0x96, 0x00, 0xE5, 0x00, 0x2D, 0x01, 0xA4, 0x01, 0x08, 0x00, 0x02, 0x4F, 0xEF, 0x00
+ .byte 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00, 0x5A, 0x01, 0x96, 0x00
+ .byte 0x03, 0x4F, 0x41, 0x00, 0xE4, 0x00, 0x12, 0x00, 0x8F, 0x00, 0xAE, 0x00, 0x9D, 0x01, 0x74, 0x01
+ .byte 0x04, 0x4F, 0x53, 0x00, 0x63, 0x00, 0xE4, 0x00, 0x44, 0x00, 0xB4, 0x00, 0xB3, 0x00, 0xFB, 0x00
+ .byte 0x05, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xA1, 0x01, 0x82, 0x01, 0x07, 0x4F, 0x74, 0x00, 0x22, 0x00
+ .byte 0xF6, 0x00, 0xAD, 0x00, 0x44, 0x00, 0x5A, 0x00, 0x1B, 0x01, 0xA4, 0x01, 0x0A, 0x4F, 0xB4, 0x00
+ .byte 0x32, 0x00, 0x2C, 0x00, 0xCF, 0x00, 0xF4, 0x00, 0x46, 0x01, 0x25, 0x00, 0x18, 0x00, 0xAC, 0x01
+ .byte 0x0C, 0x4F, 0xE5, 0x00, 0x88, 0x00, 0xB7, 0x00, 0xAA, 0x00, 0x0E, 0x01, 0x44, 0x00, 0x9A, 0x01
+ .byte 0xA2, 0x01, 0x0E, 0x4F, 0x60, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x11, 0x01, 0x08, 0x00, 0x65, 0x01
+ .byte 0x0F, 0x4F, 0x02, 0x00, 0x70, 0x00, 0x1B, 0x00, 0x60, 0x00, 0xEE, 0x00, 0x07, 0x00, 0x08, 0x00
+ .byte 0xDF, 0x00, 0x10, 0x4F, 0x02, 0x00, 0x05, 0x00, 0x70, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x09, 0x00
+ .byte 0xB7, 0x00, 0xDF, 0x00, 0x8A, 0x01, 0x11, 0x4F, 0xD9, 0x00, 0xB3, 0x00, 0x45, 0x00, 0xCB, 0x00
+ .byte 0xF4, 0x00, 0xAE, 0x00, 0x0E, 0x01, 0xD6, 0x00, 0x92, 0x00, 0x67, 0x01, 0x26, 0x00, 0x82, 0x01
+ .byte 0x16, 0x4F, 0xE4, 0x00, 0x17, 0x00, 0xC8, 0x00, 0x74, 0x00, 0xF6, 0x00, 0x5D, 0x01, 0xAE, 0x00
+ .byte 0x4E, 0x01, 0x74, 0x01, 0xBA, 0x01, 0x1C, 0x4F, 0xF2, 0x00, 0x2C, 0x01, 0x1B, 0x01, 0x49, 0x00
+ .byte 0xE1, 0x00, 0x32, 0x01, 0x84, 0x01, 0x18, 0x00, 0x40, 0x01, 0xEB, 0x00, 0x59, 0x01, 0xB5, 0x01
+ .byte 0x1F, 0x4F, 0x44, 0x00, 0xB3, 0x00, 0xCB, 0x00, 0xCF, 0x00, 0x9D, 0x00, 0x09, 0x01, 0x32, 0x01
+ .byte 0xE2, 0x00, 0x61, 0x00, 0x90, 0x01, 0x83, 0x01, 0x6C, 0x01, 0x22, 0x4F, 0x1F, 0x01, 0xFD, 0x00
+ .byte 0xAE, 0x00, 0x17, 0x00, 0x2D, 0x01, 0xF3, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x2C, 0x00
+ .byte 0x26, 0x00, 0xAA, 0x01, 0x25, 0x4F, 0x36, 0x01, 0x31, 0x01, 0x57, 0x01, 0x2B, 0x00, 0x19, 0x01
+ .byte 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x7E, 0x01, 0x27, 0x4F, 0xCC, 0x00, 0xE4, 0x00
+ .byte 0xA4, 0x00, 0x41, 0x01, 0x0F, 0x01, 0x0E, 0x01, 0xBD, 0x00, 0x2E, 0x4F, 0xEB, 0x00, 0x4B, 0x00
+ .byte 0xE6, 0x00, 0x49, 0x00, 0xAF, 0x00, 0x37, 0x00, 0x41, 0x01, 0x31, 0x4F, 0x49, 0x00, 0x85, 0x00
+ .byte 0x62, 0x00, 0x0D, 0x00, 0x24, 0x00, 0xCE, 0x00, 0x84, 0x01, 0xA1, 0x01, 0x34, 0x4F, 0xE4, 0x00
+ .byte 0x30, 0x00, 0x1F, 0x01, 0x77, 0x00, 0x63, 0x00, 0x8F, 0x00, 0x12, 0x00, 0x9D, 0x01, 0x36, 0x4F
+ .byte 0x36, 0x00, 0xEF, 0x00, 0x61, 0x00, 0x10, 0x00, 0x5A, 0x01, 0x88, 0x01, 0x1A, 0x01, 0x38, 0x4F
+ .byte 0x32, 0x00, 0x05, 0x01, 0xD4, 0x00, 0x06, 0x01, 0xC2, 0x00, 0x20, 0x01, 0xA9, 0x01, 0x6D, 0x00
+ .byte 0x3B, 0x4F, 0xC1, 0x00, 0x55, 0x01, 0x3C, 0x00, 0x38, 0x00, 0xAA, 0x00, 0x44, 0x01, 0xC2, 0x01
+ .byte 0x3D, 0x4F, 0x39, 0x01, 0xCF, 0x00, 0xCC, 0x00, 0xCE, 0x00, 0x0E, 0x01, 0x84, 0x01, 0x66, 0x01
+ .byte 0x92, 0x01, 0x3F, 0x4F, 0xE4, 0x00, 0xA3, 0x00, 0x22, 0x00, 0xAD, 0x00, 0x32, 0x01, 0xAE, 0x00
+ .byte 0xD6, 0x00, 0x67, 0x01, 0x90, 0x01, 0x42, 0x4F, 0xCB, 0x00, 0xB9, 0x00, 0x10, 0x00, 0x3E, 0x01
+ .byte 0x95, 0x01, 0x90, 0x01, 0xC2, 0x01, 0x45, 0x4F, 0x24, 0x00, 0xAD, 0x00, 0xCF, 0x00, 0x46, 0x01
+ .byte 0x09, 0x01, 0x6C, 0x00, 0x1B, 0x01, 0x48, 0x4F, 0xB9, 0x00, 0xC5, 0x00, 0xC1, 0x00, 0x0E, 0x01
+ .byte 0xEE, 0x00, 0x17, 0x01, 0xDF, 0x00, 0x44, 0x00, 0x66, 0x01, 0xA2, 0x01, 0x4A, 0x4F, 0xE3, 0x00
+ .byte 0x2F, 0x00, 0x1F, 0x01, 0x15, 0x00, 0x41, 0x01, 0x39, 0x01, 0x4B, 0x4F, 0xDE, 0x00, 0xCD, 0x00
+ .byte 0x99, 0x00, 0x26, 0x00, 0x4F, 0x01, 0x4C, 0x4F, 0x0E, 0x01, 0xF4, 0x00, 0xFD, 0x00, 0x39, 0x01
+ .byte 0x11, 0x01, 0xE2, 0x00, 0xA4, 0x00, 0x41, 0x01, 0x83, 0x01, 0xFC, 0x00, 0xAC, 0x01, 0x85, 0x01
+ .byte 0x4E, 0x4F, 0xF4, 0x00, 0x69, 0x00, 0xEC, 0x00, 0xA1, 0x01, 0x04, 0x01, 0x4F, 0x4F, 0x0E, 0x00
+ .byte 0xCE, 0x00, 0x31, 0x01, 0xF4, 0x00, 0xF6, 0x00, 0x41, 0x01, 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01
+ .byte 0xA6, 0x01, 0x82, 0x01, 0x50, 0x4F, 0x1B, 0x01, 0x22, 0x00, 0x17, 0x00, 0x09, 0x01, 0xAE, 0x00
+ .byte 0x67, 0x00, 0xBA, 0x01, 0x97, 0x01, 0x53, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xC1, 0x00
+ .byte 0xFC, 0x00, 0xE2, 0x00, 0xDF, 0x00, 0x80, 0x01, 0x81, 0x01, 0xAB, 0x01, 0xA2, 0x01, 0x55, 0x4F
+ .byte 0xF2, 0x00, 0x1D, 0x00, 0xFD, 0x00, 0xAE, 0x00, 0x81, 0x00, 0xB3, 0x01, 0xA7, 0x01, 0xA8, 0x01
+ .byte 0xA6, 0x01, 0x57, 0x4F, 0xA4, 0x00, 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x58, 0x4F, 0xA4, 0x00
+ .byte 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x59, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x0F, 0x01, 0xE3, 0x00
+ .byte 0x95, 0x01, 0x5A, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x4A, 0x00, 0xE3, 0x00, 0x95, 0x01, 0x5B, 0x4F
+ .byte 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00, 0xB5, 0x01
+ .byte 0x5C, 0x4F, 0x8A, 0x00, 0x97, 0x00, 0x7B, 0x00, 0xDC, 0x00, 0xAE, 0x00, 0xC2, 0x00, 0x5E, 0x4F
+ .byte 0x38, 0x00, 0x26, 0x00, 0x25, 0x00, 0xF6, 0x00, 0x60, 0x4F, 0x26, 0x00, 0x25, 0x00, 0xCF, 0x00
+ .byte 0xAD, 0x00, 0xD6, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x41, 0x01, 0x6F, 0x00, 0x22, 0x00, 0x62, 0x4F
+ .byte 0x50, 0x01, 0xB8, 0x00, 0x22, 0x00, 0xCD, 0x00, 0x6F, 0x00, 0x17, 0x00, 0x19, 0x01, 0xF6, 0x00
+ .byte 0xAA, 0x01, 0x01, 0x01, 0x64, 0x4F, 0x1C, 0x01, 0xCB, 0x00, 0xD6, 0x00, 0x19, 0x01, 0x59, 0x00
+ .byte 0x5A, 0x00, 0x65, 0x4F, 0xF8, 0x00, 0x46, 0x01, 0xA4, 0x00, 0x0F, 0x01, 0xAC, 0x01, 0x85, 0x00
+ .byte 0xF3, 0x00, 0x67, 0x4F, 0xE3, 0x00, 0x9D, 0x00, 0x12, 0x01, 0x32, 0x00, 0xE2, 0x00, 0x11, 0x01
+ .byte 0x0F, 0x01, 0x09, 0x01, 0xFC, 0x00, 0x10, 0x01, 0xAB, 0x01, 0x68, 0x4F, 0x74, 0x00, 0x62, 0x00
+ .byte 0x10, 0x00, 0xAF, 0x00, 0xD2, 0x00, 0x6B, 0x4F, 0x40, 0x01, 0x33, 0x00, 0x2A, 0x01, 0xDF, 0x00
+ .byte 0x44, 0x00, 0x43, 0x00, 0x09, 0x01, 0x59, 0x01, 0x92, 0x01, 0x6D, 0x4F, 0x61, 0x00, 0x72, 0x00
+ .byte 0xE4, 0x00, 0x63, 0x00, 0x29, 0x01, 0x97, 0x01, 0x6F, 0x4F, 0xAF, 0x00, 0x18, 0x00, 0x0D, 0x00
+ .byte 0x44, 0x00, 0x2E, 0x00, 0xAE, 0x00, 0x9A, 0x00, 0x90, 0x01, 0xE8, 0x00, 0xCA, 0x01, 0x70, 0x4F
+ .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x22, 0x00, 0xB8, 0x00, 0x74, 0x01, 0x90, 0x01, 0x73, 0x4F
+ .byte 0x25, 0x00, 0xFA, 0x00, 0xD1, 0x00, 0x38, 0x00, 0xAF, 0x00, 0x24, 0x00, 0x75, 0x4F, 0x2C, 0x01
+ .byte 0x1B, 0x01, 0x22, 0x00, 0xF6, 0x00, 0x1A, 0x01, 0x14, 0x01, 0xE8, 0x00, 0x79, 0x4F, 0x70, 0x00
+ .byte 0x69, 0x00, 0xF3, 0x00, 0x9D, 0x00, 0x7A, 0x01, 0x41, 0x01, 0x7B, 0x4F, 0xE5, 0x00, 0x1A, 0x01
+ .byte 0x0E, 0x00, 0x9D, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xB8, 0x01, 0x7D, 0x4F, 0xF3, 0x00, 0xE1, 0x00
+ .byte 0x2C, 0x01, 0x5F, 0x00, 0x71, 0x00, 0x6D, 0x00, 0x36, 0x00, 0x72, 0x00, 0x41, 0x01, 0x7F, 0x4F
+ .byte 0xF8, 0x00, 0xF4, 0x00, 0x7D, 0x01, 0x32, 0x00, 0x85, 0x00, 0xD2, 0x01, 0x80, 0x4F, 0x32, 0x00
+ .byte 0x15, 0x01, 0x0F, 0x01, 0xFC, 0x00, 0xA1, 0x01, 0x92, 0x00, 0x81, 0x4F, 0x32, 0x00, 0xC2, 0x00
+ .byte 0xC1, 0x00, 0x36, 0x01, 0x1E, 0x01, 0xE4, 0x00, 0xA9, 0x01, 0x73, 0x01, 0x6D, 0x00, 0x83, 0x4F
+ .byte 0x1E, 0x01, 0xC2, 0x00, 0xDC, 0x00, 0x20, 0x01, 0x06, 0x01, 0xB9, 0x00, 0xD2, 0x01, 0x85, 0x4F
+ .byte 0x1D, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x49, 0x00, 0x0B, 0x01, 0xB5, 0x01, 0xEB, 0x00, 0xAE, 0x00
+ .byte 0x5C, 0x01, 0x86, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00, 0x11, 0x01, 0xF8, 0x00
+ .byte 0x87, 0x4F, 0xE2, 0x00, 0xB9, 0x00, 0x26, 0x00, 0x15, 0x01, 0xAE, 0x00, 0xA4, 0x00, 0xD4, 0x00
+ .byte 0xAC, 0x01, 0x82, 0x01, 0x85, 0x01, 0x74, 0x01, 0x7E, 0x01, 0x89, 0x4F, 0x4F, 0x01, 0xBF, 0x00
+ .byte 0xCD, 0x00, 0x32, 0x00, 0x75, 0x00, 0x8B, 0x4F, 0x5A, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00
+ .byte 0x19, 0x01, 0x9D, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x44, 0x01, 0x8E, 0x4F, 0x1F, 0x01, 0x2C, 0x01
+ .byte 0x22, 0x00, 0x30, 0x00, 0x70, 0x00, 0x6D, 0x00, 0x88, 0x01, 0x91, 0x4F, 0xDE, 0x00, 0x82, 0x00
+ .byte 0x5A, 0x01, 0x85, 0x00, 0xD6, 0x00, 0x9D, 0x00, 0x91, 0x01, 0xAD, 0x00, 0xBD, 0x00, 0x92, 0x4F
+ .byte 0x96, 0x00, 0x30, 0x00, 0x5A, 0x01, 0x2C, 0x01, 0xBD, 0x01, 0x88, 0x01, 0x93, 0x4F, 0x38, 0x00
+ .byte 0x25, 0x00, 0x52, 0x00, 0xEF, 0x00, 0x5D, 0x01, 0xA8, 0x01, 0xA5, 0x01, 0x97, 0x01, 0xA3, 0x4F
+ .byte 0x84, 0x01, 0x4A, 0x00, 0x41, 0x01, 0x22, 0x00, 0x26, 0x00, 0x48, 0x01, 0x92, 0x01, 0x25, 0x00
+ .byte 0x85, 0x00, 0x14, 0x01, 0xA6, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x18, 0x00, 0xE3, 0x00, 0x01, 0x01
+ .byte 0x74, 0x00, 0x0E, 0x01, 0xFC, 0x00, 0x2B, 0x01, 0x44, 0x00, 0xA9, 0x4F, 0xCA, 0x01, 0x30, 0x00
+ .byte 0x19, 0x01, 0x2C, 0x01, 0xBD, 0x00, 0xAD, 0x00, 0xAF, 0x00, 0x61, 0x00, 0x88, 0x01, 0x38, 0x00
+ .byte 0xAC, 0x4F, 0x29, 0x01, 0x1F, 0x00, 0xE4, 0x00, 0x36, 0x01, 0x1C, 0x00, 0xC1, 0x00, 0x26, 0x00
+ .byte 0xAF, 0x4F, 0x62, 0x00, 0x5A, 0x01, 0x26, 0x00, 0x9A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x3C, 0x01
+ .byte 0x91, 0x01, 0xB3, 0x4F, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x62, 0x00, 0x50, 0x01, 0x24, 0x00
+ .byte 0xB6, 0x4F, 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00
+ .byte 0xB5, 0x01, 0x46, 0x01, 0xB8, 0x4F, 0xF2, 0x00, 0x25, 0x00, 0x26, 0x00, 0x2B, 0x00, 0x15, 0x00
+ .byte 0x17, 0x00, 0x12, 0x00, 0x67, 0x01, 0xBA, 0x4F, 0x1D, 0x00, 0xB8, 0x00, 0x74, 0x00, 0x26, 0x00
+ .byte 0x5E, 0x01, 0x22, 0x00, 0x67, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xC1, 0x4F, 0x57, 0x01, 0x2C, 0x00
+ .byte 0x39, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x04, 0x01, 0xAF, 0x00, 0xC2, 0x4F, 0xBD, 0x00, 0x1D, 0x00
+ .byte 0x9A, 0x00, 0xA3, 0x00, 0x3C, 0x01, 0x03, 0x00, 0xD2, 0x00, 0xE2, 0x00, 0xC4, 0x4F, 0x4B, 0x00
+ .byte 0xE6, 0x00, 0x41, 0x01, 0x0B, 0x01, 0x40, 0x01, 0x38, 0x01, 0xC6, 0x4F, 0x44, 0x00, 0xF3, 0x00
+ .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x19, 0x01, 0x06, 0x01, 0xAE, 0x00, 0x85, 0x00, 0x5A, 0x00
+ .byte 0xC9, 0x4F, 0x06, 0x01, 0x22, 0x00, 0xC2, 0x00, 0x32, 0x00, 0x72, 0x00, 0x5F, 0x00, 0xCB, 0x4F
+ .byte 0x39, 0x01, 0xFC, 0x00, 0xE3, 0x00, 0xBA, 0x00, 0xCA, 0x01, 0xD5, 0x00, 0x43, 0x00, 0x47, 0x01
+ .byte 0x9F, 0x01, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0xCF, 0x4F, 0x2C, 0x00, 0x27, 0x00, 0x62, 0x00
+ .byte 0x1C, 0x00, 0x39, 0x01, 0x74, 0x01, 0xD1, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00
+ .byte 0x11, 0x01, 0xF8, 0x00, 0x69, 0x00, 0xD2, 0x4F, 0xE4, 0x00, 0x2B, 0x00, 0x7B, 0x00, 0x26, 0x00
+ .byte 0xF2, 0x00, 0xB8, 0x00, 0x36, 0x01, 0x82, 0x01, 0xD6, 0x4F, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00
+ .byte 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xD7, 0x4F, 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00
+ .byte 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01, 0x2A, 0x01, 0x69, 0x01, 0xCC, 0x00, 0xD8, 0x4F
+ .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01
+ .byte 0x83, 0x01, 0xD9, 0x4F, 0xE3, 0x00, 0x65, 0x00, 0x61, 0x00, 0xA1, 0x01, 0x30, 0x00, 0xDA, 0x4F
+ .byte 0xC2, 0x00, 0xDC, 0x00, 0x6C, 0x00, 0x1E, 0x01, 0x20, 0x01, 0xA9, 0x01, 0xDB, 0x4F, 0xE1, 0x00
+ .byte 0xC8, 0x00, 0xEF, 0x00, 0xB8, 0x00, 0x26, 0x00, 0x25, 0x00, 0xE8, 0x00, 0x48, 0x01, 0x22, 0x00
+ .byte 0xBA, 0x01, 0xDE, 0x4F, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0xA4, 0x00, 0x12, 0x00
+ .byte 0xE4, 0x00, 0xAC, 0x01, 0xDF, 0x4F, 0xEE, 0x00, 0xC5, 0x00, 0x2C, 0x00, 0xAA, 0x00, 0x47, 0x01
+ .byte 0x88, 0x00, 0x61, 0x00, 0x9A, 0x01, 0xF2, 0x00, 0x43, 0x00, 0x4E, 0x01, 0x2B, 0x01, 0xA2, 0x01
+ .byte 0xE1, 0x4F, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0xAE, 0x00, 0x2F, 0x01, 0x22, 0x00, 0x48, 0x01
+ .byte 0xE3, 0x4F, 0xB9, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xA3, 0x00, 0x6D, 0x00, 0x12, 0x00, 0x61, 0x00
+ .byte 0xE4, 0x00, 0x90, 0x01, 0xE5, 0x4F, 0x7E, 0x01, 0x6C, 0x01, 0xDF, 0x00, 0x1D, 0x00, 0x9A, 0x01
+ .byte 0x60, 0x00, 0xFC, 0x00, 0x66, 0x01, 0x09, 0x01, 0xEE, 0x00, 0xA2, 0x01, 0xE7, 0x4F, 0x4F, 0x00
+ .byte 0x4E, 0x00, 0x4B, 0x00, 0x15, 0x00, 0xEB, 0x00, 0x59, 0x01, 0x49, 0x00, 0x84, 0x01, 0xE8, 0x4F
+ .byte 0xBA, 0x00, 0xCC, 0x00, 0xAF, 0x00, 0x91, 0x01, 0x96, 0x00, 0x3C, 0x00, 0x41, 0x01, 0x61, 0x00
+ .byte 0xEA, 0x4F, 0xEF, 0x00, 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00
+ .byte 0x5A, 0x01, 0x96, 0x00, 0x44, 0x01, 0xEB, 0x4F, 0x49, 0x00, 0x59, 0x01, 0x92, 0x01, 0x4A, 0x00
+ .byte 0x26, 0x00, 0x36, 0x00, 0x17, 0x00, 0xFF, 0xFF
+
+ .section .bss
+
+ .global UNK05_021FD680
+UNK05_021FD680: ; 0x021FD680
+ .space 0x4
diff --git a/arm9/modules/05/asm/mod05_021ED9C0.s b/arm9/modules/05/asm/mod05_021ED9C0.s
new file mode 100644
index 00000000..962a3c63
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021ED9C0.s
@@ -0,0 +1,233 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+
+ thumb_func_start MOD05_021ED9C0
+MOD05_021ED9C0: ; 0x021ED9C0
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #4
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4]
+ bl MOD05_021ED9EC
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021ED9DC
+MOD05_021ED9DC: ; 0x021ED9DC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021EDA28
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021ED9EC
+MOD05_021ED9EC: ; 0x021ED9EC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #4
+ mov r2, #0x57
+ bl MOD05_021E5078
+ ldr r0, [r4]
+ mov r1, #3
+ mov r2, #6
+ mov r3, #1
+ bl MOD05_021E50D4
+ mov r0, #3
+ str r0, [sp]
+ mov r3, #0
+ mov r1, #4
+ ldr r0, _021EDA24 ; =UNK05_021F8A48
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD05_021E4EFC
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_021EDA24: .word UNK05_021F8A48
+
+ thumb_func_start MOD05_021EDA28
+MOD05_021EDA28: ; 0x021EDA28
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #4
+ bl MOD05_021E50A0
+ ldr r0, [r4]
+ mov r1, #3
+ bl MOD05_021E5114
+ ldr r0, [r4]
+ mov r1, #4
+ bl MOD05_021E506C
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDA48
+MOD05_021EDA48: ; 0x021EDA48
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ bl MOD05_021E4C24
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_02058738
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ mov r1, #0x18
+ str r4, [sp, #0x18]
+ bl MOD05_021E4C08
+ str r0, [sp, #0x1c]
+ add r1, sp, #8
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ add r0, r5, #0
+ mov r1, #2
+ str r5, [sp, #0x20]
+ bl FUN_0205829C
+ add r1, sp, #0x14
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r1, _021EDA94 ; =UNK05_021F8A34
+ add r0, r4, #0
+ add r2, sp, #8
+ mov r3, #0
+ bl MOD05_021E4DC4
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021EDA94: .word UNK05_021F8A34
+
+ thumb_func_start MOD05_021EDA98
+MOD05_021EDA98: ; 0x021EDA98
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, sp, #0
+ mov r1, #0
+ str r1, [r2]
+ str r1, [r2, #4]
+ add r5, r0, #0
+ str r1, [r2, #8]
+ bl FUN_0206475C
+ add r2, r4, #0
+ add r3, r0, #0
+ add r2, #0x10
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r4, #0x1c]
+ bl FUN_02058448
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x1c]
+ bl FUN_02058450
+ str r0, [r4, #8]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ add r2, sp, #0
+ bl MOD05_021E4EE4
+ str r0, [r4, #0x20]
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDAE8
+MOD05_021EDAE8: ; 0x021EDAE8
+ ldr r3, _021EDAF0 ; =FUN_0201F744
+ ldr r0, [r1, #0x20]
+ bx r3
+ nop
+_021EDAF0: .word FUN_0201F744
+
+ thumb_func_start MOD05_021EDAF4
+MOD05_021EDAF4: ; 0x021EDAF4
+ push {r4, lr}
+ add r2, r1, #0
+ add r4, r0, #0
+ ldr r0, [r2, #0x1c]
+ ldr r1, [r2, #4]
+ ldr r2, [r2, #8]
+ bl FUN_020582A8
+ cmp r0, #0
+ bne _021EDB0E
+ add r0, r4, #0
+ bl MOD05_021E4DE4
+_021EDB0E:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EDB10
+MOD05_021EDB10: ; 0x021EDB10
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ ldr r4, [r5, #0x1c]
+ ldr r1, [r5, #4]
+ add r6, r0, #0
+ ldr r2, [r5, #8]
+ add r0, r4, #0
+ bl FUN_020582A8
+ cmp r0, #0
+ bne _021EDB32
+ add r0, r6, #0
+ bl MOD05_021E4DE4
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+_021EDB32:
+ add r0, r4, #0
+ add r1, sp, #0xc
+ bl FUN_02058B5C
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02058B84
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp]
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #4]
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #8]
+ add r1, r1, r0
+ mov r0, #3
+ lsl r0, r0, #0xe
+ str r1, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0xc
+ bl FUN_0201F7C8
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ .section .rodata
+
+ .global UNK05_021F8A34
+UNK05_021F8A34: ; 0x021F8A34
+ .word 0x00000024, MOD05_021EDA98, MOD05_021EDAE8, MOD05_021EDAF4
+ .word MOD05_021EDB10
+
+ .global UNK05_021F8A48
+UNK05_021F8A48: ; 0x021F8A48
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021EDB70.s b/arm9/modules/05/asm/mod05_021EDB70.s
new file mode 100644
index 00000000..ec46fb91
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021EDB70.s
@@ -0,0 +1,390 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDB70
+MOD05_021EDB70: ; 0x021EDB70
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x60
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4]
+ bl MOD05_021EDB9C
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDB8C
+MOD05_021EDB8C: ; 0x021EDB8C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021EDBBC
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EDB9C
+MOD05_021EDB9C: ; 0x021EDB9C
+ push {r3, lr}
+ sub sp, #8
+ add r3, r0, #0
+ add r0, #0x58
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0x5c
+ str r0, [sp, #4]
+ ldr r0, [r3]
+ mov r1, #0x50
+ mov r2, #0
+ add r3, r3, #4
+ bl MOD05_021E51EC
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021EDBBC
+MOD05_021EDBBC: ; 0x021EDBBC
+ ldr r3, _021EDBC4 ; =MOD05_021E4C00
+ ldr r0, [r0, #0x5c]
+ bx r3
+ nop
+_021EDBC4: .word MOD05_021E4C00
+
+ thumb_func_start MOD05_021EDBC8
+MOD05_021EDBC8: ; 0x021EDBC8
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r2, sp, #8
+ mov r1, #0
+ str r1, [r2]
+ str r1, [r2, #4]
+ add r5, r0, #0
+ str r1, [r2, #8]
+ bl FUN_020553A0
+ add r4, r0, #0
+ bl MOD05_021E4C24
+ add r6, r0, #0
+ mov r1, #0x10
+ str r6, [sp, #0x14]
+ bl MOD05_021E4C08
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ mov r1, #2
+ str r5, [sp, #0x1c]
+ bl FUN_0205829C
+ add r1, sp, #0x14
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r1, _021EDC10 ; =UNK05_021F8A6C
+ add r0, r6, #0
+ add r2, sp, #8
+ mov r3, #0
+ bl MOD05_021E4DC4
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ nop
+_021EDC10: .word UNK05_021F8A6C
+
+ thumb_func_start MOD05_021EDC14
+MOD05_021EDC14: ; 0x021EDC14
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_0206475C
+ add r4, r0, #0
+ add r3, r4, #0
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x24
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #8]
+ bl FUN_020553A0
+ mov r1, #0
+ mvn r1, r1
+ add r4, r0, #0
+ str r1, [r5, #4]
+ bl FUN_02058448
+ str r0, [r5, #0x14]
+ add r0, r4, #0
+ bl FUN_02058450
+ str r0, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021EDC4C
+MOD05_021EDC4C: ; 0x021EDC4C
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDC50
+MOD05_021EDC50: ; 0x021EDC50
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r1, #0
+ str r0, [sp]
+ ldr r0, [r5, #0x2c]
+ str r0, [sp, #4]
+ bl FUN_020553A0
+ ldr r1, [r5, #0x14]
+ ldr r2, [r5, #0x18]
+ add r6, r0, #0
+ bl FUN_020582A8
+ cmp r0, #0
+ bne _021EDC78
+ ldr r0, [sp]
+ bl MOD05_021E4DE4
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+_021EDC78:
+ ldr r7, [r5, #4]
+ add r0, r6, #0
+ bl FUN_02058720
+ strb r0, [r5, #8]
+ ldrb r0, [r5, #8]
+ bl MOD05_021EDDF4
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5]
+ ldr r4, [r5, #4]
+ sub r0, r0, #1
+ cmp r4, r0
+ beq _021EDCA0
+ ldr r0, [sp, #4]
+ bl FUN_020552F8
+ cmp r4, r0
+ beq _021EDCAE
+_021EDCA0:
+ mov r0, #0
+ str r0, [r5, #0x1c]
+ str r0, [r5, #0x20]
+ mov r0, #1
+ add sp, #0x24
+ str r0, [r5]
+ pop {r4, r5, r6, r7, pc}
+_021EDCAE:
+ cmp r7, r4
+ beq _021EDCB8
+ mov r0, #0
+ str r0, [r5, #0x1c]
+ str r0, [r5, #0x20]
+_021EDCB8:
+ add r0, r6, #0
+ bl FUN_02058B2C
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ bl FUN_02059BF4
+ add r7, r0, #0
+ add r0, r6, #0
+ bl FUN_02058B4C
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ bl FUN_02059C00
+ add r2, r0, #0
+ ldr r1, [sp, #8]
+ add r0, r4, r7
+ add r1, r1, r2
+ add r2, sp, #0xc
+ bl FUN_02059E60
+ add r0, r6, #0
+ add r1, sp, #0x18
+ bl FUN_02058B5C
+ ldr r0, [sp, #0x1c]
+ add r1, sp, #0xc
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ bl FUN_0206476C
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EDCFC
+MOD05_021EDCFC: ; 0x021EDCFC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x3c
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ cmp r0, #1
+ beq _021EDDE2
+ mov r0, #0
+ ldr r1, [r4, #4]
+ mvn r0, r0
+ cmp r1, r0
+ beq _021EDDE2
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0xf
+ ble _021EDD34
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #0x20]
+ 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, [r4, #0x20]
+_021EDD34:
+ ldr r3, _021EDDE8 ; =UNK05_021F8A60
+ add r2, sp, #0x24
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r5, _021EDDEC ; =UNK05_021F8A80
+ str r0, [r2]
+ add r3, sp, #0
+ mov r2, #4
+_021EDD46:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021EDD46
+ ldr r0, [r5]
+ mov r2, #0x18
+ str r0, [r3]
+ ldr r1, [r4, #4]
+ ldr r3, _021EDDF0 ; =UNK05_021F8AA4
+ add r0, r1, #0
+ mul r0, r2
+ add r0, r3, r0
+ ldr r5, [r4, #0x20]
+ mov r3, #0xc
+ mul r3, r5
+ add r5, r0, r3
+ cmp r1, #3
+ bhi _021EDDB4
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EDD76: ; jump table
+ .short _021EDD7E - _021EDD76 - 2 ; case 0
+ .short _021EDD8C - _021EDD76 - 2 ; case 1
+ .short _021EDD9A - _021EDD76 - 2 ; case 2
+ .short _021EDDA8 - _021EDD76 - 2 ; case 3
+_021EDD7E:
+ mov r1, #0
+ add r0, sp, #0
+ mov r2, #0xb4
+ add r3, r1, #0
+ bl FUN_0201CB20
+ b _021EDDB4
+_021EDD8C:
+ mov r1, #0
+ add r0, sp, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0201CB20
+ b _021EDDB4
+_021EDD9A:
+ mov r1, #0
+ add r0, sp, #0
+ add r2, #0xf6
+ add r3, r1, #0
+ bl FUN_0201CB20
+ b _021EDDB4
+_021EDDA8:
+ mov r1, #0
+ add r0, sp, #0
+ mov r2, #0x5a
+ add r3, r1, #0
+ bl FUN_0201CB20
+_021EDDB4:
+ add r0, r6, #0
+ add r1, sp, #0x30
+ bl FUN_0206477C
+ ldr r1, [sp, #0x30]
+ ldr r0, [r5]
+ add r2, sp, #0
+ add r0, r1, r0
+ str r0, [sp, #0x30]
+ ldr r1, [sp, #0x34]
+ ldr r0, [r5, #4]
+ add r3, sp, #0x24
+ add r0, r1, r0
+ str r0, [sp, #0x34]
+ ldr r1, [sp, #0x38]
+ ldr r0, [r5, #8]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0x30
+ add r0, r0, #4
+ bl FUN_0201B26C
+_021EDDE2:
+ add sp, #0x3c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021EDDE8: .word UNK05_021F8A60
+_021EDDEC: .word UNK05_021F8A80
+_021EDDF0: .word UNK05_021F8AA4
+
+ thumb_func_start MOD05_021EDDF4
+MOD05_021EDDF4: ; 0x021EDDF4
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020547D4
+ cmp r0, #0
+ beq _021EDE04
+ mov r0, #0
+ pop {r4, pc}
+_021EDE04:
+ add r0, r4, #0
+ bl FUN_020547E0
+ cmp r0, #0
+ beq _021EDE12
+ mov r0, #1
+ pop {r4, pc}
+_021EDE12:
+ add r0, r4, #0
+ bl FUN_020547C8
+ cmp r0, #0
+ beq _021EDE20
+ mov r0, #2
+ pop {r4, pc}
+_021EDE20:
+ add r0, r4, #0
+ bl FUN_020547BC
+ cmp r0, #0
+ beq _021EDE2E
+ mov r0, #3
+ pop {r4, pc}
+_021EDE2E:
+ mov r0, #0
+ mvn r0, r0
+ pop {r4, pc}
+
+ .section .rodata
+
+ .global UNK05_021F8A60
+UNK05_021F8A60: ; 0x021F8A60
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+
+ .global UNK05_021F8A6C
+UNK05_021F8A6C: ; 0x021F8A6C
+ .word 0x00000030, MOD05_021EDC14, MOD05_021EDC4C, MOD05_021EDC50
+ .word MOD05_021EDCFC
+
+ .global UNK05_021F8A80
+UNK05_021F8A80: ; 0x021F8A80
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+
+ .global UNK05_021F8AA4
+UNK05_021F8AA4: ; 0x021F8AA4
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021EDE34.s b/arm9/modules/05/asm/mod05_021EDE34.s
new file mode 100644
index 00000000..1c80c321
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021EDE34.s
@@ -0,0 +1,3816 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDE34
+MOD05_021EDE34: ; 0x021EDE34
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r1, #0
+ add r1, r6, #0
+ bl _s32_div_f
+ add r4, r1, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl _s32_div_f
+ cmp r4, r1
+ bne _021EDE52
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021EDE52:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDE58
+MOD05_021EDE58: ; 0x021EDE58
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r1, #0
+ add r1, r6, #0
+ bl _s32_div_f
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl _s32_div_f
+ cmp r4, r0
+ bne _021EDE76
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021EDE76:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDE7C
+MOD05_021EDE7C: ; 0x021EDE7C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x30
+ add r4, r1, #0
+ mul r4, r0
+ add r1, r5, r4
+ ldr r0, [r1, #0x14]
+ cmp r0, #0
+ beq _021EDE94
+ ldr r0, [r1, #0xc]
+ bl MOD05_021EF8F8
+_021EDE94:
+ add r1, r5, r4
+ ldr r0, [r1, #0x18]
+ cmp r0, #0
+ beq _021EDEA2
+ ldr r0, [r1, #0x10]
+ bl MOD05_021F4444
+_021EDEA2:
+ mov r1, #1
+ add r0, r5, r4
+ str r1, [r0, #0x28]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EDEAC
+MOD05_021EDEAC: ; 0x021EDEAC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021EDEBC
+ ldr r0, [r4, #8]
+ bl MOD05_021EF8F8
+_021EDEBC:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021EDEC8
+ ldr r0, [r4, #0xc]
+ bl MOD05_021F4444
+_021EDEC8:
+ mov r0, #0
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EDED0
+MOD05_021EDED0: ; 0x021EDED0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r2, #0
+ asr r2, r0, #4
+ lsr r2, r2, #0x1b
+ add r2, r0, r2
+ asr r7, r2, #5
+ asr r2, r1, #4
+ lsr r2, r2, #0x1b
+ add r2, r1, r2
+ asr r6, r2, #5
+ ldr r2, [sp, #0x18]
+ str r3, [sp]
+ ldr r4, [sp, #0x1c]
+ bl MOD05_021EEE08
+ ldr r1, [sp, #0x18]
+ bl MOD05_021EF620
+ add r1, r6, #0
+ mul r1, r5
+ add r1, r7, r1
+ cmp r0, #3
+ bhi _021EDFB6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EDF0A: ; jump table
+ .short _021EDF12 - _021EDF0A - 2 ; case 0
+ .short _021EDF38 - _021EDF0A - 2 ; case 1
+ .short _021EDF60 - _021EDF0A - 2 ; case 2
+ .short _021EDF8A - _021EDF0A - 2 ; case 3
+_021EDF12:
+ sub r2, r1, r5
+ str r1, [r4, #0xc]
+ sub r0, r2, #1
+ str r0, [r4]
+ str r2, [r4, #4]
+ sub r0, r1, #1
+ str r0, [r4, #8]
+ sub r0, r7, #1
+ bpl _021EDF2C
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4]
+ str r0, [r4, #8]
+_021EDF2C:
+ sub r0, r6, #1
+ bpl _021EDFBA
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021EDF38:
+ str r1, [r4, #8]
+ sub r0, r1, r5
+ str r0, [r4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ add r0, r1, #1
+ str r0, [r4, #0xc]
+ add r0, r7, #1
+ cmp r0, r5
+ blt _021EDF54
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #4]
+ str r0, [r4, #0xc]
+_021EDF54:
+ sub r0, r6, #1
+ bpl _021EDFBA
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021EDF60:
+ str r1, [r4, #4]
+ sub r0, r1, #1
+ add r1, r1, r5
+ str r0, [r4]
+ sub r0, r1, #1
+ str r0, [r4, #8]
+ str r1, [r4, #0xc]
+ sub r0, r7, #1
+ bpl _021EDF7A
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4]
+ str r0, [r4, #8]
+_021EDF7A:
+ ldr r0, [sp]
+ add r1, r6, #1
+ cmp r1, r0
+ ble _021EDFBA
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_021EDF8A:
+ str r1, [r4]
+ add r0, r1, #1
+ str r0, [r4, #4]
+ add r0, r1, r5
+ str r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ add r0, r7, #1
+ cmp r0, r5
+ blt _021EDFA6
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #4]
+ str r0, [r4, #0xc]
+_021EDFA6:
+ ldr r0, [sp]
+ add r1, r6, #1
+ cmp r1, r0
+ ble _021EDFBA
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021EDFB6:
+ bl GF_AssertFail
+_021EDFBA:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EDFBC
+MOD05_021EDFBC: ; 0x021EDFBC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ add r5, r0, #0
+ sub r7, r6, #1
+_021EDFC4:
+ ldr r1, _021EE03C ; =0x0000086C
+ mov r0, #4
+ bl AllocFromHeap
+ lsl r4, r6, #2
+ add r1, r5, r4
+ add r1, #0x90
+ str r0, [r1]
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r2, [r0]
+ ldr r0, _021EE040 ; =0x00000864
+ mov r1, #0
+ str r1, [r2, r0]
+ add r2, r5, r4
+ add r2, #0x90
+ ldr r3, [r2]
+ ldr r2, _021EE044 ; =0x00000854
+ ldr r1, [r5]
+ add r0, r6, #0
+ add r2, r3, r2
+ bl MOD05_021F3C60
+ add r2, r5, r4
+ add r2, #0x90
+ ldr r3, [r2]
+ ldr r2, _021EE048 ; =0x00000858
+ ldr r1, [r5]
+ add r0, r6, #0
+ add r2, r3, r2
+ bl MOD05_021F3C68
+ mov r0, #4
+ bl MOD05_021E7C00
+ add r1, r5, r4
+ add r1, #0x90
+ ldr r2, [r1]
+ ldr r1, _021EE04C ; =0x00000868
+ str r0, [r2, r1]
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r1, [r0]
+ mov r0, #0x86
+ lsl r0, r0, #4
+ str r7, [r1, r0]
+ add r1, r5, r4
+ add r1, #0x90
+ mov r2, #2
+ ldr r1, [r1]
+ add r0, r7, #0
+ lsl r2, r2, #0xa
+ bl MIi_CpuClearFast
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #4
+ blo _021EDFC4
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EE03C: .word 0x0000086C
+_021EE040: .word 0x00000864
+_021EE044: .word 0x00000854
+_021EE048: .word 0x00000858
+_021EE04C: .word 0x00000868
+
+ thumb_func_start MOD05_021EE050
+MOD05_021EE050: ; 0x021EE050
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ add r5, r0, #0
+ add r7, r6, #0
+_021EE058:
+ ldr r1, _021EE0B0 ; =0x0000086C
+ mov r0, #4
+ bl AllocFromHeap
+ lsl r4, r6, #2
+ add r1, r5, r4
+ add r1, #0x90
+ str r0, [r1]
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r1, [r0]
+ ldr r0, _021EE0B4 ; =0x00000864
+ add r2, r5, r4
+ str r7, [r1, r0]
+ add r2, #0x90
+ ldr r3, [r2]
+ ldr r2, _021EE0B8 ; =0x00000854
+ ldr r1, [r5]
+ add r0, r6, #0
+ add r2, r3, r2
+ bl MOD05_021F3C60
+ mov r0, #4
+ bl MOD05_021E7C00
+ add r1, r5, r4
+ add r1, #0x90
+ ldr r2, [r1]
+ ldr r1, _021EE0BC ; =0x00000868
+ str r0, [r2, r1]
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r2, [r0]
+ mov r1, #0
+ mov r0, #0x86
+ mvn r1, r1
+ lsl r0, r0, #4
+ str r1, [r2, r0]
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #4
+ blo _021EE058
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EE0B0: .word 0x0000086C
+_021EE0B4: .word 0x00000864
+_021EE0B8: .word 0x00000854
+_021EE0BC: .word 0x00000868
+
+ thumb_func_start MOD05_021EE0C0
+MOD05_021EE0C0: ; 0x021EE0C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ add r5, r2, #0
+ cmp r6, #0
+ beq _021EE0E6
+ mov r0, #4
+ mov r1, #0x10
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ mov r2, #0
+ mov r3, #0x10
+ str r4, [sp]
+ bl NARC_ReadFromMember
+ b _021EE0FC
+_021EE0E6:
+ bl GF_AssertFail
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0x43
+ add r1, r7, #0
+ mov r2, #4
+ mov r3, #0
+ bl AllocAtEndAndReadFromNarcMemberByIdPair
+ add r4, r0, #0
+_021EE0FC:
+ ldr r0, [r4]
+ str r0, [r5]
+ ldr r0, [r4, #4]
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #8]
+ str r0, [r5, #4]
+ ldr r0, [r4, #0xc]
+ str r0, [r5, #8]
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EE114
+MOD05_021EE114: ; 0x021EE114
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r4, [sp, #0x40]
+ lsl r7, r0, #2
+ add r0, r4, r7
+ ldr r0, [r0, #0x18]
+ str r1, [sp, #0xc]
+ ldr r5, [sp, #0x3c]
+ cmp r0, #0
+ blt _021EE1D0
+ ldr r1, [sp, #0x38]
+ mul r1, r3
+ cmp r0, r1
+ bge _021EE1D0
+ add r1, r2, #0
+ bl GetMapData
+ add r1, r0, #0
+ ldr r0, _021EE1D4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021EE1D0
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r2, sp, #0x10
+ bl MOD05_021EE0C0
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, r7]
+ bl NARC_ReadFile
+ add r0, r5, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ ldr r3, _021EE1D8 ; =0x00000868
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r6, [r4, r7]
+ add r0, #0xf8
+ ldr r0, [r0]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0xc]
+ ldr r3, [r6, r3]
+ bl MOD05_021E7CD8
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0xc]
+ ldr r6, [r4, r7]
+ bl MOD05_021F4C74
+ ldr r3, _021EE1DC ; =0x00000864
+ str r0, [sp]
+ add r0, r6, r3
+ add r2, r3, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x10
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xf8
+ sub r2, #0x64
+ sub r3, #0x10
+ ldr r0, [r0]
+ ldr r1, [sp, #0x14]
+ add r2, r6, r2
+ add r3, r6, r3
+ bl MOD05_021EFA00
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x14]
+ add r3, r4, #0
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ ldr r2, [r4, r7]
+ ldr r6, _021EE1E0 ; =0x00000858
+ add r5, #0xf8
+ add r0, r2, r6
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ add r5, r6, #4
+ ldr r1, [sp, #0x18]
+ ldr r2, [r2, r5]
+ add r3, #0x14
+ bl MOD05_021F43E4
+ str r0, [r4, #0xc]
+_021EE1D0:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EE1D4: .word 0x0000FFFF
+_021EE1D8: .word 0x00000868
+_021EE1DC: .word 0x00000864
+_021EE1E0: .word 0x00000858
+
+ thumb_func_start MOD05_021EE1E4
+MOD05_021EE1E4: ; 0x021EE1E4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x30
+ str r1, [sp, #0xc]
+ add r1, r2, #0
+ add r2, r3, #0
+ ldr r3, _021EE294 ; =0x00000828
+ lsl r7, r0, #2
+ add r3, sp
+ ldr r4, [r3, #0x18]
+ ldr r5, [r3, #0x14]
+ add r0, r4, r7
+ ldr r0, [r0, #0x18]
+ cmp r0, #0
+ blt _021EE286
+ ldr r3, [r3, #0x10]
+ mul r3, r2
+ cmp r0, r3
+ bge _021EE286
+ bl GetMapData
+ add r1, r0, #0
+ ldr r0, _021EE298 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021EE286
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r2, sp, #0x10
+ bl MOD05_021EE0C0
+ add r0, r5, #0
+ add r0, #0xf8
+ mov r1, #2
+ ldr r0, [r0]
+ lsl r1, r1, #0xa
+ add r2, sp, #0x20
+ bl NARC_ReadFile
+ add r0, r5, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ ldr r3, _021EE29C ; =0x00000868
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r6, [r4, r7]
+ add r0, #0xf8
+ ldr r0, [r0]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0xc]
+ ldr r3, [r6, r3]
+ bl MOD05_021E7CD8
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0xc]
+ ldr r6, [r4, r7]
+ bl MOD05_021F4C74
+ ldr r3, _021EE2A0 ; =0x00000864
+ str r0, [sp]
+ add r0, r6, r3
+ add r2, r3, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x10
+ str r0, [sp, #8]
+ add r5, #0xf8
+ sub r2, #0x64
+ sub r3, #0x10
+ ldr r0, [r5]
+ ldr r1, [sp, #0x14]
+ add r2, r6, r2
+ add r3, r6, r3
+ bl MOD05_021EFA00
+ str r0, [r4, #8]
+_021EE286:
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EE294: .word 0x00000828
+_021EE298: .word 0x0000FFFF
+_021EE29C: .word 0x00000868
+_021EE2A0: .word 0x00000864
+
+ thumb_func_start MOD05_021EE2A4
+MOD05_021EE2A4: ; 0x021EE2A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ ldr r7, [sp, #0x3c]
+ add r1, r0, #0
+ bmi _021EE37A
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x34]
+ add r5, r2, #0
+ mul r5, r1
+ add r1, r0, #0
+ cmp r1, r5
+ bge _021EE37A
+ add r1, r3, #0
+ bl GetMapData
+ add r1, r0, #0
+ ldr r0, _021EE380 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021EE37A
+ add r0, r7, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r2, sp, #0xc
+ bl MOD05_021EE0C0
+ lsl r5, r4, #2
+ add r4, r7, #0
+ add r0, r7, #0
+ add r4, #0x90
+ add r0, #0xf8
+ ldr r0, [r0]
+ ldr r1, [sp, #0xc]
+ ldr r2, [r4, r5]
+ bl NARC_ReadFile
+ add r0, r7, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ ldr r3, _021EE384 ; =0x00000868
+ str r0, [sp]
+ add r0, r7, #0
+ ldr r6, [r4, r5]
+ add r0, #0xf8
+ ldr r0, [r0]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #8]
+ ldr r3, [r6, r3]
+ bl MOD05_021E7CD8
+ ldr r6, [r4, r5]
+ ldr r0, [sp, #8]
+ bl MOD05_021F4C74
+ str r0, [sp]
+ add r0, r7, #0
+ mov r3, #2
+ add r0, #0xf8
+ lsl r3, r3, #0xa
+ add r2, r6, r3
+ add r3, #0x54
+ ldr r0, [r0]
+ ldr r1, [sp, #0x10]
+ add r3, r6, r3
+ bl MOD05_021EFA40
+ ldr r1, [sp, #0x38]
+ cmp r1, #1
+ bne _021EE336
+ bl MOD05_021DB5EC
+_021EE336:
+ ldr r6, _021EE388 ; =0x00000864
+ ldr r0, [r4, r5]
+ mov r1, #1
+ str r1, [r0, r6]
+ add r2, r6, #0
+ add r0, r7, #0
+ add r0, #0xf8
+ ldr r3, [r4, r5]
+ sub r2, #8
+ sub r6, #0xc
+ ldr r2, [r3, r2]
+ ldr r0, [r0]
+ ldr r1, [sp, #0x14]
+ ldr r3, [r3, r6]
+ bl MOD05_021F4344
+ mov r2, #0x86
+ ldr r1, [r4, r5]
+ ldr r0, [sp, #4]
+ lsl r2, r2, #4
+ str r0, [r1, r2]
+ add r0, r7, #0
+ add r0, #0xfc
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _021EE37A
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r4, [r4, r5]
+ add r2, #8
+ ldr r0, [r7, r0]
+ ldr r1, [sp, #4]
+ ldr r2, [r4, r2]
+ blx r3
+_021EE37A:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EE380: .word 0x0000FFFF
+_021EE384: .word 0x00000868
+_021EE388: .word 0x00000864
+
+ thumb_func_start MOD05_021EE38C
+MOD05_021EE38C: ; 0x021EE38C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x2c
+ str r2, [sp, #8]
+ ldr r2, _021EE44C ; =0x00000820
+ add r4, r1, #0
+ add r2, sp
+ str r0, [sp, #4]
+ ldr r5, [r2, #0x1c]
+ add r1, r0, #0
+ bmi _021EE43E
+ ldr r6, [r2, #0x10]
+ ldr r1, [r2, #0x14]
+ add r2, r6, #0
+ mul r2, r1
+ add r1, r0, #0
+ cmp r1, r2
+ bge _021EE43E
+ add r1, r3, #0
+ bl GetMapData
+ add r1, r0, #0
+ ldr r0, _021EE450 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021EE43E
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r2, sp, #0xc
+ bl MOD05_021EE0C0
+ add r0, r5, #0
+ add r0, #0xf8
+ mov r1, #2
+ ldr r0, [r0]
+ lsl r1, r1, #0xa
+ add r2, sp, #0x1c
+ bl NARC_ReadFile
+ add r0, r5, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ add r7, r5, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xf8
+ lsl r4, r4, #2
+ add r7, #0x90
+ ldr r6, [r7, r4]
+ ldr r3, _021EE454 ; =0x00000868
+ ldr r0, [r0]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #8]
+ ldr r3, [r6, r3]
+ bl MOD05_021E7CD8
+ ldr r0, [sp, #8]
+ ldr r6, [r7, r4]
+ bl MOD05_021F4C74
+ mov r3, #2
+ str r0, [sp]
+ add r5, #0xf8
+ lsl r3, r3, #0xa
+ add r2, r6, r3
+ add r3, #0x54
+ ldr r0, [r5]
+ ldr r1, [sp, #0x10]
+ add r3, r6, r3
+ bl MOD05_021EFA40
+ ldr r1, _021EE44C ; =0x00000820
+ add r1, sp
+ ldr r1, [r1, #0x18]
+ cmp r1, #1
+ bne _021EE42E
+ bl MOD05_021DB5EC
+_021EE42E:
+ ldr r1, [r7, r4]
+ ldr r0, _021EE458 ; =0x00000864
+ mov r2, #1
+ str r2, [r1, r0]
+ sub r1, r0, #4
+ ldr r2, [r7, r4]
+ ldr r0, [sp, #4]
+ str r0, [r2, r1]
+_021EE43E:
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EE44C: .word 0x00000820
+_021EE450: .word 0x0000FFFF
+_021EE454: .word 0x00000868
+_021EE458: .word 0x00000864
+
+ thumb_func_start MOD05_021EE45C
+MOD05_021EE45C: ; 0x021EE45C
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _021EE46C
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _021EE46C
+ mov r0, #1
+ bx lr
+_021EE46C:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD05_021EE470
+MOD05_021EE470: ; 0x021EE470
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ str r3, [sp]
+ add r0, sp, #0x10
+ add r7, r1, #0
+ ldrb r1, [r0, #0x14]
+ mov r0, #0x30
+ str r2, [sp, #8]
+ add r5, r1, #0
+ mul r5, r0
+ add r0, r4, #0
+ str r0, [sp, #4]
+ add r0, #0x2c
+ str r0, [sp, #4]
+ ldr r0, [r0, r5]
+ cmp r0, #0
+ beq _021EE498
+ bl GF_AssertFail
+_021EE498:
+ ldr r0, [sp, #4]
+ mov r1, #1
+ str r1, [r0, r5]
+ add r0, sp, #0x10
+ add r5, r4, r5
+ add r1, r5, #0
+ ldrb r2, [r0, #0x18]
+ add r1, #0x30
+ add r3, r4, #0
+ strb r2, [r1]
+ add r2, r5, #0
+ ldr r1, [sp, #8]
+ str r7, [r5, #0x1c]
+ str r1, [r5, #0x20]
+ ldr r1, [sp]
+ add r2, #0x24
+ strb r1, [r2]
+ add r1, r5, #0
+ ldrb r0, [r0, #0x10]
+ add r1, #0x25
+ add r3, #0x90
+ strb r0, [r1]
+ ldr r1, [sp]
+ mov r6, #0
+ lsl r2, r1, #2
+ ldr r1, [r3, r2]
+ str r1, [r5, #4]
+ lsl r1, r0, #2
+ ldr r0, [r3, r1]
+ str r0, [r5, #8]
+ add r0, r5, #0
+ add r0, #0x26
+ strb r6, [r0]
+ add r0, r6, #0
+ str r0, [r5, #0x28]
+ add r0, r4, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021EE4F0
+ add r5, r4, #0
+ add r5, #0xb4
+ add r0, r6, #0
+ str r0, [r5]
+_021EE4F0:
+ ldr r0, [r3, r2]
+ mov r2, #0x86
+ lsl r2, r2, #4
+ str r7, [r0, r2]
+ ldr r1, [r3, r1]
+ ldr r0, [sp, #8]
+ str r0, [r1, r2]
+ add r0, r4, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa0
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa1
+ ldrb r0, [r0]
+ add r4, #0xa1
+ 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]
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EE52C
+MOD05_021EE52C: ; 0x021EE52C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r0, r5, #0
+ add r0, #0xa2
+ ldrb r1, [r0]
+ mov r0, #0x30
+ add r4, r5, #0
+ add r2, r5, #4
+ mul r0, r1
+ add r4, #0xcc
+ add r6, r2, r0
+ ldr r0, [r4, #0x20]
+ cmp r0, #1
+ bne _021EE572
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021EE5D0
+ ldr r0, [r4, #0x14]
+ ldr r1, [r0]
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0]
+ cmp r1, r0
+ ble _021EE560
+ bl GF_AssertFail
+_021EE560:
+ ldr r0, [r4, #0x10]
+ ldr r1, [r0]
+ ldr r0, [r4, #0x14]
+ ldr r0, [r0]
+ sub r1, r1, r0
+ mov r0, #1
+ lsl r0, r0, #0x10
+ cmp r1, r0
+ bge _021EE574
+_021EE572:
+ b _021EE6B0
+_021EE574:
+ ldr r1, [r4, #0xc]
+ add r2, sp, #0x10
+ ldr r0, [r1]
+ ldr r1, [r1, #8]
+ add r3, sp, #0xc
+ bl MOD05_021EF4F8
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0xc]
+ add r2, r5, #0
+ bl MOD05_021EF2AC
+ ldr r3, [r4, #0xc]
+ add r2, r4, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #8]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x11
+ sub r1, r1, r2
+ mov r0, #0x11
+ ror r1, r0
+ add r0, r2, r1
+ beq _021EE5B2
+ mov r0, #1
+ bl FUN_020336A0
+ cmp r0, #0
+ bne _021EE692
+_021EE5B2:
+ ldr r0, [r4, #8]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x11
+ sub r1, r1, r2
+ mov r0, #0x11
+ ror r1, r0
+ add r0, r2, r1
+ beq _021EE5C6
+ bl GF_AssertFail
+_021EE5C6:
+ mov r0, #0
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ b _021EE6B0
+_021EE5D0:
+ ldr r2, [r4, #0xc]
+ ldr r3, [r4]
+ ldr r7, [r2]
+ cmp r3, r7
+ beq _021EE5E8
+ ldr r1, [r4, #8]
+ ldr r0, [r2, #8]
+ cmp r1, r0
+ beq _021EE5E8
+ bl GF_AssertFail
+ b _021EE6B0
+_021EE5E8:
+ cmp r3, r7
+ bne _021EE5F4
+ ldr r1, [r4, #8]
+ ldr r0, [r2, #8]
+ cmp r1, r0
+ beq _021EE6B0
+_021EE5F4:
+ mov r3, #1
+ str r3, [r4, #0x18]
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4]
+ ldr r1, [r2]
+ cmp r0, r1
+ beq _021EE648
+ cmp r0, r1
+ ble _021EE612
+ str r4, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ str r0, [r4, #0x14]
+ mov r0, #3
+ strb r0, [r4, #0x1c]
+ b _021EE618
+_021EE612:
+ str r2, [r4, #0x10]
+ str r4, [r4, #0x14]
+ strb r3, [r4, #0x1c]
+_021EE618:
+ ldr r0, [r4]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x11
+ sub r1, r1, r2
+ mov r0, #0x11
+ ror r1, r0
+ add r0, r2, r1
+ beq _021EE632
+ mov r0, #1
+ bl FUN_020336A0
+ cmp r0, #0
+ bne _021EE692
+_021EE632:
+ ldr r0, [r4]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x11
+ sub r1, r1, r2
+ mov r0, #0x11
+ ror r1, r0
+ add r0, r2, r1
+ beq _021EE6A8
+ bl GF_AssertFail
+ b _021EE6A8
+_021EE648:
+ add r1, r5, #0
+ add r1, #0xd8
+ add r0, r5, #0
+ ldr r1, [r1]
+ add r0, #0xd4
+ ldr r0, [r0]
+ ldr r1, [r1, #8]
+ cmp r0, r1
+ ble _021EE66A
+ add r0, r4, #0
+ add r0, #8
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ add r0, #8
+ str r0, [r4, #0x14]
+ mov r0, #4
+ b _021EE676
+_021EE66A:
+ add r2, #8
+ add r0, r4, #0
+ str r2, [r4, #0x10]
+ add r0, #8
+ str r0, [r4, #0x14]
+ mov r0, #2
+_021EE676:
+ strb r0, [r4, #0x1c]
+ ldr r0, [r4, #8]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x11
+ sub r1, r1, r2
+ mov r0, #0x11
+ ror r1, r0
+ add r0, r2, r1
+ beq _021EE694
+ mov r0, #1
+ bl FUN_020336A0
+ cmp r0, #0
+ beq _021EE694
+_021EE692:
+ b _021EE8C2
+_021EE694:
+ ldr r0, [r4, #8]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x11
+ sub r1, r1, r2
+ mov r0, #0x11
+ ror r1, r0
+ add r0, r2, r1
+ beq _021EE6A8
+ bl GF_AssertFail
+_021EE6A8:
+ ldrb r0, [r4, #0x1c]
+ add r1, r5, #0
+ bl MOD05_021EF458
+_021EE6B0:
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #3
+ bls _021EE6BC
+ b _021EE818
+_021EE6BC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EE6C8: ; jump table
+ .short _021EE6D0 - _021EE6C8 - 2 ; case 0
+ .short _021EE726 - _021EE6C8 - 2 ; case 1
+ .short _021EE818 - _021EE6C8 - 2 ; case 2
+ .short _021EE804 - _021EE6C8 - 2 ; case 3
+_021EE6D0:
+ add r0, r6, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ add r1, r6, r0
+ add r1, #0x20
+ ldrb r1, [r1]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ add r1, #0x80
+ ldr r1, [r1]
+ cmp r1, #1
+ beq _021EE710
+ add r1, r5, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r4, r5, #0
+ str r1, [sp]
+ str r5, [sp, #4]
+ str r6, [sp, #8]
+ add r4, #0xf4
+ add r1, r5, #0
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r4, [r4]
+ add r1, #0xb8
+ add r2, #0xbc
+ add r3, #0xc0
+ ldr r1, [r1]
+ ldr r2, [r2]
+ ldr r3, [r3]
+ ldr r4, [r4, #4]
+ blx r4
+_021EE710:
+ add r0, r6, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ add r6, #0x22
+ mov r1, #1
+ add r0, r0, #1
+ strb r0, [r6]
+ add r0, r5, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021EE818
+_021EE726:
+ add r0, r6, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ sub r0, r0, #1
+ add r0, r6, r0
+ add r0, #0x20
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021EE75E
+ add r0, r6, #0
+ bl MOD05_021EDEAC
+ add r1, r6, #0
+ add r1, #0x22
+ ldrb r1, [r1]
+ mov r0, #0
+ sub r1, r1, #1
+ add r1, r6, r1
+ add r1, #0x20
+ ldrb r1, [r1]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ add r1, #0x80
+ str r0, [r1]
+_021EE75E:
+ add r0, r6, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ cmp r0, #2
+ bhi _021EE818
+ add r0, r6, #0
+ add r0, #0x10
+ bl MOD05_021EE45C
+ cmp r0, #1
+ bne _021EE818
+ add r0, r6, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ cmp r0, #2
+ blo _021EE784
+ mov r0, #1
+ str r0, [r6, #0x24]
+ b _021EE78C
+_021EE784:
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+_021EE78C:
+ add r0, r6, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ sub r0, r0, #1
+ lsl r0, r0, #2
+ ldr r2, [r6, r0]
+ ldr r0, _021EE8C8 ; =0x00000864
+ ldr r1, [r2, r0]
+ cmp r1, #1
+ bne _021EE7C4
+ sub r0, #0x10
+ ldr r0, [r2, r0]
+ bl NNS_G3dGetMdlSet
+ add r7, r0, #0
+ ldrh r0, [r7, #0xe]
+ add r0, r7, r0
+ ldr r4, [r0, #0xc]
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl MOD05_021F4CA8
+ cmp r0, #1
+ bne _021EE7C4
+ add r0, r7, r4
+ bl MOD05_021DB5EC
+_021EE7C4:
+ add r0, r5, #0
+ add r0, #0xfc
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _021EE818
+ add r0, r6, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ mov r2, #0x86
+ lsl r2, r2, #4
+ sub r0, r0, #1
+ lsl r0, r0, #2
+ ldr r4, [r6, r0]
+ ldr r1, [r4, r2]
+ cmp r1, #0
+ blt _021EE818
+ add r0, r5, #0
+ add r6, r5, #0
+ add r0, #0xc0
+ add r6, #0xc4
+ ldr r0, [r0]
+ ldr r6, [r6]
+ mul r6, r0
+ cmp r1, r6
+ bge _021EE818
+ mov r0, #1
+ lsl r0, r0, #8
+ add r2, #8
+ ldr r0, [r5, r0]
+ ldr r2, [r4, r2]
+ blx r3
+ b _021EE818
+_021EE804:
+ add r6, #0x10
+ add r0, r6, #0
+ bl MOD05_021EE45C
+ cmp r0, #1
+ bne _021EE818
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa0
+ strb r1, [r0]
+_021EE818:
+ add r0, r5, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021EE83A
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa2
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa1
+ strb r1, [r0]
+ mov r0, #2
+ add r5, #0xb4
+ add sp, #0x14
+ str r0, [r5]
+ pop {r4, r5, r6, r7, pc}
+_021EE83A:
+ add r0, r5, #0
+ bl MOD05_021EF0F0
+ cmp r0, #1
+ bne _021EE8C2
+ add r0, r5, #0
+ add r0, #0xa2
+ ldrb r1, [r0]
+ mov r0, #0x30
+ mov r2, #0
+ mul r0, r1
+ add r0, r5, r0
+ str r2, [r0, #0x2c]
+ add r0, r5, #0
+ bl MOD05_021EF100
+ add r0, r5, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xa0
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa2
+ ldrb 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, r5, #0
+ add r1, r2, r1
+ add r0, #0xa2
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021EE890
+ mov r1, #0
+ b _021EE8A0
+_021EE890:
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa2
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa1
+ strb r1, [r0]
+ mov r1, #2
+_021EE8A0:
+ add r0, r5, #0
+ add r0, #0xb4
+ str r1, [r0]
+ ldr r0, [r5, #0x6c]
+ cmp r0, #1
+ bne _021EE8C2
+ mov r0, #0
+ str r0, [r5, #0x6c]
+ add r0, r5, #0
+ add r0, #0x70
+ ldrb r0, [r0]
+ add r1, r5, #0
+ bl MOD05_021EF118
+ add r0, r5, #0
+ bl MOD05_021EF094
+_021EE8C2:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EE8C8: .word 0x00000864
+
+ thumb_func_start MOD05_021EE8CC
+MOD05_021EE8CC: ; 0x021EE8CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ ldr r4, [sp, #0x34]
+ str r2, [sp, #0x10]
+ add r7, r0, #0
+ ldr r0, [r4, #0x6c]
+ add r5, r3, #0
+ str r1, [sp, #0xc]
+ ldr r6, [sp, #0x30]
+ cmp r0, #1
+ bne _021EE8E6
+ bl GF_AssertFail
+_021EE8E6:
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, sp, #0x14
+ bl MOD05_021EEF9C
+ cmp r0, #1
+ bne _021EE964
+ add r1, sp, #0x14
+ ldrb r1, [r1]
+ add r0, r4, #0
+ bl MOD05_021EDE7C
+ add r0, r4, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ cmp r0, #2
+ blo _021EE948
+ mov r0, #1
+ str r0, [r4, #0x6c]
+ ldr r0, [sp, #0xc]
+ str r7, [r4, #0x74]
+ str r0, [r4, #0x78]
+ add r1, r4, #0
+ ldr r0, [sp, #0x10]
+ add r1, #0x7c
+ strb r0, [r1]
+ add r0, r4, #0
+ add r0, #0x7d
+ strb r5, [r0]
+ ldr r0, [sp, #0x10]
+ add r2, r4, #0
+ add r2, #0x90
+ lsl r1, r0, #2
+ ldr r0, [r2, r1]
+ str r0, [r4, #0x64]
+ lsl r0, r5, #2
+ ldr r3, [r2, r0]
+ str r3, [r4, #0x68]
+ add r4, #0x70
+ strb r6, [r4]
+ ldr r3, [r2, r1]
+ mov r1, #0x86
+ lsl r1, r1, #4
+ str r7, [r3, r1]
+ ldr r2, [r2, r0]
+ ldr r0, [sp, #0xc]
+ add sp, #0x18
+ str r0, [r2, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+_021EE948:
+ add r0, r4, #0
+ str r5, [sp]
+ add r0, #0xa1
+ ldrb r0, [r0]
+ ldr r2, [sp, #0xc]
+ add r1, r7, #0
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r3, [sp, #0x10]
+ add r0, r4, #0
+ bl MOD05_021EE470
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021EE964:
+ add r0, r4, #0
+ str r5, [sp]
+ add r0, #0xa1
+ ldrb r0, [r0]
+ ldr r2, [sp, #0xc]
+ add r1, r7, #0
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r3, [sp, #0x10]
+ add r0, r4, #0
+ bl MOD05_021EE470
+ cmp r0, #1
+ beq _021EE984
+ bl GF_AssertFail
+_021EE984:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EE988
+MOD05_021EE988: ; 0x021EE988
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r4, r6, #0
+ lsl r5, r0, #2
+ add r4, #0x90
+ ldr r1, [r4, r5]
+ ldr r0, _021EE9CC ; =0x00000864
+ mov r2, #0
+ str r2, [r1, r0]
+ ldr r1, [r4, r5]
+ sub r0, #8
+ ldr r0, [r1, r0]
+ bl MOD05_021F43CC
+ ldr r1, [r4, r5]
+ ldr r0, _021EE9D0 ; =0x00000868
+ ldr r0, [r1, r0]
+ bl MOD05_021E7C1C
+ mov r0, #0
+ mov r2, #0x86
+ ldr r1, [r4, r5]
+ mvn r0, r0
+ lsl r2, r2, #4
+ str r0, [r1, r2]
+ ldr r1, [r4, r5]
+ sub r2, #0x60
+ bl MIi_CpuClearFast
+ add r0, r6, r5
+ mov r1, #1
+ add r0, #0x80
+ str r1, [r0]
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021EE9CC: .word 0x00000864
+_021EE9D0: .word 0x00000868
+
+ thumb_func_start MOD05_021EE9D4
+MOD05_021EE9D4: ; 0x021EE9D4
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [sp, #0x18]
+ add r5, r1, #0
+ add r1, r4, #0
+ add r6, r0, #0
+ add r7, r2, #0
+ str r3, [sp]
+ bl MOD05_021EE988
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EE988
+ add r4, #0x90
+ lsl r1, r6, #2
+ lsl r5, r5, #2
+ lsl r2, r7, #2
+ ldr r0, [r4, r1]
+ ldr r3, [r4, r5]
+ ldr r6, [r4, r2]
+ str r6, [r4, r1]
+ ldr r1, [sp]
+ lsl r6, r1, #2
+ ldr r1, [r4, r6]
+ str r1, [r4, r5]
+ str r0, [r4, r2]
+ str r3, [r4, r6]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EEA0C
+MOD05_021EEA0C: ; 0x021EEA0C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r1, [sp, #8]
+ add r7, r0, #0
+ ldr r0, [sp, #8]
+ add r6, r2, #0
+ cmp r0, #4
+ bls _021EEA1E
+ b _021EED32
+_021EEA1E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EEA2A: ; jump table
+ .short _021EED32 - _021EEA2A - 2 ; case 0
+ .short _021EEBA4 - _021EEA2A - 2 ; case 1
+ .short _021EEC80 - _021EEA2A - 2 ; case 2
+ .short _021EEAD2 - _021EEA2A - 2 ; case 3
+ .short _021EEA34 - _021EEA2A - 2 ; case 4
+_021EEA34:
+ mov r0, #2
+ mov r1, #3
+ mov r2, #0
+ mov r3, #1
+ str r6, [sp]
+ bl MOD05_021EE9D4
+ add r0, r6, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _021EEA7E
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ mov r0, #1
+ sub r5, r7, r2
+ str r0, [sp, #0x10]
+ mov r0, #0
+ sub r4, r5, #1
+ str r0, [sp, #0xc]
+ cmp r5, #0
+ bge _021EEA68
+ sub r5, r0, #1
+ add r4, r5, #0
+ b _021EEAB4
+_021EEA68:
+ cmp r4, #0
+ blt _021EEA78
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EEAB4
+_021EEA78:
+ mov r4, #0
+ mvn r4, r4
+ b _021EEAB4
+_021EEA7E:
+ cmp r0, #3
+ bne _021EEAB0
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ mov r0, #0
+ sub r5, r7, r2
+ str r0, [sp, #0x10]
+ mov r0, #1
+ add r4, r5, #1
+ str r0, [sp, #0xc]
+ cmp r5, #0
+ bge _021EEA9E
+ sub r5, r0, #2
+ add r4, r5, #0
+ b _021EEAB4
+_021EEA9E:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EEAB4
+ mov r4, #0
+ mvn r4, r4
+ b _021EEAB4
+_021EEAB0:
+ bl GF_AssertFail
+_021EEAB4:
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ ldr r0, [sp, #8]
+ lsl r2, r2, #0x18
+ str r0, [sp]
+ lsl r3, r3, #0x18
+ add r0, r5, #0
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ str r6, [sp, #4]
+ bl MOD05_021EE8CC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021EEAD2:
+ mov r0, #1
+ mov r1, #3
+ mov r2, #0
+ mov r3, #2
+ str r6, [sp]
+ bl MOD05_021EE9D4
+ add r0, r6, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021EEB30
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ sub r5, r7, #1
+ sub r0, r7, r2
+ sub r4, r0, #1
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ cmp r5, #0
+ blt _021EEB0E
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EEB14
+_021EEB0E:
+ mov r5, #0
+ mvn r5, r5
+ add r4, r5, #0
+_021EEB14:
+ cmp r4, #0
+ blt _021EEB2A
+ add r2, r6, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE34
+ cmp r0, #0
+ bne _021EEB86
+_021EEB2A:
+ mov r4, #0
+ mvn r4, r4
+ b _021EEB86
+_021EEB30:
+ cmp r0, #3
+ bne _021EEB82
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ sub r5, r7, #1
+ add r0, r7, r2
+ sub r4, r0, #1
+ mov r0, #0
+ str r0, [sp, #0x10]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ cmp r5, #0
+ blt _021EEB58
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EEB5E
+_021EEB58:
+ mov r5, #0
+ mvn r5, r5
+ add r4, r5, #0
+_021EEB5E:
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mul r0, r2
+ cmp r0, r4
+ ble _021EEB7C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE34
+ cmp r0, #0
+ bne _021EEB86
+_021EEB7C:
+ mov r4, #0
+ mvn r4, r4
+ b _021EEB86
+_021EEB82:
+ bl GF_AssertFail
+_021EEB86:
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ ldr r0, [sp, #8]
+ lsl r2, r2, #0x18
+ str r0, [sp]
+ lsl r3, r3, #0x18
+ add r0, r5, #0
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ str r6, [sp, #4]
+ bl MOD05_021EE8CC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021EEBA4:
+ mov r0, #0
+ mov r1, #2
+ mov r2, #1
+ mov r3, #3
+ str r6, [sp]
+ bl MOD05_021EE9D4
+ add r0, r6, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021EEC12
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ add r5, r7, #1
+ sub r0, r7, r2
+ add r4, r0, #1
+ mov r0, #3
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mul r0, r2
+ cmp r0, r5
+ ble _021EEBE8
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EEBEE
+_021EEBE8:
+ mov r5, #0
+ mvn r5, r5
+ add r4, r5, #0
+_021EEBEE:
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mul r0, r2
+ cmp r0, r4
+ ble _021EEC0C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE34
+ cmp r0, #0
+ bne _021EEC62
+_021EEC0C:
+ mov r4, #0
+ mvn r4, r4
+ b _021EEC62
+_021EEC12:
+ cmp r0, #2
+ bne _021EEC62
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ add r5, r7, #1
+ add r0, r7, r2
+ add r4, r0, #1
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mul r0, r2
+ cmp r0, r5
+ ble _021EEC42
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EEC48
+_021EEC42:
+ mov r5, #0
+ mvn r5, r5
+ add r4, r5, #0
+_021EEC48:
+ cmp r4, #0
+ blt _021EEC5E
+ add r2, r6, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE34
+ cmp r0, #0
+ bne _021EEC62
+_021EEC5E:
+ mov r4, #0
+ mvn r4, r4
+_021EEC62:
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ ldr r0, [sp, #8]
+ lsl r2, r2, #0x18
+ str r0, [sp]
+ lsl r3, r3, #0x18
+ add r0, r5, #0
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ str r6, [sp, #4]
+ bl MOD05_021EE8CC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021EEC80:
+ mov r0, #0
+ mov r1, #1
+ mov r2, #2
+ mov r3, #3
+ str r6, [sp]
+ bl MOD05_021EE9D4
+ add r0, r6, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021EECD0
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ mov r0, #3
+ str r0, [sp, #0x10]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r5, r7, r2
+ mul r0, r2
+ sub r4, r5, #1
+ cmp r0, r5
+ bgt _021EECBE
+ ldr r0, [sp, #0xc]
+ sub r5, r0, #3
+ add r4, r5, #0
+ b _021EED14
+_021EECBE:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EED14
+ mov r4, #0
+ mvn r4, r4
+ b _021EED14
+_021EECD0:
+ cmp r0, #1
+ bne _021EED10
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r5, r7, r2
+ mul r0, r2
+ add r4, r5, #1
+ cmp r0, r5
+ bgt _021EECFA
+ ldr r0, [sp, #0xc]
+ sub r5, r0, #4
+ add r4, r5, #0
+ b _021EED14
+_021EECFA:
+ cmp r0, r4
+ ble _021EED0A
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EED14
+_021EED0A:
+ mov r4, #0
+ mvn r4, r4
+ b _021EED14
+_021EED10:
+ bl GF_AssertFail
+_021EED14:
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ ldr r0, [sp, #8]
+ lsl r2, r2, #0x18
+ str r0, [sp]
+ lsl r3, r3, #0x18
+ add r0, r5, #0
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ str r6, [sp, #4]
+ bl MOD05_021EE8CC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021EED32:
+ bl GF_AssertFail
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EED3C
+MOD05_021EED3C: ; 0x021EED3C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r5, r1, #0
+ add r4, r5, #0
+ lsl r6, r0, #2
+ mov r0, #0x86
+ add r3, sp, #0x38
+ mov r1, #0
+ str r1, [r3]
+ str r1, [r3, #4]
+ str r2, [sp, #4]
+ add r2, r5, #0
+ add r4, #0x90
+ str r1, [r3, #8]
+ add r2, #0xbc
+ ldr r1, [r4, r6]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r1, r5, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl MOD05_021EF300
+ ldr r1, [r4, r6]
+ ldr r0, _021EEDD4 ; =0x00000864
+ ldr r0, [r1, r0]
+ cmp r0, #1
+ bne _021EEDA6
+ ldr r3, _021EEDD8 ; =UNK05_021F8B14
+ add r2, sp, #0x2c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r3, _021EEDDC ; =UNK05_021F8B20
+ str r0, [r2]
+ add r2, sp, #8
+ mov r7, #4
+_021EED88:
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ sub r7, r7, #1
+ bne _021EED88
+ ldr r0, [r3]
+ add r3, sp, #0x2c
+ str r0, [r2]
+ mov r0, #2
+ ldr r1, [r4, r6]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ add r1, sp, #0x38
+ add r2, sp, #8
+ bl FUN_0201B26C
+_021EEDA6:
+ ldr r4, [r4, r6]
+ ldr r0, _021EEDD4 ; =0x00000864
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021EEDCE
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl MOD05_021F4CA8
+ add r2, r0, #0
+ ldr r0, _021EEDE0 ; =0x00000868
+ add r5, #0xb8
+ ldr r0, [r4, r0]
+ ldr r3, [sp, #4]
+ str r0, [sp]
+ ldr r1, [r5]
+ add r0, sp, #0x38
+ bl MOD05_021E7DD8
+_021EEDCE:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EEDD4: .word 0x00000864
+_021EEDD8: .word UNK05_021F8B14
+_021EEDDC: .word UNK05_021F8B20
+_021EEDE0: .word 0x00000868
+
+ thumb_func_start MOD05_021EEDE4
+MOD05_021EEDE4: ; 0x021EEDE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r1, #0
+ add r6, r0, #0
+ add r1, r7, #0
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl _u32_div_f
+ lsr r0, r0, #5
+ add r1, r0, #0
+ lsr r2, r4, #5
+ mul r1, r5
+ add r0, r2, r1
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EEE08
+MOD05_021EEE08: ; 0x021EEE08
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EEE10
+MOD05_021EEE10: ; 0x021EEE10
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r1, #0
+ add r6, r0, #0
+ add r1, r7, #0
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl _u32_div_f
+ lsr r0, r0, #5
+ add r1, r0, #0
+ lsr r2, r4, #5
+ mul r1, r5
+ add r0, r2, r1
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EEE34
+MOD05_021EEE34: ; 0x021EEE34
+ push {r3, lr}
+ cmp r0, #0
+ bne _021EEE3E
+ mov r0, #3
+ pop {r3, pc}
+_021EEE3E:
+ cmp r0, #1
+ bne _021EEE46
+ mov r0, #2
+ pop {r3, pc}
+_021EEE46:
+ cmp r0, #2
+ bne _021EEE4E
+ mov r0, #1
+ pop {r3, pc}
+_021EEE4E:
+ cmp r0, #3
+ bne _021EEE56
+ mov r0, #0
+ pop {r3, pc}
+_021EEE56:
+ bl GF_AssertFail
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EEE60
+MOD05_021EEE60: ; 0x021EEE60
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r4, r3, #0
+ cmp r0, #4
+ bhi _021EEEC0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EEE76: ; jump table
+ .short _021EEEC0 - _021EEE76 - 2 ; case 0
+ .short _021EEE80 - _021EEE76 - 2 ; case 1
+ .short _021EEE96 - _021EEE76 - 2 ; case 2
+ .short _021EEEA4 - _021EEE76 - 2 ; case 3
+ .short _021EEEB8 - _021EEE76 - 2 ; case 4
+_021EEE80:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl _s32_div_f
+ add r0, r1, #1
+ cmp r0, r5
+ blt _021EEE92
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021EEE92:
+ add r0, r4, #1
+ pop {r3, r4, r5, pc}
+_021EEE96:
+ lsl r1, r1, #5
+ add r0, r4, r5
+ mul r1, r5
+ cmp r0, r1
+ blt _021EEEC6
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021EEEA4:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl _s32_div_f
+ sub r0, r1, #1
+ bpl _021EEEB4
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021EEEB4:
+ sub r0, r4, #1
+ pop {r3, r4, r5, pc}
+_021EEEB8:
+ sub r0, r4, r5
+ bpl _021EEEC6
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021EEEC0:
+ bl GF_AssertFail
+ mov r0, #0
+_021EEEC6:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021EEEC8
+MOD05_021EEEC8: ; 0x021EEEC8
+ cmp r0, #4
+ bhi _021EEF00
+ add r2, r0, r0
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021EEED8: ; jump table
+ .short _021EEF00 - _021EEED8 - 2 ; case 0
+ .short _021EEEFA - _021EEED8 - 2 ; case 1
+ .short _021EEEEA - _021EEED8 - 2 ; case 2
+ .short _021EEEF2 - _021EEED8 - 2 ; case 3
+ .short _021EEEE2 - _021EEED8 - 2 ; case 4
+_021EEEE2:
+ sub r0, r1, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_021EEEEA:
+ add r0, r1, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_021EEEF2:
+ sub r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_021EEEFA:
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+_021EEF00:
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EEF04
+MOD05_021EEF04: ; 0x021EEF04
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ bl MOD05_021EEEC8
+ cmp r5, r0
+ bge _021EEF36
+ sub r0, r0, r5
+ cmp r0, #1
+ bne _021EEF22
+ ldrb r0, [r4]
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ b _021EEF62
+_021EEF22:
+ cmp r0, #2
+ bne _021EEF30
+ ldrb r0, [r4]
+ sub r0, r0, #2
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ b _021EEF62
+_021EEF30:
+ bl GF_AssertFail
+ b _021EEF62
+_021EEF36:
+ cmp r5, r0
+ ble _021EEF5E
+ sub r0, r5, r0
+ cmp r0, #1
+ bne _021EEF4A
+ ldrb r0, [r4]
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ b _021EEF62
+_021EEF4A:
+ cmp r0, #2
+ bne _021EEF58
+ ldrb r0, [r4]
+ add r0, r0, #2
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ b _021EEF62
+_021EEF58:
+ bl GF_AssertFail
+ b _021EEF62
+_021EEF5E:
+ bl GF_AssertFail
+_021EEF62:
+ strb r6, [r4]
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EEF68
+MOD05_021EEF68: ; 0x021EEF68
+ push {r3, lr}
+ cmp r0, #4
+ bhi _021EEF94
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EEF7A: ; jump table
+ .short _021EEF94 - _021EEF7A - 2 ; case 0
+ .short _021EEF8C - _021EEF7A - 2 ; case 1
+ .short _021EEF88 - _021EEF7A - 2 ; case 2
+ .short _021EEF90 - _021EEF7A - 2 ; case 3
+ .short _021EEF84 - _021EEF7A - 2 ; case 4
+_021EEF84:
+ mov r0, #2
+ pop {r3, pc}
+_021EEF88:
+ mov r0, #4
+ pop {r3, pc}
+_021EEF8C:
+ mov r0, #3
+ pop {r3, pc}
+_021EEF90:
+ mov r0, #1
+ pop {r3, pc}
+_021EEF94:
+ bl GF_AssertFail
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021EEF9C
+MOD05_021EEF9C: ; 0x021EEF9C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ mov r4, #0
+_021EEFA6:
+ ldr r0, [r5, #0x2c]
+ cmp r0, #1
+ bne _021EEFC2
+ add r0, r6, #0
+ bl MOD05_021EEF68
+ add r1, r5, #0
+ add r1, #0x30
+ ldrb r1, [r1]
+ cmp r1, r0
+ bne _021EEFC2
+ strb r4, [r7]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EEFC2:
+ add r4, r4, #1
+ add r5, #0x30
+ cmp r4, #2
+ blt _021EEFA6
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EEFD0
+MOD05_021EEFD0: ; 0x021EEFD0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xa1
+ ldrb r1, [r0]
+ mov r0, #0x30
+ add r4, r5, #0
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x2c]
+ add r4, #0x64
+ cmp r0, #0
+ beq _021EEFEC
+ bl GF_AssertFail
+_021EEFEC:
+ add r1, r5, #0
+ add r1, #0xa1
+ ldrb r2, [r1]
+ mov r1, #0x30
+ mov r0, #1
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ add r3, r5, #0
+ str r0, [r2, #0x2c]
+ add r3, #0xa1
+ ldrb r3, [r3]
+ ldrb r2, [r4, #0xc]
+ add r6, r3, #0
+ mul r6, r1
+ add r3, r5, r6
+ add r3, #0x30
+ strb r2, [r3]
+ add r3, r5, #0
+ add r3, #0xa1
+ ldrb r3, [r3]
+ ldr r2, [r4, #0x10]
+ add r6, r3, #0
+ mul r6, r1
+ add r3, r5, r6
+ str r2, [r3, #0x1c]
+ add r3, r5, #0
+ add r3, #0xa1
+ ldrb r3, [r3]
+ ldr r2, [r4, #0x14]
+ add r6, r3, #0
+ mul r6, r1
+ add r3, r5, r6
+ str r2, [r3, #0x20]
+ add r3, r5, #0
+ add r3, #0xa1
+ ldrb r3, [r3]
+ ldrb r2, [r4, #0x18]
+ add r6, r3, #0
+ mul r6, r1
+ add r3, r5, r6
+ add r3, #0x24
+ strb r2, [r3]
+ add r3, r5, #0
+ add r3, #0xa1
+ ldrb r3, [r3]
+ ldrb r2, [r4, #0x19]
+ add r6, r3, #0
+ mul r6, r1
+ add r3, r5, r6
+ add r3, #0x25
+ strb r2, [r3]
+ add r3, r5, #0
+ add r3, #0xa1
+ ldrb r3, [r3]
+ ldr r2, [r4]
+ add r6, r3, #0
+ mul r6, r1
+ add r3, r5, r6
+ str r2, [r3, #4]
+ add r2, r5, #0
+ add r2, #0xa1
+ ldrb r2, [r2]
+ ldr r4, [r4, #4]
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ add r3, r5, #0
+ str r4, [r2, #8]
+ add r3, #0xa1
+ ldrb r3, [r3]
+ mov r2, #0
+ add r4, r3, #0
+ mul r4, r1
+ add r3, r5, r4
+ add r3, #0x26
+ strb r2, [r3]
+ add r3, r5, #0
+ add r3, #0xa1
+ ldrb r3, [r3]
+ mul r1, r3
+ add r1, r5, r1
+ str r2, [r1, #0x28]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021EF094
+MOD05_021EF094: ; 0x021EF094
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ add r4, r5, #0
+ add r4, #0x64
+ cmp r0, #2
+ blo _021EF0A8
+ bl GF_AssertFail
+_021EF0A8:
+ add r0, r5, #0
+ bl MOD05_021EEFD0
+ cmp r0, #1
+ beq _021EF0B6
+ bl GF_AssertFail
+_021EF0B6:
+ mov r0, #0x86
+ ldr r2, [r4, #0x10]
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ ldr r2, [r4, #0x14]
+ ldr r1, [r4, #4]
+ str r2, [r1, r0]
+ add r0, r5, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xa0
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa1
+ ldrb r0, [r0]
+ add r5, #0xa1
+ 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, [r5]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF0F0
+MOD05_021EF0F0: ; 0x021EF0F0
+ add r1, r0, #0
+ add r1, #0xa2
+ ldrb r2, [r1]
+ mov r1, #0x30
+ mul r1, r2
+ add r0, r0, r1
+ ldr r0, [r0, #0x28]
+ bx lr
+
+ thumb_func_start MOD05_021EF100
+MOD05_021EF100: ; 0x021EF100
+ mov r3, #0
+ add r2, r3, #0
+_021EF104:
+ lsl r1, r3, #2
+ add r1, r0, r1
+ add r1, #0x80
+ str r2, [r1]
+ add r1, r3, #1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #4
+ blo _021EF104
+ bx lr
+
+ thumb_func_start MOD05_021EF118
+MOD05_021EF118: ; 0x021EF118
+ cmp r0, #4
+ bhi _021EF168
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EF128: ; jump table
+ .short _021EF168 - _021EF128 - 2 ; case 0
+ .short _021EF140 - _021EF128 - 2 ; case 1
+ .short _021EF14E - _021EF128 - 2 ; case 2
+ .short _021EF15C - _021EF128 - 2 ; case 3
+ .short _021EF132 - _021EF128 - 2 ; case 4
+_021EF132:
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0x88
+ str r2, [r0]
+ add r1, #0x8c
+ str r2, [r1]
+ bx lr
+_021EF140:
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0x80
+ str r2, [r0]
+ add r1, #0x88
+ str r2, [r1]
+ bx lr
+_021EF14E:
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0x80
+ str r2, [r0]
+ add r1, #0x84
+ str r2, [r1]
+ bx lr
+_021EF15C:
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0x84
+ str r2, [r0]
+ add r1, #0x8c
+ str r2, [r1]
+_021EF168:
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF16C
+MOD05_021EF16C: ; 0x021EF16C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ add r4, r3, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ bl MOD05_021EDFBC
+ add r2, r5, #0
+ add r3, r5, #0
+ str r4, [sp]
+ add r0, sp, #0x10
+ str r0, [sp, #4]
+ add r2, #0xc0
+ add r3, #0xc4
+ ldr r2, [r2]
+ ldr r3, [r3]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD05_021EDED0
+ mov r6, #0
+ add r7, sp, #0x10
+_021EF19A:
+ lsl r4, r6, #2
+ bl MOD05_021F4328
+ add r1, r5, r4
+ add r1, #0x90
+ ldr r2, [r1]
+ ldr r1, _021EF1F8 ; =0x0000085C
+ str r0, [r2, r1]
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r1, [r0]
+ ldr r0, _021EF1F8 ; =0x0000085C
+ ldr r0, [r1, r0]
+ bl MOD05_021F4454
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl MOD05_021F4CA8
+ add r1, r5, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r2, r5, #0
+ str r1, [sp]
+ add r1, r5, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r3, r5, #0
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r5, [sp, #0xc]
+ add r2, #0xb8
+ add r3, #0xbc
+ ldr r0, [r7, r4]
+ ldr r2, [r2]
+ ldr r3, [r3]
+ add r1, r6, #0
+ bl MOD05_021EE2A4
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #4
+ blo _021EF19A
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EF1F8: .word 0x0000085C
+
+ thumb_func_start MOD05_021EF1FC
+MOD05_021EF1FC: ; 0x021EF1FC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ add r4, r3, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ bl MOD05_021EE050
+ add r2, r5, #0
+ add r3, r5, #0
+ str r4, [sp]
+ add r0, sp, #0x10
+ str r0, [sp, #4]
+ add r2, #0xc0
+ add r3, #0xc4
+ ldr r2, [r2]
+ ldr r3, [r3]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD05_021EDED0
+ mov r4, #0
+ add r7, r4, #0
+_021EF22A:
+ lsl r6, r4, #2
+ add r0, r5, r6
+ add r0, #0x90
+ ldr r1, [r0]
+ ldr r0, _021EF278 ; =0x0000085C
+ str r7, [r1, r0]
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl MOD05_021F4CA8
+ add r1, r5, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r2, r5, #0
+ str r1, [sp]
+ add r1, r5, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r3, r5, #0
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r5, [sp, #0xc]
+ add r0, sp, #0x10
+ add r2, #0xb8
+ add r3, #0xbc
+ ldr r0, [r0, r6]
+ ldr r2, [r2]
+ ldr r3, [r3]
+ add r1, r4, #0
+ bl MOD05_021EE38C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021EF22A
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EF278: .word 0x0000085C
+
+ thumb_func_start MOD05_021EF27C
+MOD05_021EF27C: ; 0x021EF27C
+ push {r4, lr}
+ add r1, r0, #0
+ mov r3, #0
+ add r1, #0xa2
+ strb r3, [r1]
+ add r1, r0, #0
+ add r1, #0xa1
+ strb r3, [r1]
+ add r1, r0, #0
+ add r1, #0xa0
+ strb r3, [r1]
+ add r4, r0, #0
+ add r2, r3, #0
+ mov r1, #1
+_021EF298:
+ str r2, [r4, #0x2c]
+ str r1, [r4, #0x28]
+ add r3, r3, #1
+ add r4, #0x30
+ cmp r3, #2
+ blt _021EF298
+ bl MOD05_021EF100
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF2AC
+MOD05_021EF2AC: ; 0x021EF2AC
+ push {r4, lr}
+ add r4, r2, #0
+ add r2, #0xc8
+ ldr r2, [r2]
+ bl MOD05_021EEE08
+ add r1, r4, #0
+ add r1, #0xa8
+ str r0, [r1]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0xc8
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD05_021EF620
+ add r1, r4, #0
+ add r1, #0xad
+ strb r0, [r1]
+ add r0, r4, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ bl MOD05_021EEE34
+ add r1, r4, #0
+ add r1, #0xac
+ strb r0, [r1]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r0, #0xa8
+ add r1, #0xc0
+ add r2, #0xc8
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl MOD05_021EEE10
+ add r4, #0xa4
+ str r0, [r4]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EF300
+MOD05_021EF300: ; 0x021EF300
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r2, #0
+ mov r2, #1
+ add r5, r3, #0
+ lsl r2, r2, #0x14
+ str r2, [r5]
+ str r2, [r5, #8]
+ mov r2, #0
+ add r4, r0, #0
+ mvn r2, r2
+ str r1, [sp, #4]
+ cmp r4, r2
+ beq _021EF362
+ bl _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r6, r0, #0x10
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r7, #0
+ bl MapMatrix_GetWidth
+ str r0, [sp, #8]
+ add r0, r7, #0
+ bl MapMatrix_GetMatrixID
+ add r1, r0, #0
+ ldr r0, [sp, #8]
+ add r2, r6, #0
+ str r0, [sp]
+ add r0, r7, #0
+ add r3, r4, #0
+ bl MapMatrix_GetMapAltitude
+ lsl r0, r0, #0xf
+ str r0, [r5, #4]
+ ldr r1, [r5]
+ lsl r0, r6, #0x15
+ add r0, r1, r0
+ str r0, [r5]
+ ldr r1, [r5, #8]
+ lsl r0, r4, #0x15
+ add r0, r1, r0
+ str r0, [r5, #8]
+_021EF362:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF368
+MOD05_021EF368: ; 0x021EF368
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r1, [sp]
+ mov r1, #0x41
+ add r5, r0, #0
+ mov r0, #4
+ lsl r1, r1, #2
+ str r2, [sp, #4]
+ add r6, r3, #0
+ bl AllocFromHeap
+ mov r2, #0x41
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl MI_CpuFill8
+ cmp r6, #0
+ bne _021EF39A
+ add r0, r4, #0
+ ldr r1, _021EF42C ; =UNK05_021F8B04
+ add r0, #0xf4
+ str r1, [r0]
+ mov r7, #1
+ b _021EF3AE
+_021EF39A:
+ cmp r6, #1
+ bne _021EF3AA
+ add r0, r4, #0
+ ldr r1, _021EF430 ; =UNK05_021F8B0C
+ add r0, #0xf4
+ str r1, [r0]
+ mov r7, #0
+ b _021EF3AE
+_021EF3AA:
+ bl GF_AssertFail
+_021EF3AE:
+ add r0, r7, #0
+ bl MOD05_021F3BC0
+ str r0, [r4]
+ add r1, r4, #0
+ ldr r0, [sp]
+ add r1, #0xb8
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r5, [r0]
+ add r0, r5, #0
+ bl MapMatrix_GetWidth
+ add r1, r4, #0
+ add r1, #0xc0
+ str r0, [r1]
+ add r0, r5, #0
+ bl MapMatrix_GetHeight
+ add r1, r4, #0
+ add r1, #0xc4
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r1, r0, #5
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ add r1, r4, #0
+ ldr r0, [sp, #4]
+ add r1, #0xf0
+ str r0, [r1]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xec
+ str r1, [r0]
+ add r0, r4, #0
+ bl MOD05_021EF27C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb0
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0xb4
+ str r1, [r0]
+ mov r0, #0x43
+ mov r1, #4
+ bl NARC_ctor
+ add r1, r4, #0
+ add r1, #0xf8
+ str r0, [r1]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xfc
+ str r1, [r0]
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EF42C: .word UNK05_021F8B04
+_021EF430: .word UNK05_021F8B0C
+
+ thumb_func_start MOD05_021EF434
+MOD05_021EF434: ; 0x021EF434
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r5, #0
+ add r6, #0xf4
+ add r3, r5, #0
+ ldr r6, [r6]
+ add r3, #0xc8
+ ldr r3, [r3]
+ ldr r6, [r6]
+ add r4, r1, #0
+ add r7, r2, #0
+ blx r6
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl MOD05_021EF2AC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021EF458
+MOD05_021EF458: ; 0x021EF458
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r2, r5, #0
+ add r3, r5, #0
+ add r1, #0xc4
+ add r2, #0xc8
+ add r3, #0xa8
+ ldr r1, [r1]
+ ldr r2, [r2]
+ ldr r3, [r3]
+ add r6, r0, #0
+ bl MOD05_021EEE60
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0xc0
+ add r2, #0xc8
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r7, r0, #0
+ bl MOD05_021EEDE4
+ add r1, r5, #0
+ add r1, #0xc8
+ add r4, r0, #0
+ ldr r1, [r1]
+ add r0, r7, #0
+ bl MOD05_021EF620
+ add r1, r5, #0
+ add r1, #0xa4
+ ldr r1, [r1]
+ cmp r1, r4
+ bne _021EF4C0
+ add r1, r5, #0
+ add r1, #0xad
+ ldrb r1, [r1]
+ cmp r1, r0
+ beq _021EF4C0
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD05_021EEA0C
+ add r1, r5, #0
+ add r1, #0xad
+ add r5, #0xac
+ ldrb r1, [r1]
+ add r0, r6, #0
+ add r2, r5, #0
+ bl MOD05_021EEF04
+_021EF4C0:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF4C4
+MOD05_021EF4C4: ; 0x021EF4C4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ sub r7, r4, #1
+_021EF4CE:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ add r0, #0x90
+ ldr r1, [r0]
+ mov r0, #0x86
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r0, r7
+ beq _021EF4EA
+ add r0, r4, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD05_021EED3C
+_021EF4EA:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021EF4CE
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF4F8
+MOD05_021EF4F8: ; 0x021EF4F8
+ push {r3, r4}
+ asr r4, r0, #0xf
+ lsr r4, r4, #0x10
+ add r4, r0, r4
+ asr r0, r4, #0x10
+ str r0, [r2]
+ asr r0, r1, #0xf
+ lsr r0, r0, #0x10
+ add r0, r1, r0
+ asr r0, r0, #0x10
+ str r0, [r3]
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF514
+MOD05_021EF514: ; 0x021EF514
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl ClearFileCache
+ bl NNS_GfdResetLnkTexVramState
+ bl NNS_GfdResetLnkPlttVramState
+ mov r4, #0
+ add r6, r5, #4
+ mov r7, #0x30
+_021EF52A:
+ add r0, r4, #0
+ mul r0, r7
+ add r0, r6, r0
+ bl MOD05_021EDEAC
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #2
+ blo _021EF52A
+ mov r6, #0
+ add r7, r6, #0
+_021EF542:
+ lsl r4, r6, #2
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r2, [r0]
+ ldr r0, _021EF59C ; =0x00000864
+ mov r1, #0
+ str r1, [r2, r0]
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r1, [r0]
+ ldr r0, _021EF5A0 ; =0x0000085C
+ ldr r0, [r1, r0]
+ bl MOD05_021F43C0
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r1, [r0]
+ ldr r0, _021EF5A4 ; =0x00000868
+ ldr r0, [r1, r0]
+ bl MOD05_021E7C14
+ add r0, r5, r4
+ add r0, #0x90
+ ldr r0, [r0]
+ bl FreeToHeap
+ add r0, r5, r4
+ add r0, #0x90
+ str r7, [r0]
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #4
+ blo _021EF542
+ add r0, r5, #0
+ mov r1, #3
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0xb0
+ str r1, [r0]
+ add r5, #0xec
+ str r7, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EF59C: .word 0x00000864
+_021EF5A0: .word 0x0000085C
+_021EF5A4: .word 0x00000868
+
+ thumb_func_start MOD05_021EF5A8
+MOD05_021EF5A8: ; 0x021EF5A8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ bl NARC_dtor
+ ldr r0, [r4]
+ bl MOD05_021F3C30
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF5C4
+MOD05_021EF5C4: ; 0x021EF5C4
+ add r1, r0, #0
+ add r1, #0xb0
+ ldr r1, [r1]
+ cmp r1, #1
+ bne _021EF5DA
+ add r0, #0xa0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021EF5DA
+ mov r0, #1
+ bx lr
+_021EF5DA:
+ mov r0, #0
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF5E0
+MOD05_021EF5E0: ; 0x021EF5E0
+ push {r4, r5}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r2, r4, #0
+ add r3, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0xcc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r4, #0xd8
+ str r0, [r2]
+ str r5, [r4]
+ pop {r4, r5}
+ bx lr
+
+ thumb_func_start MOD05_021EF5FC
+MOD05_021EF5FC: ; 0x021EF5FC
+ mov r1, #0
+ add r0, #0xd8
+ str r1, [r0]
+ bx lr
+
+ thumb_func_start MOD05_021EF604
+MOD05_021EF604: ; 0x021EF604
+ lsl r0, r0, #2
+ add r0, r1, r0
+ add r0, #0x90
+ ldr r1, [r0]
+ ldr r0, _021EF614 ; =0x00000868
+ ldr r0, [r1, r0]
+ str r0, [r2]
+ bx lr
+ .balign 4, 0
+_021EF614: .word 0x00000868
+
+ thumb_func_start MOD05_021EF618
+MOD05_021EF618: ; 0x021EF618
+ add r0, #0xac
+ ldrb r0, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF620
+MOD05_021EF620: ; 0x021EF620
+ push {r4, lr}
+ add r4, r0, #0
+ bl _u32_div_f
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1b
+ sub r1, r1, r2
+ mov r0, #0x1b
+ ror r1, r0
+ mov r0, #0x1f
+ and r0, r4
+ add r1, r2, r1
+ cmp r0, #0x10
+ bge _021EF648
+ cmp r1, #0x10
+ bge _021EF644
+ mov r0, #0
+ pop {r4, pc}
+_021EF644:
+ mov r0, #2
+ pop {r4, pc}
+_021EF648:
+ cmp r1, #0x10
+ bge _021EF650
+ mov r0, #1
+ pop {r4, pc}
+_021EF650:
+ mov r0, #3
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EF654
+MOD05_021EF654: ; 0x021EF654
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ cmp r0, r5
+ bne _021EF66A
+ add r4, #0xac
+ ldrb r0, [r4]
+ pop {r3, r4, r5, pc}
+_021EF66A:
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _021EF676
+ bl GF_AssertFail
+_021EF676:
+ add r0, r4, #0
+ add r0, #0xac
+ ldrb r1, [r0]
+ cmp r1, #3
+ bls _021EF682
+ b _021EF820
+_021EF682:
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EF68E: ; jump table
+ .short _021EF696 - _021EF68E - 2 ; case 0
+ .short _021EF6F8 - _021EF68E - 2 ; case 1
+ .short _021EF75C - _021EF68E - 2 ; case 2
+ .short _021EF7BE - _021EF68E - 2 ; case 3
+_021EF696:
+ add r0, r4, #0
+ add r0, #0xa4
+ add r2, r4, #0
+ ldr r0, [r0]
+ add r2, #0xc0
+ ldr r2, [r2]
+ sub r3, r5, r0
+ cmp r2, r3
+ bne _021EF6B0
+ add r0, r1, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF6B0:
+ cmp r3, #1
+ bne _021EF6CA
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ beq _021EF6CA
+ add r4, #0xac
+ ldrb r0, [r4]
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF6CA:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa4
+ add r1, #0xc0
+ ldr r2, [r1]
+ ldr r0, [r0]
+ add r3, r2, #1
+ sub r1, r5, r0
+ cmp r3, r1
+ bne _021EF6F4
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EF6F4
+ add r4, #0xac
+ ldrb r0, [r4]
+ add r0, r0, #3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF6F4:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021EF6F8:
+ add r0, r4, #0
+ add r0, #0xa4
+ add r2, r4, #0
+ ldr r0, [r0]
+ add r2, #0xc0
+ ldr r2, [r2]
+ sub r3, r5, r0
+ cmp r2, r3
+ bne _021EF712
+ add r0, r1, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF712:
+ sub r1, r0, r5
+ cmp r1, #1
+ bne _021EF72E
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ beq _021EF72E
+ add r4, #0xac
+ ldrb r0, [r4]
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF72E:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa4
+ add r1, #0xc0
+ ldr r2, [r1]
+ ldr r0, [r0]
+ sub r3, r2, #1
+ sub r1, r5, r0
+ cmp r3, r1
+ bne _021EF758
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EF758
+ add r4, #0xac
+ ldrb r0, [r4]
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF758:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021EF75C:
+ add r0, r4, #0
+ add r0, #0xa4
+ add r2, r4, #0
+ ldr r0, [r0]
+ add r2, #0xc0
+ ldr r2, [r2]
+ sub r3, r0, r5
+ cmp r2, r3
+ bne _021EF776
+ sub r0, r1, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF776:
+ sub r1, r2, #1
+ cmp r1, r3
+ bne _021EF792
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EF792
+ add r4, #0xac
+ ldrb r0, [r4]
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF792:
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ sub r1, r5, r0
+ cmp r1, #1
+ bne _021EF7BA
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ beq _021EF7BA
+ add r4, #0xac
+ ldrb r0, [r4]
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF7BA:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021EF7BE:
+ add r0, r4, #0
+ add r0, #0xa4
+ add r2, r4, #0
+ ldr r0, [r0]
+ add r2, #0xc0
+ ldr r2, [r2]
+ sub r3, r0, r5
+ cmp r2, r3
+ bne _021EF7D8
+ sub r0, r1, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF7D8:
+ add r1, r2, #1
+ cmp r1, r3
+ bne _021EF7F4
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ bne _021EF7F4
+ add r4, #0xac
+ ldrb r0, [r4]
+ sub r0, r0, #3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF7F4:
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ sub r1, r0, r5
+ cmp r1, #1
+ bne _021EF81C
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r1, r5, #0
+ bl MOD05_021EDE58
+ cmp r0, #0
+ beq _021EF81C
+ add r4, #0xac
+ ldrb r0, [r4]
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+_021EF81C:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021EF820:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021EF824
+MOD05_021EF824: ; 0x021EF824
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #4
+ blo _021EF832
+ bl GF_AssertFail
+_021EF832:
+ lsl r0, r5, #2
+ add r0, r4, r0
+ add r0, #0x90
+ ldr r1, [r0]
+ mov r0, #0x86
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF844
+MOD05_021EF844: ; 0x021EF844
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ asr r2, r6, #4
+ add r5, r0, #0
+ lsr r2, r2, #0x1b
+ add r2, r6, r2
+ add r4, r1, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ asr r0, r4, #4
+ lsr r0, r0, #0x1b
+ add r0, r4, r0
+ asr r2, r2, #5
+ str r3, [sp]
+ add r3, r2, #0
+ asr r0, r0, #5
+ mul r3, r1
+ add r7, r0, r3
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mul r0, r1
+ cmp r7, r0
+ blo _021EF882
+ mov r0, #1
+ bl FUN_020336A0
+ cmp r0, #0
+ beq _021EF882
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021EF882:
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mul r0, r1
+ cmp r7, r0
+ blo _021EF898
+ bl GF_AssertFail
+_021EF898:
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r1, [r0]
+ add r0, r6, #0
+ mul r0, r1
+ add r0, r4, r0
+ bl MOD05_021EF620
+ add r1, r0, #0
+ add r0, r7, #0
+ add r2, r5, #0
+ bl MOD05_021EF654
+ ldr r1, [sp]
+ cmp r1, #0
+ beq _021EF8BA
+ strb r0, [r1]
+_021EF8BA:
+ cmp r0, #3
+ bls _021EF8C2
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021EF8C2:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF8C8
+MOD05_021EF8C8: ; 0x021EF8C8
+ lsl r1, r1, #2
+ add r0, r0, r1
+ add r0, #0x90
+ ldr r1, [r0]
+ ldr r0, _021EF8D8 ; =0x0000085C
+ ldr r0, [r1, r0]
+ bx lr
+ nop
+_021EF8D8: .word 0x0000085C
+
+ thumb_func_start MOD05_021EF8DC
+MOD05_021EF8DC: ; 0x021EF8DC
+ lsl r1, r1, #2
+ add r0, r0, r1
+ add r0, #0x90
+ ldr r0, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF8E8
+MOD05_021EF8E8: ; 0x021EF8E8
+ add r3, r0, #0
+ add r3, #0xfc
+ str r1, [r3]
+ mov r1, #1
+ lsl r1, r1, #8
+ str r2, [r0, r1]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EF8F8
+MOD05_021EF8F8: ; 0x021EF8F8
+ push {r3, lr}
+ bl FUN_0201B6C8
+ mov r1, #1
+ str r1, [r0, #0x1c]
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021EF904
+MOD05_021EF904: ; 0x021EF904
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _021EF914
+ mov r0, #5
+ strb r0, [r4, #0x14]
+_021EF914:
+ ldrb r0, [r4, #0x14]
+ cmp r0, #5
+ bhi _021EF9FE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EF926: ; jump table
+ .short _021EF932 - _021EF926 - 2 ; case 0
+ .short _021EF962 - _021EF926 - 2 ; case 1
+ .short _021EF998 - _021EF926 - 2 ; case 2
+ .short _021EF9B6 - _021EF926 - 2 ; case 3
+ .short _021EF9FE - _021EF926 - 2 ; case 4
+ .short _021EF9EC - _021EF926 - 2 ; case 5
+_021EF932:
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r0, #0xe
+ ldr r5, [r4, #4]
+ lsl r0, r0, #0xc
+ cmp r5, r0
+ bgt _021EF944
+ mov r0, #2
+ b _021EF948
+_021EF944:
+ add r5, r0, #0
+ mov r0, #1
+_021EF948:
+ strb r0, [r4, #0x14]
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4]
+ ldr r3, [r2]
+ ldr r2, [r4, #0x24]
+ add r1, r5, #0
+ add r2, r3, r2
+ bl NARC_ReadFile
+ ldr r0, [r4, #0x24]
+ add r0, r0, r5
+ str r0, [r4, #0x24]
+ pop {r4, r5, r6, pc}
+_021EF962:
+ ldr r2, [r4, #0x24]
+ ldr r0, [r4, #4]
+ sub r5, r0, r2
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ cmp r5, r0
+ ble _021EF976
+ add r5, r0, #0
+ mov r6, #0
+ b _021EF978
+_021EF976:
+ mov r6, #1
+_021EF978:
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4]
+ ldr r3, [r3]
+ add r1, r5, #0
+ add r2, r3, r2
+ bl NARC_ReadFile
+ cmp r6, #0
+ beq _021EF990
+ mov r0, #2
+ strb r0, [r4, #0x14]
+ pop {r4, r5, r6, pc}
+_021EF990:
+ ldr r0, [r4, #0x24]
+ add r0, r0, r5
+ str r0, [r4, #0x24]
+ pop {r4, r5, r6, pc}
+_021EF998:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021EF9B0
+ bl FUN_0201B254
+ cmp r0, #1
+ bne _021EF9B0
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r0]
+ bl FUN_0201B3A8
+_021EF9B0:
+ mov r0, #3
+ strb r0, [r4, #0x14]
+ pop {r4, r5, r6, pc}
+_021EF9B6:
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0]
+ bl NNS_G3dGetMdlSet
+ add r5, r0, #0
+ ldrb r0, [r5, #9]
+ cmp r0, #1
+ beq _021EF9CA
+ bl GF_AssertFail
+_021EF9CA:
+ ldrh r0, [r5, #0xe]
+ add r0, r5, r0
+ ldr r0, [r0, #0xc]
+ add r5, r5, r0
+ bne _021EF9D8
+ bl GF_AssertFail
+_021EF9D8:
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl NNS_G3dRenderObjInit
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ str r1, [r0]
+ mov r0, #5
+ strb r0, [r4, #0x14]
+ pop {r4, r5, r6, pc}
+_021EF9EC:
+ ldr r0, [r4, #0x20]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r4, #0
+ bl FreeToHeap
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021EF9FE:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021EFA00
+MOD05_021EFA00: ; 0x021EFA00
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #4
+
+ thumb_func_start MOD05_021EFA08
+MOD05_021EFA08: ; 0x021EFA08
+ mov r1, #0x28
+ add r6, r2, #0
+ add r7, r3, #0
+ bl AllocFromHeapAtEnd
+ add r1, r0, #0
+ str r5, [r1]
+ str r4, [r1, #4]
+ str r6, [r1, #8]
+ ldr r0, [sp, #0x18]
+ str r7, [r1, #0xc]
+ str r0, [r1, #0x10]
+ mov r2, #0
+ ldr r0, [sp, #0x1c]
+ strb r2, [r1, #0x14]
+ str r0, [r1, #0x18]
+ str r2, [r0]
+ ldr r0, [sp, #0x20]
+ str r0, [r1, #0x20]
+ str r2, [r1, #0x1c]
+ ldr r0, _021EFA3C ; =MOD05_021EF904
+ mov r2, #1
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EFA3C: .word MOD05_021EF904
+
+ thumb_func_start MOD05_021EFA40
+MOD05_021EFA40: ; 0x021EFA40
+ push {r3, r4, r5, lr}
+ add r4, r3, #0
+ add r5, r2, #0
+ ldr r2, [r4]
+ bl NARC_ReadFile
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ beq _021EFA6A
+ bl FUN_0201B254
+ cmp r0, #1
+ bne _021EFA6A
+ ldr r0, [r4]
+ ldr r1, [sp, #0x10]
+ bl FUN_0201B3A8
+ cmp r0, #0
+ bne _021EFA6A
+ bl GF_AssertFail
+_021EFA6A:
+ ldr r0, [r4]
+ bl NNS_G3dGetMdlSet
+ ldrb r0, [r0, #9]
+ cmp r0, #1
+ beq _021EFA7A
+ bl GF_AssertFail
+_021EFA7A:
+ ldr r0, [r4]
+ bl NNS_G3dGetMdlSet
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r4, r0, r1
+ bne _021EFA8E
+ bl GF_AssertFail
+_021EFA8E:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl NNS_G3dRenderObjInit
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ .section .rodata
+
+ .global UNK05_021F8B04
+UNK05_021F8B04: ; 0x021F8B04
+ .word MOD05_021EF16C, MOD05_021EE114
+
+ .global UNK05_021F8B0C
+UNK05_021F8B0C: ; 0x021F8B0C
+ .word MOD05_021EF1FC, MOD05_021EE1E4
+
+ .global UNK05_021F8B14
+UNK05_021F8B14: ; 0x021F8B14
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00
+
+ .global UNK05_021F8B20
+UNK05_021F8B20: ; 0x021F8B20
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021EFA9C.s b/arm9/modules/05/asm/mod05_021EFA9C.s
new file mode 100644
index 00000000..b6c27091
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021EFA9C.s
@@ -0,0 +1,172 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EFA9C
+MOD05_021EFA9C: ; 0x021EFA9C
+ push {r3, lr}
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ beq _021EFAAA
+ bl MOD20_022524DC
+_021EFAAA:
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021EFAAC
+MOD05_021EFAAC: ; 0x021EFAAC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl Sav2_Poketch_get
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ bl SavArray_Flags_get
+ add r6, r0, #0
+ add r0, r4, #0
+ bl Sav2_Poketch_IsGiven
+ cmp r0, #0
+ beq _021EFAF8
+ add r0, r6, #0
+ bl FUN_0205F1E4
+ cmp r0, #0
+ bne _021EFAF8
+ ldr r0, _021EFB0C ; =SDK_OVERLAY_MODULE_20_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+ mov r0, #1
+ bl GetOamManager
+ str r0, [sp]
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #0xc]
+ ldr r3, [r5, #8]
+ add r0, r5, #0
+ add r1, #0x14
+ bl MOD20_02252448
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_021EFAF8:
+ ldr r0, _021EFB10 ; =SDK_OVERLAY_MODULE_19_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+ ldr r0, [r5, #8]
+ bl MOD19_02252440
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021EFB0C: .word SDK_OVERLAY_MODULE_20_ID
+_021EFB10: .word SDK_OVERLAY_MODULE_19_ID
+
+ thumb_func_start MOD05_021EFB14
+MOD05_021EFB14: ; 0x021EFB14
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl Sav2_Poketch_get
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ bl SavArray_Flags_get
+ add r6, r0, #0
+ add r0, r4, #0
+ bl Sav2_Poketch_IsGiven
+ cmp r0, #0
+ beq _021EFB46
+ add r0, r6, #0
+ bl FUN_0205F1E4
+ cmp r0, #0
+ bne _021EFB46
+ ldr r0, [r5, #4]
+ ldr r0, [r0, #0x14]
+ bl MOD20_022524BC
+ pop {r4, r5, r6, pc}
+_021EFB46:
+ ldr r0, [r5, #8]
+ bl MOD19_022524F4
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EFB50
+MOD05_021EFB50: ; 0x021EFB50
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl Sav2_Poketch_get
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ bl SavArray_Flags_get
+ add r6, r0, #0
+ add r0, r4, #0
+ bl Sav2_Poketch_IsGiven
+ cmp r0, #0
+ beq _021EFB94
+ add r0, r6, #0
+ bl FUN_0205F1E4
+ cmp r0, #0
+ bne _021EFB94
+ ldr r0, [r5, #4]
+ ldr r0, [r0, #0x14]
+ bl MOD20_022524D0
+ cmp r0, #0
+ beq _021EFBA8
+ ldr r0, [r5, #4]
+ mov r1, #0
+ str r1, [r0, #0x14]
+ ldr r0, _021EFBAC ; =SDK_OVERLAY_MODULE_20_ID
+ bl UnloadOverlayByID
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021EFB94:
+ ldr r0, [r5, #8]
+ bl MOD19_02252504
+ cmp r0, #0
+ beq _021EFBA8
+ 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 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 ; =SDK_OVERLAY_MODULE_19_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+ ldr r0, [r4, #8]
+ bl MOD19_02252440
+ pop {r4, pc}
+ .balign 4, 0
+_021EFBC8: .word SDK_OVERLAY_MODULE_19_ID
+
+ thumb_func_start MOD05_021EFBCC
+MOD05_021EFBCC: ; 0x021EFBCC
+ ldr r3, _021EFBD4 ; =MOD19_022524F4
+ ldr r0, [r0, #8]
+ bx r3
+ nop
+_021EFBD4: .word MOD19_022524F4
+
+ thumb_func_start MOD05_021EFBD8
+MOD05_021EFBD8: ; 0x021EFBD8
+ push {r3, lr}
+ ldr r0, [r0, #8]
+ bl MOD19_02252504
+ cmp r0, #0
+ beq _021EFBEE
+ 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 SDK_OVERLAY_MODULE_19_ID
diff --git a/arm9/modules/05/asm/mod05_021EFBF8.s b/arm9/modules/05/asm/mod05_021EFBF8.s
new file mode 100644
index 00000000..5f6b0a3b
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021EFBF8.s
@@ -0,0 +1,905 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EFBF8
+MOD05_021EFBF8: ; 0x021EFBF8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ bl FUN_020286EC
+ mov r1, #0
+ bl FUN_0202838C
+ add r1, r4, #0
+ ldr r0, [r4, #0x34]
+ add r1, #0x4c
+ mov r2, #4
+ bl FUN_020339B4
+ cmp r0, #0
+ bne _021EFC20
+ add sp, #8
+ mov r0, #1
+ pop {r4, pc}
+_021EFC20:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x8c
+ str r1, [r0]
+ ldr r0, [r4, #0x34]
+ bl Sav2_PlayerData_GetOptionsAddr
+ bl Options_GetFrame
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x30]
+ ldr r2, _021EFC6C ; =0x000001E2
+ ldr r0, [r0, #8]
+ mov r1, #3
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x30]
+ ldr r2, _021EFC70 ; =0x000003D9
+ ldr r0, [r0, #8]
+ mov r1, #3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #1
+ str r0, [r4, #0x48]
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021EFC6C: .word 0x000001E2
+_021EFC70: .word 0x000003D9
+
+ thumb_func_start MOD05_021EFC74
+MOD05_021EFC74: ; 0x021EFC74
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ mov r1, #0
+ add r6, r0, #0
+ mvn r1, r1
+ add r0, #0x8c
+ str r1, [r0]
+ mov r4, #0
+ bl FUN_02030F20
+ cmp r0, #0
+ ble _021EFCB0
+ add r5, r6, #0
+_021EFC8E:
+ ldr r0, [r5, #0x4c]
+ cmp r0, #2
+ bne _021EFCA4
+ add r0, r6, #0
+ add r0, #0x8c
+ str r4, [r0]
+ lsl r0, r4, #2
+ mov r1, #0
+ add r0, r6, r0
+ str r1, [r0, #0x4c]
+ b _021EFCB0
+_021EFCA4:
+ add r5, r5, #4
+ add r4, r4, #1
+ bl FUN_02030F20
+ cmp r4, r0
+ blt _021EFC8E
+_021EFCB0:
+ add r0, r6, #0
+ add r0, #0x8c
+ ldr r1, [r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _021EFCC4
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021EFCC4:
+ ldr r0, [r6, #0x34]
+ bl Sav2_Bag_get
+ ldr r1, _021EFD3C ; =0x000001B5
+ mov r2, #1
+ mov r3, #4
+ bl Bag_HasItem
+ cmp r0, #1
+ bne _021EFCFE
+ add r0, r6, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r6, #0x38]
+ mov r1, #0
+ bl BufferPlayersName
+ add r0, r6, #0
+ mov r1, #0x21
+ bl MOD05_021F01EC
+ mov r0, #2
+ str r0, [r6, #0x48]
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_021EFCFE:
+ ldr r0, [r6, #0x34]
+ bl FUN_020286EC
+ add r4, r0, #0
+ mov r5, #0
+_021EFD08:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0202842C
+ cmp r0, #0
+ bne _021EFD2A
+ mov r0, #0
+ add r1, r6, #0
+ str r0, [sp]
+ add r1, #0x8c
+ ldr r0, [r6, #0x34]
+ ldr r1, [r1]
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_02033A70
+ b _021EFD30
+_021EFD2A:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021EFD08
+_021EFD30:
+ mov r0, #1
+ str r0, [r6, #0x48]
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021EFD3C: .word 0x000001B5
+
+ thumb_func_start MOD05_021EFD40
+MOD05_021EFD40: ; 0x021EFD40
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021EFD6C
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #0x30]
+ ldr r1, _021EFD74 ; =UNK05_021F8B44
+ ldr r0, [r0, #8]
+ ldr r2, _021EFD78 ; =0x000003D9
+ mov r3, #0xb
+ bl Std_CreateYesNoMenu
+ str r0, [r4, #0x44]
+ mov r0, #3
+ str r0, [r4, #0x48]
+_021EFD6C:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021EFD74: .word UNK05_021F8B44
+_021EFD78: .word 0x000003D9
+
+ thumb_func_start MOD05_021EFD7C
+MOD05_021EFD7C: ; 0x021EFD7C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r0, #0
+ ldr r0, [r6, #0x44]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021EFD98
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_021EFD98:
+ cmp r0, #0
+ bne _021EFDE4
+ ldr r0, [r6, #0x34]
+ bl FUN_020286EC
+ add r5, r0, #0
+ mov r4, #0
+_021EFDA6:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0202842C
+ cmp r0, #0
+ bne _021EFDC8
+ mov r0, #0
+ add r1, r6, #0
+ str r0, [sp]
+ add r1, #0x8c
+ ldr r0, [r6, #0x34]
+ ldr r1, [r1]
+ add r2, r4, #0
+ mov r3, #4
+ bl FUN_02033A70
+ b _021EFDCE
+_021EFDC8:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _021EFDA6
+_021EFDCE:
+ cmp r4, #0x20
+ bne _021EFDE4
+ add r0, r6, #0
+ mov r1, #0x22
+ bl MOD05_021F01EC
+ mov r0, #4
+ str r0, [r6, #0x48]
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_021EFDE4:
+ mov r0, #1
+ str r0, [r6, #0x48]
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021EFDF0
+MOD05_021EFDF0: ; 0x021EFDF0
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021EFE1C
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #0x30]
+ ldr r1, _021EFE24 ; =UNK05_021F8B44
+ ldr r0, [r0, #8]
+ ldr r2, _021EFE28 ; =0x000003D9
+ mov r3, #0xb
+ bl Std_CreateYesNoMenu
+ str r0, [r4, #0x44]
+ mov r0, #5
+ str r0, [r4, #0x48]
+_021EFE1C:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021EFE24: .word UNK05_021F8B44
+_021EFE28: .word 0x000003D9
+
+ thumb_func_start MOD05_021EFE2C
+MOD05_021EFE2C: ; 0x021EFE2C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x44]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021EFE44
+ mov r0, #0
+ pop {r4, pc}
+_021EFE44:
+ cmp r0, #0
+ bne _021EFE4C
+ mov r0, #8
+ b _021EFE6A
+_021EFE4C:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl BufferPlayersName
+ add r0, r4, #0
+ mov r1, #0x23
+ bl MOD05_021F01EC
+ mov r0, #6
+_021EFE6A:
+ str r0, [r4, #0x48]
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EFE70
+MOD05_021EFE70: ; 0x021EFE70
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021EFE9C
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #0x30]
+ ldr r1, _021EFEA4 ; =UNK05_021F8B44
+ ldr r0, [r0, #8]
+ ldr r2, _021EFEA8 ; =0x000003D9
+ mov r3, #0xb
+ bl Std_CreateYesNoMenu
+ str r0, [r4, #0x44]
+ mov r0, #7
+ str r0, [r4, #0x48]
+_021EFE9C:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021EFEA4: .word UNK05_021F8B44
+_021EFEA8: .word 0x000003D9
+
+ thumb_func_start MOD05_021EFEAC
+MOD05_021EFEAC: ; 0x021EFEAC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x44]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021EFEC4
+ mov r0, #0
+ pop {r4, pc}
+_021EFEC4:
+ cmp r0, #0
+ bne _021EFECC
+ mov r0, #0xc
+ b _021EFED6
+_021EFECC:
+ add r0, r4, #0
+ mov r1, #0x22
+ bl MOD05_021F01EC
+ mov r0, #4
+_021EFED6:
+ str r0, [r4, #0x48]
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021EFEDC
+MOD05_021EFEDC: ; 0x021EFEDC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ ldr r0, [r5, #0x34]
+ bl FUN_020286EC
+ add r6, r0, #0
+ bl FUN_02028448
+ add r7, r0, #0
+ add r0, r7, #1
+ mov r1, #4
+ bl ListMenuItems_ctor
+ str r0, [r5]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021EFFB8 ; =0x000002A1
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x30]
+ add r1, #0x20
+ ldr r0, [r0, #8]
+ mov r2, #3
+ mov r3, #0x13
+ bl AddWindowParameterized
+ add r0, r5, #0
+ ldr r2, _021EFFBC ; =0x000003D9
+ add r0, #0x20
+ mov r1, #1
+ mov r3, #0xb
+ bl DrawFrameAndWindow1
+ mov r4, #0
+_021EFF2E:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0202842C
+ cmp r0, #0
+ beq _021EFF54
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_020283A4
+ add r1, r0, #0
+ ldr r0, [r5, #8]
+ bl CopyU16ArrayToString
+ ldr r0, [r5]
+ ldr r1, [r5, #8]
+ add r2, r4, #0
+ bl ListMenuItems_AddItem
+_021EFF54:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _021EFF2E
+ mov r2, #0xb
+ add r3, r2, #0
+ ldr r0, [r5]
+ ldr r1, [r5, #0x3c]
+ sub r3, #0xd
+ bl ListMenuItems_AppendFromMsgData
+ ldr r4, _021EFFC0 ; =UNK05_021F8B4C
+ 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}
+ add r1, r7, #1
+ add r0, sp, #0x14
+ strh r1, [r0, #0x10]
+ mov r1, #5
+ strh r1, [r0, #0x12]
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0x20
+ str r0, [sp, #0x20]
+ ldr r0, _021EFFC4 ; =MOD05_021F0304
+ str r5, [sp, #0x30]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r2, r1, #0
+ mov r3, #4
+ bl ListMenuInit
+ str r0, [r5, #4]
+ add r0, r5, #0
+ add r0, #0x20
+ bl CopyWindowToVram
+ mov r0, #9
+ str r0, [r5, #0x48]
+ mov r0, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021EFFB8: .word 0x000002A1
+_021EFFBC: .word 0x000003D9
+_021EFFC0: .word UNK05_021F8B4C
+_021EFFC4: .word MOD05_021F0304
+
+ thumb_func_start MOD05_021EFFC8
+MOD05_021EFFC8: ; 0x021EFFC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ bl ListMenu_ProcessInput
+ add r4, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _021EFFE6
+ add r0, r0, #1
+ cmp r4, r0
+ bne _021F000E
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021EFFE6:
+ ldr r0, _021F007C ; =0x000005DC
+ bl PlaySE
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl BufferPlayersName
+ add r0, r5, #0
+ mov r1, #0x23
+ bl MOD05_021F01EC
+ mov r0, #6
+ str r0, [r5, #0x48]
+ b _021F0056
+_021F000E:
+ ldr r0, _021F007C ; =0x000005DC
+ bl PlaySE
+ add r0, r5, #0
+ add r0, #0x90
+ str r4, [r0]
+ ldr r0, [r5, #0x34]
+ bl FUN_020286EC
+ add r7, r0, #0
+ mov r0, #4
+ bl PlayerProfile_new
+ add r6, r0, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_020283A4
+ add r1, r0, #0
+ add r0, r6, #0
+ bl CopyPlayerName
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ add r2, r6, #0
+ bl BufferPlayersName
+ add r0, r6, #0
+ bl FreeToHeap
+ add r0, r5, #0
+ mov r1, #0x24
+ bl MOD05_021F01EC
+ mov r0, #0xa
+ str r0, [r5, #0x48]
+_021F0056:
+ add r0, r5, #0
+ add r0, #0x20
+ mov r1, #0
+ bl ClearFrameAndWindow1
+ add r0, r5, #0
+ add r0, #0x20
+ bl RemoveWindow
+ mov r1, #0
+ ldr r0, [r5, #4]
+ add r2, r1, #0
+ bl DestroyListMenu
+ ldr r0, [r5]
+ bl ListMenuItems_dtor
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F007C: .word 0x000005DC
+
+ thumb_func_start MOD05_021F0080
+MOD05_021F0080: ; 0x021F0080
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021F00AC
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #0x30]
+ ldr r1, _021F00B4 ; =UNK05_021F8B44
+ ldr r0, [r0, #8]
+ ldr r2, _021F00B8 ; =0x000003D9
+ mov r3, #0xb
+ bl Std_CreateYesNoMenu
+ str r0, [r4, #0x44]
+ mov r0, #0xb
+ str r0, [r4, #0x48]
+_021F00AC:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021F00B4: .word UNK05_021F8B44
+_021F00B8: .word 0x000003D9
+
+ thumb_func_start MOD05_021F00BC
+MOD05_021F00BC: ; 0x021F00BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x34]
+ bl FUN_020286EC
+ add r4, r0, #0
+ ldr r0, [r5, #0x44]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021F00DC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F00DC:
+ cmp r0, #0
+ bne _021F0104
+ add r1, r5, #0
+ add r1, #0x90
+ ldr r1, [r1]
+ add r0, r4, #0
+ bl FUN_02028468
+ mov r0, #0
+ add r1, r5, #0
+ str r0, [sp]
+ add r1, #0x8c
+ ldr r0, [r5, #0x34]
+ ldr r1, [r1]
+ mov r2, #0x1f
+ mov r3, #4
+ bl FUN_02033A70
+ mov r0, #1
+ b _021F0122
+_021F0104:
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl BufferPlayersName
+ add r0, r5, #0
+ mov r1, #0x23
+ bl MOD05_021F01EC
+ mov r0, #6
+_021F0122:
+ str r0, [r5, #0x48]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F0128
+MOD05_021F0128: ; 0x021F0128
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_0204652C
+
+ thumb_func_start MOD05_021F0130
+MOD05_021F0130: ; 0x021F0130
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_02046528
+ ldr r0, [r4, #0x48]
+ cmp r0, #0xc
+ bhi _021F01E8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F014A: ; jump table
+ .short _021F0164 - _021F014A - 2 ; case 0
+ .short _021F0174 - _021F014A - 2 ; case 1
+ .short _021F0184 - _021F014A - 2 ; case 2
+ .short _021F018C - _021F014A - 2 ; case 3
+ .short _021F0194 - _021F014A - 2 ; case 4
+ .short _021F019C - _021F014A - 2 ; case 5
+ .short _021F01A4 - _021F014A - 2 ; case 6
+ .short _021F01AC - _021F014A - 2 ; case 7
+ .short _021F01B4 - _021F014A - 2 ; case 8
+ .short _021F01BC - _021F014A - 2 ; case 9
+ .short _021F01C4 - _021F014A - 2 ; case 10
+ .short _021F01CC - _021F014A - 2 ; case 11
+ .short _021F01D4 - _021F014A - 2 ; case 12
+_021F0164:
+ add r0, r4, #0
+ bl MOD05_021EFBF8
+ cmp r0, #0
+ beq _021F01E8
+ mov r0, #0xc
+ str r0, [r4, #0x48]
+ b _021F01E8
+_021F0174:
+ add r0, r4, #0
+ bl MOD05_021EFC74
+ cmp r0, #0
+ beq _021F01E8
+ mov r0, #0xc
+ str r0, [r4, #0x48]
+ b _021F01E8
+_021F0184:
+ add r0, r4, #0
+ bl MOD05_021EFD40
+ b _021F01E8
+_021F018C:
+ add r0, r4, #0
+ bl MOD05_021EFD7C
+ b _021F01E8
+_021F0194:
+ add r0, r4, #0
+ bl MOD05_021EFDF0
+ b _021F01E8
+_021F019C:
+ add r0, r4, #0
+ bl MOD05_021EFE2C
+ b _021F01E8
+_021F01A4:
+ add r0, r4, #0
+ bl MOD05_021EFE70
+ b _021F01E8
+_021F01AC:
+ add r0, r4, #0
+ bl MOD05_021EFEAC
+ b _021F01E8
+_021F01B4:
+ add r0, r4, #0
+ bl MOD05_021EFEDC
+ b _021F01E8
+_021F01BC:
+ add r0, r4, #0
+ bl MOD05_021EFFC8
+ b _021F01E8
+_021F01C4:
+ add r0, r4, #0
+ bl MOD05_021F0080
+ b _021F01E8
+_021F01CC:
+ add r0, r4, #0
+ bl MOD05_021F00BC
+ b _021F01E8
+_021F01D4:
+ add r0, r4, #0
+ bl MOD05_021F0290
+ add r0, r4, #0
+ bl FreeToHeap
+ bl FUN_02037778
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F01E8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F01EC
+MOD05_021F01EC: ; 0x021F01EC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r0, #0x10
+ add r5, r1, #0
+ bl WindowIsInUse
+ cmp r0, #0
+ beq _021F0204
+ add r0, r4, #0
+ add r0, #0x10
+ bl RemoveWindow
+_021F0204:
+ ldr r0, [r4, #0x3c]
+ ldr r2, [r4, #8]
+ add r1, r5, #0
+ bl ReadMsgDataIntoString
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #8]
+ bl StringExpandPlaceholders
+ ldr r0, [r4, #0x30]
+ add r1, r4, #0
+ ldr r0, [r0, #8]
+ add r1, #0x10
+ mov r2, #3
+ bl FUN_020545B8
+ ldr r0, [r4, #0x30]
+ ldr r0, [r0, #0xc]
+ bl Sav2_PlayerData_GetOptionsAddr
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02054608
+ ldr r0, [r4, #0x30]
+ ldr r0, [r0, #0xc]
+ bl Sav2_PlayerData_GetOptionsAddr
+ add r2, r0, #0
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ mov r3, #1
+ bl FUN_02054658
+ str r0, [r4, #0x40]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0254
+MOD05_021F0254: ; 0x021F0254
+ push {r4, lr}
+ mov r1, #0
+ mov r2, #0x94
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #4
+ bl ScrStrBufs_new
+ str r0, [r4, #0x38]
+ ldr r2, _021F028C ; =0x00000251
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl NewMsgDataFromNarc
+ str r0, [r4, #0x3c]
+ mov r0, #0x6e
+ mov r1, #4
+ bl String_ctor
+ str r0, [r4, #0xc]
+ mov r0, #0x6e
+ mov r1, #4
+ bl String_ctor
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .balign 4, 0
+_021F028C: .word 0x00000251
+
+ thumb_func_start MOD05_021F0290
+MOD05_021F0290: ; 0x021F0290
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ bl DestroyMsgData
+ ldr r0, [r4, #0x38]
+ bl ScrStrBufs_delete
+ ldr r0, [r4, #0xc]
+ bl String_dtor
+ ldr r0, [r4, #8]
+ bl String_dtor
+ add r0, r4, #0
+ add r0, #0x10
+ bl WindowIsInUse
+ cmp r0, #0
+ beq _021F02C0
+ add r4, #0x10
+ add r0, r4, #0
+ bl RemoveWindow
+_021F02C0:
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F02C4
+MOD05_021F02C4: ; 0x021F02C4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, [r6, #0x10]
+ mov r0, #0xb
+ mov r1, #0x94
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ bl MOD05_021F0254
+ str r6, [r4, #0x30]
+ ldr r0, [r6, #0xc]
+ str r0, [r4, #0x34]
+ mov r0, #0
+ str r0, [r4, #0x48]
+ cmp r5, #0
+ bne _021F02F2
+ ldr r1, _021F0300 ; =MOD05_021F0128
+ add r0, r6, #0
+ add r2, r4, #0
+ bl FUN_020463CC
+ pop {r4, r5, r6, pc}
+_021F02F2:
+ ldr r1, _021F0300 ; =MOD05_021F0128
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_0204640C
+ pop {r4, r5, r6, pc}
+ nop
+_021F0300: .word MOD05_021F0128
+
+ thumb_func_start MOD05_021F0304
+MOD05_021F0304: ; 0x021F0304
+ push {r3, lr}
+ cmp r2, #0
+ bne _021F0310
+ ldr r0, _021F0314 ; =0x000005DC
+ bl PlaySE
+_021F0310:
+ pop {r3, pc}
+ nop
+_021F0314: .word 0x000005DC
+
+ .section .rodata
+
+ .global UNK05_021F8B44
+UNK05_021F8B44: ; 0x021F8B44
+ .byte 0x03, 0x19, 0x0D, 0x06, 0x04, 0x0D, 0x15, 0x03
+
+ .global UNK05_021F8B4C
+UNK05_021F8B4C: ; 0x021F8B4C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x20, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x10, 0x2F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021F0318.s b/arm9/modules/05/asm/mod05_021F0318.s
new file mode 100644
index 00000000..9a597269
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F0318.s
@@ -0,0 +1,258 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0318
+MOD05_021F0318: ; 0x021F0318
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x6c
+ add r4, r3, #0
+ add r7, r0, #0
+ add r5, r1, #0
+ mov r0, #0
+ str r0, [sp, #0x58]
+ ldr r1, [r4, #0x50]
+ add r0, sp, #0x60
+ add r6, r2, #0
+ bl Camera_GetLookAtCamTarget
+ ldr r3, _021F0434 ; =UNK05_021F8B6C
+ add r2, sp, #0xc
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ cmp r6, #0x60
+ str r0, [r2]
+ bhs _021F0352
+ mov r1, #0x60
+ sub r0, r1, r6
+ lsl r0, r0, #0x18
+ ldrh r2, [r4]
+ lsr r0, r0, #0x18
+ mul r0, r2
+ bl _s32_div_f
+ b _021F036C
+_021F0352:
+ sub r6, #0x60
+ lsl r0, r6, #0x18
+ ldrh r1, [r4]
+ lsr r0, r0, #0x18
+ mul r0, r1
+ mov r1, #0x60
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ mov r0, #0
+ mvn r0, r0
+ mul r0, r1
+_021F036C:
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r5, #0x80
+ bhs _021F038A
+ mov r2, #0x80
+ sub r2, r2, r5
+ lsl r2, r2, #0x18
+ ldrh r0, [r4, #2]
+ lsr r2, r2, #0x18
+ mul r2, r0
+ asr r0, r2, #6
+ lsr r0, r0, #0x19
+ add r0, r2, r0
+ lsl r0, r0, #9
+ b _021F03A8
+_021F038A:
+ ldrh r2, [r4, #2]
+ sub r5, #0x80
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ add r3, r2, #0
+ mul r3, r0
+ asr r0, r3, #6
+ lsr r0, r0, #0x19
+ add r0, r3, r0
+ lsl r0, r0, #9
+ lsr r2, r0, #0x10
+ mov r0, #0
+ mvn r0, r0
+ mul r0, r2
+ lsl r0, r0, #0x10
+_021F03A8:
+ lsr r5, r0, #0x10
+ asr r0, r1, #4
+ lsl r3, r0, #1
+ lsl r1, r3, #1
+ ldr r2, _021F0438 ; =FX_SinCosTable_
+ add r3, r3, #1
+ lsl r3, r3, #1
+ ldrsh r1, [r2, r1]
+ ldrsh r2, [r2, r3]
+ add r0, sp, #0x24
+ bl MTX_RotX43_
+ add r0, sp, #0xc
+ add r1, sp, #0x24
+ add r2, sp, #0x18
+ bl MTX_MultVec43
+ asr r0, r5, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ ldr r3, _021F0438 ; =FX_SinCosTable_
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0x24
+ bl MTX_RotY43_
+ add r0, sp, #0x18
+ add r1, sp, #0x24
+ add r2, r0, #0
+ bl MTX_MultVec43
+ add r0, sp, #0x18
+ add r1, r4, #0
+ add r1, #0x20
+ add r2, r0, #0
+ bl MTX_MultVec43
+ add r0, r4, #0
+ add r0, #0x10
+ add r1, sp, #0x18
+ bl VEC_DotProduct
+ add r1, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FX_Div
+ neg r0, r0
+ add r1, sp, #0x18
+ add r2, r4, #4
+ add r3, sp, #0
+ bl VEC_MultAdd
+ ldr r1, [sp, #0x60]
+ ldr r0, [sp]
+ add r2, sp, #0x54
+ add r0, r1, r0
+ str r0, [sp, #0x54]
+ ldr r1, [sp, #0x68]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ str r0, [sp, #0x5c]
+ ldmia r2!, {r0, r1}
+ stmia r7!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r7]
+ add sp, #0x6c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F0434: .word UNK05_021F8B6C
+_021F0438: .word FX_SinCosTable_
+
+ thumb_func_start MOD05_021F043C
+MOD05_021F043C: ; 0x021F043C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ mov r1, #0x60
+ bl AllocFromHeap
+ add r1, r5, #0
+ add r4, r0, #0
+ bl MOD05_021F0454
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F0454
+MOD05_021F0454: ; 0x021F0454
+ push {r4, r5, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ bl Camera_GetAngle
+ add r0, r4, #0
+ bl Camera_GetPerspectiveAngle
+ strh r0, [r5]
+ ldrh r0, [r5]
+ ldr r2, _021F04F0 ; =FX_SinCosTable_
+ asr r0, r0, #4
+ lsl r1, r0, #1
+ lsl r0, r1, #1
+ add r1, r1, #1
+ lsl r1, r1, #1
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ bl FX_Div
+ lsl r0, r0, #2
+ mov r1, #3
+ bl _s32_div_f
+ bl FX_Atan
+ ldr r3, _021F04F4 ; =UNK05_021F8B78
+ strh r0, [r5, #2]
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x20
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r4, #0
+ str r0, [r2]
+ add r0, sp, #0x14
+ bl Camera_GetLookAtCamPos
+ add r0, sp, #8
+ add r1, r4, #0
+ bl Camera_GetLookAtCamTarget
+ add r0, sp, #0x14
+ add r1, sp, #8
+ add r2, r5, #4
+ bl VEC_Subtract
+ add r3, sp, #0x20
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x10
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r5, #4
+ str r0, [r2]
+ add r0, sp, #0x20
+ bl VEC_DotProduct
+ str r0, [r5, #0x1c]
+ add r0, sp, #0
+ ldrh r0, [r0]
+ ldr r3, _021F04F0 ; =FX_SinCosTable_
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ add r0, r5, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, #0x20
+ bl MTX_RotX43_
+ str r4, [r5, #0x50]
+ add sp, #0x2c
+ pop {r4, r5, pc}
+ nop
+_021F04F0: .word FX_SinCosTable_
+_021F04F4: .word UNK05_021F8B78
+
+ thumb_func_start MOD05_021F04F8
+MOD05_021F04F8: ; 0x021F04F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F0512
+ bne _021F0508
+ bl GF_AssertFail
+_021F0508:
+ ldr r0, [r4]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [r4]
+_021F0512:
+ pop {r4, pc}
+
+ .section .rodata
+
+ .global UNK05_021F8B6C
+UNK05_021F8B6C: ; 0x021F8B6C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF
+
+ .global UNK05_021F8B78
+UNK05_021F8B78: ; 0x021F8B78
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021F0514.s b/arm9/modules/05/asm/mod05_021F0514.s
new file mode 100644
index 00000000..e7a6454a
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F0514.s
@@ -0,0 +1,4556 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0514
+MOD05_021F0514: ; 0x021F0514
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02058458
+ cmp r0, #0x97
+ bgt _021F053E
+ bge _021F05B2
+ cmp r0, #0x15
+ bgt _021F052E
+ bge _021F059E
+ cmp r0, #0
+ beq _021F059E
+ b _021F05BA
+_021F052E:
+ cmp r0, #0x62
+ bgt _021F05BA
+ cmp r0, #0x61
+ blt _021F05BA
+ beq _021F059E
+ cmp r0, #0x62
+ beq _021F059E
+ b _021F05BA
+_021F053E:
+ cmp r0, #0xb0
+ bgt _021F0554
+ bge _021F059E
+ cmp r0, #0x99
+ bgt _021F05BA
+ cmp r0, #0x98
+ blt _021F05BA
+ beq _021F05B2
+ cmp r0, #0x99
+ beq _021F05B2
+ b _021F05BA
+_021F0554:
+ cmp r0, #0xb1
+ bgt _021F055C
+ beq _021F059E
+ b _021F05BA
+_021F055C:
+ sub r0, #0xb2
+ cmp r0, #0x17
+ bhi _021F05BA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F056E: ; jump table
+ .short _021F059E - _021F056E - 2 ; case 0
+ .short _021F059E - _021F056E - 2 ; case 1
+ .short _021F059E - _021F056E - 2 ; case 2
+ .short _021F059E - _021F056E - 2 ; case 3
+ .short _021F05BA - _021F056E - 2 ; case 4
+ .short _021F05BA - _021F056E - 2 ; case 5
+ .short _021F05BA - _021F056E - 2 ; case 6
+ .short _021F05BA - _021F056E - 2 ; case 7
+ .short _021F059E - _021F056E - 2 ; case 8
+ .short _021F059E - _021F056E - 2 ; case 9
+ .short _021F059E - _021F056E - 2 ; case 10
+ .short _021F059E - _021F056E - 2 ; case 11
+ .short _021F05BA - _021F056E - 2 ; case 12
+ .short _021F05BA - _021F056E - 2 ; case 13
+ .short _021F05BA - _021F056E - 2 ; case 14
+ .short _021F05BA - _021F056E - 2 ; case 15
+ .short _021F05BA - _021F056E - 2 ; case 16
+ .short _021F05A8 - _021F056E - 2 ; case 17
+ .short _021F059E - _021F056E - 2 ; case 18
+ .short _021F059E - _021F056E - 2 ; case 19
+ .short _021F059E - _021F056E - 2 ; case 20
+ .short _021F059E - _021F056E - 2 ; case 21
+ .short _021F059E - _021F056E - 2 ; case 22
+ .short _021F059E - _021F056E - 2 ; case 23
+_021F059E:
+ add r0, r4, #0
+ bl FUN_02058628
+ ldr r0, [r0, #4]
+ pop {r4, pc}
+_021F05A8:
+ add r0, r4, #0
+ bl FUN_02058628
+ ldr r0, [r0, #4]
+ pop {r4, pc}
+_021F05B2:
+ add r0, r4, #0
+ bl MOD05_021F1C24
+ pop {r4, pc}
+_021F05BA:
+ add r0, r4, #0
+ bl FUN_02058628
+ ldr r0, [r0, #8]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F05C4
+MOD05_021F05C4: ; 0x021F05C4
+ push {r3, r4, r5, lr}
+ mov r1, #0x18
+ add r5, r0, #0
+ bl FUN_02058604
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ add r1, r4, #0
+ strh r0, [r4]
+ add r0, r5, #0
+ add r1, #8
+ bl MOD05_021F1FC8
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021F05EC
+ add r0, r5, #0
+ bl FUN_020586A0
+_021F05EC:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F05F0
+MOD05_021F05F0: ; 0x021F05F0
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02058628
+ add r1, r0, #0
+ add r0, r4, #0
+ add r1, #8
+ bl MOD05_021F2060
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F0604
+MOD05_021F0604: ; 0x021F0604
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021F061C
+ add r1, r4, #0
+ add r1, #0xc
+ bl MOD05_021F20D8
+_021F061C:
+ add r4, #8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2060
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0634
+MOD05_021F0634: ; 0x021F0634
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F0678
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021F0658
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #8
+ bl MOD05_021F1FC8
+_021F0658:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021F0678
+ add r1, r4, #0
+ add r1, #0xc
+ bl MOD05_021F20F8
+ ldr r1, [r4, #8]
+ add r0, r5, #0
+ bl MOD05_021F2F48
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+_021F0678:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F067C
+MOD05_021F067C: ; 0x021F067C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ bl FUN_02058628
+ ldr r7, [r0, #8]
+ add r0, r4, #0
+ bl FUN_02058628
+ str r0, [sp]
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F06E6
+ cmp r7, #0
+ beq _021F06E6
+ add r0, r4, #0
+ bl FUN_020584C4
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl FUN_0205854C
+ add r5, r0, #0
+ cmp r5, #9
+ blt _021F06B6
+ bl GF_AssertFail
+_021F06B6:
+ lsl r6, r5, #2
+ ldr r5, _021F06EC ; UNK05_021FC4B4
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ ldr r5, [r5, r6]
+ add r0, r4, #0
+ add r1, r7, #0
+ blx r5
+ ldr r1, [sp, #4]
+ ldr r0, [sp]
+ strh r1, [r0]
+ add r0, r4, #0
+ bl FUN_0205854C
+ ldr r1, [sp]
+ str r0, [r1, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F2F48
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F19A4
+_021F06E6:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F06EC: .word UNK05_021FC4B4
+
+ thumb_func_start MOD05_021F06F0
+MOD05_021F06F0: ; 0x021F06F0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_02058628
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F071A
+ ldr r5, [r5, #8]
+ cmp r5, #0
+ beq _021F071A
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F2F48
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F19A4
+_021F071A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F071C
+MOD05_021F071C: ; 0x021F071C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_02058628
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F075A
+ ldr r5, [r5, #8]
+ cmp r5, #0
+ beq _021F075A
+ add r0, r4, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F074A
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F074A:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F2F48
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F19A4
+_021F075A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F075C
+MOD05_021F075C: ; 0x021F075C
+ push {r4, lr}
+ mov r0, #0
+ ldrsh r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F0780
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F0786
+_021F0780:
+ add r0, r4, #0
+ bl MOD05_021F194C
+_021F0786:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F854
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F0790
+MOD05_021F0790: ; 0x021F0790
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsh r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F07B4
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F07B4:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F07C8
+ mov r1, #2
+ add r0, r4, #0
+ lsl r1, r1, #0xa
+ bl FUN_0201F854
+_021F07C8:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F07CC
+MOD05_021F07CC: ; 0x021F07CC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsh r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F07F0
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F07F0:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F0804
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F0804:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0808
+MOD05_021F0808: ; 0x021F0808
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsh r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F082C
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F082C:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F0840
+ mov r1, #2
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F0840:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0844
+MOD05_021F0844: ; 0x021F0844
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsh r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F0868
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F0868:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F087C
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201F854
+_021F087C:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0880
+MOD05_021F0880: ; 0x021F0880
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ add r4, r2, #0
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F08AC
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F08AC:
+ ldr r0, [r4, #4]
+ cmp r0, #6
+ beq _021F08B6
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F08B6:
+ add r0, r6, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F08FC
+ ldr r6, _021F0900 ; =UNK05_021FC43C
+ 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, #2
+ str r0, [r3]
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ bl FUN_0201F854
+ mov r0, #2
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #2]
+ ldrsh r0, [r4, r0]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021F08FC
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F08FC:
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+_021F0900: .word UNK05_021FC43C
+
+ thumb_func_start MOD05_021F0904
+MOD05_021F0904: ; 0x021F0904
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ add r4, r2, #0
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F0930
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F0930:
+ ldr r0, [r4, #4]
+ cmp r0, #7
+ beq _021F093A
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F093A:
+ add r0, r6, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F0978
+ ldr r6, _021F097C ; =UNK05_021FC42C
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r1, #2
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ bl FUN_0201F854
+ mov r0, #2
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #2]
+ ldrsh r0, [r4, r0]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021F0978
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F0978:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F097C: .word UNK05_021FC42C
+
+ thumb_func_start MOD05_021F0980
+MOD05_021F0980: ; 0x021F0980
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r6, r0, #0
+ add r4, r2, #0
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F09AC
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F09AC:
+ ldr r0, [r4, #4]
+ cmp r0, #8
+ beq _021F09B6
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F09B6:
+ add r0, r6, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F09FC
+ ldr r6, _021F0A00 ; =UNK05_021FC494
+ add r3, sp, #0
+ 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}
+ mov r1, #2
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ bl FUN_0201F854
+ mov r0, #2
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #2]
+ ldrsh r0, [r4, r0]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021F09FC
+ mov r0, #0
+ strh r0, [r4, #2]
+_021F09FC:
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F0A00: .word UNK05_021FC494
+
+ thumb_func_start MOD05_021F0A04
+MOD05_021F0A04: ; 0x021F0A04
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ bl FUN_02058628
+ ldr r7, [r0, #8]
+ add r0, r4, #0
+ bl FUN_02058628
+ str r0, [sp]
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F0A6E
+ cmp r7, #0
+ beq _021F0A6E
+ add r0, r4, #0
+
+ thumb_func_start MOD05_021F0A28
+MOD05_021F0A28: ; 0x021F0A28
+ bl FUN_020584C4
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl FUN_0205854C
+ add r5, r0, #0
+ cmp r5, #0xa
+ blt _021F0A3E
+ bl GF_AssertFail
+_021F0A3E:
+ lsl r6, r5, #2
+ ldr r5, _021F0A74 ; =UNK05_021FC528
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ ldr r5, [r5, r6]
+ add r0, r4, #0
+ add r1, r7, #0
+ blx r5
+ ldr r1, [sp, #4]
+ ldr r0, [sp]
+ strh r1, [r0]
+ add r0, r4, #0
+ bl FUN_0205854C
+ ldr r1, [sp]
+ str r0, [r1, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F2F48
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F19A4
+_021F0A6E:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F0A74: .word UNK05_021FC528
+
+ thumb_func_start MOD05_021F0A78
+MOD05_021F0A78: ; 0x021F0A78
+ push {r4, lr}
+ mov r0, #0
+ ldrsh r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ bne _021F0A8A
+ ldr r0, [r2, #4]
+ cmp r0, #9
+ bne _021F0AA2
+_021F0A8A:
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F0AA8
+_021F0AA2:
+ add r0, r4, #0
+ bl MOD05_021F194C
+_021F0AA8:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F854
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0AB4
+MOD05_021F0AB4: ; 0x021F0AB4
+ push {r4, lr}
+ ldr r0, [r2, #4]
+ add r4, r1, #0
+ cmp r0, #9
+ beq _021F0ACE
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F0ACE:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0ADC
+MOD05_021F0ADC: ; 0x021F0ADC
+ push {r3, r4, r5, lr}
+ mov r1, #0x14
+ add r5, r0, #0
+ bl FUN_02058604
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ strb r0, [r4]
+ bl LCRandom
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1c
+ sub r1, r1, r2
+ mov r0, #0x1c
+ ror r1, r0
+ add r0, r2, r1
+ strb r0, [r4, #2]
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD05_021F1FC8
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F0B14
+ add r0, r5, #0
+ bl FUN_020586A0
+_021F0B14:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0B18
+MOD05_021F0B18: ; 0x021F0B18
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02058628
+ add r1, r0, #0
+ add r0, r4, #0
+ add r1, r1, #4
+ bl MOD05_021F2060
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F0B2C
+MOD05_021F0B2C: ; 0x021F0B2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F0B44
+ add r1, r4, #0
+ add r1, #8
+ bl MOD05_021F20D8
+_021F0B44:
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD05_021F2060
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F0B58
+MOD05_021F0B58: ; 0x021F0B58
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F0B9A
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021F0B7A
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD05_021F1FC8
+_021F0B7A:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F0B9A
+ add r1, r4, #0
+ add r1, #8
+ bl MOD05_021F20F8
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD05_021F2F48
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+_021F0B9A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F0B9C
+MOD05_021F0B9C: ; 0x021F0B9C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r6, [r0, #4]
+ add r0, r5, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F0C26
+ cmp r6, #0
+ beq _021F0C26
+ add r0, r5, #0
+ bl FUN_020584C4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_0205854C
+ mov r1, #2
+ ldrsb r0, [r4, r1]
+ cmp r0, #0
+ beq _021F0BE0
+ sub r0, r0, #1
+ strb r0, [r4, #2]
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0201F854
+ b _021F0C0C
+_021F0BE0:
+ add r0, r6, #0
+ lsl r1, r1, #0xb
+ bl FUN_0201F854
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #1]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x20
+ blt _021F0C0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ bl LCRandom
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1c
+ sub r2, r2, r1
+ mov r0, #0x1c
+ ror r2, r0
+ add r0, r1, r2
+ strb r0, [r4, #2]
+_021F0C0C:
+ strb r7, [r4]
+ add r0, r5, #0
+ bl FUN_0205854C
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021F19A4
+_021F0C26:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F0C28
+MOD05_021F0C28: ; 0x021F0C28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0, #8]
+ add r0, r5, #0
+ bl FUN_02058628
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F0CEA
+ cmp r4, #0
+ beq _021F0CEA
+ add r0, r5, #0
+ bl FUN_020584C4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_0205854C
+ cmp r0, #0
+ bne _021F0C9E
+ cmp r7, #1
+ bls _021F0C66
+ mov r0, #1
+ str r0, [sp, #4]
+ b _021F0C6A
+_021F0C66:
+ mov r0, #0
+ str r0, [sp, #4]
+_021F0C6A:
+ add r0, r4, #0
+ bl FUN_0201F844
+ ldr r1, [sp, #4]
+ cmp r1, r0
+ bne _021F0C7C
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ bne _021F0C94
+_021F0C7C:
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F854
+_021F0C94:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F854
+ b _021F0CD0
+_021F0C9E:
+ cmp r7, #1
+ bls _021F0CA8
+ mov r0, #1
+ str r0, [sp]
+ b _021F0CAC
+_021F0CA8:
+ mov r0, #0
+ str r0, [sp]
+_021F0CAC:
+ add r0, r4, #0
+ bl FUN_0201F844
+ ldr r1, [sp]
+ cmp r1, r0
+ beq _021F0CC6
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F0CC6:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F0CD0:
+ strh r7, [r6]
+ add r0, r5, #0
+ bl FUN_0205854C
+ str r0, [r6, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F19A4
+_021F0CEA:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0CF0
+MOD05_021F0CF0: ; 0x021F0CF0
+ push {r3, r4, r5, lr}
+ mov r1, #0x14
+ add r5, r0, #0
+ bl FUN_02058604
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ strb r0, [r4]
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD05_021F1FC8
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F0D16
+ add r0, r5, #0
+ bl FUN_020586A0
+_021F0D16:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F0D18
+MOD05_021F0D18: ; 0x021F0D18
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r2, sp, #0
+ mov r1, #0
+ str r1, [r2]
+ str r1, [r2, #4]
+ add r4, r0, #0
+ str r1, [r2, #8]
+ bl FUN_02058628
+ add r1, r0, #0
+ add r0, r4, #0
+ add r1, r1, #4
+ bl MOD05_021F2060
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02058B94
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0D44
+MOD05_021F0D44: ; 0x021F0D44
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F0D5C
+ add r1, r4, #0
+ add r1, #8
+ bl MOD05_021F20D8
+_021F0D5C:
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD05_021F2060
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F0D70
+MOD05_021F0D70: ; 0x021F0D70
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F0DB2
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021F0D92
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD05_021F1FC8
+_021F0D92:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F0DB2
+ add r1, r4, #0
+ add r1, #8
+ bl MOD05_021F20F8
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD05_021F2F48
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+_021F0DB2:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F0DB4
+MOD05_021F0DB4: ; 0x021F0DB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ bl FUN_02058628
+ ldr r7, [r0, #4]
+ add r0, r4, #0
+ bl FUN_02058628
+ str r0, [sp]
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F0E1E
+ cmp r7, #0
+ beq _021F0E1E
+ add r0, r4, #0
+ bl FUN_020584C4
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl FUN_0205854C
+ add r5, r0, #0
+ cmp r5, #0xa
+ blt _021F0DEE
+ bl GF_AssertFail
+_021F0DEE:
+ lsl r6, r5, #2
+ ldr r5, _021F0E24 ; =UNK05_021FC500
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ ldr r5, [r5, r6]
+ add r0, r4, #0
+ add r1, r7, #0
+ blx r5
+ ldr r1, [sp, #4]
+ ldr r0, [sp]
+ strb r1, [r0]
+ add r0, r4, #0
+ bl FUN_0205854C
+ ldr r1, [sp]
+ strb r0, [r1, #2]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F2F48
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F19A4
+_021F0E1E:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F0E24: .word UNK05_021FC500
+
+ thumb_func_start MOD05_021F0E28
+MOD05_021F0E28: ; 0x021F0E28
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F0E56
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ bic r1, r0
+ strb r1, [r4, #3]
+ pop {r3, r4, r5, pc}
+_021F0E56:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #9
+ bne _021F0E6C
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ strb r0, [r4, #3]
+ pop {r3, r4, r5, pc}
+_021F0E6C:
+ ldrb r0, [r4, #3]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _021F0E8E
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F1980
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ bic r1, r0
+ strb r1, [r4, #3]
+ pop {r3, r4, r5, pc}
+_021F0E8E:
+ add r0, r5, #0
+ bl MOD05_021F194C
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0E98
+MOD05_021F0E98: ; 0x021F0E98
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r4, r2, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F0EC0
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F0EF6
+_021F0EC0:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #9
+ bne _021F0ED6
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ strb r0, [r4, #3]
+ pop {r4, r5, r6, pc}
+_021F0ED6:
+ ldrb r0, [r4, #3]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _021F0EF6
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F1980
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ bic r1, r0
+ strb r1, [r4, #3]
+_021F0EF6:
+ add r0, r6, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F0F0A
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0xa
+ bl FUN_0201F854
+_021F0F0A:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F0F0C
+MOD05_021F0F0C: ; 0x021F0F0C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsb r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F0F32
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F0F48
+_021F0F32:
+ mov r0, #2
+ ldrsb r0, [r2, r0]
+ cmp r0, #9
+ bne _021F0F48
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F1980
+_021F0F48:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F0F5C
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F0F5C:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0F60
+MOD05_021F0F60: ; 0x021F0F60
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsb r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F0F86
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F0F9C
+_021F0F86:
+ mov r0, #2
+ ldrsb r0, [r2, r0]
+ cmp r0, #9
+ bne _021F0F9C
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F1980
+_021F0F9C:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F0FB0
+ mov r1, #2
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F0FB0:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F0FB4
+MOD05_021F0FB4: ; 0x021F0FB4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsb r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F0FDA
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F0FF0
+_021F0FDA:
+ mov r0, #2
+ ldrsb r0, [r2, r0]
+ cmp r0, #9
+ bne _021F0FF0
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F1980
+_021F0FF0:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F1004
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201F854
+_021F1004:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1008
+MOD05_021F1008: ; 0x021F1008
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ add r4, r2, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F1036
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _021F104C
+_021F1036:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #9
+ bne _021F104C
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F1980
+_021F104C:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #6
+ beq _021F1058
+ mov r0, #0
+ strb r0, [r4, #1]
+_021F1058:
+ add r0, r6, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F109E
+ ldr r6, _021F10A4 ; =UNK05_021FC458
+ 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, #1
+ str r0, [r3]
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ bl FUN_0201F854
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #1]
+ ldrsb r0, [r4, r0]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021F109E
+ mov r0, #0
+ strb r0, [r4, #1]
+_021F109E:
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021F10A4: .word UNK05_021FC458
+
+ thumb_func_start MOD05_021F10A8
+MOD05_021F10A8: ; 0x021F10A8
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ add r4, r2, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F10D6
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _021F10EC
+_021F10D6:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #9
+ bne _021F10EC
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F1980
+_021F10EC:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #7
+ beq _021F10F8
+ mov r0, #0
+ strb r0, [r4, #1]
+_021F10F8:
+ add r0, r6, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F1136
+ ldr r6, _021F113C ; =UNK05_021FC3EC
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r1, #1
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ bl FUN_0201F854
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #1]
+ ldrsb r0, [r4, r0]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021F1136
+ mov r0, #0
+ strb r0, [r4, #1]
+_021F1136:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021F113C: .word UNK05_021FC3EC
+
+ thumb_func_start MOD05_021F1140
+MOD05_021F1140: ; 0x021F1140
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r6, r0, #0
+ add r4, r2, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ beq _021F116E
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _021F1184
+_021F116E:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #9
+ bne _021F1184
+ add r0, r3, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F1980
+_021F1184:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #8
+ beq _021F1190
+ mov r0, #0
+ strb r0, [r4, #1]
+_021F1190:
+ add r0, r6, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F11D6
+ ldr r6, _021F11DC ; =UNK05_021FC474
+ add r3, sp, #0
+ 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}
+ mov r1, #1
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ bl FUN_0201F854
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #1]
+ ldrsb r0, [r4, r0]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021F11D6
+ mov r0, #0
+ strb r0, [r4, #1]
+_021F11D6:
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ nop
+_021F11DC: .word UNK05_021FC474
+
+ thumb_func_start MOD05_021F11E0
+MOD05_021F11E0: ; 0x021F11E0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsb r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ beq _021F1206
+ add r0, r3, #0
+ bl MOD05_021F2FB8
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F121E
+_021F1206:
+ mov r0, #2
+ ldrsb r0, [r2, r0]
+ cmp r0, #9
+ beq _021F121E
+ add r0, r3, #0
+ bl MOD05_021F2FB8
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #4
+ bl MOD05_021F1958
+_021F121E:
+ add r0, r5, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F1232
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F1232:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F1234
+MOD05_021F1234: ; 0x021F1234
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ bl FUN_02058628
+ ldr r0, [r0, #4]
+ str r0, [sp]
+ add r0, r7, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ add r0, r7, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F12B6
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _021F12B6
+ add r0, r7, #0
+ bl FUN_020584C4
+ str r0, [sp, #8]
+ add r0, r7, #0
+ bl FUN_0205854C
+ str r0, [sp, #4]
+ cmp r0, #0xc
+ blt _021F1272
+ bl GF_AssertFail
+_021F1272:
+ mov r1, #2
+ ldrsb r2, [r4, r1]
+ cmp r2, #0
+ bne _021F128C
+ ldr r0, [sp, #4]
+ cmp r0, r2
+ beq _021F128C
+ ldrb r0, [r4, #3]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bne _021F128C
+ sub r0, r1, #3
+ strb r0, [r4]
+_021F128C:
+ ldr r5, [sp, #4]
+ ldr r1, [sp]
+ lsl r6, r5, #2
+ ldr r5, _021F12BC ; =UNK05_021FC4D8
+ ldr r3, [sp, #8]
+ ldr r5, [r5, r6]
+ add r0, r7, #0
+ add r2, r4, #0
+ blx r5
+ ldr r0, [sp, #8]
+ ldr r1, [sp]
+ strb r0, [r4]
+ ldr r0, [sp, #4]
+ strb r0, [r4, #2]
+ add r0, r7, #0
+ bl MOD05_021F2F48
+ ldr r1, [sp]
+ add r0, r7, #0
+ bl MOD05_021F19A4
+_021F12B6:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F12BC: .word UNK05_021FC4D8
+
+ thumb_func_start MOD05_021F12C0
+MOD05_021F12C0: ; 0x021F12C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r3, #0
+ add r4, r2, #0
+ add r2, sp, #0
+ ldr r3, _021F1348 ; =UNK05_021FC3FC
+ add r5, r1, #0
+ add r7, r2, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ lsl r0, r6, #2
+ ldr r1, [r7, r0]
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ cmp r6, r0
+ beq _021F12FE
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ add sp, #0x10
+ bic r1, r0
+ strb r1, [r4, #3]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F12FE:
+ mov r2, #2
+ ldrsb r0, [r4, r2]
+ cmp r0, #0
+ beq _021F1316
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ add sp, #0x10
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ strb r0, [r4, #3]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1316:
+ ldrb r0, [r4, #3]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _021F133A
+ add r0, r5, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ add sp, #0x10
+ bic r1, r0
+ strb r1, [r4, #3]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F133A:
+ add r0, r5, #0
+ lsl r1, r2, #0xb
+ bl FUN_0201F854
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F1348: .word UNK05_021FC3FC
+
+ thumb_func_start MOD05_021F134C
+MOD05_021F134C: ; 0x021F134C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r0, r3, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ str r3, [sp]
+ bl MOD05_021F2FC4
+ add r4, r0, #0
+ mov r0, #0
+ ldrsb r1, [r6, r0]
+ ldr r0, [sp]
+ cmp r0, r1
+ bne _021F1370
+ mov r0, #2
+ ldrsb r0, [r6, r0]
+ cmp r0, #0
+ beq _021F1382
+_021F1370:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F13B2
+_021F1382:
+ cmp r0, #0xa
+ beq _021F1398
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F13B2
+_021F1398:
+ add r0, r5, #0
+ bl FUN_0201F844
+ cmp r4, r0
+ beq _021F13B2
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F13B2:
+ add r0, r7, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F13C6
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0xa
+ bl FUN_0201F854
+_021F13C6:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F13C8
+MOD05_021F13C8: ; 0x021F13C8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r0, r3, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ str r3, [sp]
+ bl MOD05_021F2FC4
+ add r4, r0, #0
+ mov r0, #0
+ ldrsb r1, [r6, r0]
+ ldr r0, [sp]
+ cmp r0, r1
+ beq _021F13F6
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F142A
+_021F13F6:
+ mov r0, #2
+ ldrsb r0, [r6, r0]
+ cmp r0, #0xb
+ beq _021F1410
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+ b _021F142A
+_021F1410:
+ add r0, r5, #0
+ bl FUN_0201F844
+ cmp r4, r0
+ beq _021F142A
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F142A:
+ add r0, r7, #0
+ bl MOD05_021F1DFC
+ cmp r0, #0
+ bne _021F143E
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F143E:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F1440
+MOD05_021F1440: ; 0x021F1440
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ bl FUN_02058628
+ ldr r7, [r0, #4]
+ add r0, r4, #0
+ bl FUN_02058628
+ str r0, [sp]
+ cmp r7, #0
+ beq _021F14B4
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F14B4
+ add r0, r4, #0
+ bl FUN_020584C4
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl FUN_0205854C
+ add r5, r0, #0
+ cmp r5, #4
+ blt _021F147A
+ bl GF_AssertFail
+_021F147A:
+ lsl r6, r5, #2
+ ldr r5, _021F14B8 ; =UNK05_021FC40C
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ ldr r5, [r5, r6]
+ add r0, r4, #0
+ add r1, r7, #0
+ blx r5
+ ldr r2, [sp, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F1658
+ ldr r1, [sp, #4]
+ ldr r0, [sp]
+ strb r1, [r0]
+ add r0, r4, #0
+ bl FUN_0205854C
+ ldr r1, [sp]
+ strb r0, [r1, #2]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F2F48
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021F19A4
+_021F14B4:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F14B8: .word UNK05_021FC40C
+
+ thumb_func_start MOD05_021F14BC
+MOD05_021F14BC: ; 0x021F14BC
+ push {r4, lr}
+ mov r0, #0
+ ldrsb r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ bne _021F14D0
+ mov r0, #2
+ ldrsb r0, [r2, r0]
+ cmp r0, #0
+ beq _021F14E6
+_021F14D0:
+ ldr r1, _021F1508 ; =UNK05_021FC41C
+ lsl r2, r3, #2
+ ldr r1, [r1, r2]
+ add r0, r4, #0
+ bl FUN_0201F830
+ mov r1, #0xf
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F890
+_021F14E6:
+ add r0, r4, #0
+ bl FUN_0201F8C0
+ mov r1, #1
+ lsl r1, r1, #0xc
+ sub r1, r0, r1
+ bpl _021F14F6
+ mov r1, #0
+_021F14F6:
+ add r0, r4, #0
+ bl FUN_0201F890
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F854
+ pop {r4, pc}
+ nop
+_021F1508: .word UNK05_021FC41C
+
+ thumb_func_start MOD05_021F150C
+MOD05_021F150C: ; 0x021F150C
+ push {r4, lr}
+ mov r0, #0
+ ldrsb r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ bne _021F1520
+ mov r0, #2
+ ldrsb r0, [r2, r0]
+ cmp r0, #1
+ beq _021F1534
+_021F1520:
+ ldr r1, _021F1540 ; =UNK05_021FC41C
+ lsl r2, r3, #2
+ ldr r1, [r1, r2]
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F1534:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+ pop {r4, pc}
+ .balign 4, 0
+_021F1540: .word UNK05_021FC41C
+
+ thumb_func_start MOD05_021F1544
+MOD05_021F1544: ; 0x021F1544
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ add r5, r1, #0
+ cmp r3, r0
+ bne _021F155A
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ beq _021F1578
+_021F155A:
+ ldr r1, _021F1604 ; =UNK05_021FC41C
+ lsl r2, r3, #2
+ ldr r1, [r1, r2]
+ add r0, r5, #0
+ bl FUN_0201F830
+ mov r1, #0xf
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F890
+ ldrb r1, [r4, #3]
+ mov r0, #0xfe
+ bic r1, r0
+ strb r1, [r4, #3]
+_021F1578:
+ add r0, r5, #0
+ bl FUN_0201F8C0
+ add r1, r0, #0
+ ldrb r0, [r4, #3]
+ lsl r2, r0, #0x18
+ lsr r2, r2, #0x19
+ beq _021F1592
+ cmp r2, #1
+ beq _021F15B4
+ cmp r2, #2
+ beq _021F15DA
+ b _021F15F4
+_021F1592:
+ mov r3, #1
+ lsl r3, r3, #0xc
+ sub r1, r1, r3
+ mov r3, #0xa
+ lsl r3, r3, #0xc
+ cmp r1, r3
+ bgt _021F15F4
+ add r2, r2, #1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r3, #0xfe
+ lsl r2, r2, #0x19
+ bic r0, r3
+ lsr r2, r2, #0x18
+ orr r0, r2
+ strb r0, [r4, #3]
+ b _021F15F4
+_021F15B4:
+ mov r3, #1
+ lsl r3, r3, #0xc
+ add r1, r1, r3
+ mov r3, #0xf
+ lsl r3, r3, #0xc
+ cmp r1, r3
+ blt _021F15F4
+ add r2, r2, #1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r3, #0xfe
+ lsl r2, r2, #0x19
+ bic r0, r3
+ lsr r2, r2, #0x18
+ orr r0, r2
+ strb r0, [r4, #3]
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _021F15F4
+_021F15DA:
+ mov r0, #1
+ ldrsb r2, [r4, r0]
+ add r2, r2, #1
+ strb r2, [r4, #1]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x1e
+ blt _021F15F4
+ mov r0, #0
+ strb r0, [r4, #1]
+ ldrb r2, [r4, #3]
+ mov r0, #0xfe
+ bic r2, r0
+ strb r2, [r4, #3]
+_021F15F4:
+ add r0, r5, #0
+ bl FUN_0201F890
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F854
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021F1604: .word UNK05_021FC41C
+
+ thumb_func_start MOD05_021F1608
+MOD05_021F1608: ; 0x021F1608
+ push {r4, lr}
+ mov r0, #0
+ ldrsb r0, [r2, r0]
+ add r4, r1, #0
+ cmp r3, r0
+ bne _021F161C
+ mov r0, #2
+ ldrsb r0, [r2, r0]
+ cmp r0, #3
+ beq _021F1632
+_021F161C:
+ ldr r1, _021F1654 ; =UNK05_021FC41C
+ lsl r2, r3, #2
+ ldr r1, [r1, r2]
+ add r0, r4, #0
+ bl FUN_0201F830
+ mov r1, #0xf
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F890
+_021F1632:
+ add r0, r4, #0
+ bl FUN_0201F8C0
+ mov r1, #1
+ lsl r1, r1, #0xc
+ sub r1, r0, r1
+ bpl _021F1642
+ mov r1, #0
+_021F1642:
+ add r0, r4, #0
+ bl FUN_0201F890
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F854
+ pop {r4, pc}
+ nop
+_021F1654: .word UNK05_021FC41C
+
+ thumb_func_start MOD05_021F1658
+MOD05_021F1658: ; 0x021F1658
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r2, #0
+ add r2, sp, #0
+ mov r0, #0
+ str r0, [r2]
+ str r0, [r2, #4]
+ str r0, [r2, #8]
+ add r0, r1, #0
+ bl FUN_0201F880
+ asr r1, r0, #0xb
+ lsr r1, r1, #0x14
+ add r1, r0, r1
+ asr r0, r1, #0xc
+ cmp r4, #3
+ bhi _021F16BE
+ add r1, r4, r4
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021F1688: ; jump table
+ .short _021F16BE - _021F1688 - 2 ; case 0
+ .short _021F1690 - _021F1688 - 2 ; case 1
+ .short _021F169C - _021F1688 - 2 ; case 2
+ .short _021F16AE - _021F1688 - 2 ; case 3
+_021F1690:
+ cmp r0, #0x18
+ blt _021F16BE
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ b _021F16BE
+_021F169C:
+ cmp r0, #0x28
+ bge _021F16A8
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ b _021F16BE
+_021F16A8:
+ ldr r0, _021F16CC ; =0xFFFFB000
+ str r0, [sp]
+ b _021F16BE
+_021F16AE:
+ cmp r0, #0x38
+ bge _021F16B8
+ ldr r0, _021F16D0 ; =0xFFFFF000
+ str r0, [sp]
+ b _021F16BE
+_021F16B8:
+ mov r0, #5
+ lsl r0, r0, #0xc
+ str r0, [sp]
+_021F16BE:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02058B94
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021F16CC: .word 0xFFFFB000
+_021F16D0: .word 0xFFFFF000
+
+ thumb_func_start MOD05_021F16D4
+MOD05_021F16D4: ; 0x021F16D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0, #4]
+ add r0, r5, #0
+ bl FUN_02058628
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F1734
+ cmp r4, #0
+ beq _021F1734
+ add r0, r5, #0
+ bl FUN_020584C4
+ add r7, r0, #0
+ strb r7, [r6]
+ add r0, r5, #0
+ bl FUN_0205854C
+ strb r0, [r6, #2]
+ add r0, r7, #0
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F854
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F19A4
+_021F1734:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1738
+MOD05_021F1738: ; 0x021F1738
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0, #4]
+ add r0, r5, #0
+ bl FUN_02058628
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F179C
+ cmp r4, #0
+ beq _021F179C
+ add r0, r5, #0
+ bl FUN_020584C4
+ strb r0, [r6]
+ add r0, r5, #0
+ bl FUN_0205854C
+ strb r0, [r6, #2]
+ add r0, r4, #0
+ bl FUN_0201F844
+ cmp r0, #0
+ beq _021F1782
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F1782:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F19A4
+_021F179C:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F17A0
+MOD05_021F17A0: ; 0x021F17A0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0, #4]
+ add r0, r5, #0
+ bl FUN_02058628
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F1836
+ cmp r4, #0
+ beq _021F1836
+ add r0, r5, #0
+ bl FUN_020584C4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_0205854C
+ cmp r0, #0
+ bne _021F17F8
+ add r0, r4, #0
+ bl FUN_0201F844
+ cmp r0, #1
+ beq _021F17EC
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F17EC:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+ b _021F181C
+_021F17F8:
+ add r0, r4, #0
+ bl FUN_0201F844
+ cmp r0, #0
+ beq _021F1812
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F1812:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F181C:
+ strb r7, [r6]
+ add r0, r5, #0
+ bl FUN_0205854C
+ strb r0, [r6, #2]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F19A4
+_021F1836:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F1838
+MOD05_021F1838: ; 0x021F1838
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0, #4]
+ add r0, r5, #0
+ bl FUN_02058628
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F18A0
+ cmp r4, #0
+ beq _021F18A0
+ add r0, r5, #0
+ bl FUN_020584C4
+ mov r1, #0
+ ldrsb r1, [r6, r1]
+ add r7, r0, #0
+ cmp r7, r1
+ beq _021F187C
+ bl MOD05_021F2FAC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F187C:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F19A4
+ add r0, r5, #0
+ strb r7, [r6]
+ bl FUN_0205854C
+ strb r0, [r6, #2]
+_021F18A0:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F18A4
+MOD05_021F18A4: ; 0x021F18A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0, #4]
+ add r0, r5, #0
+ bl FUN_02058628
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F191A
+ cmp r4, #0
+ beq _021F191A
+ add r0, r5, #0
+ bl FUN_020584C4
+ str r0, [sp]
+ add r0, r5, #0
+ bl FUN_0205854C
+ add r7, r0, #0
+ mov r0, #2
+ ldrsb r0, [r6, r0]
+ cmp r7, r0
+ beq _021F18FA
+ cmp r7, #0
+ bne _021F18EA
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F830
+ b _021F18F2
+_021F18EA:
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0201F830
+_021F18F2:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+_021F18FA:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+ ldr r0, [sp]
+ add r1, r4, #0
+ strb r0, [r6]
+ add r0, r5, #0
+ strb r7, [r6, #2]
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F19A4
+_021F191A:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F191C
+MOD05_021F191C: ; 0x021F191C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl FUN_0201F8C0
+ asr r1, r0, #0xb
+ lsr r1, r1, #0x14
+ add r1, r0, r1
+ asr r4, r1, #0xc
+ add r0, r4, #0
+ add r1, r6, #0
+ bl _s32_div_f
+ sub r1, r4, r1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F890
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0201F854
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F194C
+MOD05_021F194C: ; 0x021F194C
+ ldr r3, _021F1954 ; =MOD05_021F191C
+ mov r1, #8
+ bx r3
+ nop
+_021F1954: .word MOD05_021F191C
+
+ thumb_func_start MOD05_021F1958
+MOD05_021F1958: ; 0x021F1958
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r1, r2, #0
+ bl MOD05_021F191C
+ add r0, r5, #0
+ bl FUN_0201F8C0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0201F890
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1980
+MOD05_021F1980: ; 0x021F1980
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F194C
+ add r0, r5, #0
+ bl FUN_0201F8C0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0201F830
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0201F890
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F19A4
+MOD05_021F19A4: ; 0x021F19A4
+ push {r4, r5, r6, lr}
+ mov r4, #1
+ add r6, r1, #0
+ lsl r1, r4, #9
+ add r5, r0, #0
+ bl FUN_0205842C
+ cmp r0, #1
+ bne _021F19B8
+ mov r4, #0
+_021F19B8:
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0205842C
+ cmp r0, #1
+ bne _021F19D6
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0205842C
+ cmp r0, #0
+ bne _021F19D6
+ mov r4, #0
+_021F19D6:
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl FUN_0201F80C
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F19E4
+MOD05_021F19E4: ; 0x021F19E4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #4
+ bl FUN_02058604
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD06_0224A130
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F19FC
+MOD05_021F19FC: ; 0x021F19FC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #4
+ bl FUN_02058604
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD06_0224A6B8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1A14
+MOD05_021F1A14: ; 0x021F1A14
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #4
+ bl FUN_02058604
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD06_0224A8D4
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1A2C
+MOD05_021F1A2C: ; 0x021F1A2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #4
+ bl FUN_02058604
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD06_0224AA40
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1A44
+MOD05_021F1A44: ; 0x021F1A44
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1A48
+MOD05_021F1A48: ; 0x021F1A48
+ push {r4, lr}
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1A5E
+ bl MOD05_021E4DE4
+ mov r0, #0
+ str r0, [r4]
+_021F1A5E:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F1A60
+MOD05_021F1A60: ; 0x021F1A60
+ push {r4, lr}
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1A76
+ bl MOD05_021E4DE4
+ mov r0, #0
+ str r0, [r4]
+_021F1A76:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F1A78
+MOD05_021F1A78: ; 0x021F1A78
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1A8C
+ bl GF_AssertFail
+_021F1A8C:
+ add r0, r5, #0
+ bl MOD06_0224A130
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1A98
+MOD05_021F1A98: ; 0x021F1A98
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1AAC
+ bl GF_AssertFail
+_021F1AAC:
+ add r0, r5, #0
+ bl MOD06_0224A6B8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1AB8
+MOD05_021F1AB8: ; 0x021F1AB8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1ACC
+ bl GF_AssertFail
+_021F1ACC:
+ add r0, r5, #0
+ bl MOD06_0224A8D4
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1AD8
+MOD05_021F1AD8: ; 0x021F1AD8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1AEC
+ bl GF_AssertFail
+_021F1AEC:
+ add r0, r5, #0
+ bl MOD06_0224AA40
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1AF8
+MOD05_021F1AF8: ; 0x021F1AF8
+ push {r4, lr}
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD06_0224A6FC
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+
+ .section .rodata
+
+ .global UNK05_021F8B84
+UNK05_021F8B84: ; 0x021F8B84
+ .byte 0x07, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8B88
+UNK05_021F8B88: ; 0x021F8B88
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0x00, 0x00
+
+ .global UNK05_021F8B90
+UNK05_021F8B90: ; 0x021F8B90
+ .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0x00, 0x00
+
+ .global UNK05_021F8BA0
+UNK05_021F8BA0: ; 0x021F8BA0
+ .word MOD05_021F0CF0, MOD05_021F18A4, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8BB4
+UNK05_021F8BB4: ; 0x021F8BB4
+ .word MOD05_021F0CF0, MOD05_021F17A0, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8BC8
+UNK05_021F8BC8: ; 0x021F8BC8
+ .word MOD05_021F0CF0, MOD05_021F0DB4, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8BDC
+UNK05_021F8BDC: ; 0x021F8BDC
+ .word MOD05_021F1B0C, MOD05_021F1B2C, MOD05_021F1B58, MOD05_021F1B60
+ .word MOD05_021F1B8C
+
+ .global UNK05_021F8BF0
+UNK05_021F8BF0: ; 0x021F8BF0
+ .word MOD05_021F19FC, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
+ .word MOD05_021F1A98
+
+ .global UNK05_021F8C04
+UNK05_021F8C04: ; 0x021F8C04
+ .word MOD05_021F0ADC, MOD05_021F0B9C, MOD05_021F0B18, MOD05_021F0B2C
+ .word MOD05_021F0B58
+
+ .global UNK05_021F8C18
+UNK05_021F8C18: ; 0x021F8C18
+ .word MOD05_021F0CF0, MOD05_021F1234, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8C2C
+UNK05_021F8C2C: ; 0x021F8C2C
+ .word MOD05_021F0CF0, MOD05_021F16D4, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8C40
+UNK05_021F8C40: ; 0x021F8C40
+ .word MOD05_021F05C4, MOD05_021F071C, MOD05_021F05F0, MOD05_021F0604
+ .word MOD05_021F0634
+
+ .global UNK05_021F8C54
+UNK05_021F8C54: ; 0x021F8C54
+ .word FUN_0205C3B0, FUN_0205C3D0, FUN_0205C490, FUN_0205C4A8
+ .word FUN_0205C4D8
+
+ .global UNK05_021F8C68
+UNK05_021F8C68: ; 0x021F8C68
+ .word MOD05_021F05C4, MOD05_021F067C, MOD05_021F05F0, MOD05_021F0604
+ .word MOD05_021F0634
+
+ .global UNK05_021F8C7C
+UNK05_021F8C7C: ; 0x021F8C7C
+ .word MOD05_021F1A14, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
+ .word MOD05_021F1AB8
+
+ .global UNK05_021F8C90
+UNK05_021F8C90: ; 0x021F8C90
+ .word MOD05_021F19E4, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
+ .word MOD05_021F1A78
+
+ .global UNK05_021F8CA4
+UNK05_021F8CA4: ; 0x021F8CA4
+ .word MOD05_021F0CF0, MOD05_021F1838, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8CB8
+UNK05_021F8CB8: ; 0x021F8CB8
+ .word MOD05_021F05C4, MOD05_021F0A04, MOD05_021F05F0, MOD05_021F0604
+ .word MOD05_021F0634
+
+ .global UNK05_021F8CCC
+UNK05_021F8CCC: ; 0x021F8CCC
+ .word MOD05_021F05C4, MOD05_021F06F0, MOD05_021F05F0, MOD05_021F0604
+ .word MOD05_021F0634
+
+ .global UNK05_021F8CE0
+UNK05_021F8CE0: ; 0x021F8CE0
+ .word MOD05_021F05C4, MOD05_021F0C28, MOD05_021F05F0, MOD05_021F0604
+ .word MOD05_021F0634
+
+ .global UNK05_021F8CF4
+UNK05_021F8CF4: ; 0x021F8CF4
+ .word MOD05_021F0CF0, MOD05_021F1440, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8D08
+UNK05_021F8D08: ; 0x021F8D08
+ .word MOD05_021F1A2C, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
+ .word MOD05_021F1AD8
+
+ .global UNK05_021F8D1C
+UNK05_021F8D1C: ; 0x021F8D1C
+ .word MOD05_021F1BD0, MOD05_021F1BF4, MOD05_021F1C14, MOD05_021F1B60
+ .word MOD05_021F1B8C
+
+ .global UNK05_021F8D30
+UNK05_021F8D30: ; 0x021F8D30
+ .word MOD05_021F0CF0, MOD05_021F1738, MOD05_021F0D18, MOD05_021F0D44
+ .word MOD05_021F0D70
+
+ .global UNK05_021F8D44
+UNK05_021F8D44: ; 0x021F8D44
+ .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8D5C
+UNK05_021F8D5C: ; 0x021F8D5C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8D74
+UNK05_021F8D74: ; 0x021F8D74
+ .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8D8C
+UNK05_021F8D8C: ; 0x021F8D8C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8DA4
+UNK05_021F8DA4: ; 0x021F8DA4
+ .byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8DBC
+UNK05_021F8DBC: ; 0x021F8DBC
+ .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8DD4
+UNK05_021F8DD4: ; 0x021F8DD4
+ .byte 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8DEC
+UNK05_021F8DEC: ; 0x021F8DEC
+ .byte 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8E10
+UNK05_021F8E10: ; 0x021F8E10
+ .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8E34
+UNK05_021F8E34: ; 0x021F8E34
+ .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8E58
+UNK05_021F8E58: ; 0x021F8E58
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8E94
+UNK05_021F8E94: ; 0x021F8E94
+ .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
+ .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8ED0
+UNK05_021F8ED0: ; 0x021F8ED0
+ .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0x0C, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00
+ .byte 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8F0C
+UNK05_021F8F0C: ; 0x021F8F0C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8F48
+UNK05_021F8F48: ; 0x021F8F48
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00
+ .byte 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8F90
+UNK05_021F8F90: ; 0x021F8F90
+ .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
+ .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x50, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
+ .byte 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F8FFC
+UNK05_021F8FFC: ; 0x021F8FFC
+ .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00
+ .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0x58, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00
+ .byte 0x5F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00
+
+ .global UNK05_021F9080
+UNK05_021F9080: ; 0x021F9080
+ .word MOD05_021F1EDC
+ .word MOD05_021F1EF4
+ .word MOD05_021F1EF8
+ .word MOD05_021F1EFC
+ .word MOD05_021F1F00
+
+ .global UNK05_021F9094
+UNK05_021F9094: ; 0x021F9094
+ .word 0x00000000
+ .byte 0x78, 0x01, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7A, 0x01, 0x00, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00
+ .byte 0x07, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021F90E4
+UNK05_021F90E4: ; 0x021F90E4
+ .byte 0x00, 0x00, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00, 0x8C, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8D, 0x01, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00
+ .byte 0x07, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00
+ .byte 0x09, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00
+ .byte 0x0B, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00
+ .byte 0x0D, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00
+ .byte 0x0F, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00
+ .byte 0x11, 0x00, 0x00, 0x00, 0x9A, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x9B, 0x01, 0x00, 0x00
+ .byte 0x13, 0x00, 0x00, 0x00, 0x9C, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x9D, 0x01, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021F9194
+UNK05_021F9194: ; 0x021F9194
+ .word 0x00001001
+ .word 0x00001002
+ .word 0x00001003
+ .word 0x00001004
+ .word 0x00001005
+ .word 0x00001006
+ .word 0x00001007
+ .word 0x00001008
+ .word 0x00001009
+ .word 0x0000100A
+ .word 0x0000100B
+ .word 0x0000100C
+ .word 0x0000100D
+ .word 0x0000100E
+ .word 0x0000100F
+ .word 0x00001010
+ .word 0x00001011
+ .word 0x00001012
+ .word 0x00001013
+ .word 0x00001014
+ .word 0x00001015
+ .word 0x00001016
+ .word 0x00001017
+ .word 0x00001018
+ .word 0x00001019
+ .word 0x0000101A
+ .word 0x0000101B
+ .word 0x0000101C
+ .word 0x0000101D
+ .word 0x0000101E
+ .word 0x0000101F
+ .word 0x00001020
+ .word 0x00001021
+ .word 0x00001022
+ .word 0x00001023
+ .word 0x00001024
+ .word 0x00001025
+ .word 0x00001026
+ .word 0x00001027
+ .word 0x00001028
+ .word 0x00001029
+ .word 0x0000102A
+ .word 0x0000102B
+ .word 0x0000102C
+ .word 0x0000102D
+ .word 0x0000102E
+ .word 0x0000102F
+ .word 0x00001030
+ .word 0x00001031
+ .word 0x00001032
+ .word 0x00001033
+ .word 0x00001034
+ .word 0x00001035
+ .word 0x00001036
+ .word 0x00001037
+ .word 0x00001038
+ .word 0x00001039
+ .word 0x0000103A
+ .word 0x0000103B
+ .word 0x0000103C
+ .word 0x0000103D
+ .word 0x0000103E
+ .word 0x0000103F
+ .word 0x00001040
+ .word 0x00001041
+ .word 0x00001042
+ .word 0x00001043
+ .word 0x00001044
+ .word 0x00001045
+ .word 0x00001046
+ .word 0x00001047
+ .word 0x00001048
+ .word 0x00001049
+ .word 0x0000104A
+ .word 0x0000104B
+ .word 0x0000104C
+ .word 0x0000104D
+ .word 0x0000104E
+ .word 0x0000104F
+ .word 0x00001050
+ .word 0x00001051
+ .word 0x00001052
+ .word 0x00001053
+ .word 0x00001054
+ .word 0x00001055
+ .word 0x00001056
+ .word 0x00001057
+ .word 0x00001058
+ .word 0x00001059
+ .word 0x0000105A
+ .word 0x0000105B
+ .word 0x0000105C
+ .word 0x0000105D
+ .word 0x0000105E
+ .word 0x0000105F
+ .word 0x00001060
+ .word 0x00001061
+ .word 0x00001062
+ .word 0x00001063
+ .word 0x00001064
+ .word 0x00001065
+ .word 0x00001066
+ .word 0x00001067
+ .word 0x00001068
+ .word 0x00001069
+ .word 0x0000106A
+ .word 0x0000106B
+ .word 0x0000106C
+ .word 0x0000106D
+ .word 0x0000106E
+ .word 0x0000106F
+ .word 0x00001070
+ .word 0x00001071
+ .word 0x00001072
+ .word 0x00001073
+ .word 0x00001074
+ .word 0x00001075
+ .word 0x00001076
+ .word 0x00001077
+ .word 0x00001078
+ .word 0x00001079
+ .word 0x0000107A
+ .word 0x0000107B
+ .word 0x0000107C
+ .word 0x0000107D
+ .word 0x0000107E
+ .word 0x0000107F
+ .word 0x00001080
+ .word 0x00001081
+ .word 0x00001082
+ .word 0x00001083
+ .word 0x00001084
+ .word 0x00001085
+ .word 0x00001086
+ .word 0x00001087
+ .word 0x00001088
+ .word 0x00001089
+ .word 0x0000108A
+ .word 0x0000108B
+ .word 0x0000108C
+ .word 0x0000108D
+ .word 0x0000108E
+ .word 0x0000108F
+ .word 0x00001090
+ .word 0x00001091
+ .word 0x00001092
+ .word 0x00001093
+ .word 0x00001094
+ .word 0x00001095
+ .word 0x00001096
+ .word 0x00001097
+ .word 0x00001098
+ .word 0x00001099
+ .word 0x0000109A
+ .word 0x0000109B
+ .word 0x0000109C
+ .word 0x0000109D
+ .word 0x0000109E
+ .word 0x0000109F
+ .word 0x000010A0
+ .word 0x000010A1
+ .word 0x000010A2
+ .word 0x000010A3
+ .word 0x000010A4
+ .word 0x000010A5
+ .word 0x000010A6
+ .word 0x000010A7
+ .word 0x000010A8
+ .word 0x000010A9
+ .word 0x000010AA
+ .word 0x000010AB
+ .word 0x000010AC
+ .word 0x000010AD
+ .word 0x000010AE
+ .word 0x000010AF
+ .word 0x000010B0
+ .word 0x000010B1
+ .word 0x000010B2
+ .word 0x000010B3
+ .word 0x000010B4
+ .word 0x000010B5
+ .word 0x000010B6
+ .word 0x000010B7
+ .word 0x000010B8
+ .word 0x000010B9
+ .word 0x000010BA
+ .word 0x000010BB
+ .word 0x000010BC
+ .word 0x000010BD
+ .word 0x000010BE
+ .word 0x000010BF
+ .word 0x000010C0
+
+ .global UNK05_021F9494
+UNK05_021F9494: ; 0x021F9494
+ .word 0x00, UNK05_021F8BC8
+ .word 0x01, UNK05_021F8C68
+ .word 0x02, UNK05_021F8C68
+ .word 0x03, UNK05_021F8C68
+ .word 0x04, UNK05_021F8C68
+ .word 0x05, UNK05_021F8C68
+ .word 0x06, UNK05_021F8C68
+ .word 0x07, UNK05_021F8C68
+ .word 0x08, UNK05_021F8C68
+ .word 0x09, UNK05_021F8C68
+ .word 0x0A, UNK05_021F8C68
+ .word 0x0B, UNK05_021F8C68
+ .word 0x0C, UNK05_021F8C68
+ .word 0x0D, UNK05_021F8C68
+ .word 0x0E, UNK05_021F8C68
+ .word 0x0F, UNK05_021F8C68
+ .word 0x10, UNK05_021F8C68
+ .word 0x11, UNK05_021F8C68
+ .word 0x12, UNK05_021F8C68
+ .word 0x13, UNK05_021F8C68
+ .word 0x14, UNK05_021F8C68
+ .word 0x15, UNK05_021F8C18
+ .word 0x16, UNK05_021F8C68
+ .word 0x17, UNK05_021F8C68
+ .word 0x18, UNK05_021F8C68
+ .word 0x19, UNK05_021F8C68
+ .word 0x1A, UNK05_021F8CB8
+ .word 0x1B, UNK05_021F8C68
+ .word 0x1C, UNK05_021F8C68
+ .word 0x1D, UNK05_021F8C68
+ .word 0x1E, UNK05_021F8C68
+ .word 0x1F, UNK05_021F8C68
+ .word 0x20, UNK05_021F8C68
+ .word 0x21, UNK05_021F8C68
+ .word 0x22, UNK05_021F8C68
+ .word 0x23, UNK05_021F8C68
+ .word 0x24, UNK05_021F8C68
+ .word 0x25, UNK05_021F8C68
+ .word 0x26, UNK05_021F8C68
+ .word 0x27, UNK05_021F8C68
+ .word 0x28, UNK05_021F8C68
+ .word 0x29, UNK05_021F8C68
+ .word 0x2A, UNK05_021F8C68
+ .word 0x2B, UNK05_021F8C68
+ .word 0x2C, UNK05_021F8C68
+ .word 0x2D, UNK05_021F8C68
+ .word 0x2E, UNK05_021F8C68
+ .word 0x2F, UNK05_021F8C68
+ .word 0x30, UNK05_021F8C68
+ .word 0x31, UNK05_021F8C68
+ .word 0x32, UNK05_021F8C68
+ .word 0x33, UNK05_021F8C68
+ .word 0x34, UNK05_021F8C68
+ .word 0x35, UNK05_021F8C68
+ .word 0x36, UNK05_021F8C68
+ .word 0x37, UNK05_021F8C68
+ .word 0x38, UNK05_021F8C68
+ .word 0x39, UNK05_021F8C68
+ .word 0x3A, UNK05_021F8C68
+ .word 0x3B, UNK05_021F8C68
+ .word 0x3C, UNK05_021F8C68
+ .word 0x3D, UNK05_021F8C68
+ .word 0x3E, UNK05_021F8C68
+ .word 0x3F, UNK05_021F8C68
+ .word 0x40, UNK05_021F8C68
+ .word 0x41, UNK05_021F8C68
+ .word 0x42, UNK05_021F8C68
+ .word 0x43, UNK05_021F8C68
+ .word 0x44, UNK05_021F8C68
+ .word 0x45, UNK05_021F8C68
+ .word 0x46, UNK05_021F8C68
+ .word 0x47, UNK05_021F8C68
+ .word 0x48, UNK05_021F8C68
+ .word 0x49, UNK05_021F8C68
+ .word 0x4A, UNK05_021F8C68
+ .word 0x4B, UNK05_021F8C68
+ .word 0x4C, UNK05_021F8C68
+ .word 0x4D, UNK05_021F8C68
+ .word 0x4E, UNK05_021F8C68
+ .word 0x4F, UNK05_021F8C68
+ .word 0x50, UNK05_021F8C68
+ .word 0x51, UNK05_021F8C68
+ .word 0x52, UNK05_021F8C68
+ .word 0x53, UNK05_021F8C68
+ .word 0x54, UNK05_021F8CCC
+ .word 0x55, UNK05_021F8CCC
+ .word 0x56, UNK05_021F8CCC
+ .word 0x57, UNK05_021F8CCC
+ .word 0x58, UNK05_021F8C68
+ .word 0x59, UNK05_021F8C68
+ .word 0x5A, UNK05_021F8C68
+ .word 0x5B, UNK05_021F8C90
+ .word 0x5C, UNK05_021F8C90
+ .word 0x5D, UNK05_021F8C90
+ .word 0x5E, UNK05_021F8C90
+ .word 0x5F, UNK05_021F8C90
+ .word 0x60, UNK05_021F8C90
+ .word 0x61, UNK05_021F8BC8
+ .word 0x62, UNK05_021F8C18
+ .word 0x63, UNK05_021F8C68
+ .word 0x64, UNK05_021F8C54
+ .word 0x76, UNK05_021F8BF0
+ .word 0x78, UNK05_021F8C68
+ .word 0x79, UNK05_021F8C68
+ .word 0x7A, UNK05_021F8C68
+ .word 0x7B, UNK05_021F8C68
+ .word 0x7C, UNK05_021F8C68
+ .word 0x7D, UNK05_021F8C68
+ .word 0x7E, UNK05_021F8C68
+ .word 0x7F, UNK05_021F8C68
+ .word 0x80, UNK05_021F8C68
+ .word 0x81, UNK05_021F8C68
+ .word 0x82, UNK05_021F8C68
+ .word 0x83, UNK05_021F8C68
+ .word 0x84, UNK05_021F8C68
+ .word 0x85, UNK05_021F8C68
+ .word 0x86, UNK05_021F8C68
+ .word 0x87, UNK05_021F8C68
+ .word 0x88, UNK05_021F8C68
+ .word 0x89, UNK05_021F8C68
+ .word 0x8A, UNK05_021F8C68
+ .word 0x8B, UNK05_021F8C68
+ .word 0x8C, UNK05_021F8C68
+ .word 0x8D, UNK05_021F8C68
+ .word 0x8E, UNK05_021F8C68
+ .word 0x8F, UNK05_021F8C68
+ .word 0x90, UNK05_021F8C68
+ .word 0x91, UNK05_021F8C68
+ .word 0x92, UNK05_021F8C68
+ .word 0x93, UNK05_021F8C68
+ .word 0x94, UNK05_021F8C68
+ .word 0x95, UNK05_021F8C68
+ .word 0x96, UNK05_021F8C68
+ .word 0x97, UNK05_021F8D1C
+ .word 0x98, UNK05_021F8D1C
+ .word 0x99, UNK05_021F8D1C
+ .word 0x9A, UNK05_021F8BDC
+ .word 0x9B, UNK05_021F8BDC
+ .word 0x9C, UNK05_021F8C40
+ .word 0x9D, UNK05_021F8C40
+ .word 0x9E, UNK05_021F8C68
+ .word 0x9F, UNK05_021F8C40
+ .word 0xA0, UNK05_021F8C40
+ .word 0xA1, UNK05_021F8C40
+ .word 0xA2, UNK05_021F8C68
+ .word 0xA3, UNK05_021F8C68
+ .word 0xA4, UNK05_021F8C68
+ .word 0xA5, UNK05_021F8C68
+ .word 0xA6, UNK05_021F8C68
+ .word 0xA7, UNK05_021F8C68
+ .word 0xA8, UNK05_021F8C68
+ .word 0xA9, UNK05_021F8C68
+ .word 0xAA, UNK05_021F8C68
+ .word 0xAB, UNK05_021F8C68
+ .word 0xAC, UNK05_021F8C68
+ .word 0xAD, UNK05_021F8CE0
+ .word 0xAE, UNK05_021F8C68
+ .word 0xAF, UNK05_021F8C68
+ .word 0xB0, UNK05_021F8D30
+ .word 0xB1, UNK05_021F8D30
+ .word 0xB4, UNK05_021F8BB4
+ .word 0xB5, UNK05_021F8BB4
+ .word 0xB2, UNK05_021F8C2C
+ .word 0xB3, UNK05_021F8C2C
+ .word 0xB6, UNK05_021F8CCC
+ .word 0xB7, UNK05_021F8C7C
+ .word 0xB8, UNK05_021F8CCC
+ .word 0xB9, UNK05_021F8C68
+ .word 0xBA, UNK05_021F8BC8
+ .word 0xBB, UNK05_021F8BC8
+ .word 0xBC, UNK05_021F8CF4
+ .word 0xBD, UNK05_021F8CF4
+ .word 0xBE, UNK05_021F8C68
+ .word 0xBF, UNK05_021F8C68
+ .word 0xC0, UNK05_021F8C68
+ .word 0xC1, UNK05_021F8C68
+ .word 0xC2, UNK05_021F8C68
+ .word 0xC3, UNK05_021F8C04
+ .word 0xC4, UNK05_021F8CA4
+ .word 0xC5, UNK05_021F8CA4
+ .word 0xC6, UNK05_021F8D30
+ .word 0xC7, UNK05_021F8D30
+ .word 0xC8, UNK05_021F8BA0
+ .word 0xC9, UNK05_021F8BA0
+ .word 0xCA, UNK05_021F8CCC
+ .word 0xCB, UNK05_021F8CCC
+ .word 0xCC, UNK05_021F8C68
+ .word 0xCD, UNK05_021F8C68
+ .word 0xCE, UNK05_021F8C68
+ .word 0xCF, UNK05_021F8C68
+ .word 0xD0, UNK05_021F8C68
+ .word 0xD1, UNK05_021F8D08
+
+; 0x021F9A94
+ .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .global UNK05_021F9A9C
+UNK05_021F9A9C: ; 0x021F9A9C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x06, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x0A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x0C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x0E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x10, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x12, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x14, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
+ .byte 0x16, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x18, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x1A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x1C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x1E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x20, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x22, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x24, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x26, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
+ .byte 0x28, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x2A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x2C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x2E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x30, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x32, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x34, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x36, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x38, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x3A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x3C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x3E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x40, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x42, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x44, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x46, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x48, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x4A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x4C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x4E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x50, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x52, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x54, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x56, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x58, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x5A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x5C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x5E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x62, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x64, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x7A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x7C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x7E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x80, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x82, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x84, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x86, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x8A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x8C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x8E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x90, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x92, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x94, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x96, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x98, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x9A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x9C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x9E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xA0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xA2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xA4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xA6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xA8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xAA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xAC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xAE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xB0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xB2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xB4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xB6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
+ .byte 0xB8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xBA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xBC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xBE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xC0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xC2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xC5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xC7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
+ .byte 0xC9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0xCB, 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
+ .byte 0xCD, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
+ .byte 0xCF, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
+ .byte 0xD1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FA0AC
+UNK05_021FA0AC: ; 0x021FA0AC
+ .byte 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ .byte 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .byte 0x0A, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
+ .byte 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
+ .byte 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
+ .byte 0x10, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
+ .byte 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00
+ .byte 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00
+ .byte 0x18, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00
+ .byte 0x1A, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00
+ .byte 0x1C, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00
+ .byte 0x1E, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00
+ .byte 0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
+ .byte 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00
+ .byte 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00
+ .byte 0x26, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00
+ .byte 0x28, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00
+ .byte 0x2A, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00
+ .byte 0x2C, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00
+ .byte 0x2E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00
+ .byte 0x30, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00
+ .byte 0x32, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00
+ .byte 0x34, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00
+ .byte 0x36, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00
+ .byte 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00
+ .byte 0x3A, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00
+ .byte 0x3C, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00
+ .byte 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00
+ .byte 0x40, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00
+ .byte 0x42, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00
+ .byte 0x44, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00
+ .byte 0x46, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00
+ .byte 0x48, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00
+ .byte 0x4A, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00
+ .byte 0x4C, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00
+ .byte 0x4E, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00
+ .byte 0x50, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00
+ .byte 0x52, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00
+ .byte 0x54, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00
+ .byte 0x56, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00
+ .byte 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00
+ .byte 0x5A, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00
+ .byte 0x62, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
+ .byte 0x02, 0x10, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00
+ .byte 0x7A, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00
+ .byte 0x7C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00
+ .byte 0x7E, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00
+ .byte 0x80, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00
+ .byte 0x82, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00
+ .byte 0x84, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00
+ .byte 0x86, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00
+ .byte 0x8A, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00
+ .byte 0x8C, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00
+ .byte 0x8E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00
+ .byte 0x90, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00
+ .byte 0x92, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00
+ .byte 0x94, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
+ .byte 0x96, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00
+ .byte 0x98, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00
+ .byte 0x9A, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00
+ .byte 0x9C, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00
+ .byte 0x9E, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00
+ .byte 0xA0, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00
+ .byte 0xA2, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00
+ .byte 0xA4, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00
+ .byte 0xA6, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00
+ .byte 0xA8, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00
+ .byte 0xAA, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00
+ .byte 0xAC, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00
+ .byte 0xAE, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00
+ .byte 0xB0, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00
+ .byte 0xB4, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00
+ .byte 0xB2, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00
+ .byte 0xB6, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00
+ .byte 0xB9, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00
+ .byte 0xBB, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00
+ .byte 0xBD, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00
+ .byte 0xBF, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00
+ .byte 0x04, 0x10, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00
+ .byte 0x06, 0x10, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00
+ .byte 0x08, 0x10, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x09, 0x10, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00
+ .byte 0x0A, 0x10, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x0B, 0x10, 0x00, 0x00, 0xB2, 0x00, 0x00, 0x00
+ .byte 0x0C, 0x10, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x0D, 0x10, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00
+ .byte 0x0E, 0x10, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00
+ .byte 0x10, 0x10, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00
+ .byte 0x12, 0x10, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x13, 0x10, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00
+ .byte 0x14, 0x10, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00
+ .byte 0x16, 0x10, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x17, 0x10, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00
+ .byte 0x18, 0x10, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x19, 0x10, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
+ .byte 0x1A, 0x10, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x1B, 0x10, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00
+ .byte 0x1C, 0x10, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x1D, 0x10, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00
+ .byte 0x1E, 0x10, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00
+ .byte 0x20, 0x10, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x21, 0x10, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00
+ .byte 0x22, 0x10, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00
+ .byte 0x24, 0x10, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x25, 0x10, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00
+ .byte 0x26, 0x10, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00
+ .byte 0x28, 0x10, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00
+ .byte 0x2A, 0x10, 0x00, 0x00, 0xD1, 0x00, 0x00, 0x00, 0x2B, 0x10, 0x00, 0x00, 0xD2, 0x00, 0x00, 0x00
+ .byte 0x2C, 0x10, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0x2D, 0x10, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00
+ .byte 0x2E, 0x10, 0x00, 0x00, 0xD5, 0x00, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00
+ .byte 0x30, 0x10, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00
+ .byte 0x32, 0x10, 0x00, 0x00, 0xD9, 0x00, 0x00, 0x00, 0x33, 0x10, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00
+ .byte 0x34, 0x10, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x35, 0x10, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00
+ .byte 0x36, 0x10, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x37, 0x10, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00
+ .byte 0x38, 0x10, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x39, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00
+ .byte 0x3A, 0x10, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x3B, 0x10, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x00
+ .byte 0x3C, 0x10, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0x3D, 0x10, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00
+ .byte 0x3E, 0x10, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x3F, 0x10, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00
+ .byte 0x40, 0x10, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00
+ .byte 0x42, 0x10, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x43, 0x10, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00
+ .byte 0x46, 0x10, 0x00, 0x00, 0xED, 0x00, 0x00, 0x00, 0x47, 0x10, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00
+ .byte 0x48, 0x10, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x49, 0x10, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00
+ .byte 0x4A, 0x10, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x4B, 0x10, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00
+ .byte 0x4C, 0x10, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x4D, 0x10, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00
+ .byte 0x4E, 0x10, 0x00, 0x00, 0xF5, 0x00, 0x00, 0x00, 0x4F, 0x10, 0x00, 0x00, 0xF6, 0x00, 0x00, 0x00
+ .byte 0x50, 0x10, 0x00, 0x00, 0xF7, 0x00, 0x00, 0x00, 0x51, 0x10, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00
+ .byte 0x52, 0x10, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x53, 0x10, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x55, 0x10, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00
+ .byte 0x56, 0x10, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x57, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00
+ .byte 0x58, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x59, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
+ .byte 0x5A, 0x10, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x5B, 0x10, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00
+ .byte 0x5C, 0x10, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x5D, 0x10, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00
+ .byte 0x5E, 0x10, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x5F, 0x10, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00
+ .byte 0x60, 0x10, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x61, 0x10, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00
+ .byte 0x62, 0x10, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x63, 0x10, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00
+ .byte 0x64, 0x10, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x00, 0x65, 0x10, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x00
+ .byte 0x66, 0x10, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00, 0x67, 0x10, 0x00, 0x00, 0x0E, 0x01, 0x00, 0x00
+ .byte 0x68, 0x10, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x00, 0x69, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00
+ .byte 0x6A, 0x10, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x6B, 0x10, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00
+ .byte 0x6C, 0x10, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x6D, 0x10, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00
+ .byte 0x6E, 0x10, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x6F, 0x10, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00
+ .byte 0x70, 0x10, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x71, 0x10, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00
+ .byte 0x72, 0x10, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x73, 0x10, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00
+ .byte 0x74, 0x10, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x75, 0x10, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00
+ .byte 0x76, 0x10, 0x00, 0x00, 0x1D, 0x01, 0x00, 0x00, 0x77, 0x10, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x00
+ .byte 0x78, 0x10, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x79, 0x10, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00
+ .byte 0x7A, 0x10, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x7B, 0x10, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00
+ .byte 0x7C, 0x10, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x7D, 0x10, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00
+ .byte 0x7E, 0x10, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x7F, 0x10, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00
+ .byte 0x80, 0x10, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x81, 0x10, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00
+ .byte 0x82, 0x10, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x83, 0x10, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x00, 0x85, 0x10, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00
+ .byte 0x86, 0x10, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x87, 0x10, 0x00, 0x00, 0x2E, 0x01, 0x00, 0x00
+ .byte 0x88, 0x10, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x89, 0x10, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00
+ .byte 0x8A, 0x10, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x8B, 0x10, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00
+ .byte 0x8C, 0x10, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x8D, 0x10, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00
+ .byte 0x8E, 0x10, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x8F, 0x10, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00
+ .byte 0x90, 0x10, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0x91, 0x10, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00
+ .byte 0x92, 0x10, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x93, 0x10, 0x00, 0x00, 0x3A, 0x01, 0x00, 0x00
+ .byte 0x94, 0x10, 0x00, 0x00, 0x3B, 0x01, 0x00, 0x00, 0x95, 0x10, 0x00, 0x00, 0x3C, 0x01, 0x00, 0x00
+ .byte 0x96, 0x10, 0x00, 0x00, 0x3D, 0x01, 0x00, 0x00, 0x97, 0x10, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x00
+ .byte 0x98, 0x10, 0x00, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x99, 0x10, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00
+ .byte 0x9A, 0x10, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x9B, 0x10, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00
+ .byte 0x9C, 0x10, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x9D, 0x10, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00
+ .byte 0x9E, 0x10, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x9F, 0x10, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00
+ .byte 0xA0, 0x10, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0xA1, 0x10, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00
+ .byte 0xA2, 0x10, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0xA3, 0x10, 0x00, 0x00, 0x4A, 0x01, 0x00, 0x00
+ .byte 0xA4, 0x10, 0x00, 0x00, 0x4B, 0x01, 0x00, 0x00, 0xA5, 0x10, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00
+ .byte 0xA6, 0x10, 0x00, 0x00, 0x4D, 0x01, 0x00, 0x00, 0xA7, 0x10, 0x00, 0x00, 0x4E, 0x01, 0x00, 0x00
+ .byte 0xA8, 0x10, 0x00, 0x00, 0x4F, 0x01, 0x00, 0x00, 0xA9, 0x10, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00
+ .byte 0xAA, 0x10, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0xAB, 0x10, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00
+ .byte 0xAC, 0x10, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0xAD, 0x10, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00
+ .byte 0xAE, 0x10, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0xAF, 0x10, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00
+ .byte 0xB0, 0x10, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0xB1, 0x10, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00
+ .byte 0xB2, 0x10, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0xB3, 0x10, 0x00, 0x00, 0x5A, 0x01, 0x00, 0x00
+ .byte 0xB4, 0x10, 0x00, 0x00, 0x5B, 0x01, 0x00, 0x00, 0xB5, 0x10, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00
+ .byte 0xB6, 0x10, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0xB7, 0x10, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00
+ .byte 0xB8, 0x10, 0x00, 0x00, 0x5F, 0x01, 0x00, 0x00, 0xB9, 0x10, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00
+ .byte 0xBA, 0x10, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00, 0xBB, 0x10, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00
+ .byte 0xBC, 0x10, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0xBD, 0x10, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00
+ .byte 0xBE, 0x10, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0xBF, 0x10, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00
+ .byte 0xC0, 0x10, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00
+ .byte 0xC2, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00
+ .byte 0xC4, 0x00, 0x00, 0x00, 0x6B, 0x01, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x00, 0x00
+ .byte 0xC6, 0x00, 0x00, 0x00, 0x6D, 0x01, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00
+ .byte 0xC8, 0x00, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00
+ .byte 0xCA, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00
+ .byte 0xCC, 0x00, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00
+ .byte 0xCE, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00
+ .byte 0xD0, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FAC6C
+UNK05_021FAC6C: ; 0x021FAC6C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .word UNK05_021F8F90
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+ .word UNK05_021F8FFC
+ .byte 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00
+ .word UNK05_021F8F48
+ .byte 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x55, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .word UNK05_021F8F90
+ .byte 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+ .word UNK05_021F8FFC
+ .byte 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x01, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x02, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x03, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .word UNK05_021F8D74
+ .byte 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .word UNK05_021F8D74
+ .byte 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .word UNK05_021F8D74
+ .byte 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .word UNK05_021F8D44
+ .byte 0x9B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .word UNK05_021F8D44
+ .byte 0x9C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .word UNK05_021F8D5C
+ .byte 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00
+ .word UNK05_021F8D5C
+ .byte 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
+ .word UNK05_021F8D5C
+ .byte 0xA0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00
+ .word UNK05_021F8D5C
+ .byte 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
+ .word UNK05_021F8D5C
+ .byte 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
+ .word UNK05_021F8DEC
+ .byte 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ .word UNK05_021F8DA4
+ .byte 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ .word UNK05_021F8DA4
+ .byte 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
+ .word UNK05_021F8E94
+ .byte 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
+ .word UNK05_021F8E94
+ .byte 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
+ .word UNK05_021F8E10
+ .byte 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
+ .word UNK05_021F8E10
+ .byte 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xB8, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
+ .word UNK05_021F8F90
+ .byte 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
+ .word UNK05_021F8F90
+ .byte 0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
+ .word UNK05_021F8E58
+ .byte 0xBD, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
+ .word UNK05_021F8E58
+ .byte 0xBE, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xBF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0x04, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x05, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x06, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x07, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x08, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x09, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x0A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x0B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x0C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x0D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x0E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x0F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x10, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x11, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x12, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x13, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x14, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x15, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x16, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x17, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x18, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x19, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x1A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x1B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x1C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x1D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x1E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x1F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x20, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x21, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x22, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x23, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x24, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x25, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x26, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x27, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x28, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x29, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x2A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x2B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x2C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x2D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x2E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x2F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x30, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x31, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x32, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x33, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x34, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x35, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x36, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x37, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x38, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x39, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x3A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x3B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x3C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x3D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x3E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x3F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x40, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x41, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x42, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x43, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x44, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x45, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x46, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x47, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x48, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x49, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x4A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x4B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x4C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x4D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x4E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x4F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x50, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x51, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x52, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x53, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x54, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x55, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x56, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x57, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x58, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x59, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x5A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x5B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x5C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x5D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x5E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x5F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x60, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x61, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x62, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x63, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x64, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x65, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x66, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x67, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x68, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x69, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x6A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x6B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x6C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x6D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x6E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x6F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x70, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x71, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x72, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x73, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x74, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x75, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x76, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x77, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x78, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x79, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x7A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x7B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x7C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x7D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x7E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x7F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x80, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x81, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x82, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x83, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x84, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x85, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x86, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x87, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x88, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x89, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x8A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x8B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x8C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x8D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x8E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x8F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x90, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x91, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x92, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x93, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x94, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x95, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x96, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x97, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x98, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x99, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x9A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x9B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x9C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x9D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x9E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0x9F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xA9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xAA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xAB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xAC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xAD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xAE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xAF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xB9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xBA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xBB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xBC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xBD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xBE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xBF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xC0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .word UNK05_021F8DD4
+ .byte 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
+ .word UNK05_021F8D8C
+ .byte 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00
+ .word UNK05_021F8ED0
+ .byte 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00
+ .word UNK05_021F8ED0
+ .byte 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
+ .word UNK05_021F8DBC
+ .byte 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
+ .word UNK05_021F8DBC
+ .byte 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
+ .word UNK05_021F8E34
+ .byte 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
+ .word UNK05_021F8E34
+ .byte 0xCA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xCB, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word UNK05_021F8F0C
+ .byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC3EC
+UNK05_021FC3EC: ; 0x021FC3EC
+ .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC3FC
+UNK05_021FC3FC: ; 0x021FC3FC
+ .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC40C
+UNK05_021FC40C: ; 0x021FC40C
+ .word MOD05_021F14BC, MOD05_021F150C, MOD05_021F1544, MOD05_021F1608
+
+ .global UNK05_021FC41C
+UNK05_021FC41C: ; 0x021FC41C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC42C
+UNK05_021FC42C: ; 0x021FC42C
+ .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC43C
+UNK05_021FC43C: ; 0x021FC43C
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC458
+UNK05_021FC458: ; 0x021FC458
+ .byte 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC474
+UNK05_021FC474: ; 0x021FC474
+ .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC494
+UNK05_021FC494: ; 0x021FC494
+ .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC4B4
+UNK05_021FC4B4: ; 0x021FC4B4
+ .word MOD05_021F075C, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC
+ .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904
+ .word MOD05_021F0980
+
+ .global UNK05_021FC4D8
+UNK05_021FC4D8: ; 0x021FC4D8
+ .word MOD05_021F12C0, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C
+ .word MOD05_021F0F60, MOD05_021F1008, MOD05_021F1008, MOD05_021F1008
+ .word MOD05_021F134C, MOD05_021F13C8
+
+ .global UNK05_021FC500
+UNK05_021FC500: ; 0x021FC500
+ .word MOD05_021F0E28, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C
+ .word MOD05_021F0F60, MOD05_021F0FB4, MOD05_021F1008, MOD05_021F10A8
+ .word MOD05_021F1140, MOD05_021F11E0
+
+ .global UNK05_021FC528
+UNK05_021FC528: ; 0x021FC528
+ .word MOD05_021F0A78, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC
+ .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904
+ .word MOD05_021F0980, MOD05_021F0AB4
diff --git a/arm9/modules/05/asm/mod05_021F1B0C.s b/arm9/modules/05/asm/mod05_021F1B0C.s
new file mode 100644
index 00000000..79bd0475
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F1B0C.s
@@ -0,0 +1,236 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1B0C
+MOD05_021F1B0C: ; 0x021F1B0C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD05_021F1C34
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02058BB4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1B2C
+MOD05_021F1B2C: ; 0x021F1B2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0]
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F1B54
+ cmp r4, #0
+ beq _021F1B54
+ add r0, r5, #0
+ bl MOD05_021F1C48
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_021F1B54:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1B58
+MOD05_021F1B58: ; 0x021F1B58
+ ldr r3, _021F1B5C ; =MOD05_021F1CA4
+ bx r3
+ .balign 4, 0
+_021F1B5C: .word MOD05_021F1CA4
+
+ thumb_func_start MOD05_021F1B60
+MOD05_021F1B60: ; 0x021F1B60
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1B76
+ add r1, r4, #4
+ bl MOD05_021F20D8
+_021F1B76:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2060
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1B8C
+MOD05_021F1B8C: ; 0x021F1B8C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F1BCC
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _021F1BAE
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F1FC8
+_021F1BAE:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F1BCC
+ add r1, r4, #4
+ bl MOD05_021F20F8
+ ldr r1, [r4]
+ add r0, r5, #0
+ bl MOD05_021F2F48
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+_021F1BCC:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1BD0
+MOD05_021F1BD0: ; 0x021F1BD0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD05_021F1C34
+ mov r1, #0
+ mov r0, #6
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+ str r1, [sp]
+ str r1, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02058BB4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1BF4
+MOD05_021F1BF4: ; 0x021F1BF4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0]
+ add r0, r5, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F1C12
+ cmp r4, #0
+ beq _021F1C12
+ add r0, r5, #0
+ bl MOD05_021F1C48
+_021F1C12:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F1C14
+MOD05_021F1C14: ; 0x021F1C14
+ ldr r3, _021F1C18 ; =MOD05_021F1CA4
+ bx r3
+ .balign 4, 0
+_021F1C18: .word MOD05_021F1CA4
+
+ thumb_func_start MOD05_021F1C1C
+MOD05_021F1C1C: ; 0x021F1C1C
+ ldr r3, _021F1C20 ; =FUN_02058628
+ bx r3
+ .balign 4, 0
+_021F1C20: .word FUN_02058628
+
+ thumb_func_start MOD05_021F1C24
+MOD05_021F1C24: ; 0x021F1C24
+ push {r3, lr}
+ bl FUN_02058628
+ bl MOD05_021F1C30
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F1C30
+MOD05_021F1C30: ; 0x021F1C30
+ ldr r0, [r0]
+ bx lr
+
+ thumb_func_start MOD05_021F1C34
+MOD05_021F1C34: ; 0x021F1C34
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0x10
+ bl FUN_02058604
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F1FC8
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F1C48
+MOD05_021F1C48: ; 0x021F1C48
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02058628
+ ldr r4, [r0]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2F48
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F1C64
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F1C64
+MOD05_021F1C64: ; 0x021F1C64
+ push {r4, r5, r6, lr}
+ mov r4, #1
+ add r6, r1, #0
+ lsl r1, r4, #9
+ add r5, r0, #0
+ bl FUN_0205842C
+ cmp r0, #1
+ bne _021F1C78
+ mov r4, #0
+_021F1C78:
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0205842C
+ cmp r0, #1
+ bne _021F1C96
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0205842C
+ cmp r0, #0
+ bne _021F1C96
+ mov r4, #0
+_021F1C96:
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl FUN_0201F80C
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1CA4
+MOD05_021F1CA4: ; 0x021F1CA4
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02058628
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F2060
+ pop {r4, pc}
+ .balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021F1CB8.s b/arm9/modules/05/asm/mod05_021F1CB8.s
new file mode 100644
index 00000000..11378412
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F1CB8.s
@@ -0,0 +1,306 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1CB8
+MOD05_021F1CB8: ; 0x021F1CB8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ mov r1, #1
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02058390
+ cmp r0, #0
+ beq _021F1CD2
+ bl GF_AssertFail
+_021F1CD2:
+ add r0, r5, #0
+ bl MOD05_021F1D68
+ add r0, r5, #0
+ bl FUN_02058368
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ bl FUN_0205839C
+ sub r0, r0, #1
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ bl FUN_020583A0
+ str r4, [sp]
+ str r6, [sp, #4]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ add r1, r5, #0
+ str r7, [sp, #8]
+ bl MOD05_021F1F04
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD05_021F3780
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_020583A4
+ ldr r1, _021F1D28 ; =UNK05_021F8B84
+ add r0, r4, #0
+ ldr r1, [r1]
+ bl MOD05_021F3810
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0205837C
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F1D28: .word UNK05_021F8B84
+
+ thumb_func_start MOD05_021F1D2C
+MOD05_021F1D2C: ; 0x021F1D2C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020587E0
+ cmp r0, #1
+ beq _021F1D3C
+ bl GF_AssertFail
+_021F1D3C:
+ add r0, r4, #0
+ bl FUN_020583A0
+ bl MOD05_021F1F58
+ add r0, r4, #0
+ bl FUN_020583AC
+ bl MOD05_021F379C
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020583A4
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02058384
+ add r0, r4, #0
+ bl MOD05_021F1D80
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F1D68
+MOD05_021F1D68: ; 0x021F1D68
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x51
+ mov r1, #4
+ bl NARC_ctor
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_020583F0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1D80
+MOD05_021F1D80: ; 0x021F1D80
+ push {r3, lr}
+ bl FUN_020583F4
+ bl NARC_dtor
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F1D8C
+MOD05_021F1D8C: ; 0x021F1D8C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02058578
+ mov r1, #4
+ bl FUN_02058390
+ cmp r0, #0
+ bne _021F1DC6
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xe
+ bl FUN_02058424
+ cmp r0, #0
+ beq _021F1DC6
+ add r0, r4, #0
+ bl FUN_02058920
+ cmp r0, #0
+ beq _021F1DC0
+ add r0, r4, #0
+ bl FUN_02058AB4
+ cmp r0, #0
+ beq _021F1DC6
+_021F1DC0:
+ add r0, r4, #0
+ bl FUN_020586A0
+_021F1DC6:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F1DC8
+MOD05_021F1DC8: ; 0x021F1DC8
+ push {r3, lr}
+ bl FUN_02058458
+ bl MOD05_021F1DD4
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F1DD4
+MOD05_021F1DD4: ; 0x021F1DD4
+ push {r3, lr}
+ ldr r3, _021F1DF4 ; =UNK05_021F9A9C
+ ldr r1, _021F1DF8 ; =0x0000FFFF
+_021F1DDA:
+ ldr r2, [r3]
+ cmp r2, r0
+ bne _021F1DE4
+ add r0, r3, #0
+ pop {r3, pc}
+_021F1DE4:
+ add r3, #8
+ ldr r2, [r3]
+ cmp r2, r1
+ bne _021F1DDA
+ bl GF_AssertFail
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+_021F1DF4: .word UNK05_021F9A9C
+_021F1DF8: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F1DFC
+MOD05_021F1DFC: ; 0x021F1DFC
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02058920
+ cmp r0, #1
+ bne _021F1E16
+ add r0, r4, #0
+ bl FUN_02058AB4
+ cmp r0, #0
+ bne _021F1E16
+ mov r0, #1
+ pop {r4, pc}
+_021F1E16:
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #8
+ bl FUN_02058424
+ cmp r0, #0
+ beq _021F1E28
+ mov r0, #1
+ pop {r4, pc}
+_021F1E28:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F1E2C
+MOD05_021F1E2C: ; 0x021F1E2C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r2, #0
+ bl FUN_020583F4
+ add r1, r4, #0
+ add r6, r0, #0
+ bl NARC_GetMemberSize
+ add r1, r0, #0
+ cmp r5, #1
+ bne _021F1E4C
+ mov r0, #4
+ bl AllocFromHeap
+ b _021F1E52
+_021F1E4C:
+ mov r0, #4
+ bl AllocFromHeapAtEnd
+_021F1E52:
+ add r5, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r5, #0
+ bl NARC_ReadWholeMember
+ add r0, r5, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1E64
+MOD05_021F1E64: ; 0x021F1E64
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r4, r1, #0
+ add r5, r0, #0
+ add r1, sp, #0x24
+ bl FUN_02058B5C
+ add r0, r5, #0
+ add r1, sp, #0x18
+ bl FUN_02058B84
+ add r0, r5, #0
+ add r1, sp, #0xc
+ bl FUN_02058BA4
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02058BC4
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0xc]
+ add r0, r1, r0
+ ldr r3, [sp]
+ add r0, r2, r0
+ add r0, r3, r0
+ str r0, [r4]
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0x1c]
+ ldr r2, [sp, #0x10]
+ add r0, r1, r0
+ ldr r3, [sp, #4]
+ add r0, r2, r0
+ add r0, r3, r0
+ str r0, [r4, #4]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x20]
+ ldr r2, [sp, #0x14]
+ add r0, r1, r0
+ ldr r3, [sp, #8]
+ add r0, r2, r0
+ add r0, r3, r0
+ str r0, [r4, #8]
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1EC0
+MOD05_021F1EC0: ; 0x021F1EC0
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020584AC
+ add r0, r4, #0
+ bl FUN_02058884
+ cmp r0, #1
+ bne _021F1ED8
+ add r0, r4, #0
+ bl FUN_020586A0
+_021F1ED8:
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1EDC
+MOD05_021F1EDC: ; 0x021F1EDC
+ push {r4, lr}
+ mov r1, #1
+ add r4, r0, #0
+ bl FUN_0205889C
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1EF4
+MOD05_021F1EF4: ; 0x021F1EF4
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1EF8
+MOD05_021F1EF8: ; 0x021F1EF8
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1EFC
+MOD05_021F1EFC: ; 0x021F1EFC
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1F00
+MOD05_021F1F00: ; 0x021F1F00
+ bx lr
+ .balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021F1F04.s b/arm9/modules/05/asm/mod05_021F1F04.s
new file mode 100644
index 00000000..3f9086b5
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F1F04.s
@@ -0,0 +1,3269 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1F04
+MOD05_021F1F04: ; 0x021F1F04
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ mov r2, #0x41
+ add r5, r0, #0
+ lsl r2, r2, #2
+ str r1, [r5, r2]
+ add r1, r4, #0
+ bl MOD05_021F2E40
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0xa
+ bl MOD05_021F33B4
+ mov r2, #4
+ mov r1, #8
+ ldr r0, [sp, #0x18]
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ add r3, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ bl MOD05_021F22E0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2160
+ ldr r1, [sp, #0x20]
+ ldr r2, _021F1F50 ; =UNK05_021F8B90
+ ldr r3, _021F1F54 ; =UNK05_021F8B88
+ add r0, r5, #0
+ bl MOD05_021F25A0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+_021F1F50: .word UNK05_021F8B90
+_021F1F54: .word UNK05_021F8B88
+
+ thumb_func_start MOD05_021F1F58
+MOD05_021F1F58: ; 0x021F1F58
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021F3458
+ add r0, r4, #0
+ bl MOD05_021F21AC
+ add r0, r4, #0
+ bl MOD05_021F2D48
+ bl MOD05_021F2E68
+ add r0, r4, #0
+ bl MOD05_021F2368
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F1F78
+MOD05_021F1F78: ; 0x021F1F78
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ mov r1, #0
+ add r6, r2, #0
+ add r7, r0, #0
+ str r1, [r5]
+ bl MOD05_021F2F3C
+ add r1, r6, #0
+ str r0, [sp]
+ bl MOD05_021F28E8
+ add r4, r0, #0
+ bne _021F1FA2
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD05_021F211C
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1FA2:
+ sub r0, r4, #3
+ cmp r0, #1
+ bhi _021F1FB8
+ ldr r0, [sp]
+ add r1, r7, #0
+ add r2, r5, #0
+ add r3, r6, #0
+ bl MOD05_021F32BC
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1FB8:
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD05_021F1FE0
+ str r0, [r5]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1FC8
+MOD05_021F1FC8: ; 0x021F1FC8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02058458
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F1F78
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F1FE0
+MOD05_021F1FE0: ; 0x021F1FE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r5, r1, #0
+ bl MOD05_021F2F3C
+ add r4, r0, #0
+ bl MOD05_021F2D48
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F2AC8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F21CC
+ add r4, r0, #0
+ bne _021F200C
+ bl GF_AssertFail
+_021F200C:
+ add r0, r6, #0
+ add r1, sp, #0
+ bl MOD05_021F1E64
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, sp, #0
+ bl MOD05_021F2E70
+ add r4, r0, #0
+ bne _021F2026
+ bl GF_AssertFail
+_021F2026:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F202C
+MOD05_021F202C: ; 0x021F202C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r6, r2, #0
+ bl FUN_0201F744
+ mov r0, #0
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_02058578
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD05_021F2284
+ cmp r0, #0
+ bne _021F205C
+ add r0, r5, #0
+ bl MOD05_021F2F3C
+ add r1, r6, #0
+ bl MOD05_021F2240
+_021F205C:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2060
+MOD05_021F2060: ; 0x021F2060
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl MOD05_021F2150
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F2092
+ add r0, r5, #0
+ bl FUN_02058458
+ add r6, r0, #0
+ bl FUN_0205C334
+ cmp r0, #1
+ bne _021F2088
+ add r0, r5, #0
+ bl FUN_0205C340
+ add r6, r0, #0
+_021F2088:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021F202C
+_021F2092:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F2094
+MOD05_021F2094: ; 0x021F2094
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r4, r2, #0
+ bl MOD05_021F2150
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021F20AE
+ bl FUN_0201F744
+ mov r0, #0
+ str r0, [r5]
+_021F20AE:
+ ldr r0, _021F20D4 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021F20D2
+ add r0, r6, #0
+ bl FUN_02058578
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD05_021F2284
+ cmp r0, #0
+ bne _021F20D2
+ add r0, r6, #0
+ bl MOD05_021F2F3C
+ add r1, r4, #0
+ bl MOD05_021F2240
+_021F20D2:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F20D4: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F20D8
+MOD05_021F20D8: ; 0x021F20D8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0201F820
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0201F844
+ strh r0, [r4, #6]
+ add r0, r5, #0
+ bl FUN_0201F880
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F20F8
+MOD05_021F20F8: ; 0x021F20F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0201F80C
+ ldrh r1, [r4, #6]
+ add r0, r5, #0
+ bl FUN_0201F830
+ ldr r1, [r4, #8]
+ add r0, r5, #0
+ bl FUN_0201F86C
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F211C
+MOD05_021F211C: ; 0x021F211C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r6, r0, #0
+ add r5, r1, #0
+ bl MOD05_021F2F3C
+ add r1, r4, #0
+ add r7, r0, #0
+ bl MOD05_021F2460
+ cmp r0, #0
+ bne _021F2140
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD05_021F1FE0
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F2140:
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD05_021F32BC
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2150
+MOD05_021F2150: ; 0x021F2150
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021F2F3C
+ add r1, r4, #0
+ bl MOD05_021F32F8
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F2160
+MOD05_021F2160: ; 0x021F2160
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x28
+ add r7, r0, #0
+ mov r0, #4
+ mul r1, r6
+ bl AllocFromHeap
+ add r4, r0, #0
+ add r0, r7, #0
+ add r0, #0xe4
+ str r4, [r0]
+ cmp r4, #0
+ bne _021F2180
+ bl GF_AssertFail
+_021F2180:
+ mov r0, #4
+ lsl r1, r6, #3
+ bl AllocFromHeap
+ add r5, r0, #0
+ add r7, #0xf4
+ str r5, [r7]
+ cmp r5, #0
+ bne _021F2196
+ bl GF_AssertFail
+_021F2196:
+ ldr r0, _021F21A8 ; =0x0000FFFF
+_021F2198:
+ str r0, [r5]
+ str r4, [r5, #4]
+ add r5, #8
+ add r4, #0x28
+ sub r6, r6, #1
+ bne _021F2198
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F21A8: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F21AC
+MOD05_021F21AC: ; 0x021F21AC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021F2260
+ add r1, r4, #0
+ add r1, #0xe4
+ ldr r1, [r1]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ add r4, #0xf4
+ ldr r1, [r4]
+ mov r0, #4
+ bl FreeToHeapExplicit
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F21CC
+MOD05_021F21CC: ; 0x021F21CC
+ push {r4, r5, r6, lr}
+ add r2, r0, #0
+ add r2, #0xf4
+ ldr r4, [r2]
+ ldr r2, [r0, #4]
+ add r6, r4, #0
+ add r5, r2, #0
+_021F21DA:
+ ldr r3, [r6]
+ cmp r3, r1
+ bne _021F21E4
+ ldr r0, [r6, #4]
+ pop {r4, r5, r6, pc}
+_021F21E4:
+ add r6, #8
+ sub r5, r5, #1
+ bne _021F21DA
+ ldr r3, _021F2208 ; =0x0000FFFF
+_021F21EC:
+ ldr r5, [r4]
+ cmp r5, r3
+ bne _021F21FE
+ str r1, [r4]
+ ldr r2, [r4, #4]
+ bl MOD05_021F2ED0
+ ldr r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_021F21FE:
+ add r4, #8
+ sub r2, r2, #1
+ bne _021F21EC
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F2208: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F220C
+MOD05_021F220C: ; 0x021F220C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_020583A0
+ add r1, r0, #0
+ add r1, #0xf4
+ ldr r2, [r1]
+ ldr r1, [r0, #4]
+_021F221E:
+ ldr r0, [r2]
+ cmp r0, r5
+ bne _021F2234
+ ldr r3, [r2, #4]
+ mov r2, #5
+_021F2228:
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r2, r2, #1
+ bne _021F2228
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F2234:
+ add r2, #8
+ sub r1, r1, #1
+ bne _021F221E
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2240
+MOD05_021F2240: ; 0x021F2240
+ add r2, r0, #0
+ add r2, #0xf4
+ ldr r3, [r2]
+ ldr r2, [r0, #4]
+_021F2248:
+ ldr r0, [r3]
+ cmp r0, r1
+ bne _021F2254
+ ldr r0, _021F225C ; =0x0000FFFF
+ str r0, [r3]
+ bx lr
+_021F2254:
+ add r3, #8
+ sub r2, r2, #1
+ bne _021F2248
+ bx lr
+ .balign 4, 0
+_021F225C: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2260
+MOD05_021F2260: ; 0x021F2260
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0xf4
+ ldr r4, [r1]
+ ldr r1, _021F2280 ; =0x0000FFFF
+ ldr r3, [r0, #4]
+ add r0, r1, #0
+_021F226E:
+ ldr r2, [r4]
+ cmp r2, r0
+ beq _021F2276
+ str r1, [r4]
+_021F2276:
+ add r4, #8
+ sub r3, r3, #1
+ bne _021F226E
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+_021F2280: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2284
+MOD05_021F2284: ; 0x021F2284
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ bl FUN_02058368
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_020583BC
+ str r0, [sp]
+_021F229A:
+ ldr r0, [sp]
+ cmp r0, r6
+ beq _021F22CE
+ bl FUN_02058830
+ cmp r0, #1
+ bne _021F22CE
+ ldr r0, [sp]
+ bl FUN_02058458
+ add r5, r0, #0
+ bl FUN_0205C334
+ cmp r0, #1
+ bne _021F22C0
+ ldr r0, [sp]
+ bl FUN_0205C340
+ add r5, r0, #0
+_021F22C0:
+ ldr r0, _021F22DC ; =0x0000FFFF
+ cmp r5, r0
+ beq _021F22CE
+ cmp r5, r7
+ bne _021F22CE
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F22CE:
+ add r0, sp, #0
+ bl FUN_020583D4
+ sub r4, r4, #1
+ bne _021F229A
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F22DC: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F22E0
+MOD05_021F22E0: ; 0x021F22E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ mov r0, #4
+ mov r1, #0x40
+ lsl r2, r4, #0xc
+ add r3, r4, #0
+ bl MOD05_021F5990
+ add r1, r5, #0
+ add r1, #0xf8
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD05_021F2614
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021F2D80
+ add r0, r5, #0
+ sub r1, r4, r6
+ bl MOD05_021F2D88
+ mov r0, #4
+ mov r1, #0x41
+ lsl r2, r7, #7
+ add r3, r7, #0
+ bl MOD05_021F5990
+ add r1, r5, #0
+ add r1, #0xfc
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD05_021F2750
+ ldr r1, [sp, #0x18]
+ add r0, r5, #0
+ bl MOD05_021F2D90
+ ldr r1, [sp, #0x18]
+ add r0, r5, #0
+ sub r1, r7, r1
+ bl MOD05_021F2D98
+ ldr r0, [sp, #0x1c]
+ mov r1, #4
+ bl FUN_02020E90
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D64
+ add r0, r5, #0
+ bl MOD05_021F288C
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0
+ bl MOD05_021F2DA0
+ ldr r2, [sp, #0x1c]
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0
+ sub r1, r2, r1
+ bl MOD05_021F2DA8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F2368
+MOD05_021F2368: ; 0x021F2368
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ bl MOD05_021F59EC
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ bl MOD05_021F59EC
+ add r0, r4, #0
+ bl MOD05_021F2D6C
+ bl FUN_02020ED4
+ pop {r4, pc}
+ .balign 4, 0
+_021F238C:
+ ldr r3, [r2]
+ cmp r3, r0
+ bne _021F2396
+ add r0, r2, #0
+ bx lr
+_021F2396:
+ add r2, #8
+ ldr r3, [r2]
+ cmp r3, r1
+ bne _021F238C
+ mov r0, #0
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F23A4
+MOD05_021F23A4: ; 0x021F23A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r4, r2, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r7, r3, #0
+ bl MOD05_021F5AA4
+ cmp r0, #1
+ bne _021F23BE
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F23BE:
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl _021F238C
+ add r7, r0, #0
+ bne _021F23D0
+ bl GF_AssertFail
+_021F23D0:
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_020583F4
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, [r7, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD05_021F5AE4
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F23F0
+MOD05_021F23F0: ; 0x021F23F0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0xf0
+ add r4, r2, #0
+ add r6, r1, #0
+ ldr r0, [r0]
+ add r1, r4, #0
+ add r7, r3, #0
+ bl FUN_02020EF8
+ cmp r0, #0
+ bne _021F240C
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F240C:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F3084
+ cmp r0, #0
+ beq _021F241C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F241C:
+ ldr r1, _021F2448 ; =0x0000FFFF
+ add r0, r4, #0
+ add r2, r7, #0
+ bl _021F238C
+ add r2, r0, #0
+ bne _021F242E
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_021F242E:
+ ldr r2, [r2, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r6, #0
+ bl MOD05_021F2FD0
+ cmp r0, #1
+ bne _021F2442
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F2442:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F2448: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F244C
+MOD05_021F244C: ; 0x021F244C
+ push {r3, lr}
+ ldr r3, _021F245C ; =UNK05_021FA0AC
+ add r2, r1, #0
+ mov r1, #0
+ bl MOD05_021F23F0
+ pop {r3, pc}
+ nop
+_021F245C: .word UNK05_021FA0AC
+
+ thumb_func_start MOD05_021F2460
+MOD05_021F2460: ; 0x021F2460
+ push {r3, lr}
+ ldr r3, _021F2470 ; =UNK05_021FA0AC
+ add r2, r1, #0
+ mov r1, #1
+ bl MOD05_021F23F0
+ pop {r3, pc}
+ nop
+_021F2470: .word UNK05_021FA0AC
+
+ thumb_func_start MOD05_021F2474
+MOD05_021F2474: ; 0x021F2474
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, [r4]
+ ldr r0, _021F2494 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021F2492
+ add r6, r0, #0
+_021F2484:
+ add r0, r5, #0
+ bl MOD05_021F244C
+ add r4, r4, #4
+ ldr r1, [r4]
+ cmp r1, r6
+ bne _021F2484
+_021F2492:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F2494: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2498
+MOD05_021F2498: ; 0x021F2498
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D54
+ ldr r0, _021F24C0 ; =UNK05_021F9094
+ add r1, r5, #0
+ str r0, [sp]
+ add r1, #0xf8
+ ldr r1, [r1]
+ ldr r3, _021F24C4 ; =0x0000FFFF
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD05_021F23A4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2628
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021F24C0: .word UNK05_021F9094
+_021F24C4: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F24C8
+MOD05_021F24C8: ; 0x021F24C8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D54
+ ldr r0, _021F24F0 ; =UNK05_021F9094
+ add r1, r5, #0
+ str r0, [sp]
+ add r1, #0xf8
+ ldr r1, [r1]
+ ldr r3, _021F24F4 ; =0x0000FFFF
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD05_021F23A4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2670
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021F24F0: .word UNK05_021F9094
+_021F24F4: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F24F8
+MOD05_021F24F8: ; 0x021F24F8
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, [r4]
+ ldr r0, _021F2518 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021F2516
+ add r6, r0, #0
+_021F2508:
+ add r0, r5, #0
+ bl MOD05_021F2498
+ add r4, r4, #4
+ ldr r1, [r4]
+ cmp r1, r6
+ bne _021F2508
+_021F2516:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F2518: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F251C
+MOD05_021F251C: ; 0x021F251C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D5C
+ ldr r0, _021F2544 ; =UNK05_021F90E4
+ add r1, r5, #0
+ str r0, [sp]
+ add r1, #0xfc
+ ldr r1, [r1]
+ ldr r3, _021F2548 ; =0x0000FFFF
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD05_021F23A4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2764
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021F2544: .word UNK05_021F90E4
+_021F2548: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F254C
+MOD05_021F254C: ; 0x021F254C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D5C
+ ldr r0, _021F2574 ; =UNK05_021F90E4
+ add r1, r5, #0
+ str r0, [sp]
+ add r1, #0xfc
+ ldr r1, [r1]
+ ldr r3, _021F2578 ; =0x0000FFFF
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD05_021F23A4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F27AC
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021F2574: .word UNK05_021F90E4
+_021F2578: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F257C
+MOD05_021F257C: ; 0x021F257C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, [r4]
+ ldr r0, _021F259C ; =0x0000FFFF
+ cmp r1, r0
+ beq _021F259A
+ add r6, r0, #0
+_021F258C:
+ add r0, r5, #0
+ bl MOD05_021F251C
+ add r4, r4, #4
+ ldr r1, [r4]
+ cmp r1, r6
+ bne _021F258C
+_021F259A:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F259C: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F25A0
+MOD05_021F25A0: ; 0x021F25A0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD05_021F2474
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F24F8
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021F257C
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F25C0:
+ stmia r0!, {r1}
+ sub r2, r2, #1
+ bne _021F25C0
+ bx lr
+
+ thumb_func_start MOD05_021F25C8
+MOD05_021F25C8: ; 0x021F25C8
+ push {r3, r4}
+_021F25CA:
+ ldr r4, [r0]
+ cmp r4, r2
+ bne _021F25D8
+ str r1, [r0]
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_021F25D8:
+ add r0, r0, #4
+ sub r3, r3, #1
+ bne _021F25CA
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_021F25E4:
+ ldr r3, [r0]
+ cmp r3, r1
+ bne _021F25EE
+ mov r0, #1
+ bx lr
+_021F25EE:
+ add r0, r0, #4
+ sub r2, r2, #1
+ bne _021F25E4
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD05_021F25F8
+MOD05_021F25F8: ; 0x021F25F8
+ push {r3, r4}
+_021F25FA:
+ ldr r4, [r0]
+ cmp r4, r1
+ bne _021F2608
+ str r2, [r0]
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_021F2608:
+ add r0, r0, #4
+ sub r3, r3, #1
+ bne _021F25FA
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD05_021F2614
+MOD05_021F2614: ; 0x021F2614
+ push {r3, lr}
+ bl MOD05_021F2D78
+ ldr r1, _021F2624 ; =0x0000FFFF
+ mov r2, #8
+ bl _021F25C0
+ pop {r3, pc}
+ .balign 4, 0
+_021F2624: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2628
+MOD05_021F2628: ; 0x021F2628
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D84
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D78
+ ldr r2, _021F2650 ; =0x0000FFFF
+ add r1, r4, #0
+ add r3, r6, #0
+ bl MOD05_021F25C8
+ cmp r0, #0
+ bne _021F264C
+ bl GF_AssertFail
+_021F264C:
+ pop {r4, r5, r6, pc}
+ nop
+_021F2650: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2654
+MOD05_021F2654: ; 0x021F2654
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D84
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D78
+ add r1, r4, #0
+ add r2, r6, #0
+ bl _021F25E4
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F2670
+MOD05_021F2670: ; 0x021F2670
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D78
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D84
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2D8C
+ add r3, r0, #0
+ ldr r2, _021F26A0 ; =0x0000FFFF
+ add r0, r6, r4
+ add r1, r7, #0
+ bl MOD05_021F25C8
+ cmp r0, #0
+ bne _021F269E
+ bl GF_AssertFail
+_021F269E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F26A0: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F26A4
+MOD05_021F26A4: ; 0x021F26A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D78
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D84
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2D8C
+ add r2, r0, #0
+ add r0, r6, r4
+ add r1, r7, #0
+ bl _021F25E4
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F26CC
+MOD05_021F26CC: ; 0x021F26CC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D78
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D84
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2D8C
+ add r3, r0, #0
+ ldr r2, _021F26F4 ; =0x0000FFFF
+ add r0, r6, r4
+ add r1, r7, #0
+ bl MOD05_021F25F8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F26F4: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F26F8
+MOD05_021F26F8: ; 0x021F26F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD05_021F2D54
+ add r0, r6, #0
+ bl MOD05_021F2D78
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD05_021F2D84
+ lsl r0, r0, #2
+ add r5, r4, r0
+ add r0, r6, #0
+ bl MOD05_021F2D8C
+ add r4, r0, #0
+_021F271E:
+ ldr r1, [r5]
+ ldr r0, _021F274C ; =0x0000FFFF
+ cmp r1, r0
+ beq _021F2742
+ add r0, r7, #0
+ mov r2, #0
+ bl MOD05_021F2B70
+ cmp r0, #0
+ bne _021F2742
+ add r0, r6, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ ldr r1, [r5]
+ bl MOD05_021F5A74
+ ldr r0, _021F274C ; =0x0000FFFF
+ str r0, [r5]
+_021F2742:
+ add r5, r5, #4
+ sub r4, r4, #1
+ bne _021F271E
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F274C: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2750
+MOD05_021F2750: ; 0x021F2750
+ push {r3, lr}
+ bl MOD05_021F2D7C
+ ldr r1, _021F2760 ; =0x0000FFFF
+ mov r2, #8
+ bl _021F25C0
+ pop {r3, pc}
+ .balign 4, 0
+_021F2760: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2764
+MOD05_021F2764: ; 0x021F2764
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D94
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D7C
+ ldr r2, _021F278C ; =0x0000FFFF
+ add r1, r4, #0
+ add r3, r6, #0
+ bl MOD05_021F25C8
+ cmp r0, #0
+ bne _021F2788
+ bl GF_AssertFail
+_021F2788:
+ pop {r4, r5, r6, pc}
+ nop
+_021F278C: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2790
+MOD05_021F2790: ; 0x021F2790
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2D94
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D7C
+ add r1, r4, #0
+ add r2, r6, #0
+ bl _021F25E4
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F27AC
+MOD05_021F27AC: ; 0x021F27AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D7C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D94
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2D9C
+ add r3, r0, #0
+ ldr r2, _021F27DC ; =0x0000FFFF
+ add r0, r6, r4
+ add r1, r7, #0
+ bl MOD05_021F25C8
+ cmp r0, #0
+ bne _021F27DA
+ bl GF_AssertFail
+_021F27DA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F27DC: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F27E0
+MOD05_021F27E0: ; 0x021F27E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D7C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D94
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2D9C
+ add r2, r0, #0
+ add r0, r6, r4
+ add r1, r7, #0
+ bl _021F25E4
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2808
+MOD05_021F2808: ; 0x021F2808
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D7C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D94
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2D9C
+ add r3, r0, #0
+ ldr r2, _021F2830 ; =0x0000FFFF
+ add r0, r6, r4
+ add r1, r7, #0
+ bl MOD05_021F25F8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F2830: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2834
+MOD05_021F2834: ; 0x021F2834
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD05_021F2D5C
+ add r0, r6, #0
+ bl MOD05_021F2D7C
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD05_021F2D94
+ lsl r0, r0, #2
+ add r5, r4, r0
+ add r0, r6, #0
+ bl MOD05_021F2D9C
+ add r4, r0, #0
+_021F285A:
+ ldr r1, [r5]
+ ldr r0, _021F2888 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021F287E
+ add r0, r7, #0
+ mov r2, #0
+ bl MOD05_021F2BF8
+ cmp r0, #0
+ bne _021F287E
+ add r0, r6, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ ldr r1, [r5]
+ bl MOD05_021F5A74
+ ldr r0, _021F2888 ; =0x0000FFFF
+ str r0, [r5]
+_021F287E:
+ add r5, r5, #4
+ sub r4, r4, #1
+ bne _021F285A
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F2888: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F288C
+MOD05_021F288C: ; 0x021F288C
+ push {r3, lr}
+ bl MOD05_021F2D74
+ ldr r1, _021F289C ; =0x0000FFFF
+ mov r2, #0x20
+ bl _021F25C0
+ pop {r3, pc}
+ .balign 4, 0
+_021F289C: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F28A0
+MOD05_021F28A0: ; 0x021F28A0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2DA4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D74
+ ldr r2, _021F28C8 ; =0x0000FFFF
+ add r1, r4, #0
+ add r3, r6, #0
+ bl MOD05_021F25C8
+ cmp r0, #0
+ bne _021F28C4
+ bl GF_AssertFail
+_021F28C4:
+ pop {r4, r5, r6, pc}
+ nop
+_021F28C8: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F28CC
+MOD05_021F28CC: ; 0x021F28CC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2DA4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D74
+ add r1, r4, #0
+ add r2, r6, #0
+ bl _021F25E4
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F28E8
+MOD05_021F28E8: ; 0x021F28E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F28CC
+ cmp r0, #1
+ bne _021F28FA
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F28FA:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F29E0
+ cmp r0, #1
+ bne _021F290A
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021F290A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F3084
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F2914
+MOD05_021F2914: ; 0x021F2914
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D74
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2DA4
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2DAC
+ add r3, r0, #0
+ ldr r2, _021F2944 ; =0x0000FFFF
+ add r0, r6, r4
+ add r1, r7, #0
+ bl MOD05_021F25C8
+ cmp r0, #0
+ bne _021F2942
+ bl GF_AssertFail
+_021F2942:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F2944: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2948
+MOD05_021F2948: ; 0x021F2948
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D74
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2DA4
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2DAC
+ add r3, r0, #0
+ ldr r2, _021F2970 ; =0x0000FFFF
+ add r0, r6, r4
+ add r1, r7, #0
+ bl MOD05_021F25F8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F2970: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2974
+MOD05_021F2974: ; 0x021F2974
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ str r0, [sp]
+ add r0, r6, #0
+ bl MOD05_021F2D6C
+ str r0, [sp, #4]
+ add r0, r6, #0
+ bl MOD05_021F2D74
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD05_021F2DA4
+ lsl r0, r0, #2
+ add r5, r4, r0
+ add r0, r6, #0
+ bl MOD05_021F2DAC
+ add r7, r0, #0
+_021F299E:
+ ldr r4, [r5]
+ ldr r0, _021F29DC ; =0x0000FFFF
+ cmp r4, r0
+ beq _021F29D0
+ ldr r0, [sp]
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD05_021F2B10
+ cmp r0, #0
+ bne _021F29D0
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ bl FUN_02020FF0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD05_021F3050
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD05_021F3204
+ ldr r0, _021F29DC ; =0x0000FFFF
+ str r0, [r5]
+_021F29D0:
+ add r5, r5, #4
+ sub r7, r7, #1
+ bne _021F299E
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F29DC: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F29E0
+MOD05_021F29E0: ; 0x021F29E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl MOD05_021F2D74
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2DA4
+ lsl r4, r0, #2
+ add r0, r5, #0
+ bl MOD05_021F2DAC
+ add r2, r0, #0
+ add r0, r6, r4
+ add r1, r7, #0
+ bl _021F25E4
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2A08
+MOD05_021F2A08: ; 0x021F2A08
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F28CC
+ cmp r0, #1
+ bne _021F2A1A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F2A1A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F29E0
+ cmp r0, #1
+ bne _021F2A2A
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F2A2A:
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2A30
+MOD05_021F2A30: ; 0x021F2A30
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2654
+ cmp r0, #1
+ bne _021F2A42
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F2A42:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F26A4
+ cmp r0, #1
+ bne _021F2A52
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F2A52:
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2A58
+MOD05_021F2A58: ; 0x021F2A58
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2790
+ cmp r0, #1
+ bne _021F2A6A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F2A6A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F27E0
+ cmp r0, #1
+ bne _021F2A7A
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F2A7A:
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2A80
+MOD05_021F2A80: ; 0x021F2A80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F28E8
+ cmp r0, #0
+ bne _021F2A96
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2460
+_021F2A96:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F2A98
+MOD05_021F2A98: ; 0x021F2A98
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2A30
+ cmp r0, #2
+ bne _021F2AAE
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F24C8
+_021F2AAE:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F2AB0
+MOD05_021F2AB0: ; 0x021F2AB0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2A58
+ cmp r0, #2
+ bne _021F2AC6
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F254C
+_021F2AC6:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F2AC8
+MOD05_021F2AC8: ; 0x021F2AC8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD05_021F2DE8
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2A98
+ add r0, r4, #0
+ bl MOD05_021F2DF4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2AB0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2A80
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F2AF4
+MOD05_021F2AF4: ; 0x021F2AF4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F26F8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2834
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2974
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F2B10
+MOD05_021F2B10: ; 0x021F2B10
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #0
+ add r5, r2, #0
+ str r1, [sp, #4]
+ str r1, [sp]
+ add r1, sp, #0
+ add r2, sp, #4
+ mov r3, #1
+ add r7, r0, #0
+ bl FUN_020580F4
+ cmp r0, #1
+ bne _021F2B6A
+_021F2B2E:
+ cmp r5, #0
+ beq _021F2B38
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _021F2B5A
+_021F2B38:
+ ldr r0, [sp]
+ bl FUN_02058458
+ add r4, r0, #0
+ bl FUN_0205C334
+ cmp r0, #1
+ bne _021F2B50
+ ldr r0, [sp]
+ bl FUN_0205C340
+ add r4, r0, #0
+_021F2B50:
+ cmp r4, r6
+ bne _021F2B5A
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F2B5A:
+ add r0, r7, #0
+ add r1, sp, #0
+ add r2, sp, #4
+ mov r3, #1
+ bl FUN_020580F4
+ cmp r0, #1
+ beq _021F2B2E
+_021F2B6A:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F2B70
+MOD05_021F2B70: ; 0x021F2B70
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #0
+ add r5, r2, #0
+ str r1, [sp, #4]
+ str r1, [sp]
+ add r1, sp, #0
+ add r2, sp, #4
+ mov r3, #1
+ add r7, r0, #0
+ bl FUN_020580F4
+ cmp r0, #1
+ bne _021F2BEE
+_021F2B8E:
+ cmp r5, #0
+ beq _021F2B98
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _021F2BDE
+_021F2B98:
+ ldr r0, [sp]
+ bl FUN_02058458
+ add r4, r0, #0
+ ldr r0, _021F2BF4 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021F2BDE
+ ldr r0, [sp]
+ bl MOD05_021F1DC8
+ ldr r0, [r0, #4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #1
+ bne _021F2BDE
+ add r0, r4, #0
+ bl FUN_0205C334
+ cmp r0, #1
+ bne _021F2BC8
+ ldr r0, [sp]
+ bl FUN_0205C340
+ add r4, r0, #0
+_021F2BC8:
+ ldr r0, _021F2BF4 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021F2BDE
+ add r0, r4, #0
+ bl MOD05_021F2DE8
+ cmp r6, r0
+ bne _021F2BDE
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F2BDE:
+ add r0, r7, #0
+ add r1, sp, #0
+ add r2, sp, #4
+ mov r3, #1
+ bl FUN_020580F4
+ cmp r0, #1
+ beq _021F2B8E
+_021F2BEE:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F2BF4: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2BF8
+MOD05_021F2BF8: ; 0x021F2BF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #0
+ add r5, r2, #0
+ str r1, [sp, #4]
+ str r1, [sp]
+ add r1, sp, #0
+ add r2, sp, #4
+ mov r3, #1
+ add r7, r0, #0
+ bl FUN_020580F4
+ cmp r0, #1
+ bne _021F2C74
+_021F2C16:
+ cmp r5, #0
+ beq _021F2C20
+ ldr r0, [sp]
+ cmp r0, r5
+ beq _021F2C64
+_021F2C20:
+ ldr r0, _021F2C7C ; =0x0000FFFF
+ cmp r4, r0
+ beq _021F2C64
+ ldr r0, [sp]
+ bl MOD05_021F1DC8
+ ldr r0, [r0, #4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #1
+ bne _021F2C64
+ ldr r0, [sp]
+ bl FUN_02058458
+ add r4, r0, #0
+ bl FUN_0205C334
+ cmp r0, #1
+ bne _021F2C4E
+ ldr r0, [sp]
+ bl FUN_0205C340
+ add r4, r0, #0
+_021F2C4E:
+ ldr r0, _021F2C7C ; =0x0000FFFF
+ cmp r4, r0
+ beq _021F2C64
+ add r0, r4, #0
+ bl MOD05_021F2DF4
+ cmp r6, r0
+ bne _021F2C64
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F2C64:
+ add r0, r7, #0
+ add r1, sp, #0
+ add r2, sp, #4
+ mov r3, #1
+ bl FUN_020580F4
+ cmp r0, #1
+ beq _021F2C16
+_021F2C74:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F2C7C: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2C80
+MOD05_021F2C80: ; 0x021F2C80
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ add r7, r2, #0
+ bl FUN_020583A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2DE8
+ str r0, [sp]
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl MOD05_021F2A30
+ cmp r0, #1
+ bne _021F2CC6
+ ldr r1, [sp]
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD05_021F2B70
+ cmp r0, #0
+ bne _021F2CC6
+ add r0, r4, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ ldr r1, [sp]
+ bl MOD05_021F5A74
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl MOD05_021F26CC
+_021F2CC6:
+ add r0, r5, #0
+ bl MOD05_021F2DF4
+ str r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl MOD05_021F2A58
+ cmp r0, #1
+ bne _021F2CFC
+ ldr r1, [sp, #4]
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD05_021F2BF8
+ cmp r0, #0
+ bne _021F2CFC
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ ldr r1, [sp, #4]
+ bl MOD05_021F5A74
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl MOD05_021F2808
+_021F2CFC:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F2A08
+ cmp r0, #1
+ bne _021F2D3A
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD05_021F2B10
+ cmp r0, #0
+ bne _021F2D3A
+ add r0, r4, #0
+ bl MOD05_021F2D6C
+ add r1, r5, #0
+ bl FUN_02020FF0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F2948
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F3050
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F3204
+_021F2D3A:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2D40
+MOD05_021F2D40: ; 0x021F2D40
+ add r0, #0xe0
+ str r1, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2D48
+MOD05_021F2D48: ; 0x021F2D48
+ add r0, #0xe0
+ ldr r0, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2D50
+MOD05_021F2D50: ; 0x021F2D50
+ str r1, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD05_021F2D54
+MOD05_021F2D54: ; 0x021F2D54
+ add r0, #0xe8
+ ldr r0, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2D5C
+MOD05_021F2D5C: ; 0x021F2D5C
+ add r0, #0xec
+ ldr r0, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2D64
+MOD05_021F2D64: ; 0x021F2D64
+ add r0, #0xf0
+ str r1, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2D6C
+MOD05_021F2D6C: ; 0x021F2D6C
+ add r0, #0xf0
+ ldr r0, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2D74
+MOD05_021F2D74: ; 0x021F2D74
+ add r0, #0x60
+ bx lr
+
+ thumb_func_start MOD05_021F2D78
+MOD05_021F2D78: ; 0x021F2D78
+ add r0, #0x20
+ bx lr
+
+ thumb_func_start MOD05_021F2D7C
+MOD05_021F2D7C: ; 0x021F2D7C
+ add r0, #0x40
+ bx lr
+
+ thumb_func_start MOD05_021F2D80
+MOD05_021F2D80: ; 0x021F2D80
+ str r1, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD05_021F2D84
+MOD05_021F2D84: ; 0x021F2D84
+ ldr r0, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD05_021F2D88
+MOD05_021F2D88: ; 0x021F2D88
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD05_021F2D8C
+MOD05_021F2D8C: ; 0x021F2D8C
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD05_021F2D90
+MOD05_021F2D90: ; 0x021F2D90
+ str r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start MOD05_021F2D94
+MOD05_021F2D94: ; 0x021F2D94
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start MOD05_021F2D98
+MOD05_021F2D98: ; 0x021F2D98
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start MOD05_021F2D9C
+MOD05_021F2D9C: ; 0x021F2D9C
+ ldr r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start MOD05_021F2DA0
+MOD05_021F2DA0: ; 0x021F2DA0
+ str r1, [r0, #0x18]
+ bx lr
+
+ thumb_func_start MOD05_021F2DA4
+MOD05_021F2DA4: ; 0x021F2DA4
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start MOD05_021F2DA8
+MOD05_021F2DA8: ; 0x021F2DA8
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start MOD05_021F2DAC
+MOD05_021F2DAC: ; 0x021F2DAC
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start MOD05_021F2DB0
+MOD05_021F2DB0: ; 0x021F2DB0
+ mov r3, #0x41
+ lsl r3, r3, #2
+ ldr r0, [r0, r3]
+ ldr r3, _021F2DBC ; =MOD05_021F1E2C
+ bx r3
+ nop
+_021F2DBC: .word MOD05_021F1E2C
+
+ thumb_func_start MOD05_021F2DC0
+MOD05_021F2DC0: ; 0x021F2DC0
+ push {r3, lr}
+ ldr r3, _021F2DE0 ; =UNK05_021FAC6C
+ ldr r1, _021F2DE4 ; =0x0000FFFF
+_021F2DC6:
+ ldr r2, [r3]
+ cmp r2, r0
+ bne _021F2DD0
+ add r0, r3, #0
+ pop {r3, pc}
+_021F2DD0:
+ add r3, #0x10
+ ldr r2, [r3]
+ cmp r2, r1
+ bne _021F2DC6
+ bl GF_AssertFail
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+_021F2DE0: .word UNK05_021FAC6C
+_021F2DE4: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F2DE8
+MOD05_021F2DE8: ; 0x021F2DE8
+ push {r3, lr}
+ bl MOD05_021F2DC0
+ ldr r0, [r0, #4]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2DF4
+MOD05_021F2DF4: ; 0x021F2DF4
+ push {r3, lr}
+ bl MOD05_021F2DC0
+ ldr r0, [r0, #8]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2E00
+MOD05_021F2E00: ; 0x021F2E00
+ push {r3, lr}
+ bl MOD05_021F2DC0
+ ldr r0, [r0, #0xc]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2E0C
+MOD05_021F2E0C: ; 0x021F2E0C
+ push {r3, lr}
+ cmp r1, #1
+ bne _021F2E1C
+ mov r1, #1
+ lsl r1, r1, #0x16
+ bl FUN_02058410
+ pop {r3, pc}
+_021F2E1C:
+ mov r1, #1
+ lsl r1, r1, #0x16
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2E28
+MOD05_021F2E28: ; 0x021F2E28
+ push {r3, lr}
+ mov r1, #1
+ lsl r1, r1, #0x16
+ bl FUN_02058424
+ cmp r0, #0
+ beq _021F2E3A
+ mov r0, #1
+ pop {r3, pc}
+_021F2E3A:
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2E40
+MOD05_021F2E40: ; 0x021F2E40
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #4
+ add r4, r1, #0
+ str r0, [sp, #4]
+ add r0, sp, #0
+ str r4, [sp]
+ bl FUN_0201F1B4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021F2D40
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2D50
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F2E68
+MOD05_021F2E68: ; 0x021F2E68
+ ldr r3, _021F2E6C ; =FUN_0201F23C
+ bx r3
+ .balign 4, 0
+_021F2E6C: .word FUN_0201F23C
+
+ thumb_func_start MOD05_021F2E70
+MOD05_021F2E70: ; 0x021F2E70
+ push {r4, lr}
+ sub sp, #0x20
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldmia r2!, {r0, r1}
+ add r3, sp, #8
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ add r2, sp, #0x14
+ str r0, [r3]
+ ldr r3, _021F2ECC ; =0UNK05_021FC550
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r0, sp, #0
+ bl FUN_0201F6E8
+ add r4, r0, #0
+ beq _021F2EC4
+ mov r1, #0
+ bl FUN_0201F80C
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F830
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0201F890
+ add r0, r4, #0
+ bl FUN_0201F8E0
+ mov r1, #1
+ bl NNS_G3dMdlSetMdlFogEnableFlagAll
+ add r0, r4, #0
+ bl FUN_0201F8E0
+ bl MOD05_021DB5EC
+_021F2EC4:
+ add r0, r4, #0
+ add sp, #0x20
+ pop {r4, pc}
+ nop
+_021F2ECC: .word UNK05_021FC550
+
+ thumb_func_start MOD05_021F2ED0
+MOD05_021F2ED0: ; 0x021F2ED0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r4, r2, #0
+ bl MOD05_021F2DE8
+ add r1, r0, #0
+ add r0, r6, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ bl MOD05_021F5A90
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD05_021F2DF4
+ add r1, r0, #0
+ add r0, r6, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ bl MOD05_021F5A90
+ add r1, r4, #0
+ add r1, #0xc
+ bl FUN_0202227C
+ add r0, r6, #0
+ bl MOD05_021F2D6C
+ add r1, r5, #0
+ bl FUN_02021050
+ add r6, r0, #0
+ bl FUN_020210AC
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl FUN_020211AC
+ str r0, [r4, #0x1c]
+ add r0, r6, #0
+ bl FUN_020211BC
+ str r0, [r4, #0x20]
+ add r0, r6, #0
+ bl FUN_020211CC
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ bl MOD05_021F2E00
+ str r0, [r4, #8]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F2F3C
+MOD05_021F2F3C: ; 0x021F2F3C
+ push {r3, lr}
+ bl FUN_02058578
+ bl FUN_020583A0
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F2F48
+MOD05_021F2F48: ; 0x021F2F48
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r1, sp, #0
+ bl MOD05_021F1E64
+ mov r0, #6
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_0201F7C8
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD05_021F2F6C
+MOD05_021F2F6C: ; 0x021F2F6C
+ push {r4, r5, r6, lr}
+ mov r4, #1
+ add r6, r1, #0
+ lsl r1, r4, #9
+ add r5, r0, #0
+ bl FUN_0205842C
+ cmp r0, #1
+ bne _021F2F80
+ mov r4, #0
+_021F2F80:
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0205842C
+ cmp r0, #1
+ bne _021F2F9E
+ mov r1, #2
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0205842C
+ cmp r0, #0
+ bne _021F2F9E
+ mov r4, #0
+_021F2F9E:
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl FUN_0201F80C
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F2FAC
+MOD05_021F2FAC: ; 0x021F2FAC
+ lsl r1, r0, #2
+ ldr r0, _021F2FB4 ; =UNK05_021FC55C
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4, 0
+_021F2FB4: .word UNK05_021FC55C
+
+ thumb_func_start MOD05_021F2FB8
+MOD05_021F2FB8: ; 0x021F2FB8
+ lsl r1, r0, #2
+ ldr r0, _021F2FC0 ; =UNK05_021FC56C
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4, 0
+_021F2FC0: .word UNK05_021FC56C
+
+ thumb_func_start MOD05_021F2FC4
+MOD05_021F2FC4: ; 0x021F2FC4
+ lsl r1, r0, #2
+ ldr r0, _021F2FCC ; =UNK05_021FC57C
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4, 0
+_021F2FCC: .word UNK05_021FC57C
+
+ thumb_func_start MOD05_021F2FD0
+MOD05_021F2FD0: ; 0x021F2FD0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r4, [r5, r0]
+ mov r0, #4
+ add r6, r1, #0
+ ldrsh r1, [r4, r0]
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ add r7, r2, #0
+ str r3, [sp]
+ cmp r1, r0
+ bge _021F2FFA
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ bl FUN_0201F2C0
+ cmp r0, #1
+ bne _021F302C
+_021F2FFA:
+ mov r2, #0
+ ldrsh r3, [r4, r2]
+ ldr r0, [r4, #0xc]
+ cmp r3, #0
+ ble _021F3024
+_021F3004:
+ ldr r1, [r0, #0xc]
+ cmp r1, #0
+ bne _021F301C
+ add r5, #0xf0
+ ldr r1, [r5]
+ str r1, [r0, #0xc]
+ ldr r1, [sp]
+ str r1, [r0, #8]
+ str r6, [r0, #4]
+ str r7, [r0]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F301C:
+ add r2, r2, #1
+ add r0, #0x10
+ cmp r2, r3
+ blt _021F3004
+_021F3024:
+ bl GF_AssertFail
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F302C:
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0
+ bl MOD05_021F2DB0
+ add r2, r0, #0
+ ldr r3, [sp]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021F317C
+ mov r0, #4
+ ldrsh r0, [r4, r0]
+ add r0, r0, #1
+ strh r0, [r4, #4]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3050
+MOD05_021F3050: ; 0x021F3050
+ push {r3, r4}
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r0, [r0, r2]
+ mov r3, #0
+ ldrsh r4, [r0, r3]
+ ldr r2, [r0, #0xc]
+ cmp r4, #0
+ ble _021F307E
+_021F3062:
+ ldr r0, [r2, #4]
+ cmp r0, r1
+ bne _021F3076
+ ldr r0, [r2, #0xc]
+ cmp r0, #0
+ beq _021F3076
+ mov r0, #0
+ str r0, [r2, #0xc]
+ pop {r3, r4}
+ bx lr
+_021F3076:
+ add r3, r3, #1
+ add r2, #0x10
+ cmp r3, r4
+ blt _021F3062
+_021F307E:
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3084
+MOD05_021F3084: ; 0x021F3084
+ push {r3, r4}
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r0, [r0, r2]
+ mov r3, #0
+ ldrsh r4, [r0, r3]
+ ldr r2, [r0, #0xc]
+ cmp r4, #0
+ ble _021F30BC
+_021F3096:
+ ldr r0, [r2, #4]
+ cmp r0, r1
+ bne _021F30B4
+ ldr r0, [r2, #0xc]
+ cmp r0, #0
+ beq _021F30B4
+ ldr r0, [r2, #8]
+ cmp r0, #0
+ bne _021F30AE
+ mov r0, #3
+ pop {r3, r4}
+ bx lr
+_021F30AE:
+ mov r0, #4
+ pop {r3, r4}
+ bx lr
+_021F30B4:
+ add r3, r3, #1
+ add r2, #0x10
+ cmp r3, r4
+ blt _021F3096
+_021F30BC:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F30C4
+MOD05_021F30C4: ; 0x021F30C4
+ push {r3, r4, r5, r6, r7, lr}
+ str r1, [sp]
+ mov r1, #1
+ ldr r0, [sp]
+ lsl r1, r1, #8
+ ldr r4, [r0, r1]
+ add r0, #0xe0
+ ldr r0, [r0]
+ mov r6, #0
+ ldr r5, [r4, #0xc]
+ bl FUN_0201F2C0
+ cmp r0, #1
+ beq _021F3178
+ add r7, r4, #4
+ b _021F310E
+_021F30E4:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ beq _021F310A
+ ldr r0, [sp]
+ ldr r1, [r5]
+ mov r2, #0
+ bl MOD05_021F2DB0
+ add r2, r0, #0
+ ldr r0, [sp]
+ ldr r1, [r5, #4]
+ ldr r3, [r5, #8]
+ bl MOD05_021F317C
+ mov r0, #0
+ str r0, [r5, #0xc]
+ ldrsh r0, [r7, r0]
+ add r0, r0, #1
+ strh r0, [r7]
+_021F310A:
+ add r5, #0x10
+ add r6, r6, #1
+_021F310E:
+ mov r0, #4
+ ldrsh r1, [r4, r0]
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ cmp r1, r0
+ bge _021F3122
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ cmp r6, r0
+ blt _021F30E4
+_021F3122:
+ mov r6, #0
+ ldrsh r0, [r4, r6]
+ ldr r7, [r4, #0xc]
+ sub r1, r0, #1
+ cmp r1, #0
+ ble _021F3174
+ add r5, r7, #0
+_021F3130:
+ ldr r1, [r5, #0xc]
+ cmp r1, #0
+ bne _021F3166
+ add r2, r6, #1
+ cmp r2, r0
+ bge _021F3166
+ lsl r1, r2, #4
+ add r3, r7, r1
+_021F3140:
+ ldr r1, [r3, #0xc]
+ cmp r1, #0
+ beq _021F315E
+ lsl r0, r2, #4
+ add r3, r7, r0
+ mov ip, r3
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r1, #0
+ mov r0, ip
+ str r1, [r0, #0xc]
+ b _021F3166
+_021F315E:
+ add r2, r2, #1
+ add r3, #0x10
+ cmp r2, r0
+ blt _021F3140
+_021F3166:
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r6, r6, #1
+ add r5, #0x10
+ sub r1, r0, #1
+ cmp r6, r1
+ blt _021F3130
+_021F3174:
+ mov r0, #0
+ strh r0, [r4, #4]
+_021F3178:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F317C
+MOD05_021F317C: ; 0x021F317C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ mov r0, #4
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xf0
+ add r4, r1, #0
+ add r6, r3, #0
+ add r1, r2, #0
+ ldr r0, [r0]
+ add r2, r4, #0
+ mov r3, #1
+ bl FUN_02020F54
+ cmp r0, #0
+ bne _021F31A2
+ bl GF_AssertFail
+_021F31A2:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F31C8
+ cmp r6, #0
+ bne _021F31BA
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F28A0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_021F31BA:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F2914
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F31C8
+MOD05_021F31C8: ; 0x021F31C8
+ push {r4, r5, r6, lr}
+ mov r3, #1
+ lsl r3, r3, #8
+ ldr r3, [r0, r3]
+ mov r5, #1
+ ldr r4, [r3, #0x10]
+ mov r2, #0
+ strh r5, [r3, #6]
+ ldrsh r6, [r3, r2]
+ cmp r6, #0
+ ble _021F31FC
+_021F31DE:
+ ldr r5, [r4, #8]
+ cmp r5, #0
+ bne _021F31F4
+ add r0, #0xf0
+ ldr r0, [r0]
+ str r0, [r4, #8]
+ str r1, [r4, #4]
+ mov r0, #0
+ str r0, [r4]
+ strh r0, [r3, #6]
+ pop {r4, r5, r6, pc}
+_021F31F4:
+ add r2, r2, #1
+ add r4, #0xc
+ cmp r2, r6
+ blt _021F31DE
+_021F31FC:
+ bl GF_AssertFail
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3204
+MOD05_021F3204: ; 0x021F3204
+ push {r4, r5}
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r2, [r0, r2]
+ mov r0, #1
+ ldr r4, [r2, #0x10]
+ mov r3, #0
+ strh r0, [r2, #6]
+ ldrsh r5, [r2, r3]
+ cmp r5, #0
+ ble _021F3236
+_021F321A:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021F322E
+ ldr r0, [r4, #4]
+ cmp r0, r1
+ bne _021F322E
+ mov r0, #0
+ str r0, [r4, #8]
+ str r0, [r4]
+ b _021F3236
+_021F322E:
+ add r3, r3, #1
+ add r4, #0xc
+ cmp r3, r5
+ blt _021F321A
+_021F3236:
+ mov r0, #0
+ strh r0, [r2, #6]
+ pop {r4, r5}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3240
+MOD05_021F3240: ; 0x021F3240
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r6, [r1, r0]
+ ldrh r0, [r6, #6]
+ cmp r0, #1
+ beq _021F327A
+ mov r4, #0
+ ldrsh r0, [r6, r4]
+ ldr r5, [r6, #0x10]
+ cmp r0, #0
+ ble _021F327A
+ mov r7, #1
+_021F325A:
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _021F326E
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021F326E
+ ldr r1, [r5, #4]
+ bl FUN_020210F0
+ str r7, [r5]
+_021F326E:
+ mov r0, #0
+ ldrsh r0, [r6, r0]
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, r0
+ blt _021F325A
+_021F327A:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F327C
+MOD05_021F327C: ; 0x021F327C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r6, [r1, r0]
+ mov r4, #0
+ ldr r5, [r6, #0x10]
+ mov r0, #1
+ strh r0, [r6, #6]
+ ldrsh r0, [r6, r4]
+ cmp r0, #0
+ ble _021F32B6
+ add r7, r4, #0
+_021F3294:
+ ldr r0, [r5]
+ cmp r0, #1
+ bne _021F32AA
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021F32AA
+ ldr r1, [r5, #4]
+ bl FUN_02021158
+ str r7, [r5]
+ str r7, [r5, #8]
+_021F32AA:
+ mov r0, #0
+ ldrsh r0, [r6, r0]
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, r0
+ blt _021F3294
+_021F32B6:
+ mov r0, #0
+ strh r0, [r6, #6]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F32BC
+MOD05_021F32BC: ; 0x021F32BC
+ push {r4, r5, r6, lr}
+ mov r5, #1
+ lsl r5, r5, #8
+ ldr r5, [r0, r5]
+ mov r4, #0
+ ldrsh r6, [r5, r4]
+ ldr r0, [r5, #8]
+ cmp r6, #0
+ ble _021F32F2
+_021F32CE:
+ ldr r5, [r0, #4]
+ cmp r5, #0
+ bne _021F32EA
+ str r1, [r0, #4]
+ str r2, [r0, #8]
+ str r3, [r0]
+ ldr r0, [r0, #8]
+ mov r2, #0
+ str r2, [r0]
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD05_021F2E0C
+ pop {r4, r5, r6, pc}
+_021F32EA:
+ add r4, r4, #1
+ add r0, #0xc
+ cmp r4, r6
+ blt _021F32CE
+_021F32F2:
+ bl GF_AssertFail
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F32F8
+MOD05_021F32F8: ; 0x021F32F8
+ push {r3, r4}
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r0, [r0, r2]
+ mov r3, #0
+ ldrsh r4, [r0, r3]
+ ldr r2, [r0, #8]
+ cmp r4, #0
+ ble _021F3322
+_021F330A:
+ ldr r0, [r2, #4]
+ cmp r0, r1
+ bne _021F331A
+ mov r0, #0
+ str r0, [r2, #4]
+ str r0, [r2, #8]
+ pop {r3, r4}
+ bx lr
+_021F331A:
+ add r3, r3, #1
+ add r2, #0xc
+ cmp r3, r4
+ blt _021F330A
+_021F3322:
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3328
+MOD05_021F3328: ; 0x021F3328
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r6, [r7, r0]
+ mov r4, #0
+ ldrsh r0, [r6, r4]
+ ldr r5, [r6, #8]
+ cmp r0, #0
+ ble _021F3356
+_021F333C:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021F334A
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD05_021F3364
+_021F334A:
+ mov r0, #0
+ ldrsh r0, [r6, r0]
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, r0
+ blt _021F333C
+_021F3356:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F3358
+MOD05_021F3358: ; 0x021F3358
+ ldr r3, _021F3360 ; =MOD05_021F3328
+ add r0, r1, #0
+ bx r3
+ nop
+_021F3360: .word MOD05_021F3328
+
+ thumb_func_start MOD05_021F3364
+MOD05_021F3364: ; 0x021F3364
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ bl MOD05_021F2A08
+ cmp r0, #2
+ beq _021F33B2
+ ldr r0, [r4, #4]
+ ldr r1, [r4]
+ bl MOD05_021F1FE0
+ ldr r1, [r4, #8]
+ str r0, [r1]
+ ldr r0, [r4, #8]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021F338A
+ bl GF_AssertFail
+_021F338A:
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD05_021F2E0C
+ mov r1, #2
+ ldr r0, [r4, #4]
+ lsl r1, r1, #0x14
+ bl FUN_0205842C
+ cmp r0, #1
+ ldr r0, [r4, #4]
+ bne _021F33A8
+ bl FUN_020586DC
+ b _021F33AC
+_021F33A8:
+ bl FUN_020586A0
+_021F33AC:
+ mov r0, #0
+ str r0, [r4, #4]
+ str r0, [r4, #8]
+_021F33B2:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F33B4
+MOD05_021F33B4: ; 0x021F33B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ add r5, r0, #0
+ mov r0, #0xc
+ add r7, r6, #0
+ mul r7, r0
+ lsl r0, r6, #4
+ lsl r1, r7, #1
+ str r0, [sp, #4]
+ add r0, r1, r0
+ str r0, [sp, #8]
+ add r0, #0x28
+ str r0, [sp, #8]
+ ldr r1, [sp, #8]
+ mov r0, #4
+ str r2, [sp]
+ bl AllocFromHeap
+ add r4, r0, #0
+ bne _021F33E2
+ bl GF_AssertFail
+_021F33E2:
+ ldr r2, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0
+ bl memset
+ ldr r0, [sp]
+ strh r6, [r4]
+ strh r0, [r4, #2]
+ add r0, r4, #0
+ add r0, #0x28
+ str r0, [r4, #8]
+ add r1, r0, r7
+ ldr r0, [sp, #4]
+ str r1, [r4, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ lsl r0, r0, #8
+ str r4, [r5, r0]
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_0205839C
+ add r6, r0, #0
+ ldr r0, _021F3448 ; =MOD05_021F30C4
+ add r1, r5, #0
+ add r2, r6, #1
+ bl FUN_0200CA44
+ str r0, [r4, #0x18]
+ ldr r0, _021F344C ; =MOD05_021F3358
+ add r1, r5, #0
+ add r2, r6, #2
+ bl FUN_0200CA44
+ str r0, [r4, #0x1c]
+ ldr r0, _021F3450 ; =MOD05_021F3240
+ add r1, r5, #0
+ mov r2, #0xff
+ bl FUN_0200CA60
+ str r0, [r4, #0x20]
+ ldr r0, _021F3454 ; =MOD05_021F327C
+ add r1, r5, #0
+ mov r2, #0xff
+ bl FUN_0200CA98
+ str r0, [r4, #0x24]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F3448: .word MOD05_021F30C4
+_021F344C: .word MOD05_021F3358
+_021F3450: .word MOD05_021F3240
+_021F3454: .word MOD05_021F327C
+
+ thumb_func_start MOD05_021F3458
+MOD05_021F3458: ; 0x021F3458
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r4, [r5, r0]
+ mov r0, #1
+ strh r0, [r4, #6]
+ ldr r0, [r4, #0x18]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x20]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x24]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FreeToHeap
+ mov r0, #1
+ mov r1, #0
+ lsl r0, r0, #8
+ str r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3490
+MOD05_021F3490: ; 0x021F3490
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021F2E28
+ cmp r0, #1
+ beq _021F34A8
+ add r0, r5, #0
+ bl MOD05_021F0514
+ cmp r0, #0
+ bne _021F34D2
+_021F34A8:
+ add r0, r5, #0
+ bl FUN_02058458
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_02058578
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_020576A8
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD05_021F2C80
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02057614
+ pop {r3, r4, r5, r6, r7, pc}
+_021F34D2:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F34DC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F34DC
+MOD05_021F34DC: ; 0x021F34DC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r7, r0, #0
+ str r1, [sp, #8]
+ bl MOD05_021F2F3C
+ str r0, [sp, #0x18]
+ bl MOD05_021F2D48
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ bl MOD05_021F0514
+ str r0, [sp, #0x10]
+ mov r0, #4
+ mov r1, #0x58
+ bl AllocFromHeapAtEnd
+ mov r1, #0
+ mov r2, #0x58
+ add r5, r0, #0
+ bl memset
+ ldr r0, [sp, #8]
+ str r0, [r5]
+ add r0, r7, #0
+ str r7, [r5, #0x50]
+ bl FUN_02058458
+ add r6, r0, #0
+ bl MOD05_021F2DE8
+ ldr r4, _021F36C4 ; =UNK05_021F9094
+ ldr r2, _021F36C8 ; =0x0000FFFF
+_021F3520:
+ ldr r1, [r4]
+ cmp r1, r0
+ beq _021F352E
+ add r4, #8
+ ldr r1, [r4]
+ cmp r1, r2
+ bne _021F3520
+_021F352E:
+ ldr r0, _021F36C8 ; =0x0000FFFF
+ cmp r1, r0
+ bne _021F3538
+ bl GF_AssertFail
+_021F3538:
+ ldr r0, [sp, #0x18]
+ ldr r1, [r4, #4]
+ mov r2, #0
+ bl MOD05_021F2DB0
+ str r0, [r5, #8]
+ add r0, r6, #0
+ bl MOD05_021F2DF4
+ ldr r4, _021F36CC ; =UNK05_021F90E4
+ ldr r2, _021F36C8 ; =0x0000FFFF
+_021F354E:
+ ldr r1, [r4]
+ cmp r1, r0
+ beq _021F355C
+ add r4, #8
+ ldr r1, [r4]
+ cmp r1, r2
+ bne _021F354E
+_021F355C:
+ ldr r0, _021F36C8 ; =0x0000FFFF
+ cmp r1, r0
+ bne _021F3566
+ bl GF_AssertFail
+_021F3566:
+ ldr r0, [sp, #0x18]
+ ldr r1, [r4, #4]
+ mov r2, #0
+ bl MOD05_021F2DB0
+ add r1, r5, #0
+ add r1, #0x14
+ str r0, [r5, #0xc]
+ bl FUN_0202227C
+ ldr r4, _021F36D0 ; =UNK05_021FA0AC
+ ldr r0, _021F36C8 ; =0x0000FFFF
+_021F357E:
+ ldr r1, [r4]
+ cmp r1, r6
+ beq _021F358C
+ add r4, #8
+ ldr r1, [r4]
+ cmp r1, r0
+ bne _021F357E
+_021F358C:
+ ldr r0, _021F36C8 ; =0x0000FFFF
+ cmp r1, r0
+ bne _021F3596
+ bl GF_AssertFail
+_021F3596:
+ ldr r0, [sp, #0x18]
+ ldr r1, [r4, #4]
+ mov r2, #0
+ bl MOD05_021F2DB0
+ str r0, [r5, #0x10]
+ bl NNS_G3dGetTex
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD05_021F2E00
+ add r3, r0, #0
+ add r0, r5, #0
+ add r0, #0x14
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r1, [r5, #8]
+ add r0, #0x28
+ add r2, r4, #0
+ bl FUN_0201F7A4
+ ldr r0, [sp, #0x10]
+ bl FUN_0201F7E0
+ add r3, r0, #0
+ add r2, sp, #0x28
+ ldmia r3!, {r0, r1}
+ add r4, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r5, #0
+ str r0, [r2]
+ ldr r0, [sp, #0x14]
+ add r1, #0x28
+ add r2, r4, #0
+ bl MOD05_021F2E70
+ str r0, [r5, #0x24]
+ cmp r0, #0
+ bne _021F35EC
+ bl GF_AssertFail
+_021F35EC:
+ ldr r0, [sp, #0x10]
+ bl FUN_0201F844
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ bl FUN_0201F830
+ ldr r0, [sp, #0x10]
+ bl FUN_0201F8C0
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ bl FUN_0201F890
+ ldr r0, [sp, #0x10]
+ bl FUN_0201F880
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ bl FUN_0201F86C
+ ldr r0, [r5, #0x24]
+ mov r1, #0
+ bl FUN_0201F854
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl FUN_0201F80C
+ ldr r0, [r5, #0x24]
+ bl FUN_0201F8F0
+ add r0, r7, #0
+ bl FUN_02058A9C
+ cmp r0, #1
+ bne _021F367A
+ add r0, r7, #0
+ mov r1, #2
+ bl FUN_0205829C
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_02059C90
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r4, #0
+ bl FUN_02054AF0
+ cmp r0, #0
+ bne _021F3658
+ mov r4, #1
+_021F3658:
+ add r0, r7, #0
+ add r1, sp, #0x1c
+ bl FUN_02058B5C
+ add r0, r7, #0
+ bl MOD05_021E4C24
+ ldr r1, [sp, #0xc]
+ str r4, [sp]
+ str r1, [sp, #4]
+ add r1, r5, #0
+ ldr r2, [r5, #0x24]
+ add r1, #0x28
+ add r3, sp, #0x1c
+ bl MOD06_02249B7C
+ str r0, [r5, #0x54]
+_021F367A:
+ add r0, r7, #0
+ bl FUN_020576A8
+ mov r1, #0x41
+ ldr r0, [sp, #0x18]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD05_021F2C80
+ ldr r1, [sp, #8]
+ add r0, r7, #0
+ bl FUN_02057614
+ mov r1, #0x41
+ ldr r0, [sp, #0x18]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bl FUN_0205839C
+ ldr r0, _021F36D4 ; =MOD05_021F36D8
+ add r1, r5, #0
+ mov r2, #0xff
+ bl FUN_0200CA98
+ add r4, r0, #0
+ bne _021F36B6
+ bl GF_AssertFail
+_021F36B6:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F36D8
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F36C4: .word UNK05_021F9094
+_021F36C8: .word 0x0000FFFF
+_021F36CC: .word UNK05_021F90E4
+_021F36D0: .word UNK05_021FA0AC
+_021F36D4: .word MOD05_021F36D8
+
+ thumb_func_start MOD05_021F36D8
+MOD05_021F36D8: ; 0x021F36D8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ ldr r4, [r5, #0x50]
+ cmp r0, #0
+ beq _021F36EC
+ cmp r0, #1
+ beq _021F3744
+ pop {r4, r5, r6, pc}
+_021F36EC:
+ add r0, r4, #0
+ bl FUN_02058830
+ cmp r0, #0
+ beq _021F3700
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #0
+ bne _021F3730
+_021F3700:
+ ldr r0, [r5, #0x54]
+ cmp r0, #0
+ beq _021F370A
+ bl FUN_02064520
+_021F370A:
+ ldr r0, [r5, #0x24]
+ bl FUN_0201F744
+ ldr r0, [r5, #8]
+ bl FreeToHeap
+ ldr r0, [r5, #0xc]
+ bl FreeToHeap
+ ldr r0, [r5, #0x10]
+ bl FreeToHeap
+ add r0, r5, #0
+ bl FreeToHeap
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ pop {r4, r5, r6, pc}
+_021F3730:
+ add r0, r4, #0
+ bl FUN_02058458
+ ldr r1, [r5]
+ cmp r1, r0
+ beq _021F377C
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+ pop {r4, r5, r6, pc}
+_021F3744:
+ add r0, r4, #0
+ bl MOD05_021F2E28
+ cmp r0, #0
+ bne _021F377C
+ ldr r0, [r5, #0x54]
+ cmp r0, #0
+ beq _021F3758
+ bl FUN_02064520
+_021F3758:
+ ldr r0, [r5, #0x24]
+ bl FUN_0201F744
+ ldr r0, [r5, #8]
+ bl FreeToHeap
+ ldr r0, [r5, #0xc]
+ bl FreeToHeap
+ ldr r0, [r5, #0x10]
+ bl FreeToHeap
+ add r0, r5, #0
+ bl FreeToHeap
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_021F377C:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ .section .rodata
+
+ .global UNK05_021FC550
+UNK05_021FC550: ; 0x021FC550
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+
+ .global UNK05_021FC55C
+UNK05_021FC55C: ; 0x021FC55C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC56C
+UNK05_021FC56C: ; 0x021FC56C
+ .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC57C
+UNK05_021FC57C: ; 0x021FC57C
+ .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021F3780.s b/arm9/modules/05/asm/mod05_021F3780.s
new file mode 100644
index 00000000..1a59550b
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F3780.s
@@ -0,0 +1,127 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3780
+MOD05_021F3780: ; 0x021F3780
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD05_021F37AC
+ add r4, r0, #0
+ str r6, [r4]
+ str r5, [r4, #8]
+ bl MOD05_021F37DC
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F379C
+MOD05_021F379C: ; 0x021F379C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021F37E0
+ add r0, r4, #0
+ bl MOD05_021F37D0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F37AC
+MOD05_021F37AC: ; 0x021F37AC
+ push {r4, lr}
+ mov r1, #0x10
+ bl AllocFromHeap
+ add r4, r0, #0
+ bne _021F37BC
+ bl GF_AssertFail
+_021F37BC:
+ add r2, r4, #0
+ mov r1, #0x10
+ mov r0, #0
+_021F37C2:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021F37C2
+ add r0, r4, #0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F37D0
+MOD05_021F37D0: ; 0x021F37D0
+ ldr r3, _021F37D8 ; =FreeToHeapExplicit
+ add r1, r0, #0
+ ldr r0, [r1]
+ bx r3
+ .balign 4, 0
+_021F37D8: .word FreeToHeapExplicit
+
+ thumb_func_start MOD05_021F37DC
+MOD05_021F37DC: ; 0x021F37DC
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F37E0
+MOD05_021F37E0: ; 0x021F37E0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021F380E
+ ldr r4, [r5, #0xc]
+ cmp r4, #0
+ beq _021F380E
+_021F37F0:
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _021F37FC
+ add r0, r4, #0
+ bl MOD05_021F383C
+_021F37FC:
+ ldr r0, [r5, #4]
+ add r4, #0x60
+ sub r0, r0, #1
+ str r0, [r5, #4]
+ bne _021F37F0
+ ldr r0, [r5]
+ ldr r1, [r5, #0xc]
+ bl FreeToHeapExplicit
+_021F380E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F3810
+MOD05_021F3810: ; 0x021F3810
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ str r1, [r4, #4]
+ mov r0, #0x60
+ add r5, r1, #0
+ mul r5, r0
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021F382E
+ bl GF_AssertFail
+_021F382E:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ add r2, r5, #0
+ bl memset
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F383C
+MOD05_021F383C: ; 0x021F383C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ bl FreeToHeap
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x60
+ bl memset
+ pop {r4, pc}
+ .balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021F3854.s b/arm9/modules/05/asm/mod05_021F3854.s
new file mode 100644
index 00000000..16ccc81c
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F3854.s
@@ -0,0 +1,79 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3854
+MOD05_021F3854: ; 0x021F3854
+ mov r0, #0
+ str r0, [r2]
+ str r0, [r2, #4]
+ bx lr
+
+ thumb_func_start MOD05_021F385C
+MOD05_021F385C: ; 0x021F385C
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3860
+MOD05_021F3860: ; 0x021F3860
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x38]
+ add r4, r2, #0
+ bl FUN_02055320
+ add r6, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r7, r0, #0
+ ldr r0, [r4]
+ cmp r0, r6
+ bne _021F3882
+ ldr r0, [r4, #4]
+ cmp r0, r7
+ beq _021F38B4
+_021F3882:
+ str r6, [r4]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ str r7, [r4, #4]
+ bl FUN_0204A6E0
+ add r4, r0, #0
+ bl FUN_02054A18
+ cmp r0, #0
+ beq _021F389E
+ mov r2, #0
+ b _021F38AA
+_021F389E:
+ add r0, r4, #0
+ bl FUN_02054A0C
+ cmp r0, #0
+ beq _021F38B4
+ mov r2, #1
+_021F38AA:
+ add r0, r6, #0
+ add r1, r7, #0
+ add r3, r5, #0
+ bl MOD05_021DAFA8
+_021F38B4:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F38B8
+MOD05_021F38B8: ; 0x021F38B8
+ ldr r0, [r0, #4]
+ ldr r3, _021F38C4 ; =MOD05_021D8024
+ ldr r0, [r0, #4]
+ ldr r1, _021F38C8 ; =UNK05_021FC58C
+ bx r3
+ nop
+_021F38C4: .word MOD05_021D8024
+_021F38C8: .word UNK05_021FC58C
+
+ .section .rodata
+
+ .global UNK05_021FC58C
+UNK05_021FC58C: ; 0x021FC58C
+ .word 0x00000002, 0x00000008, MOD05_021F3854, MOD05_021F385C
+ .word MOD05_021F3860, 0x00000000
diff --git a/arm9/modules/05/asm/mod05_021F38CC.s b/arm9/modules/05/asm/mod05_021F38CC.s
new file mode 100644
index 00000000..26cf1454
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F38CC.s
@@ -0,0 +1,379 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F38CC
+MOD05_021F38CC: ; 0x021F38CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r1, #0
+ add r2, r1, #0
+ add r5, r0, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0
+ mov r1, #0x46
+ mov r2, #0
+ bl GetMonData
+ mov r1, #0xf
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r1, #0x47
+ mov r2, #0
+ bl GetMonData
+ mov r1, #0xf
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #0x48
+ mov r2, #0
+ bl GetMonData
+ mov r1, #0xf
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x49
+ mov r2, #0
+ bl GetMonData
+ mov r1, #0xf
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ add r0, r5, #0
+ mov r1, #0x4a
+ mov r2, #0
+ bl GetMonData
+ mov r1, #0xf
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r5, #0
+ mov r1, #0x4b
+ mov r2, #0
+ bl GetMonData
+ mov r1, #0xf
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ eor r0, r6
+ asr r1, r4, #8
+ mul r0, r7
+ eor r0, r1
+ lsl r1, r4, #0x18
+ lsr r3, r1, #0x18
+ lsl r0, r0, #0x10
+ ldr r2, [sp, #4]
+ ldr r1, [sp]
+ lsr r0, r0, #0x10
+ eor r2, r1
+ ldr r1, [sp, #8]
+ mul r2, r1
+ add r1, r3, #0
+ eor r1, r2
+ lsl r1, r1, #0x10
+ lsr r1, r1, #8
+ add r0, r0, r1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F3978
+MOD05_021F3978: ; 0x021F3978
+ ldr r2, _021F399C ; =UNK05_021FC5A4
+ mov r3, #1
+_021F397C:
+ lsl r1, r3, #3
+ add r1, r2, r1
+ ldrh r1, [r1, #4]
+ cmp r0, r1
+ bhs _021F398E
+ sub r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_021F398E:
+ add r1, r3, #1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0xf
+ blo _021F397C
+ add r0, r3, #0
+ bx lr
+ .balign 4, 0
+_021F399C: .word UNK05_021FC5A4
+
+ thumb_func_start MOD05_021F39A0
+MOD05_021F39A0: ; 0x021F39A0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #4
+ add r5, r1, #0
+ bl FUN_02087A6C
+ add r4, r0, #0
+ bl FUN_02087A84
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #4
+ bl FUN_02087A98
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_02087B58
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02087B0C
+ add r0, r5, #0
+ bl MOD05_021F3978
+ lsl r4, r0, #3
+ ldr r0, _021F3A0C ; =UNK05_021FC5A8
+ ldr r2, _021F3A10 ; =UNK05_021FC5A6
+ ldrh r0, [r0, r4]
+ ldrh r2, [r2, r4]
+ asr r1, r5, #0x1f
+ mov r3, #0
+ sub r0, r5, r0
+ sbc r1, r3
+ bl _ll_udiv
+ add r2, r0, #0
+ add r0, r6, #0
+ ldr r6, _021F3A14 ; =UNK05_021FC5A4
+ add r3, r1, #0
+ mov r5, #0
+ ldrh r4, [r6, r4]
+ add r1, r5, #0
+ add r2, r4, r2
+ adc r5, r3
+ add r3, r5, #0
+ bl _ll_mul
+ mov r2, #0xa
+ mov r3, #0
+ bl _ll_udiv
+ pop {r4, r5, r6, pc}
+ nop
+_021F3A0C: .word UNK05_021FC5A8
+_021F3A10: .word UNK05_021FC5A6
+_021F3A14: .word UNK05_021FC5A4
+
+ thumb_func_start MOD05_021F3A18
+MOD05_021F3A18: ; 0x021F3A18
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ add r5, r1, #0
+ bl SavArray_PlayerParty_get
+ add r1, r5, #0
+ bl GetPartyMonByIndex
+ mov r1, #5
+ mov r2, #0
+ str r0, [sp]
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [sp]
+ bl MOD05_021F38CC
+ add r1, sp, #4
+ strh r0, [r1, #2]
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ bl MOD05_021F39A0
+ add r6, r0, #0
+ ldr r0, [r4, #0xc]
+ bl SavArray_Flags_get
+ bl FUN_0205F3E8
+ add r1, sp, #4
+ strh r0, [r1]
+ ldrh r1, [r1]
+ add r0, r5, #0
+ bl MOD05_021F39A0
+ add r7, r0, #0
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ mul r0, r6
+ mov r1, #0xfe
+ bl _u32_div_f
+ add r0, r0, #5
+ mov r1, #0xa
+ bl _u32_div_f
+ add r5, r0, #0
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ mul r0, r7
+ mov r1, #0xfe
+ bl _u32_div_f
+ add r0, r0, #5
+ mov r1, #0xa
+ bl _u32_div_f
+ cmp r5, r0
+ bne _021F3A9A
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3A9A:
+ cmp r5, r0
+ bls _021F3AAE
+ ldr r2, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_020619C0
+ add sp, #8
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3AAE:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F3AB4
+MOD05_021F3AB4: ; 0x021F3AB4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ add r5, r1, #0
+ bl SavArray_PlayerParty_get
+ add r1, r5, #0
+ bl GetPartyMonByIndex
+ bl MOD05_021F38CC
+ add r1, sp, #0
+ strh r0, [r1]
+ ldr r0, [r4, #0xc]
+ bl SavArray_Flags_get
+ add r1, sp, #0
+ ldrh r1, [r1]
+ bl FUN_0205F3F8
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3AE0
+MOD05_021F3AE0: ; 0x021F3AE0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #0xf
+ add r7, r2, #0
+ add r4, r3, #0
+ bl FUN_02039438
+ add r1, sp, #0x10
+ add r5, r0, #0
+ ldrh r1, [r1, #0x10]
+ add r0, r4, #0
+ bl MOD05_021F39A0
+ mov r1, #0xfa
+ lsl r1, r1, #2
+ mul r1, r0
+ add r0, r1, #0
+ mov r1, #0xfe
+ bl _u32_div_f
+ add r0, r0, #5
+ mov r1, #0xa
+ bl _u32_div_f
+ mov r1, #0xa
+ add r4, r0, #0
+ bl _u32_div_f
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ add r1, r6, #0
+ mov r3, #3
+ bl BufferIntegerAsString
+ add r0, r4, #0
+ mov r1, #0xa
+ bl _u32_div_f
+ mov r0, #0
+ add r2, r1, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl BufferIntegerAsString
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F3B4C
+MOD05_021F3B4C: ; 0x021F3B4C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl SavArray_Flags_get
+ bl FUN_0205F3E8
+ add r1, sp, #4
+ strh r0, [r1]
+ ldrh r0, [r1]
+ add r1, r4, #0
+ add r2, r6, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r3, r7, #0
+ bl MOD05_021F3AE0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3B7C
+MOD05_021F3B7C: ; 0x021F3B7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ str r2, [sp, #4]
+ ldr r0, [r5, #0xc]
+ add r4, r3, #0
+ add r7, r1, #0
+ bl SavArray_PlayerParty_get
+ add r1, r4, #0
+ bl GetPartyMonByIndex
+ mov r1, #5
+ mov r2, #0
+ add r6, r0, #0
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #0
+ bl MOD05_021F38CC
+ add r1, sp, #8
+ strh r0, [r1]
+ ldrh r0, [r1]
+ add r1, r7, #0
+ add r3, r4, #0
+ str r0, [sp]
+ ldr r2, [sp, #4]
+ add r0, r5, #0
+ bl MOD05_021F3AE0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ .section .rodata
+
+ .global UNK05_021FC5A4
+UNK05_021FC5A4: ; 0x021FC5A4
+ .byte 0x22, 0x01
+
+ .global UNK05_021FC5A6
+UNK05_021FC5A6: ; 0x021FC5A6
+ .byte 0x01, 0x00
+
+ .global UNK05_021FC5A8
+UNK05_021FC5A8: ; 0x021FC5A8
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x2C, 0x01, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x90, 0x01, 0x02, 0x00, 0x6E, 0x00, 0x00, 0x00
+ .byte 0xF4, 0x01, 0x04, 0x00, 0x36, 0x01, 0x00, 0x00, 0x58, 0x02, 0x14, 0x00, 0xC6, 0x02, 0x00, 0x00
+ .byte 0xBC, 0x02, 0x32, 0x00, 0x96, 0x0A, 0x00, 0x00, 0x20, 0x03, 0x64, 0x00, 0x1E, 0x1E, 0x00, 0x00
+ .byte 0x84, 0x03, 0x96, 0x00, 0x2E, 0x45, 0x00, 0x00, 0xE8, 0x03, 0x96, 0x00, 0xC6, 0x7F, 0x00, 0x00
+ .byte 0x4C, 0x04, 0x64, 0x00, 0x5E, 0xBA, 0x00, 0x00, 0xB0, 0x04, 0x32, 0x00, 0x6E, 0xE1, 0x00, 0x00
+ .byte 0x14, 0x05, 0x14, 0x00, 0xF6, 0xF4, 0x00, 0x00, 0x78, 0x05, 0x05, 0x00, 0xC6, 0xFC, 0x00, 0x00
+ .byte 0xDC, 0x05, 0x02, 0x00, 0xBA, 0xFE, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, 0x82, 0xFF, 0x00, 0x00
+ .byte 0xA4, 0x06, 0x01, 0x00, 0xE6, 0xFF, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021F3BC0.s b/arm9/modules/05/asm/mod05_021F3BC0.s
new file mode 100644
index 00000000..c19b51c7
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F3BC0.s
@@ -0,0 +1,132 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3BC0
+MOD05_021F3BC0: ; 0x021F3BC0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #4
+ mov r1, #0x20
+ bl AllocFromHeap
+ add r5, r0, #0
+ mov r4, #0
+_021F3BD0:
+ mov r1, #0xf
+ lsl r1, r1, #0xc
+ add r2, r4, #0
+ mul r2, r1
+ ldr r1, _021F3C2C ; =UNK05_021FD684
+ lsl r0, r4, #2
+ add r1, r1, r2
+ add r6, r5, r0
+ str r1, [r5, r0]
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021F3BEC
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3BEC:
+ cmp r7, #0
+ beq _021F3C0A
+ mov r1, #9
+ mov r0, #4
+ lsl r1, r1, #0xc
+ bl AllocFromHeap
+ str r0, [r6, #0x10]
+ cmp r0, #0
+ bne _021F3C04
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3C04:
+ mov r2, #9
+ lsl r2, r2, #0xc
+ b _021F3C10
+_021F3C0A:
+ mov r0, #0
+ str r0, [r6, #0x10]
+ add r2, r0, #0
+_021F3C10:
+ mov r1, #0xf
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r3, r5, #0
+ bl MOD05_021F3C74
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021F3BD0
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F3C2C: .word UNK05_021FD684
+
+ thumb_func_start MOD05_021F3C30
+MOD05_021F3C30: ; 0x021F3C30
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r6, r0, #0
+ add r7, r4, #0
+_021F3C38:
+ lsl r0, r4, #2
+ add r5, r6, r0
+ str r7, [r6, r0]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ beq _021F3C4C
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [r5, #0x10]
+_021F3C4C:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021F3C38
+ add r0, r6, #0
+ bl FreeToHeap
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3C60
+MOD05_021F3C60: ; 0x021F3C60
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ str r0, [r2]
+ bx lr
+
+ thumb_func_start MOD05_021F3C68
+MOD05_021F3C68: ; 0x021F3C68
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x10]
+ str r0, [r2]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3C74
+MOD05_021F3C74: ; 0x021F3C74
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r3, #0
+ lsl r4, r0, #2
+ add r6, r1, #0
+ add r7, r2, #0
+ ldr r0, [r5, r4]
+ mov r1, #0
+ add r2, r6, #0
+ bl MI_CpuFill8
+ add r0, r5, r4
+ ldr r0, [r0, #0x10]
+ mov r1, #0
+ add r2, r7, #0
+ bl MI_CpuFill8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ .section .bss
+
+ .global UNK05_021FD684
+UNK05_021FD684: ; 0x021FD684
+ .space 0x3C01C
diff --git a/arm9/modules/05/asm/mod05_021F3C98.s b/arm9/modules/05/asm/mod05_021F3C98.s
new file mode 100644
index 00000000..0a57e0d7
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F3C98.s
@@ -0,0 +1,447 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3C98
+MOD05_021F3C98: ; 0x021F3C98
+ push {r4, r5, r6, r7}
+ add r4, r0, #0
+ add r3, r2, #0
+ mov r5, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, #4]
+ mul r2, r5
+ ldrh r0, [r0, r2]
+ ldr r6, [r4, #0x10]
+ add r1, r0, #0
+ mul r1, r5
+ add r7, r6, r1
+ ldmia r7!, {r0, r1}
+ add r6, r3, #0
+ stmia r6!, {r0, r1}
+ ldr r0, [r7]
+ str r0, [r6]
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #0x10]
+ add r1, r1, r2
+ ldrh r1, [r1, #2]
+ add r6, r1, #0
+ mul r6, r5
+ add r7, r0, r6
+ add r6, r3, #0
+ ldmia r7!, {r0, r1}
+ add r6, #0xc
+ stmia r6!, {r0, r1}
+ ldr r0, [r7]
+ add r3, #0x18
+ str r0, [r6]
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #0x10]
+ add r1, r1, r2
+ ldrh r1, [r1, #4]
+ add r2, r1, #0
+ mul r2, r5
+ add r2, r0, r2
+ ldmia r2!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r3]
+ pop {r4, r5, r6, r7}
+ bx lr
+
+ thumb_func_start MOD05_021F3CF0
+MOD05_021F3CF0: ; 0x021F3CF0
+ push {r4, r5}
+ ldr r3, [r0, #0x14]
+ ldr r5, [r0, #4]
+ mov r0, #0xc
+ add r4, r1, #0
+ mul r4, r0
+ add r1, r5, r4
+ ldrh r1, [r1, #6]
+ mul r0, r1
+ add r3, r3, r0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ pop {r4, r5}
+ bx lr
+
+ thumb_func_start MOD05_021F3D10
+MOD05_021F3D10: ; 0x021F3D10
+ mov r3, #0
+ add r2, r3, #0
+ sub r1, r3, #1
+_021F3D16:
+ str r2, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ add r3, r3, #1
+ add r0, #0xc
+ cmp r3, #0xa
+ blt _021F3D16
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3D28
+MOD05_021F3D28: ; 0x021F3D28
+ push {r4, r5, r6, r7}
+ add r4, r0, #0
+ add r0, r2, #0
+ mov ip, r3
+ cmp r1, #0
+ bne _021F3D3A
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+_021F3D3A:
+ cmp r1, #1
+ bne _021F3D4A
+ mov r1, #0
+ mov r0, ip
+ strh r1, [r0]
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+_021F3D4A:
+ sub r5, r1, #1
+ lsr r1, r5, #0x1f
+ add r1, r5, r1
+ mov r3, #0
+ asr r6, r1, #1
+ mov r7, #0xa
+_021F3D56:
+ add r1, r6, #0
+ mul r1, r7
+ add r2, r4, r1
+ ldrh r1, [r2, #4]
+ ldrh r2, [r2, #2]
+ lsl r1, r1, #0x10
+ orr r1, r2
+ cmp r1, r0
+ ble _021F3D84
+ sub r1, r5, #1
+ cmp r1, r3
+ ble _021F3D7A
+ add r2, r3, r6
+ lsr r1, r2, #0x1f
+ add r1, r2, r1
+ add r5, r6, #0
+ asr r6, r1, #1
+ b _021F3D56
+_021F3D7A:
+ mov r0, ip
+ strh r6, [r0]
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+_021F3D84:
+ add r1, r3, #1
+ cmp r1, r5
+ bge _021F3D96
+ add r2, r6, r5
+ lsr r1, r2, #0x1f
+ add r1, r2, r1
+ add r3, r6, #0
+ asr r6, r1, #1
+ b _021F3D56
+_021F3D96:
+ add r1, r6, #1
+ mov r0, ip
+ strh r1, [r0]
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3DA4
+MOD05_021F3DA4: ; 0x021F3DA4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x110
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x128]
+ add r4, r3, #0
+ str r0, [sp, #0x128]
+ ldr r0, [r4, #0x1c]
+ add r6, r1, #0
+ add r7, r2, #0
+ cmp r0, #0
+ bne _021F3DC0
+ add sp, #0x110
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3DC0:
+ mov r5, #0
+ add r0, sp, #0x98
+ str r6, [sp, #0x68]
+ str r5, [sp, #0x6c]
+ str r7, [sp, #0x70]
+ bl MOD05_021F3D10
+ ldr r1, [r4]
+ ldr r0, [r1, #4]
+ sub r0, r6, r0
+ bpl _021F3DD8
+ add r0, r5, #0
+_021F3DD8:
+ ldr r2, [r1, #8]
+ sub r7, r7, r2
+ bpl _021F3DE0
+ mov r7, #0
+_021F3DE0:
+ ldr r1, [r1, #0x14]
+ bl FX_Div
+ ldr r1, [r4]
+ asr r6, r0, #0xc
+ ldrh r0, [r1]
+ cmp r6, r0
+ blo _021F3DF2
+ sub r6, r0, #1
+_021F3DF2:
+ ldr r1, [r1, #0x18]
+ add r0, r7, #0
+ bl FX_Div
+ asr r1, r0, #0xc
+ ldr r0, [r4]
+ ldrh r0, [r0, #2]
+ cmp r1, r0
+ blo _021F3E06
+ sub r1, r0, #1
+_021F3E06:
+ mul r0, r1
+ add r0, r6, r0
+ lsl r2, r0, #2
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add r3, r1, r2
+ ldrh r6, [r3, #2]
+ ldrh r1, [r1, r2]
+ lsl r3, r6, #2
+ add r3, r6, r3
+ lsl r3, r3, #1
+ add r6, r0, r3
+ ldr r0, [sp, #0x70]
+ add r3, sp, #0x58
+ str r0, [sp, #0x28]
+ ldr r2, [sp, #0x28]
+ add r0, r6, #0
+ bl MOD05_021F3D28
+ cmp r0, #0
+ bne _021F3E36
+ add sp, #0x110
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3E36:
+ add r0, sp, #0x58
+ ldrh r1, [r0]
+ lsl r0, r1, #2
+ add r1, r1, r0
+ lsl r0, r1, #1
+ ldrh r0, [r6, r0]
+ str r0, [sp, #0x44]
+ add r0, r1, #4
+ lsl r0, r0, #1
+ add r1, r1, #3
+ ldrh r0, [r6, r0]
+ lsl r1, r1, #1
+ ldrh r1, [r6, r1]
+ lsl r0, r0, #0x10
+ orr r1, r0
+ mov r0, #0
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x44]
+ cmp r0, #0
+ bls _021F3F50
+ add r0, sp, #0x98
+ str r0, [sp, #0x40]
+ lsl r0, r1, #1
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x28]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x68]
+ str r0, [sp, #0x2c]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x30]
+ mov r0, sp
+ str r0, [sp, #0x4c]
+ sub r0, r0, #4
+ str r0, [sp, #0x4c]
+_021F3E7C:
+ ldr r0, [sp, #0x48]
+ ldr r2, [r4, #0x18]
+ lsl r1, r0, #1
+ ldr r0, [sp, #0x3c]
+ add r0, r0, r2
+ ldrh r7, [r1, r0]
+ add r0, r4, #0
+ add r2, sp, #0x74
+ add r1, r7, #0
+ bl MOD05_021F3C98
+ mov r0, #0
+ add r3, sp, #0x80
+ str r0, [sp, #0x78]
+ str r0, [sp, #0x84]
+ str r0, [sp, #0x90]
+ ldmia r3!, {r0, r1}
+ add r2, sp, #8
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r3, sp, #0x8c
+ str r0, [r2]
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x14
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r3, sp, #0x74
+ str r0, [r2]
+ ldr r2, [sp, #0x4c]
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r6, sp, #0x68
+ str r0, [r2]
+ ldr r0, [sp, #0x4c]
+ ldr r3, [r0]
+ ldmia r6!, {r0, r1, r2}
+ bl FUN_0201C878
+ cmp r0, #1
+ bne _021F3F40
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, sp, #0x5c
+ bl MOD05_021F3CF0
+ ldr r0, [sp, #0x5c]
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x30]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x64]
+ add r6, r1, #0
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x38]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov ip, r0
+ mov r2, #0xc
+ ldr r0, [r4, #4]
+ mul r2, r7
+ add r0, r0, r2
+ mov r2, #2
+ ldr r3, [sp, #0x50]
+ lsl r2, r2, #0xa
+ add r3, r3, r2
+ ldr r2, _021F3FDC ; =0x00000000
+ ldr r0, [r0, #8]
+ adc r6, r2
+ lsl r2, r6, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ mov r2, #2
+ lsl r2, r2, #0xa
+ mov r6, ip
+ add r2, r6, r2
+ ldr r6, _021F3FDC ; =0x00000000
+ adc r1, r6
+ lsl r1, r1, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ add r1, r3, r2
+ add r0, r0, r1
+ ldr r1, [sp, #0x60]
+ neg r0, r0
+ bl FX_Div
+ ldr r1, [sp, #0x40]
+ add r5, r5, #1
+ str r0, [r1]
+ add r0, r1, #0
+ add r0, #0xc
+ str r0, [sp, #0x40]
+ cmp r5, #0xa
+ bge _021F3F50
+_021F3F40:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ str r1, [sp, #0x48]
+ ldr r0, [sp, #0x44]
+ cmp r1, r0
+ blo _021F3E7C
+_021F3F50:
+ cmp r5, #1
+ ble _021F3FB8
+ mov r0, #0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x98]
+ bl FUN_0201C7A8
+ add r4, r0, #0
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x98]
+ bl FUN_0201C7A0
+ sub r6, r4, r0
+ mov r4, #1
+ cmp r5, #1
+ ble _021F3FA4
+_021F3F72:
+ mov r0, #0xc
+ add r7, r4, #0
+ mul r7, r0
+ add r1, sp, #0x98
+ ldr r0, [sp, #0x20]
+ ldr r1, [r1, r7]
+ bl FUN_0201C7A8
+ add r1, sp, #0x98
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x20]
+ ldr r1, [r1, r7]
+ bl FUN_0201C7A0
+ ldr r1, [sp, #0x54]
+ sub r0, r1, r0
+ cmp r6, r0
+ ble _021F3F9A
+ add r6, r0, #0
+ str r4, [sp, #0x24]
+_021F3F9A:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r5
+ blt _021F3F72
+_021F3FA4:
+ ldr r0, [sp, #0x24]
+ mov r1, #0xc
+ mul r1, r0
+ add r0, sp, #0x98
+ ldr r1, [r0, r1]
+ ldr r0, [sp, #0x128]
+ add sp, #0x110
+ str r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3FB8:
+ bne _021F3FC6
+ ldr r1, [sp, #0x98]
+ ldr r0, [sp, #0x128]
+ add sp, #0x110
+ str r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3FC6:
+ cmp r5, #0
+ beq _021F3FD6
+ ldr r1, [sp, #0x98]
+ ldr r0, [sp, #0x128]
+ add sp, #0x110
+ str r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3FD6:
+ mov r0, #0
+ add sp, #0x110
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F3FDC: .word 0x00000000
diff --git a/arm9/modules/05/asm/mod05_021F3FE0.s b/arm9/modules/05/asm/mod05_021F3FE0.s
new file mode 100644
index 00000000..a32bb53b
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F3FE0.s
@@ -0,0 +1,595 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F3FE0
+MOD05_021F3FE0: ; 0x021F3FE0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ mov r2, #0x1c
+ add r4, r1, #0
+ bl MIi_CpuClear32
+ add r0, r5, #0
+ mov r1, #8
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, r4, #0
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, r4, #4
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r2, r4, #0
+ add r0, r5, #0
+ mov r1, #2
+ add r2, #8
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r2, r4, #0
+ add r0, r5, #0
+ mov r1, #2
+ add r2, #0xc
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r2, r4, #0
+ add r0, r5, #0
+ mov r1, #2
+ add r2, #0x18
+ bl NARC_ReadFile
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0
+ bl NARC_ReadFile
+ add r2, r4, #0
+ add r0, r5, #0
+ mov r1, #4
+ add r2, #0x14
+ bl NARC_ReadFile
+ add r4, #0x10
+ add r0, r5, #0
+ mov r1, #4
+ add r2, r4, #0
+ bl NARC_ReadFile
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F4094
+MOD05_021F4094: ; 0x021F4094
+ push {r4, r5, r6, lr}
+ ldr r4, [r2]
+ mov r3, #0
+ str r4, [r1, #0x10]
+ ldr r5, [r0]
+ mov r4, #0xc
+ mul r4, r5
+ add r3, r3, r4
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1e
+ sub r5, r5, r6
+ mov r4, #0x1e
+ ror r5, r4
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ beq _021F40B8
+ add r3, r3, r4
+_021F40B8:
+ ldr r4, [r2]
+ add r4, r4, r3
+ str r4, [r1, #0x14]
+ ldr r5, [r0, #4]
+ mov r4, #0xc
+ mul r4, r5
+ add r3, r3, r4
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1e
+ sub r5, r5, r6
+ mov r4, #0x1e
+ ror r5, r4
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ beq _021F40DA
+ add r3, r3, r4
+_021F40DA:
+ ldr r4, [r2]
+ add r4, r4, r3
+ str r4, [r1, #4]
+ ldr r5, [r0, #8]
+ mov r4, #0xc
+ mul r4, r5
+ add r3, r3, r4
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1e
+ sub r5, r5, r6
+ mov r4, #0x1e
+ ror r5, r4
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ beq _021F40FC
+ add r3, r3, r4
+_021F40FC:
+ ldr r4, [r2]
+ add r4, r4, r3
+ add r3, #0x1c
+ str r4, [r1]
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1e
+ sub r5, r5, r6
+ mov r4, #0x1e
+ ror r5, r4
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ beq _021F4118
+ add r3, r3, r4
+_021F4118:
+ ldr r4, [r2]
+ add r4, r4, r3
+ str r4, [r1, #8]
+ ldr r4, [r0, #0xc]
+ lsl r4, r4, #2
+ add r3, r3, r4
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1e
+ sub r5, r5, r6
+ mov r4, #0x1e
+ ror r5, r4
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ beq _021F4138
+ add r3, r3, r4
+_021F4138:
+ ldr r4, [r2]
+ add r4, r4, r3
+ str r4, [r1, #0xc]
+ ldr r4, [r0, #0x14]
+ add r3, r3, r4
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1e
+ sub r5, r5, r6
+ mov r4, #0x1e
+ ror r5, r4
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ beq _021F4156
+ add r3, r3, r4
+_021F4156:
+ ldr r2, [r2]
+ add r2, r2, r3
+ str r2, [r1, #0x18]
+ ldr r0, [r0, #0x10]
+ add r3, r3, r0
+ lsr r2, r3, #0x1f
+ lsl r1, r3, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ beq _021F4174
+ add r3, r3, r0
+_021F4174:
+ mov r0, #9
+ lsl r0, r0, #0xc
+ cmp r3, r0
+ ble _021F4180
+ bl GF_AssertFail
+_021F4180:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4184
+MOD05_021F4184: ; 0x021F4184
+ ldr r3, _021F4190 ; =NARC_ReadFile
+ add r2, r1, #0
+ mov r1, #0x1c
+ ldr r2, [r2]
+ bx r3
+ nop
+_021F4190: .word NARC_ReadFile
+
+ thumb_func_start MOD05_021F4194
+MOD05_021F4194: ; 0x021F4194
+ ldr r2, [r2]
+ add r3, r1, #0
+ mov r1, #0xc
+ mul r1, r2
+ ldr r2, [r3, #0x10]
+ ldr r3, _021F41A4 ; =NARC_ReadFile
+ bx r3
+ nop
+_021F41A4: .word NARC_ReadFile
+
+ thumb_func_start MOD05_021F41A8
+MOD05_021F41A8: ; 0x021F41A8
+ ldr r2, [r2, #4]
+ add r3, r1, #0
+ mov r1, #0xc
+ mul r1, r2
+ ldr r2, [r3, #0x14]
+ ldr r3, _021F41B8 ; =NARC_ReadFile
+ bx r3
+ nop
+_021F41B8: .word NARC_ReadFile
+
+ thumb_func_start MOD05_021F41BC
+MOD05_021F41BC: ; 0x021F41BC
+ ldr r2, [r2, #8]
+ add r3, r1, #0
+ mov r1, #0xc
+ mul r1, r2
+ ldr r2, [r3, #4]
+ ldr r3, _021F41CC ; =NARC_ReadFile
+ bx r3
+ nop
+_021F41CC: .word NARC_ReadFile
+
+ thumb_func_start MOD05_021F41D0
+MOD05_021F41D0: ; 0x021F41D0
+ add r3, r1, #0
+ ldr r1, [r2, #0xc]
+ ldr r2, [r3, #8]
+ ldr r3, _021F41DC ; =NARC_ReadFile
+ lsl r1, r1, #2
+ bx r3
+ .balign 4, 0
+_021F41DC: .word NARC_ReadFile
+
+ thumb_func_start MOD05_021F41E0
+MOD05_021F41E0: ; 0x021F41E0
+ add r3, r1, #0
+ ldr r1, [r2, #0x14]
+ ldr r2, [r3, #0xc]
+ ldr r3, _021F41EC ; =NARC_ReadFile
+ bx r3
+ nop
+_021F41EC: .word NARC_ReadFile
+
+ thumb_func_start MOD05_021F41F0
+MOD05_021F41F0: ; 0x021F41F0
+ add r3, r1, #0
+ ldr r1, [r2, #0x10]
+ ldr r2, [r3, #0x18]
+ ldr r3, _021F41FC ; =NARC_ReadFile
+ bx r3
+ nop
+_021F41FC: .word NARC_ReadFile
+
+ thumb_func_start MOD05_021F4200
+MOD05_021F4200: ; 0x021F4200
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r1, #0xa0
+ ldr r1, [r1]
+ add r5, r0, #0
+ cmp r1, #1
+ bne _021F4216
+ add r1, r4, #0
+ mov r2, #2
+ add r1, #0x6c
+ strb r2, [r1]
+_021F4216:
+ add r1, r4, #0
+ add r1, #0x6c
+ ldrb r1, [r1]
+ cmp r1, #0
+ beq _021F422A
+ cmp r1, #1
+ beq _021F425E
+ cmp r1, #2
+ beq _021F42EA
+ b _021F4302
+_021F422A:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021F423A
+ mov r0, #0
+ b _021F4302
+_021F423A:
+ add r0, r4, #0
+ add r0, #0xa8
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0x4c
+ bl MOD05_021F3FE0
+ add r1, r4, #0
+ add r1, #0x9c
+ add r0, r4, #0
+ add r2, r4, #0
+ ldr r1, [r1]
+ add r0, #0x4c
+ add r2, #0x98
+ bl MOD05_021F4094
+ mov r0, #1
+ b _021F4302
+_021F425E:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD05_021F4184
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0x9c
+ add r2, r4, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, #0x4c
+ bl MOD05_021F4194
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0x9c
+ add r2, r4, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, #0x4c
+ bl MOD05_021F41A8
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0x9c
+ add r2, r4, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, #0x4c
+ bl MOD05_021F41BC
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0x9c
+ add r2, r4, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, #0x4c
+ bl MOD05_021F41D0
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0x9c
+ add r2, r4, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, #0x4c
+ bl MOD05_021F41E0
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ add r1, #0x9c
+ add r2, r4, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, #0x4c
+ bl MOD05_021F41F0
+ mov r0, #1
+ b _021F4302
+_021F42EA:
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r4, #0
+ bl FreeToHeap
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+_021F4302:
+ cmp r0, #1
+ bne _021F4326
+ add r0, r4, #0
+ add r0, #0x6c
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x6c
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6c
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _021F4326
+ add r4, #0x9c
+ ldr r0, [r4]
+ mov r1, #1
+ str r1, [r0, #0x1c]
+_021F4326:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F4328
+MOD05_021F4328: ; 0x021F4328
+ push {r3, lr}
+ mov r0, #4
+ mov r1, #0x20
+ bl AllocFromHeap
+ mov r1, #0
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ str r1, [r0, #4]
+ str r1, [r0]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ str r1, [r0, #0x18]
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F4344
+MOD05_021F4344: ; 0x021F4344
+ push {r0, r1, r2, r3}
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #4
+ mov r1, #0x1c
+ add r4, r2, #0
+ bl AllocFromHeapAtEnd
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021F3FE0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, sp, #0x1c
+ bl MOD05_021F4094
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F4184
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021F4194
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021F41A8
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021F41BC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021F41D0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021F41E0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021F41F0
+ add r0, r6, #0
+ bl FreeToHeap
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ pop {r4, r5, r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F43C0
+MOD05_021F43C0: ; 0x021F43C0
+ push {r3, lr}
+ cmp r0, #0
+ beq _021F43CA
+ bl FreeToHeap
+_021F43CA:
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F43CC
+MOD05_021F43CC: ; 0x021F43CC
+ cmp r0, #0
+ beq _021F43E2
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ str r1, [r0, #4]
+ str r1, [r0]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ str r1, [r0, #0x18]
+_021F43E2:
+ bx lr
+
+ thumb_func_start MOD05_021F43E4
+MOD05_021F43E4: ; 0x021F43E4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #4
+ mov r1, #0xb4
+ add r6, r2, #0
+ add r7, r3, #0
+ bl AllocFromHeapAtEnd
+ add r1, r0, #0
+ add r2, r1, #0
+ mov r0, #0
+ add r2, #0x6c
+ strb r0, [r2]
+ add r2, r1, #0
+ add r2, #0xa8
+ str r5, [r2]
+ add r2, r1, #0
+ add r2, #0xac
+ str r4, [r2]
+ add r2, r1, #0
+ add r2, #0x9c
+ str r6, [r2]
+ add r2, r1, #0
+ add r2, #0xa4
+ str r7, [r2]
+ add r2, r1, #0
+ add r2, #0xa0
+ str r0, [r2]
+ str r0, [r1, #0x68]
+ str r0, [r1, #0x48]
+ ldr r0, [sp, #0x18]
+ ldr r2, [r0]
+ add r0, r1, #0
+ add r0, #0x98
+ str r2, [r0]
+ add r0, r1, #0
+ ldr r2, [sp, #0x1c]
+ add r0, #0xb0
+ str r2, [r0]
+ ldr r0, _021F4440 ; =MOD05_021F4200
+ mov r2, #1
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F4440: .word MOD05_021F4200
+
+ thumb_func_start MOD05_021F4444
+MOD05_021F4444: ; 0x021F4444
+ push {r3, lr}
+ bl FUN_0201B6C8
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4454
+MOD05_021F4454: ; 0x021F4454
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bx lr
+ .balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021F445C.s b/arm9/modules/05/asm/mod05_021F445C.s
new file mode 100644
index 00000000..c163fd6b
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F445C.s
@@ -0,0 +1,199 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F445C
+MOD05_021F445C: ; 0x021F445C
+ push {r4, r5}
+ ldr r3, [r2, #0x14]
+ cmp r3, #0
+ bne _021F446A
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_021F446A:
+ ldr r5, [r2]
+ ldr r3, [r2, #8]
+ ldr r4, [r2, #4]
+ ldr r2, [r2, #0xc]
+ add r3, r5, r3
+ add r2, r4, r2
+ sub r3, r3, #1
+ sub r2, r2, #1
+ cmp r5, r0
+ bgt _021F4490
+ cmp r0, r3
+ bgt _021F4490
+ cmp r4, r1
+ bgt _021F4490
+ cmp r1, r2
+ bgt _021F4490
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_021F4490:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4498
+MOD05_021F4498: ; 0x021F4498
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #8
+ bl AllocFromHeap
+ mov r1, #0x18
+ add r4, r0, #0
+ add r0, r6, #0
+ mul r1, r5
+ bl AllocFromHeap
+ str r0, [r4, #4]
+ mov r6, #0
+ str r5, [r4]
+ cmp r5, #0
+ bls _021F44D4
+ add r0, r6, #0
+ mov r1, #0x18
+_021F44C0:
+ add r2, r6, #0
+ ldr r3, [r4, #4]
+ mul r2, r1
+ add r2, r3, r2
+ str r0, [r2, #0x14]
+ add r2, r6, #1
+ lsl r2, r2, #0x18
+ lsr r6, r2, #0x18
+ cmp r6, r5
+ blo _021F44C0
+_021F44D4:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F44D8
+MOD05_021F44D8: ; 0x021F44D8
+ push {r4, r5}
+ ldr r5, [sp, #0x10]
+ mov r4, #0x18
+ mul r4, r0
+ ldr r0, [r5, #4]
+ str r1, [r0, r4]
+ ldr r0, [r5, #4]
+ ldr r1, [sp, #8]
+ add r0, r0, r4
+ str r2, [r0, #4]
+ ldr r0, [r5, #4]
+ add r0, r0, r4
+ str r3, [r0, #8]
+ ldr r0, [r5, #4]
+ add r0, r0, r4
+ str r1, [r0, #0xc]
+ ldr r0, [r5, #4]
+ ldr r1, [sp, #0xc]
+ add r0, r0, r4
+ str r1, [r0, #0x10]
+ ldr r0, [r5, #4]
+ mov r1, #1
+ add r0, r0, r4
+ str r1, [r0, #0x14]
+ pop {r4, r5}
+ bx lr
+
+ thumb_func_start MOD05_021F450C
+MOD05_021F450C: ; 0x021F450C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FreeToHeap
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4520
+MOD05_021F4520: ; 0x021F4520
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ add r5, r2, #0
+ str r3, [sp]
+ cmp r3, #0
+ bne _021F4532
+ bl GF_AssertFail
+_021F4532:
+ ldr r0, [r5]
+ mov r4, #0
+ cmp r0, #0
+ ble _021F4562
+_021F453A:
+ mov r3, #0x18
+ ldr r2, [r5, #4]
+ mul r3, r4
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, r2, r3
+ bl MOD05_021F445C
+ cmp r0, #0
+ beq _021F4556
+ ldr r0, [sp]
+ strb r4, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4556:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [r5]
+ cmp r4, r0
+ blt _021F453A
+_021F4562:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4568
+MOD05_021F4568: ; 0x021F4568
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r5, r0
+ blt _021F4578
+ bl GF_AssertFail
+_021F4578:
+ mov r0, #0x18
+ add r6, r5, #0
+ mul r6, r0
+ ldr r0, [r4, #4]
+ add r0, r0, r6
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021F458C
+ bl GF_AssertFail
+_021F458C:
+ ldr r0, [r4, #4]
+ add r0, r0, r6
+ ldr r0, [r0, #0x10]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F4594
+MOD05_021F4594: ; 0x021F4594
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ ldr r0, [r6]
+ add r4, r1, #0
+ cmp r5, r0
+ blt _021F45A6
+ bl GF_AssertFail
+_021F45A6:
+ mov r0, #0x18
+ ldr r1, [r6, #4]
+ mul r0, r5
+ add r0, r1, r0
+ str r4, [r0, #0x10]
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021F45B4.s b/arm9/modules/05/asm/mod05_021F45B4.s
new file mode 100644
index 00000000..a5ddfe3e
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F45B4.s
@@ -0,0 +1,173 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F45B4
+MOD05_021F45B4: ; 0x021F45B4
+ push {r4, lr}
+ mov r1, #0x1c
+ bl AllocFromHeap
+ add r4, r0, #0
+ bl MOD05_021F4650
+ add r0, r4, #0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F45C8
+MOD05_021F45C8: ; 0x021F45C8
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021F45E4
+ ldr r1, [r4]
+ cmp r1, #1
+ bne _021F45D8
+ bl MOD05_021F4608
+_021F45D8:
+ add r0, r4, #0
+ bl MOD05_021F4650
+ add r0, r4, #0
+ bl FreeToHeap
+_021F45E4:
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F45E8
+MOD05_021F45E8: ; 0x021F45E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021F4604 ; =MOD05_021F4688
+ add r1, r4, #0
+ bl FUN_02015F34
+ cmp r0, #1
+ beq _021F45FC
+ bl GF_AssertFail
+_021F45FC:
+ mov r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+ nop
+_021F4604: .word MOD05_021F4688
+
+ thumb_func_start MOD05_021F4608
+MOD05_021F4608: ; 0x021F4608
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ cmp r0, #1
+ beq _021F461C
+ bl GF_AssertFail
+_021F461C:
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4624
+MOD05_021F4624: ; 0x021F4624
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD05_021F46A8
+ add r4, r0, #0
+ bne _021F4636
+ bl GF_AssertFail
+_021F4636:
+ cmp r4, #0
+ beq _021F4642
+ str r6, [r4, #4]
+ str r5, [r4, #8]
+ mov r0, #1
+ str r0, [r4]
+_021F4642:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4648
+MOD05_021F4648: ; 0x021F4648
+ ldr r3, _021F464C ; =MOD05_021F4678
+ bx r3
+ .balign 4, 0
+_021F464C: .word MOD05_021F4678
+
+ thumb_func_start MOD05_021F4650
+MOD05_021F4650: ; 0x021F4650
+ push {r3, r4, r5, lr}
+ add r3, r0, #0
+ mov r2, #0x1c
+ mov r1, #0
+_021F4658:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021F4658
+ mov r4, #0
+ str r4, [r0]
+ add r5, r0, #4
+_021F4666:
+ add r0, r5, #0
+ bl MOD05_021F4678
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #2
+ blt _021F4666
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4678
+MOD05_021F4678: ; 0x021F4678
+ mov r2, #0
+ ldr r1, _021F4684 ; =MOD05_021F46A4
+ str r2, [r0]
+ str r1, [r0, #8]
+ str r2, [r0, #4]
+ bx lr
+ .balign 4, 0
+_021F4684: .word MOD05_021F46A4
+
+ thumb_func_start MOD05_021F4688
+MOD05_021F4688: ; 0x021F4688
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #4
+_021F4690:
+ ldr r1, [r5, #8]
+ ldr r2, [r5, #0xc]
+ add r0, r4, #0
+ blx r2
+ add r6, r6, #1
+ add r5, #0xc
+ add r4, #0xc
+ cmp r6, #2
+ blt _021F4690
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F46A4
+MOD05_021F46A4: ; 0x021F46A4
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F46A8
+MOD05_021F46A8: ; 0x021F46A8
+ mov r2, #0
+ add r3, r0, #0
+_021F46AC:
+ ldr r1, [r3, #4]
+ cmp r1, #0
+ bne _021F46BC
+ add r1, r0, #4
+ mov r0, #0xc
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_021F46BC:
+ add r2, r2, #1
+ add r3, #0xc
+ cmp r2, #2
+ blt _021F46AC
+ mov r0, #0
+ bx lr
diff --git a/arm9/modules/05/asm/mod05_021F46C8.s b/arm9/modules/05/asm/mod05_021F46C8.s
new file mode 100644
index 00000000..e23f3da6
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F46C8.s
@@ -0,0 +1,356 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F46C8
+MOD05_021F46C8: ; 0x021F46C8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0xca
+ lsl r1, r1, #2
+ add r6, r0, #0
+ bl AllocFromHeap
+ mov r2, #0xca
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl memset
+ mov r2, #0x63
+ mov r0, #0
+ add r1, r4, #0
+ lsl r2, r2, #2
+ str r0, [r4]
+ add r0, r6, #0
+ add r1, #0xc
+ add r2, r4, r2
+ bl FUN_02012944
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #4
+ str r5, [r4, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F4704
+MOD05_021F4704: ; 0x021F4704
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ cmp r1, #1
+ bne _021F4712
+ bl MOD05_021F491C
+_021F4712:
+ mov r0, #0xc3
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02012974
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F4724
+MOD05_021F4724: ; 0x021F4724
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F4732
+ bl GF_AssertFail
+_021F4732:
+ mov r0, #0x31
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, _021F47A4 ; =MOD05_021F48CC
+ add r2, r4, #0
+ bl MOD05_021F4624
+ mov r2, #0xc5
+ lsl r2, r2, #2
+ str r0, [r4, r2]
+ ldr r0, _021F47A8 ; =MOD05_021F47B4
+ add r1, r4, #0
+ add r2, #0xec
+ bl FUN_0200CA44
+ mov r2, #0xc7
+ lsl r2, r2, #2
+ str r0, [r4, r2]
+ ldr r0, _021F47AC ; =MOD05_021F48BC
+ add r1, r4, #0
+ add r2, #0xe4
+ bl FUN_0200CA60
+ mov r2, #0x32
+ lsl r2, r2, #4
+ str r0, [r4, r2]
+ ldr r0, _021F47B0 ; =MOD05_021F48F0
+ add r1, r4, #0
+ add r2, #0xe0
+ bl FUN_0200CA60
+ mov r1, #0xc9
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r4, #0
+ mov r2, #6
+ add r0, #0xc
+ mov r1, #0
+ lsl r2, r2, #6
+ bl memset
+ mov r2, #0x63
+ lsl r2, r2, #2
+ add r0, r4, r2
+ mov r1, #0
+ sub r2, #0xc
+ bl memset
+ mov r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #0x61
+ lsl r0, r0, #4
+ bl PlaySE
+ pop {r4, pc}
+ .balign 4, 0
+_021F47A4: .word MOD05_021F48CC
+_021F47A8: .word MOD05_021F47B4
+_021F47AC: .word MOD05_021F48BC
+_021F47B0: .word MOD05_021F48F0
+
+ thumb_func_start MOD05_021F47B4
+MOD05_021F47B4: ; 0x021F47B4
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bhi _021F483C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F47CA: ; jump table
+ .short _021F47D2 - _021F47CA - 2 ; case 0
+ .short _021F47DE - _021F47CA - 2 ; case 1
+ .short _021F480A - _021F47CA - 2 ; case 2
+ .short _021F4830 - _021F47CA - 2 ; case 3
+_021F47D2:
+ mov r0, #3
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r4, pc}
+_021F47DE:
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0xc3
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02012988
+ ldr r1, [r4, #4]
+ mov r2, #3
+ sub r1, r2, r1
+ bl MOD05_021F4878
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bgt _021F483C
+ mov r0, #3
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r4, pc}
+_021F480A:
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0xc3
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02012988
+ ldr r1, [r4, #4]
+ mov r2, #3
+ bl MOD05_021F4878
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bgt _021F483C
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r4, pc}
+_021F4830:
+ add r0, r4, #0
+ bl MOD05_021F491C
+ mov r0, #0
+ bl G3X_SetHOffset
+_021F483C:
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4840
+MOD05_021F4840: ; 0x021F4840
+ push {r4, lr}
+ ldr r1, _021F4870 ; =0x04000006
+ ldrh r4, [r1]
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bl FUN_0201299C
+ cmp r4, #0xc0
+ bge _021F486E
+ add r3, r4, #1
+ cmp r3, #0xc0
+ blt _021F485C
+ sub r3, #0xc0
+_021F485C:
+ ldr r1, _021F4874 ; =0x04000004
+ ldrh r2, [r1]
+ mov r1, #2
+ tst r1, r2
+ beq _021F486E
+ lsl r1, r3, #1
+ ldrh r0, [r0, r1]
+ bl G3X_SetHOffset
+_021F486E:
+ pop {r4, pc}
+ .balign 4, 0
+_021F4870: .word 0x04000006
+_021F4874: .word 0x04000004
+
+ thumb_func_start MOD05_021F4878
+MOD05_021F4878: ; 0x021F4878
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r0, r1, #1
+ add r0, r1, r0
+ add r1, r2, #0
+ mov r4, #1
+ bl _s32_div_f
+ neg r1, r0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ lsl r0, r0, #0x10
+ mov r6, #0
+ str r1, [sp]
+ lsr r7, r0, #0x10
+_021F4896:
+ add r0, r6, #0
+ mov r1, #0xa
+ bl _s32_div_f
+ cmp r1, #0
+ bne _021F48A6
+ mov r0, #1
+ eor r4, r0
+_021F48A6:
+ cmp r4, #0
+ beq _021F48AE
+ strh r7, [r5]
+ b _021F48B2
+_021F48AE:
+ ldr r0, [sp]
+ strh r0, [r5]
+_021F48B2:
+ add r6, r6, #1
+ add r5, r5, #2
+ cmp r6, #0xc0
+ blt _021F4896
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F48BC
+MOD05_021F48BC: ; 0x021F48BC
+ mov r2, #0xc6
+ ldr r3, _021F48C8 ; =G3X_SetHOffset
+ mov r0, #0
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ bx r3
+ .balign 4, 0
+_021F48C8: .word G3X_SetHOffset
+
+ thumb_func_start MOD05_021F48CC
+MOD05_021F48CC: ; 0x021F48CC
+ ldr r3, _021F48D4 ; =MOD05_021F48D8
+ add r0, r1, #0
+ bx r3
+ nop
+_021F48D4: .word MOD05_021F48D8
+
+ thumb_func_start MOD05_021F48D8
+MOD05_021F48D8: ; 0x021F48D8
+ push {r3, lr}
+ ldr r1, [r0]
+ cmp r1, #1
+ bne _021F48EE
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ cmp r1, #1
+ bne _021F48EE
+ bl MOD05_021F4840
+_021F48EE:
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F48F0
+MOD05_021F48F0: ; 0x021F48F0
+ ldr r3, _021F48F8 ; =MOD05_021F48FC
+ add r0, r1, #0
+ bx r3
+ nop
+_021F48F8: .word MOD05_021F48FC
+
+ thumb_func_start MOD05_021F48FC
+MOD05_021F48FC: ; 0x021F48FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #1
+ bne _021F4918
+ mov r0, #0xc3
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020129B4
+ mov r0, #0xc6
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021F4918:
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F491C
+MOD05_021F491C: ; 0x021F491C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD05_021F4648
+ mov r0, #0xc5
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ mov r0, #0xc7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ mov r0, #0xc9
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ str r1, [r4]
+ pop {r4, pc}
+ .balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021F4968.s b/arm9/modules/05/asm/mod05_021F4968.s
new file mode 100644
index 00000000..07285ff4
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F4968.s
@@ -0,0 +1,478 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4968
+MOD05_021F4968: ; 0x021F4968
+ ldr r2, [r1, #0x14]
+ ldr r3, _021F4974 ; =FUN_02016B44
+ add r1, r1, r2
+ sub r1, r1, r0
+ bx r3
+ nop
+_021F4974: .word ReallocFromHeap
+
+ thumb_func_start MOD05_021F4978
+MOD05_021F4978: ; 0x021F4978
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x23
+ add r5, r0, #0
+ mov r0, #4
+ lsl r1, r1, #6
+ bl AllocFromHeap
+ add r4, r0, #0
+ mov r0, #4
+ mov r1, #0x10
+ bl AllocFromHeapAtEnd
+ ldr r1, _021F49A8 ; =0x000008B8
+ mov r2, #0
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ str r5, [r0]
+ ldr r0, [r4, r1]
+ str r6, [r0, #4]
+ ldr r0, [r4, r1]
+ str r2, [r0, #0xc]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F49A8: .word 0x000008B8
+
+ thumb_func_start MOD05_021F49AC
+MOD05_021F49AC: ; 0x021F49AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x110
+ add r5, r0, #0
+ ldr r0, _021F4B9C ; =0x000008B8
+ mov r1, #0x2a
+ ldr r7, [r5, r0]
+ sub r0, #8
+ ldr r2, [r7]
+ add r0, r5, r0
+ bl ReadWholeNarcMemberByIdPair
+ mov r1, #0x8b
+ lsl r1, r1, #4
+ ldrh r1, [r5, r1]
+ mov r0, #0x2b
+ mov r2, #4
+ bl AllocAndReadWholeNarcMemberByIdPair
+ ldr r1, _021F4BA0 ; =0x000008BC
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ ldrh r1, [r0]
+ ldr r0, _021F4BA4 ; =0x00000226
+ strh r1, [r7, #8]
+ cmp r1, r0
+ blo _021F49E4
+ bl GF_AssertFail
+_021F49E4:
+ ldr r1, _021F4BA8 ; =0x000008A4
+ mov r0, #0
+ str r0, [r5, r1]
+ add r1, #0xe
+ ldrh r1, [r5, r1]
+ mov r0, #0x2c
+ mov r2, #4
+ bl AllocAndReadWholeNarcMemberByIdPair
+ ldr r1, _021F4BAC ; =0x0000089C
+ mov r2, #4
+ str r0, [r5, r1]
+ add r1, #0x14
+ ldrh r1, [r5, r1]
+ mov r0, #0x47
+ bl AllocAndReadWholeNarcMemberByIdPair
+ mov r1, #0x8a
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ sub r0, r1, #4
+ ldr r0, [r5, r0]
+ bl NNS_G3dGetTex
+ ldr r1, _021F4BA8 ; =0x000008A4
+ str r0, [r5, r1]
+ ldrh r0, [r7, #8]
+ cmp r0, #0
+ beq _021F4A2C
+ sub r0, r1, #4
+ ldr r0, [r5, r0]
+ bl NNS_G3dGetTex
+ ldr r1, _021F4BB0 ; =0x000008A8
+ str r0, [r5, r1]
+ b _021F4A32
+_021F4A2C:
+ mov r2, #0
+ add r0, r1, #4
+ str r2, [r5, r0]
+_021F4A32:
+ ldr r0, _021F4BA8 ; =0x000008A4
+ ldr r0, [r5, r0]
+ bl FUN_0201B3C4
+ cmp r0, #0
+ bne _021F4A42
+ bl GF_AssertFail
+_021F4A42:
+ ldr r1, _021F4BAC ; =0x0000089C
+ ldr r0, [r5, r1]
+ add r1, #8
+ ldr r1, [r5, r1]
+ bl MOD05_021F4968
+ ldr r0, _021F4BB0 ; =0x000008A8
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021F4A70
+ bl FUN_0201B3C4
+ cmp r0, #0
+ bne _021F4A62
+ bl GF_AssertFail
+_021F4A62:
+ mov r1, #0x8a
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, #8
+ ldr r1, [r5, r1]
+ bl MOD05_021F4968
+_021F4A70:
+ mov r2, #0
+ ldr r0, _021F4BA4 ; =0x00000226
+ add r3, r5, #0
+ add r1, r2, #0
+_021F4A78:
+ add r2, r2, #1
+ str r1, [r3, #4]
+ add r3, r3, #4
+ cmp r2, r0
+ blt _021F4A78
+ ldr r0, _021F4BB4 ; =0x000008AC
+ str r1, [r5, r0]
+ mov r0, #0x28
+ mov r1, #4
+ bl NARC_ctor
+ str r0, [sp, #0xc]
+ ldr r0, [r7, #4]
+ bl MOD05_021DA220
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldrh r0, [r7, #8]
+ cmp r0, #0
+ ble _021F4B10
+ ldr r0, [sp, #8]
+ str r0, [sp]
+_021F4AA6:
+ ldr r0, _021F4BA0 ; =0x000008BC
+ ldr r1, [r5, r0]
+ ldr r0, [sp]
+ add r0, r1, r0
+ ldrh r6, [r0, #2]
+ lsl r0, r6, #2
+ add r4, r5, r0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F4ABE
+ bl GF_AssertFail
+_021F4ABE:
+ ldr r0, [sp, #0xc]
+ add r1, r6, #0
+ mov r2, #4
+ bl NARC_AllocAndReadWholeMember
+ str r0, [r4, #4]
+ ldr r0, [sp, #4]
+ cmp r6, r0
+ bge _021F4AEC
+ ldr r0, [r4, #4]
+ bl NNS_G3dGetMdlSet
+ add r1, r0, #0
+ ldrh r2, [r1, #0xe]
+ ldr r3, [r7, #4]
+ add r0, r6, #0
+ add r2, r1, r2
+ ldr r2, [r2, #0xc]
+ add r1, r1, r2
+ ldr r2, _021F4BB0 ; =0x000008A8
+ ldr r2, [r5, r2]
+ bl MOD05_021D9CEC
+_021F4AEC:
+ ldr r1, _021F4BB0 ; =0x000008A8
+ ldr r0, [r4, #4]
+ ldr r1, [r5, r1]
+ bl FUN_0201B3A8
+ cmp r0, #0
+ bne _021F4AFE
+ bl GF_AssertFail
+_021F4AFE:
+ ldr r0, [sp]
+ ldrh r1, [r7, #8]
+ add r0, r0, #2
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, r1
+ blt _021F4AA6
+_021F4B10:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021F4B46
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ mov r2, #4
+ bl NARC_AllocAndReadWholeMember
+ str r0, [r5, #4]
+ bl NNS_G3dGetTex
+ add r4, r0, #0
+ beq _021F4B46
+ bl FUN_0201B3C4
+ cmp r0, #0
+ bne _021F4B36
+ bl GF_AssertFail
+_021F4B36:
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl FUN_0201B3A8
+ cmp r0, #0
+ bne _021F4B46
+ bl GF_AssertFail
+_021F4B46:
+ ldr r0, [sp, #0xc]
+ bl NARC_dtor
+ ldr r2, _021F4BB8 ; =0x04000060
+ ldr r0, _021F4BBC ; =0xFFFFCFFF
+ ldrh r1, [r2]
+ and r1, r0
+ mov r0, #0x20
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _021F4BC0 ; =0x000008B6
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ bne _021F4B6A
+ ldr r0, _021F4BC4 ; =UNK05_021FC624
+ bl G3X_SetEdgeColorTable
+ b _021F4B70
+_021F4B6A:
+ ldr r0, _021F4BC8 ; =UNK05_021FC634
+ bl G3X_SetEdgeColorTable
+_021F4B70:
+ bl MOD05_021DB900
+ ldr r1, _021F4BB4 ; =0x000008AC
+ str r0, [r5, r1]
+ ldr r1, _021F4BCC ; =UNK05_021FD648
+ add r0, sp, #0x10
+ bl sprintf
+ ldr r1, _021F4BB4 ; =0x000008AC
+ add r0, sp, #0x10
+ ldr r1, [r5, r1]
+ bl MOD05_021DB918
+ ldr r0, _021F4B9C ; =0x000008B8
+ ldr r0, [r5, r0]
+ bl FreeToHeap
+ ldr r0, _021F4B9C ; =0x000008B8
+ mov r1, #0
+ str r1, [r5, r0]
+ add sp, #0x110
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021F4B9C: .word 0x000008B8
+_021F4BA0: .word 0x000008BC
+_021F4BA4: .word 0x00000226
+_021F4BA8: .word 0x000008A4
+_021F4BAC: .word 0x0000089C
+_021F4BB0: .word 0x000008A8
+_021F4BB4: .word 0x000008AC
+_021F4BB8: .word 0x04000060
+_021F4BBC: .word 0xFFFFCFFF
+_021F4BC0: .word 0x000008B6
+_021F4BC4: .word UNK05_021FC624
+_021F4BC8: .word UNK05_021FC634
+_021F4BCC: .word UNK05_021FD648
+
+ thumb_func_start MOD05_021F4BD0
+MOD05_021F4BD0: ; 0x021F4BD0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bne _021F4BDC
+ bl GF_AssertFail
+_021F4BDC:
+ add r2, r4, #4
+ lsl r1, r5, #2
+ ldr r0, [r2, r1]
+ cmp r0, #0
+ bne _021F4BF4
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021F4BF0
+ bl GF_AssertFail
+_021F4BF0:
+ add r0, r4, #4
+ pop {r3, r4, r5, pc}
+_021F4BF4:
+ add r0, r2, r1
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F4BF8
+MOD05_021F4BF8: ; 0x021F4BF8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r1, [r5]
+ ldr r0, _021F4C64 ; =0x000008AC
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021F4C0A
+ bl MOD05_021DB9BC
+_021F4C0A:
+ mov r6, #0
+ ldr r7, _021F4C68 ; =0x00000226
+ add r4, r6, #0
+_021F4C10:
+ ldr r0, [r5]
+ add r0, r0, r4
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021F4C1E
+ bl FreeToHeap
+_021F4C1E:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, r7
+ blt _021F4C10
+ ldr r1, [r5]
+ ldr r0, _021F4C6C ; =0x000008BC
+ ldr r0, [r1, r0]
+ bl FreeToHeap
+ ldr r1, [r5]
+ ldr r0, _021F4C70 ; =0x0000089C
+ ldr r0, [r1, r0]
+ bl FreeToHeap
+ ldr r1, [r5]
+ ldr r0, _021F4C70 ; =0x0000089C
+ mov r2, #0
+ str r2, [r1, r0]
+ ldr r1, [r5]
+ add r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FreeToHeap
+ mov r0, #0x8a
+ ldr r1, [r5]
+ mov r2, #0
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ ldr r0, [r5]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F4C64: .word 0x000008AC
+_021F4C68: .word 0x00000226
+_021F4C6C: .word 0x000008BC
+_021F4C70: .word 0x0000089C
+
+ thumb_func_start MOD05_021F4C74
+MOD05_021F4C74: ; 0x021F4C74
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021F4C7E
+ bl GF_AssertFail
+_021F4C7E:
+ ldr r0, _021F4C84 ; =0x000008A4
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4, 0
+_021F4C84: .word 0x000008A4
+
+ thumb_func_start MOD05_021F4C88
+MOD05_021F4C88: ; 0x021F4C88
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021F4C92
+ bl GF_AssertFail
+_021F4C92:
+ ldr r0, _021F4C98 ; =0x000008A8
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4, 0
+_021F4C98: .word 0x000008A8
+
+ thumb_func_start MOD05_021F4C9C
+MOD05_021F4C9C: ; 0x021F4C9C
+ ldr r1, _021F4CA4 ; =0x000008AC
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021F4CA4: .word 0x000008AC
+
+ thumb_func_start MOD05_021F4CA8
+MOD05_021F4CA8: ; 0x021F4CA8
+ ldr r1, _021F4CB8 ; =0x000008B6
+ ldrh r0, [r0, r1]
+ cmp r0, #0
+ beq _021F4CB4
+ mov r0, #1
+ bx lr
+_021F4CB4:
+ mov r0, #0
+ bx lr
+ .balign 4, 0
+_021F4CB8: .word 0x000008B6
+
+ thumb_func_start MOD05_021F4CBC
+MOD05_021F4CBC: ; 0x021F4CBC
+ ldr r1, _021F4CD0 ; =0x000008B6
+ ldrh r0, [r0, r1]
+ cmp r0, #0
+ bne _021F4CC8
+ mov r0, #1
+ b _021F4CCA
+_021F4CC8:
+ mov r0, #0
+_021F4CCA:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .balign 4, 0
+_021F4CD0: .word 0x000008B6
+
+ thumb_func_start MOD05_021F4CD4
+MOD05_021F4CD4: ; 0x021F4CD4
+ ldr r2, _021F4CE0 ; =0x000008BC
+ ldr r2, [r0, r2]
+ lsl r0, r1, #1
+ ldrh r0, [r2, r0]
+ bx lr
+ nop
+_021F4CE0: .word 0x000008BC
+
+ thumb_func_start MOD05_021F4CE4
+MOD05_021F4CE4: ; 0x021F4CE4
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021F4CF2
+ mov r0, #1
+ bx lr
+_021F4CF2:
+ mov r0, #0
+ bx lr
+ .balign 4, 0
+
+ .section .rodata
+
+ .global UNK05_021FC624
+UNK05_021FC624: ; 0x021FC624
+ .byte 0x00, 0x00, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
+ .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
+
+ .global UNK05_021FC634
+UNK05_021FC634: ; 0x021FC634
+ .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
+ .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
+
+ .section .data
+
+ .balign 4
+ .global UNK05_021FD648
+UNK05_021FD648: ; 0x021FD648
+ .asciz "fielddata/build_model/build_model_matshp.dat"
diff --git a/arm9/modules/05/asm/mod05_021F4CF8.s b/arm9/modules/05/asm/mod05_021F4CF8.s
new file mode 100644
index 00000000..71401743
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F4CF8.s
@@ -0,0 +1,756 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4CF8
+MOD05_021F4CF8: ; 0x021F4CF8
+ push {r4, lr}
+ mov r0, #4
+ mov r1, #0xfc
+ bl AllocFromHeap
+ mov r4, #0
+ add r2, r4, #0
+_021F4D06:
+ lsl r1, r4, #3
+ add r3, r0, r1
+ strb r2, [r0, r1]
+ add r1, r4, #1
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ str r2, [r3, #4]
+ cmp r4, #0x15
+ blo _021F4D06
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4D1C
+MOD05_021F4D1C: ; 0x021F4D1C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F4D2C
+MOD05_021F4D2C: ; 0x021F4D2C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, _021F4D7C ; =0x000007D8
+ str r0, [r1]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r4, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r6, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ cmp r0, #0
+ bne _021F4D76
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, sp, #0xc
+ mov r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r6, #0
+ sub r3, r2, #1
+ bl FUN_0204A840
+ add r0, r5, #0
+ mov r1, #0x1a
+ add r2, sp, #0xc
+ mov r3, #0
+ bl FUN_0204A8C4
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+_021F4D76:
+ mov r0, #0
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+_021F4D7C: .word 0x000007D8
+
+ thumb_func_start MOD05_021F4D80
+MOD05_021F4D80: ; 0x021F4D80
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl MOD05_021F50FC
+ add r5, r0, #0
+ cmp r5, #0x15
+ bne _021F4D96
+ bl GF_AssertFail
+_021F4D96:
+ ldr r0, [r4, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202A9BC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0202A9C8
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD05_021F5120
+ cmp r0, #0
+ beq _021F4DB8
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021F4DB8:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F4DC2
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021F4DC2:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4DC8
+MOD05_021F4DC8: ; 0x021F4DC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x1c]
+ ldr r0, [r0]
+ bl MOD05_021F50FC
+ add r5, r0, #0
+ cmp r5, #0x15
+ bne _021F4DDE
+ bl GF_AssertFail
+_021F4DDE:
+ ldr r0, [r6, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202A9BC
+ str r0, [sp]
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl FUN_0202A9C8
+ add r4, r0, #0
+ mov r0, #0x5a
+ lsl r0, r0, #4
+ str r0, [r4]
+ ldr r0, [r6, #0xc]
+ bl Sav2_PlayerData_GetProfileAddr
+ bl PlayerProfile_GetTrainerID
+ add r1, r5, #0
+ bl MOD05_021F5138
+ add r7, r0, #0
+ ldr r0, [sp]
+ bl FUN_0202A9C0
+ cmp r5, r0
+ bne _021F4E42
+ bl LCRandom
+ mov r1, #0x29
+ lsl r1, r1, #4
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #0x64
+ blo _021F4E2E
+ bl GF_AssertFail
+_021F4E2E:
+ cmp r6, #0x5a
+ bhs _021F4E42
+ add r0, r4, #4
+ bl MOD05_021F4F44
+ ldrb r0, [r4, #6]
+ bl MOD05_021F4FAC
+ strb r0, [r4, #7]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4E42:
+ add r0, r7, #0
+ add r1, r4, #6
+ bl MOD05_021F4EE4
+ ldrb r0, [r4, #6]
+ cmp r0, #0
+ beq _021F4E60
+ add r0, r4, #4
+ bl MOD05_021F4F44
+ ldrb r0, [r4, #6]
+ bl MOD05_021F4F98
+ strb r0, [r4, #5]
+ b _021F4E68
+_021F4E60:
+ mov r0, #0
+ strb r0, [r4, #5]
+ strb r0, [r4, #4]
+ str r0, [r4]
+_021F4E68:
+ ldrb r0, [r4, #6]
+ bl MOD05_021F4FAC
+ strb r0, [r4, #7]
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl FUN_0202A9C4
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F4E7C
+MOD05_021F4E7C: ; 0x021F4E7C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl MOD05_021F50FC
+ add r4, r0, #0
+ cmp r4, #0x15
+ bne _021F4E94
+ bl GF_AssertFail
+_021F4E94:
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ lsl r4, r4, #3
+ add r0, r0, r4
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021F4EE0
+ ldr r0, [r5, #0x24]
+ bl MOD05_021EF618
+ ldr r1, [r5, #0x24]
+ add r2, sp, #0
+ bl MOD05_021EF604
+ ldr r0, [sp]
+ mov r1, #0x1a
+ bl MOD05_021E7ED8
+ add r6, r0, #0
+ bl MOD05_021E7EC8
+ add r1, r0, #0
+ cmp r6, #0
+ beq _021F4ED6
+ add r3, r5, #0
+ add r3, #0xa4
+ ldr r3, [r3]
+ ldr r0, [r5, #0x4c]
+ ldrb r3, [r3, r4]
+ mov r2, #0x1a
+ bl MOD05_021D9FB4
+_021F4ED6:
+ add r5, #0xa4
+ ldr r0, [r5]
+ mov r1, #0
+ add r0, r0, r4
+ str r1, [r0, #4]
+_021F4EE0:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F4EE4
+MOD05_021F4EE4: ; 0x021F4EE4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ bl LCRandom
+ mov r1, #0x29
+ lsl r1, r1, #4
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x64
+ blo _021F4F02
+ bl GF_AssertFail
+_021F4F02:
+ cmp r6, #0
+ beq _021F4F2A
+ cmp r4, #1
+ bge _021F4F10
+ mov r0, #3
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+_021F4F10:
+ cmp r4, #0xa
+ bge _021F4F1A
+ mov r0, #0
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+_021F4F1A:
+ cmp r4, #0x1e
+ bge _021F4F24
+ mov r0, #1
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+_021F4F24:
+ mov r0, #2
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+_021F4F2A:
+ cmp r4, #0xa
+ bge _021F4F34
+ mov r0, #0
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+_021F4F34:
+ cmp r4, #0x1e
+ bge _021F4F3E
+ mov r0, #2
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+_021F4F3E:
+ mov r0, #1
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F4F44
+MOD05_021F4F44: ; 0x021F4F44
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl LCRandom
+ mov r1, #0x29
+ lsl r1, r1, #4
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x64
+ blo _021F4F60
+ bl GF_AssertFail
+_021F4F60:
+ cmp r5, #5
+ bge _021F4F6A
+ mov r0, #5
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_021F4F6A:
+ cmp r5, #0xa
+ bge _021F4F74
+ mov r0, #4
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_021F4F74:
+ cmp r5, #0x14
+ bge _021F4F7E
+ mov r0, #3
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_021F4F7E:
+ cmp r5, #0x28
+ bge _021F4F88
+ mov r0, #2
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_021F4F88:
+ cmp r5, #0x3c
+ bge _021F4F92
+ mov r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_021F4F92:
+ mov r0, #0
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F4F98
+MOD05_021F4F98: ; 0x021F4F98
+ cmp r0, #3
+ bne _021F4FA0
+ mov r0, #2
+ bx lr
+_021F4FA0:
+ cmp r0, #2
+ bne _021F4FA8
+ mov r0, #1
+ bx lr
+_021F4FA8:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD05_021F4FAC
+MOD05_021F4FAC: ; 0x021F4FAC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl LCRandom
+ mov r1, #0x29
+ lsl r1, r1, #4
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x64
+ blo _021F4FC8
+ bl GF_AssertFail
+_021F4FC8:
+ cmp r4, #3
+ bne _021F4FE8
+ cmp r5, #5
+ bge _021F4FD4
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021F4FD4:
+ cmp r5, #6
+ bge _021F4FDC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F4FDC:
+ cmp r5, #7
+ bge _021F4FE4
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F4FE4:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021F4FE8:
+ cmp r4, #2
+ bne _021F5008
+ cmp r5, #0x4b
+ bge _021F4FF4
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021F4FF4:
+ cmp r5, #0x5f
+ bge _021F4FFC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F4FFC:
+ cmp r5, #0x60
+ bge _021F5004
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F5004:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021F5008:
+ cmp r4, #1
+ bne _021F5028
+ cmp r5, #0x13
+ bge _021F5014
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021F5014:
+ cmp r5, #0x4f
+ bge _021F501C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F501C:
+ cmp r5, #0x63
+ bge _021F5024
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F5024:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021F5028:
+ cmp r5, #1
+ bge _021F5030
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021F5030:
+ cmp r5, #0x13
+ bge _021F5038
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F5038:
+ cmp r5, #0x63
+ bge _021F5040
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F5040:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F5044
+MOD05_021F5044: ; 0x021F5044
+ mov r2, #1
+ cmp r0, #3
+ bne _021F5050
+ mov r0, #2
+ strb r0, [r1]
+ b _021F5064
+_021F5050:
+ cmp r0, #2
+ bne _021F5058
+ strb r2, [r1]
+ b _021F5064
+_021F5058:
+ cmp r0, #1
+ bne _021F5062
+ mov r0, #0
+ strb r0, [r1]
+ b _021F5064
+_021F5062:
+ mov r2, #0
+_021F5064:
+ add r0, r2, #0
+ bx lr
+
+ thumb_func_start MOD05_021F5068
+MOD05_021F5068: ; 0x021F5068
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0x28]
+ add r7, r1, #0
+ add r1, r2, #0
+ bl MapMatrix_GetMapHeaderFromID
+ bl MOD05_021F50FC
+ add r4, r0, #0
+ cmp r4, #0x15
+ beq _021F50F8
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202A9BC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0202A9C8
+ add r6, r0, #0
+ ldr r0, [r6]
+ bl MOD05_021F5120
+ cmp r0, #0
+ beq _021F50F8
+ ldrb r0, [r6, #7]
+ add r1, sp, #4
+ bl MOD05_021F5044
+ add r6, r0, #0
+ beq _021F50F8
+ add r0, r7, #0
+ mov r1, #0x1a
+ bl MOD05_021E7ED8
+ cmp r0, #0
+ beq _021F50F8
+ bl MOD05_021E7EC8
+ add r3, r5, #0
+ add r7, r0, #0
+ add r3, #0xa4
+ ldr r3, [r3]
+ lsl r4, r4, #3
+ ldrb r3, [r3, r4]
+ ldr r0, [r5, #0x4c]
+ add r1, r7, #0
+ mov r2, #0x1a
+ bl MOD05_021D9FB4
+ add r1, sp, #4
+ add r2, r5, #0
+ add r2, #0xa4
+ ldrb r0, [r1]
+ ldr r2, [r2]
+ add r3, r7, #0
+ strb r0, [r2, r4]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r2, #1
+ add r0, r0, r4
+ str r6, [r0, #4]
+ ldr r0, [r5, #0x4c]
+ str r0, [sp]
+ ldrb r1, [r1]
+ mov r0, #0x1a
+ bl MOD05_021D9DC0
+_021F50F8:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F50FC
+MOD05_021F50FC: ; 0x021F50FC
+ ldr r2, _021F511C ; =UNK05_021FC650
+ mov r3, #0
+_021F5100:
+ lsl r1, r3, #2
+ ldr r1, [r2, r1]
+ cmp r0, r1
+ bne _021F510C
+ add r0, r3, #0
+ bx lr
+_021F510C:
+ add r1, r3, #1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x15
+ blo _021F5100
+ add r0, r3, #0
+ bx lr
+ nop
+_021F511C: .word UNK05_021FC650
+
+ thumb_func_start MOD05_021F5120
+MOD05_021F5120: ; 0x021F5120
+ cmp r0, #0
+ ble _021F512E
+ ldr r1, _021F5134 ; =0x00000438
+ cmp r0, r1
+ bgt _021F512E
+ mov r0, #1
+ bx lr
+_021F512E:
+ mov r0, #0
+ bx lr
+ nop
+_021F5134: .word 0x00000438
+
+ thumb_func_start MOD05_021F5138
+MOD05_021F5138: ; 0x021F5138
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ lsr r2, r0, #0x18
+ add r1, sp, #0
+ strb r2, [r1]
+ lsr r2, r0, #0x10
+ strb r2, [r1, #1]
+ lsr r2, r0, #8
+ strb r2, [r1, #2]
+ strb r0, [r1, #3]
+ ldrb r0, [r1]
+ mov r1, #0x15
+ bl _s32_div_f
+ add r0, sp, #0
+ strb r1, [r0]
+ ldrb r0, [r0, #1]
+ mov r1, #0x15
+ bl _s32_div_f
+ add r0, sp, #0
+ strb r1, [r0, #1]
+ ldrb r0, [r0, #2]
+ mov r1, #0x15
+ bl _s32_div_f
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ ldrb r0, [r0, #3]
+ mov r1, #0x15
+ bl _s32_div_f
+ add r0, sp, #0
+ strb r1, [r0, #3]
+ mov r0, #0
+ mov r3, #1
+ add r1, sp, #0
+ add r2, r0, #0
+_021F5184:
+ add r5, r2, #0
+ cmp r3, #0
+ bls _021F51A8
+_021F518A:
+ ldrb r7, [r1, r5]
+ ldrb r6, [r1, r3]
+ cmp r7, r6
+ bne _021F519E
+ add r6, r6, #1
+ strb r6, [r1, r3]
+ ldrb r6, [r1, r3]
+ cmp r6, #0x15
+ blo _021F519E
+ strb r0, [r1, r3]
+_021F519E:
+ add r5, r5, #1
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ cmp r5, r3
+ blo _021F518A
+_021F51A8:
+ add r3, r3, #1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ cmp r3, #4
+ blo _021F5184
+ mov r2, #0
+ add r1, sp, #0
+_021F51B6:
+ ldrb r0, [r1, r2]
+ cmp r4, r0
+ bne _021F51C0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F51C0:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #4
+ blo _021F51B6
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F51D0
+MOD05_021F51D0: ; 0x021F51D0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl MOD05_021F50FC
+ add r5, r0, #0
+ cmp r5, #0x15
+ bne _021F51E6
+ bl GF_AssertFail
+_021F51E6:
+ ldr r0, [r4, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202A9BC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0202A9C8
+ add r4, r0, #0
+ ldrb r1, [r4, #5]
+ mov r0, #0x6a
+ lsl r2, r1, #2
+ ldr r1, _021F5218 ; =UNK05_021FC644
+ ldr r1, [r1, r2]
+ mov r2, #4
+ bl AllocAtEndAndReadWholeNarcMemberByIdPair
+ ldrb r1, [r4, #4]
+ lsl r1, r1, #2
+ ldr r4, [r0, r1]
+ bl FreeToHeap
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021F5218: .word UNK05_021FC644
+
+ thumb_func_start MOD05_021F521C
+MOD05_021F521C: ; 0x021F521C
+ push {r3, lr}
+ add r3, r1, #0
+ bmi _021F522A
+ add r1, r2, #0
+ add r2, r3, #0
+ bl MOD05_021F5068
+_021F522A:
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021F522C
+MOD05_021F522C: ; 0x021F522C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl MOD05_021F50FC
+ add r4, r0, #0
+ cmp r4, #0x15
+ bne _021F5242
+ bl GF_AssertFail
+_021F5242:
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r1, [r0]
+ lsl r0, r4, #3
+ mov r2, #0
+ add r0, r1, r0
+ str r2, [r0, #4]
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202A9BC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0202A9C8
+ mov r1, #0
+ str r1, [r0]
+ pop {r3, r4, r5, pc}
+
+ .section .rodata
+
+ .global UNK05_021FC644
+UNK05_021FC644: ; 0x021FC644
+.ifdef DIAMOND
+ .word 2, 3, 4
+.else
+ .word 5, 6, 7
+.endif
+
+ .global UNK05_021FC650
+UNK05_021FC650: ; 0x021FC650
+ .byte 0x5B, 0x01, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00
+ .byte 0x61, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00
+ .byte 0x6B, 0x01, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00
+ .byte 0x75, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00
+ .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021F5268.s b/arm9/modules/05/asm/mod05_021F5268.s
new file mode 100644
index 00000000..194cb7ee
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F5268.s
@@ -0,0 +1,379 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5268
+MOD05_021F5268: ; 0x021F5268
+ push {r3, r4, r5, lr}
+ mov r5, #0
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ str r5, [sp]
+ add r2, r5, #0
+ bl GfGfxLoader_LoadFromNarc
+ str r0, [r4]
+ bl NNS_G3dGetMdlSet
+ str r0, [r4, #4]
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ bl NNS_G3dGetTex
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021F52A4
+ mov r2, #1
+ ldr r0, _021F52A8 ; =MOD05_021F52AC
+ add r1, r4, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+_021F52A4:
+ pop {r3, r4, r5, pc}
+ nop
+_021F52A8: .word MOD05_021F52AC
+
+ thumb_func_start MOD05_021F52AC
+MOD05_021F52AC: ; 0x021F52AC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_0201B3C4
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ bl FUN_0201B3A8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F52C8
+MOD05_021F52C8: ; 0x021F52C8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021F52F8
+ add r1, sp, #4
+ add r2, sp, #0
+ bl NNS_G3dTexReleaseTexKey
+ ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram
+ ldr r0, [sp, #4]
+ ldr r1, [r1]
+ blx r1
+ ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram
+ ldr r0, [sp]
+ ldr r1, [r1]
+ blx r1
+ ldr r0, [r4, #0xc]
+ bl NNS_G3dPlttReleasePlttKey
+ ldr r1, _021F5318 ; =NNS_GfdDefaultFuncFreePlttVram
+ ldr r1, [r1]
+ blx r1
+_021F52F8:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F5302
+ bl FreeToHeap
+_021F5302:
+ mov r1, #0x10
+ mov r0, #0
+_021F5306:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021F5306
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021F5314: .word NNS_GfdDefaultFuncFreeTexVram
+_021F5318: .word NNS_GfdDefaultFuncFreePlttVram
+
+ thumb_func_start MOD05_021F531C
+MOD05_021F531C: ; 0x021F531C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ mov r6, #0
+ add r1, r3, #0
+ add r5, r0, #0
+ add r0, r2, #0
+ ldr r3, [sp, #0x18]
+ add r2, r6, #0
+ str r6, [sp]
+ bl GfGfxLoader_LoadFromNarc
+ add r2, r0, #0
+ ldr r3, [sp, #0x1c]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021F54EC
+ add r0, r6, #0
+ str r0, [r5, #0x10]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F5348
+MOD05_021F5348: ; 0x021F5348
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021F54EC
+ mov r0, #1
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5358
+MOD05_021F5358: ; 0x021F5358
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F5376
+ add r0, r1, #0
+ ldr r1, [r4, #8]
+ bl NNS_G3dFreeAnmObj
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _021F5376
+ ldr r0, [r4]
+ bl FreeToHeap
+_021F5376:
+ mov r1, #0x14
+ mov r0, #0
+_021F537A:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021F537A
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5384
+MOD05_021F5384: ; 0x021F5384
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #8]
+ ldrh r0, [r0, #4]
+ lsl r2, r0, #0xc
+ cmp r1, #0
+ ble _021F53A2
+ ldr r0, [r4, #0xc]
+ add r0, r0, r1
+ add r1, r2, #0
+ bl _s32_div_f
+ str r1, [r4, #0xc]
+ b _021F53B4
+_021F53A2:
+ ldr r0, [r4, #0xc]
+ add r3, r4, #0
+ add r3, #0xc
+ add r0, r0, r1
+ str r0, [r4, #0xc]
+ bpl _021F53B4
+ ldr r0, [r3]
+ add r0, r0, r2
+ str r0, [r3]
+_021F53B4:
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #8]
+ str r1, [r0]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F53BC
+MOD05_021F53BC: ; 0x021F53BC
+ push {r3, r4}
+ ldr r2, [r0, #8]
+ ldr r3, [r0, #0xc]
+ ldr r2, [r2, #8]
+ ldrh r2, [r2, #4]
+ lsl r4, r2, #0xc
+ mov r2, #0
+ cmp r1, #0
+ ble _021F53DE
+ add r1, r3, r1
+ cmp r1, r4
+ bge _021F53D8
+ str r1, [r0, #0xc]
+ b _021F53EA
+_021F53D8:
+ str r4, [r0, #0xc]
+ mov r2, #1
+ b _021F53EA
+_021F53DE:
+ add r1, r3, r1
+ bmi _021F53E6
+ str r1, [r0, #0xc]
+ b _021F53EA
+_021F53E6:
+ str r2, [r0, #0xc]
+ mov r2, #1
+_021F53EA:
+ ldr r1, [r0, #0xc]
+ ldr r0, [r0, #8]
+ str r1, [r0]
+ add r0, r2, #0
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F53F8
+MOD05_021F53F8: ; 0x021F53F8
+ str r1, [r0, #0xc]
+ ldr r0, [r0, #8]
+ str r1, [r0]
+ bx lr
+
+ thumb_func_start MOD05_021F5400
+MOD05_021F5400: ; 0x021F5400
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0
+ mov r2, #0x78
+ add r4, r0, #0
+ bl memset
+ ldr r1, [r5, #8]
+ add r0, r4, #0
+ bl NNS_G3dRenderObjInit
+ mov r0, #1
+ str r0, [r4, #0x6c]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x60]
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x68]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F5424
+MOD05_021F5424: ; 0x021F5424
+ ldr r3, _021F542C ; =NNS_G3dRenderObjAddAnmObj
+ ldr r1, [r1, #8]
+ bx r3
+ nop
+_021F542C: .word NNS_G3dRenderObjAddAnmObj
+
+ thumb_func_start MOD05_021F5430
+MOD05_021F5430: ; 0x021F5430
+ push {r4, lr}
+ sub sp, #0x48
+ add r4, r0, #0
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ beq _021F54C4
+ add r0, sp, #0x24
+ bl MTX_Identity33_
+ add r0, r4, #0
+ add r0, #0x70
+ ldrh r0, [r0]
+ ldr r3, _021F54C8 ; =FX_SinCosTable_
+ 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, #0x74
+ ldrh r0, [r0]
+ ldr r3, _021F54C8 ; =FX_SinCosTable_
+ 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
+ add r0, r4, #0
+ add r0, #0x72
+ ldrh r0, [r0]
+ ldr r3, _021F54C8 ; =FX_SinCosTable_
+ 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 r1, r4, #0
+ add r0, r4, #0
+ add r4, #0x60
+ add r1, #0x54
+ add r2, sp, #0x24
+ add r3, r4, #0
+ bl FUN_0201B26C
+_021F54C4:
+ add sp, #0x48
+ pop {r4, pc}
+ .balign 4, 0
+_021F54C8: .word FX_SinCosTable_
+
+ thumb_func_start MOD05_021F54CC
+MOD05_021F54CC: ; 0x021F54CC
+ str r1, [r0, #0x6c]
+ bx lr
+
+ thumb_func_start MOD05_021F54D0
+MOD05_021F54D0: ; 0x021F54D0
+ str r1, [r0, #0x54]
+ str r2, [r0, #0x58]
+ str r3, [r0, #0x5c]
+ bx lr
+
+ thumb_func_start MOD05_021F54D8
+MOD05_021F54D8: ; 0x021F54D8
+ str r1, [r0, #0x60]
+ str r2, [r0, #0x64]
+ str r3, [r0, #0x68]
+ bx lr
+
+ thumb_func_start MOD05_021F54E0
+MOD05_021F54E0: ; 0x021F54E0
+ lsl r2, r2, #1
+ add r0, r0, r2
+ add r0, #0x70
+ strh r1, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F54EC
+MOD05_021F54EC: ; 0x021F54EC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [r5]
+ add r0, r2, #0
+ mov r1, #0
+ add r6, r3, #0
+ bl NNS_G3dGetAnmByIdx
+ str r0, [r5, #4]
+ ldr r1, [r5, #4]
+ ldr r2, [r4, #8]
+ add r0, r6, #0
+ bl NNS_G3dAllocAnmObj
+ str r0, [r5, #8]
+ ldr r1, [r5, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0xc]
+ bl NNS_G3dAnmObjInit
+ pop {r4, r5, r6, pc}
diff --git a/arm9/modules/05/asm/mod05_021F5518.s b/arm9/modules/05/asm/mod05_021F5518.s
new file mode 100644
index 00000000..e5fc4289
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F5518.s
@@ -0,0 +1,615 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5518
+MOD05_021F5518: ; 0x021F5518
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r0, [r1, #8]
+ add r4, r2, #0
+ bl MOD05_021F5608
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xa
+ mov r3, #0x13
+ bl MOD05_021F5660
+ mov r3, #0
+ str r3, [r4, #0x14]
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021F555C ; =0x04000050
+ mov r1, #4
+ mov r2, #0x29
+ bl G2x_SetBlendAlpha_
+ mov r0, #2
+ mov r1, #0
+ bl SetBgPriority
+ mov r0, #4
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ ldr r0, _021F5560 ; =0x00000648
+ bl PlaySE
+ add sp, #4
+ pop {r3, r4, pc}
+ .balign 4, 0
+_021F555C: .word 0x04000050
+_021F5560: .word 0x00000648
+
+ thumb_func_start MOD05_021F5564
+MOD05_021F5564: ; 0x021F5564
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r0, [r1, #8]
+ add r4, r2, #0
+ bl MOD05_021F5608
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #0
+ mov r3, #0xf
+ bl MOD05_021F5660
+ mov r0, #0
+ str r0, [r4, #0x14]
+ mov r0, #6
+ str r0, [sp]
+ ldr r0, _021F5594 ; =0x04000050
+ mov r1, #4
+ mov r2, #0x21
+ mov r3, #0xa
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ .balign 4, 0
+_021F5594: .word 0x04000050
+
+ thumb_func_start MOD05_021F5598
+MOD05_021F5598: ; 0x021F5598
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F559C
+MOD05_021F559C: ; 0x021F559C
+ push {r4, lr}
+ add r4, r2, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #1
+ beq _021F55C2
+ add r0, r4, #0
+ bl MOD05_021F5670
+ cmp r0, #0
+ beq _021F55B4
+ mov r0, #1
+ str r0, [r4, #0x14]
+_021F55B4:
+ ldr r1, [r4]
+ mov r0, #0x10
+ sub r0, r0, r1
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _021F55C4 ; =0x04000052
+ strh r1, [r0]
+_021F55C2:
+ pop {r4, pc}
+ .balign 4, 0
+_021F55C4: .word 0x04000052
+
+ thumb_func_start MOD05_021F55C8
+MOD05_021F55C8: ; 0x021F55C8
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F55CC
+MOD05_021F55CC: ; 0x021F55CC
+ ldr r0, [r0, #4]
+ ldr r3, _021F55D8 ; =MOD05_021D8024
+ ldr r0, [r0, #4]
+ ldr r1, _021F55DC ; =UNK05_021FC6C0
+ bx r3
+ nop
+_021F55D8: .word MOD05_021D8024
+_021F55DC: .word UNK05_021FC6C0
+
+ thumb_func_start MOD05_021F55E0
+MOD05_021F55E0: ; 0x021F55E0
+ ldr r3, _021F55E4 ; =MOD05_021D80A4
+ bx r3
+ .balign 4, 0
+_021F55E4: .word MOD05_021D80A4
+
+ thumb_func_start MOD05_021F55E8
+MOD05_021F55E8: ; 0x021F55E8
+ push {r3, lr}
+ bl MOD05_021D80E4
+ ldr r0, [r0, #0x14]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F55F4
+MOD05_021F55F4: ; 0x021F55F4
+ ldr r0, [r0, #4]
+ ldr r3, _021F5600 ; =MOD05_021D8024
+ ldr r0, [r0, #4]
+ ldr r1, _021F5604 ; =UNK05_021FC6A8
+ bx r3
+ nop
+_021F5600: .word MOD05_021D8024
+_021F5604: .word UNK05_021FC6A8
+
+ thumb_func_start MOD05_021F5608
+MOD05_021F5608: ; 0x021F5608
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r1, _021F5658 ; =0x00005D5F
+ add r5, r0, #0
+ add r0, sp, #4
+ strh r1, [r0]
+ mov r0, #2
+ add r1, sp, #4
+ add r2, r0, #0
+ mov r3, #0xc2
+ bl BG_LoadPlttData
+ mov r0, #4
+ mov r1, #0x20
+ bl AllocFromHeap
+ mov r1, #0x11
+ mov r2, #0x20
+ add r4, r0, #0
+ bl memset
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #2
+ add r2, r4, #0
+ mov r3, #0x20
+ bl BG_LoadCharTilesData
+ add r0, r4, #0
+ bl FreeToHeap
+ ldr r2, _021F565C ; =0x00006001
+ add r0, r5, #0
+ mov r1, #2
+ bl BgFillTilemapBufferAndCommit
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_021F5658: .word 0x00005D5F
+_021F565C: .word 0x00006001
+
+ thumb_func_start MOD05_021F5660
+MOD05_021F5660: ; 0x021F5660
+ 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_start MOD05_021F5670
+MOD05_021F5670: ; 0x021F5670
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mul r0, r1
+ ldr r1, [r4, #0x10]
+ bl _s32_div_f
+ 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 _021F5696
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021F5696:
+ str r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F569C
+MOD05_021F569C: ; 0x021F569C
+ ldr r3, _021F56A4 ; =BG_SetMaskColor
+ mov r0, #2
+ mov r1, #0
+ bx r3
+ .balign 4, 0
+_021F56A4: .word BG_SetMaskColor
+
+ thumb_func_start MOD05_021F56A8
+MOD05_021F56A8: ; 0x021F56A8
+ ldr r3, _021F56B0 ; =BG_SetMaskColor
+ mov r0, #2
+ ldr r1, _021F56B4 ; =0x00007FFF
+ bx r3
+ .balign 4, 0
+_021F56B0: .word BG_SetMaskColor
+_021F56B4: .word 0x00007FFF
+
+ thumb_func_start MOD05_021F56B8
+MOD05_021F56B8: ; 0x021F56B8
+ push {r4, lr}
+ sub sp, #8
+ ldr r1, _021F5710 ; =0x00007FFF
+ add r4, r0, #0
+ add r0, sp, #4
+ strh r1, [r0]
+ mov r0, #4
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ ldr r1, _021F5714 ; =0x0400000C
+ mov r0, #3
+ ldrh r2, [r1]
+ mov r3, #0xc4
+ bic r2, r0
+ mov r0, #3
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #2
+ add r1, sp, #4
+ add r2, r0, #0
+ bl BG_LoadPlttData
+ mov r1, #2
+ str r1, [sp]
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ mov r3, #1
+ bl BG_FillCharDataRange
+ ldr r0, [r4, #8]
+ ldr r2, _021F5718 ; =0x00006002
+ mov r1, #2
+ bl BgFillTilemapBufferAndCommit
+ mov r0, #4
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ add r0, r4, #0
+ bl MOD05_021F569C
+ add sp, #8
+ pop {r4, pc}
+ .balign 4, 0
+_021F5710: .word 0x00007FFF
+_021F5714: .word 0x0400000C
+_021F5718: .word 0x00006002
+
+ thumb_func_start MOD05_021F571C
+MOD05_021F571C: ; 0x021F571C
+ push {r4, lr}
+ sub sp, #8
+ ldr r1, _021F5774 ; =0x00007FFF
+ add r4, r0, #0
+ add r0, sp, #4
+ strh r1, [r0]
+ mov r0, #8
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ ldr r1, _021F5778 ; =0x0400000E
+ mov r0, #3
+ ldrh r2, [r1]
+ mov r3, #0xc4
+ bic r2, r0
+ mov r0, #3
+ orr r2, r0
+ strh r2, [r1]
+ add r1, sp, #4
+ mov r2, #2
+ bl BG_LoadPlttData
+ mov r2, #2
+ str r2, [sp]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ mov r3, #1
+ bl BG_FillCharDataRange
+ ldr r0, [r4, #8]
+ ldr r2, _021F577C ; =0x00006002
+ mov r1, #3
+ bl BgFillTilemapBufferAndCommit
+ mov r0, #8
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ add r0, r4, #0
+ bl MOD05_021F569C
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021F5774: .word 0x00007FFF
+_021F5778: .word 0x0400000E
+_021F577C: .word 0x00006002
+
+ thumb_func_start MOD05_021F5780
+MOD05_021F5780: ; 0x021F5780
+ push {r3, lr}
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0xc]
+ bl MOD05_021DC1D0
+ ldr r3, _021F57A4 ; =UNK05_021FC6A4
+ mov r2, #0
+_021F578E:
+ ldr r1, [r3]
+ cmp r0, r1
+ bne _021F5798
+ mov r0, #1
+ pop {r3, pc}
+_021F5798:
+ add r2, r2, #1
+ add r3, r3, #4
+ cmp r2, #1
+ blt _021F578E
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+_021F57A4: .word UNK05_021FC6A4
+
+ thumb_func_start MOD05_021F57A8
+MOD05_021F57A8: ; 0x021F57A8
+ push {r3, lr}
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0xc]
+ bl MOD05_021DC1D0
+ ldr r3, _021F57CC ; =UNK05_021FC6D8
+ mov r2, #0
+_021F57B6:
+ ldr r1, [r3]
+ cmp r0, r1
+ bne _021F57C0
+ mov r0, #0
+ pop {r3, pc}
+_021F57C0:
+ add r2, r2, #1
+ add r3, r3, #4
+ cmp r2, #0x10
+ blt _021F57B6
+ mov r0, #1
+ pop {r3, pc}
+ .balign 4, 0
+_021F57CC: .word UNK05_021FC6D8
+
+ thumb_func_start MOD05_021F57D0
+MOD05_021F57D0: ; 0x021F57D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021F57E2
+ bl MOD05_021F55E0
+ mov r0, #0
+ str r0, [r4]
+_021F57E2:
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F57EC
+MOD05_021F57EC: ; 0x021F57EC
+ mov r0, #0xc
+ bx lr
+
+ thumb_func_start MOD05_021F57F0
+MOD05_021F57F0: ; 0x021F57F0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r6, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldrh r1, [r4, #8]
+ cmp r1, #9
+ bls _021F580A
+ b _021F597C
+_021F580A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021F5816: ; jump table
+ .short _021F582A - _021F5816 - 2 ; case 0
+ .short _021F5856 - _021F5816 - 2 ; case 1
+ .short _021F5872 - _021F5816 - 2 ; case 2
+ .short _021F5888 - _021F5816 - 2 ; case 3
+ .short _021F58DA - _021F5816 - 2 ; case 4
+ .short _021F58EE - _021F5816 - 2 ; case 5
+ .short _021F5914 - _021F5816 - 2 ; case 6
+ .short _021F5936 - _021F5816 - 2 ; case 7
+ .short _021F5956 - _021F5816 - 2 ; case 8
+ .short _021F5968 - _021F5816 - 2 ; case 9
+_021F582A:
+ add r0, r5, #0
+ bl MOD05_021F57A8
+ cmp r0, #1
+ bne _021F584C
+ mov r0, #1
+ strh r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD05_021F5780
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _021F587C
+ add r0, r5, #0
+ bl MOD05_021F56A8
+ b _021F5980
+_021F584C:
+ mov r0, #7
+ strh r0, [r4, #8]
+ mov r0, #0x14
+ strh r0, [r4, #0xa]
+ b _021F5980
+_021F5856:
+ add r0, r5, #0
+ bl MOD05_021F55CC
+ str r0, [r4]
+ mov r0, #2
+ mov r1, #0
+ strh r0, [r4, #8]
+ bl SetBgPriority
+ mov r0, #4
+ mov r1, #1
+ bl GX_EngineAToggleLayers
+ b _021F5980
+_021F5872:
+ ldr r0, [r4]
+ bl MOD05_021F55E8
+ cmp r0, #0
+ bne _021F587E
+_021F587C:
+ b _021F5980
+_021F587E:
+ mov r0, #0x16
+ strh r0, [r4, #0xa]
+ mov r0, #3
+ strh r0, [r4, #8]
+ b _021F5980
+_021F5888:
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ sub r0, r0, #1
+ strh r0, [r4, #0xa]
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl MapHeader_HasWildEncounters
+ cmp r0, #0
+ beq _021F58D4
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _021F5980
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0204A6E0
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD06_0223CDB8
+ cmp r0, #0
+ beq _021F58CE
+ mov r0, #6
+ strh r0, [r4, #8]
+ b _021F5980
+_021F58CE:
+ mov r0, #4
+ strh r0, [r4, #8]
+ b _021F5980
+_021F58D4:
+ mov r0, #4
+ strh r0, [r4, #8]
+ b _021F5980
+_021F58DA:
+ ldr r0, [r4]
+ bl MOD05_021F55E0
+ add r0, r5, #0
+ bl MOD05_021F55F4
+ str r0, [r4]
+ mov r0, #5
+ strh r0, [r4, #8]
+ b _021F5980
+_021F58EE:
+ ldr r0, [r4]
+ bl MOD05_021F55E8
+ cmp r0, #0
+ beq _021F5980
+ mov r0, #4
+ mov r1, #0
+ bl GX_EngineAToggleLayers
+ ldr r0, _021F5984 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ mov r0, #2
+ mov r1, #3
+ bl SetBgPriority
+ mov r0, #8
+ strh r0, [r4, #8]
+ b _021F5980
+_021F5914:
+ bl MOD05_021F57D0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F5924
+ add r0, r5, #0
+ bl MOD05_021F571C
+_021F5924:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD06_0223BE70
+ cmp r0, #0
+ bne _021F5980
+ bl GF_AssertFail
+ b _021F5980
+_021F5936:
+ mov r0, #0xa
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #1
+ strh r1, [r4, #0xa]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _021F5980
+ mov r2, #0
+ ldr r1, _021F5988 ; =0x000007ED
+ add r0, r6, #0
+ add r3, r2, #0
+ bl FUN_02038CD8
+ mov r0, #9
+ strh r0, [r4, #8]
+ b _021F5980
+_021F5956:
+ mov r2, #0
+ ldr r1, _021F598C ; =0x000007EC
+ add r0, r6, #0
+ add r3, r2, #0
+ bl FUN_02038CD8
+ mov r0, #9
+ strh r0, [r4, #8]
+ b _021F5980
+_021F5968:
+ bl MOD05_021F57D0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021F5978
+ add r0, r5, #0
+ bl MOD05_021F56B8
+_021F5978:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021F597C:
+ bl GF_AssertFail
+_021F5980:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021F5984: .word 0x04000050
+_021F5988: .word 0x000007ED
+_021F598C: .word 0x000007EC
+
+ .section .rodata
+
+ .global UNK05_021FC6A4
+UNK05_021FC6A4: ; 0x021FC6A4
+ .byte 0x08, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC6A8
+UNK05_021FC6A8: ; 0x021FC6A8
+ .word 0x00000400, 0x00000018, MOD05_021F5564, MOD05_021F5598
+ .word MOD05_021F559C, MOD05_021F55C8
+
+ .global UNK05_021FC6C0
+UNK05_021FC6C0: ; 0x021FC6C0
+ .word 0x00000400, 0x00000018, MOD05_021F5518, MOD05_021F5598
+ .word MOD05_021F559C, MOD05_021F55C8
+
+ .global UNK05_021FC6D8
+UNK05_021FC6D8: ; 0x021FC6D8
+ .byte 0x02, 0x00, 0x00, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
+ .byte 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00
+ .byte 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021F5990.s b/arm9/modules/05/asm/mod05_021F5990.s
new file mode 100644
index 00000000..6ec80f54
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F5990.s
@@ -0,0 +1,309 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5990
+MOD05_021F5990: ; 0x021F5990
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r2, #0
+ lsl r2, r3, #3
+ add r6, r5, r2
+ add r6, #0x18
+ str r2, [sp, #8]
+ add r2, r6, #0
+ str r0, [sp]
+ add r7, r1, #0
+ str r3, [sp, #4]
+ bl CreateHeap
+ cmp r0, #1
+ beq _021F59B2
+ bl GF_AssertFail
+_021F59B2:
+ sub r5, r6, r5
+ add r0, r7, #0
+ add r1, r5, #0
+ bl AllocFromHeap
+ add r4, r0, #0
+ bne _021F59C4
+ bl GF_AssertFail
+_021F59C4:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl memset
+ ldr r0, [sp]
+ str r0, [r4]
+ ldr r0, [sp, #4]
+ str r7, [r4, #4]
+ str r0, [r4, #8]
+ ldr r0, [sp, #8]
+ str r6, [r4, #0xc]
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0x18
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F59EC
+MOD05_021F59EC: ; 0x021F59EC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r4, [r6, #8]
+ ldr r5, [r6, #0x14]
+ cmp r4, #0
+ beq _021F5A0E
+_021F59F8:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021F5A06
+ ldr r1, [r5, #4]
+ add r0, r6, #0
+ bl MOD05_021F5A74
+_021F5A06:
+ sub r4, r4, #1
+ add r5, #8
+ cmp r4, #0
+ bne _021F59F8
+_021F5A0E:
+ ldr r4, [r6, #4]
+ add r0, r6, #0
+ bl FreeToHeap
+ add r0, r4, #0
+ bl DestroyHeap
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5A20
+MOD05_021F5A20: ; 0x021F5A20
+ ldr r3, _021F5A24 ; =MOD05_021F5B14
+ bx r3
+ .balign 4, 0
+_021F5A24: .word MOD05_021F5B14
+
+ thumb_func_start MOD05_021F5A28
+MOD05_021F5A28: ; 0x021F5A28
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD05_021F5B5C
+ str r0, [sp]
+ cmp r0, #0
+ bne _021F5A40
+ bl GF_AssertFail
+_021F5A40:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD05_021F5B14
+ add r5, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD05_021F5B8C
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5A5C
+MOD05_021F5A5C: ; 0x021F5A5C
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD05_021F5B74
+ cmp r0, #0
+ beq _021F5A6C
+ bl MOD05_021F5B94
+_021F5A6C:
+ add r0, r4, #0
+ bl MOD05_021F5B34
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5A74
+MOD05_021F5A74: ; 0x021F5A74
+ push {r4, lr}
+ bl MOD05_021F5B3C
+ add r4, r0, #0
+ bne _021F5A82
+ bl GF_AssertFail
+_021F5A82:
+ ldr r0, [r4]
+ bl MOD05_021F5B34
+ add r0, r4, #0
+ bl MOD05_021F5B94
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5A90
+MOD05_021F5A90: ; 0x021F5A90
+ push {r4, lr}
+ bl MOD05_021F5B3C
+ add r4, r0, #0
+ bne _021F5A9E
+ bl GF_AssertFail
+_021F5A9E:
+ ldr r0, [r4]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5AA4
+MOD05_021F5AA4: ; 0x021F5AA4
+ push {r3, lr}
+ bl MOD05_021F5B3C
+ cmp r0, #0
+ beq _021F5AB2
+ mov r0, #1
+ pop {r3, pc}
+_021F5AB2:
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5AB8
+MOD05_021F5AB8: ; 0x021F5AB8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r0, #0
+ add r7, r3, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl NARC_GetMemberSize
+ add r1, r0, #0
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD05_021F5A20
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl NARC_ReadWholeMember
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F5AE4
+MOD05_021F5AE4: ; 0x021F5AE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r7, r3, #0
+ add r6, r1, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl NARC_GetMemberSize
+ add r2, r0, #0
+ ldr r3, [sp, #0x18]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021F5A28
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl NARC_ReadWholeMember
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5B14
+MOD05_021F5B14: ; 0x021F5B14
+ push {r4, lr}
+ cmp r2, #0
+ ldr r0, [r0, #4]
+ bne _021F5B22
+ bl AllocFromHeap
+ b _021F5B26
+_021F5B22:
+ bl AllocFromHeapAtEnd
+_021F5B26:
+ add r4, r0, #0
+ cmp r4, #0
+ bne _021F5B30
+ bl GF_AssertFail
+_021F5B30:
+ add r0, r4, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5B34
+MOD05_021F5B34: ; 0x021F5B34
+ ldr r3, _021F5B38 ; =FreeToHeap
+ bx r3
+ .balign 4, 0
+_021F5B38: .word FreeToHeap
+
+ thumb_func_start MOD05_021F5B3C
+MOD05_021F5B3C: ; 0x021F5B3C
+ ldr r3, [r0, #8]
+ ldr r0, [r0, #0x14]
+ cmp r3, #0
+ beq _021F5B56
+_021F5B44:
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _021F5B50
+ ldr r2, [r0, #4]
+ cmp r2, r1
+ beq _021F5B58
+_021F5B50:
+ add r0, #8
+ sub r3, r3, #1
+ bne _021F5B44
+_021F5B56:
+ mov r0, #0
+_021F5B58:
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5B5C
+MOD05_021F5B5C: ; 0x021F5B5C
+ ldr r2, [r0, #8]
+ ldr r0, [r0, #0x14]
+ cmp r2, #0
+ beq _021F5B70
+_021F5B64:
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021F5B72
+ add r0, #8
+ sub r2, r2, #1
+ bne _021F5B64
+_021F5B70:
+ mov r0, #0
+_021F5B72:
+ bx lr
+
+ thumb_func_start MOD05_021F5B74
+MOD05_021F5B74: ; 0x021F5B74
+ ldr r3, [r0, #8]
+ ldr r0, [r0, #0x14]
+ cmp r3, #0
+ beq _021F5B88
+_021F5B7C:
+ ldr r2, [r0]
+ cmp r2, r1
+ beq _021F5B8A
+ add r0, #8
+ sub r3, r3, #1
+ bne _021F5B7C
+_021F5B88:
+ mov r0, #0
+_021F5B8A:
+ bx lr
+
+ thumb_func_start MOD05_021F5B8C
+MOD05_021F5B8C: ; 0x021F5B8C
+ str r2, [r0]
+ str r1, [r0, #4]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5B94
+MOD05_021F5B94: ; 0x021F5B94
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ bx lr
diff --git a/arm9/modules/05/asm/mod05_021F5B9C.s b/arm9/modules/05/asm/mod05_021F5B9C.s
new file mode 100644
index 00000000..7c57b16b
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F5B9C.s
@@ -0,0 +1,84 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5B9C
+MOD05_021F5B9C: ; 0x021F5B9C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl FUN_02050DF0
+ add r7, r0, #0
+ beq _021F5C40
+ bl MOD18_0223E2C4
+ add r6, r0, #0
+ bl MOD18_0223E2DC
+ lsl r1, r6, #0x15
+ lsl r0, r0, #0x15
+ mov r4, #0
+ str r1, [sp, #0xc]
+ str r0, [sp, #8]
+_021F5BC0:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_020267C4
+ add r6, r0, #0
+ bl FUN_0204CA80
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ bl FUN_0204CA90
+ str r0, [sp, #0x14]
+ cmp r6, #0
+ beq _021F5C3A
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02026810
+ str r0, [sp, #0x18]
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02026840
+ mov r2, #1
+ ldr r1, [sp, #0x18]
+ lsl r2, r2, #0xc
+ str r2, [sp, #0x20]
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ ldr r2, [sp, #0xc]
+ str r1, [sp, #0x1c]
+ add r1, r1, r2
+ ldr r2, [sp, #8]
+ str r0, [sp, #0x24]
+ add r0, r0, r2
+ ldr r2, [sp, #0x10]
+ str r1, [sp, #0x1c]
+ lsl r2, r2, #0xf
+ add r1, r1, r2
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #0x24]
+ lsl r1, r1, #0xf
+ add r0, r0, r1
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0x2c]
+ add r1, r6, #0
+ bl MOD05_021F4CD4
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #0x4c]
+ add r3, sp, #0x1c
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ bl MOD05_021E7FBC
+_021F5C3A:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _021F5BC0
+_021F5C40:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
diff --git a/arm9/modules/05/asm/mod05_021F5C44.s b/arm9/modules/05/asm/mod05_021F5C44.s
new file mode 100644
index 00000000..5bf30612
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F5C44.s
@@ -0,0 +1,834 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F5C44
+MOD05_021F5C44: ; 0x021F5C44
+ push {r3, r4, r5, lr}
+ add r0, r1, #0
+ mov r1, #0x18
+ add r5, r2, #0
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021F5C58:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021F5C58
+ add r0, r5, #0
+ str r5, [r4, #0xc]
+ bl MOD05_021F61B0
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5C70
+MOD05_021F5C70: ; 0x021F5C70
+ push {r3, r4, r5, r6, r7, lr}
+ 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, #0
+ beq _021F5C8E
+ cmp r0, #1
+ beq _021F5CBA
+ b _021F5D28
+_021F5C8E:
+ ldr r0, [r4, #0x34]
+ bl FUN_02058780
+ mov r0, #0
+ str r0, [r5, #0x10]
+ add r2, r5, #0
+ ldr r1, [r5, #0xc]
+ add r0, r4, #0
+ add r2, #0x10
+ bl MOD06_0223BD14
+ str r0, [r5, #8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r5, #8]
+ add r0, r4, #0
+ bl MOD05_021F5D2C
+ str r0, [r5, #0x14]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021F5D28
+_021F5CBA:
+ ldr r0, [r5, #0x14]
+ bl MOD05_021F5D50
+ cmp r0, #1
+ bne _021F5D28
+ ldr r0, [r5, #0x14]
+ bl MOD05_021F5D5C
+ add r7, r0, #0
+ ldr r0, [r5, #0x14]
+ bl MOD05_021F5D68
+ cmp r7, #1
+ ldr r0, [r5, #0x10]
+ bne _021F5D10
+ ldr r0, [r0, #8]
+ mov r1, #0
+ bl GetPartyMonByIndex
+ ldr r2, [r5, #4]
+ add r3, r0, #0
+ lsl r2, r2, #0x10
+ add r0, r4, #0
+ mov r1, #1
+ lsr r2, r2, #0x10
+ bl FUN_02061208
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0xa
+ bl FUN_0202A0E8
+ ldr r2, [r5, #0x10]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_02046A20
+ add r0, r5, #0
+ bl FreeToHeap
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F5D10:
+ cmp r0, #0
+ beq _021F5D18
+ bl FUN_02047964
+_021F5D18:
+ ldr r0, [r4, #0x34]
+ bl FUN_020587B0
+ add r0, r5, #0
+ bl FreeToHeap
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F5D28:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021F5D2C
+MOD05_021F5D2C: ; 0x021F5D2C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x4c
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD05_021F6074
+ add r1, r0, #0
+ str r5, [r1, #0x20]
+ str r4, [r1, #0x1c]
+ ldr r0, _021F5D4C ; =MOD05_021F5D7C
+ mov r2, #0x80
+ str r6, [r1]
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021F5D4C: .word MOD05_021F5D7C
+
+ thumb_func_start MOD05_021F5D50
+MOD05_021F5D50: ; 0x021F5D50
+ push {r3, lr}
+ bl FUN_0201B6C8
+ ldr r0, [r0, #4]
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5D5C
+MOD05_021F5D5C: ; 0x021F5D5C
+ push {r3, lr}
+ bl FUN_0201B6C8
+ ldr r0, [r0, #8]
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5D68
+MOD05_021F5D68: ; 0x021F5D68
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201B6C8
+ bl FreeToHeap
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5D7C
+MOD05_021F5D7C: ; 0x021F5D7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x20]
+ ldr r6, [r0, #0x38]
+ add r0, r6, #0
+ bl FUN_020553A0
+ ldr r7, _021F5DA4 ; =UNK05_021FC9B8
+ add r4, r0, #0
+_021F5D8E:
+ ldr r3, [r5, #0xc]
+ add r0, r5, #0
+ lsl r3, r3, #2
+ ldr r3, [r7, r3]
+ add r1, r6, #0
+ add r2, r4, #0
+ blx r3
+ cmp r0, #0
+ bne _021F5D8E
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F5DA4: .word UNK05_021FC9B8
+
+ thumb_func_start MOD05_021F5DA8
+MOD05_021F5DA8: ; 0x021F5DA8
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ bl MOD05_021F60C4
+ add r0, r4, #0
+ bl FUN_02058914
+ mov r0, #1
+ str r0, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5DC0
+MOD05_021F5DC0: ; 0x021F5DC0
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r1, #0
+ bl FUN_0205AD98
+ cmp r0, #1
+ bne _021F5DF2
+ add r0, r6, #0
+ bl FUN_0205AE50
+ add r0, r4, #0
+ mov r1, #0x20
+ bl MOD05_021E5FD8
+ add r0, r4, #0
+ bl MOD05_021E5FE0
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_02058544
+ mov r0, #2
+ str r0, [r5, #0xc]
+_021F5DF2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5DF8
+MOD05_021F5DF8: ; 0x021F5DF8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #0xa
+ bne _021F5E0E
+ mov r0, #0x65
+ lsl r0, r0, #4
+ bl PlaySE
+_021F5E0E:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x22
+ bge _021F5E18
+ mov r0, #0
+ pop {r4, pc}
+_021F5E18:
+ ldr r0, [r4]
+ cmp r0, #1
+ bne _021F5E22
+ mov r0, #3
+ b _021F5E24
+_021F5E22:
+ mov r0, #0xc
+_021F5E24:
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5E30
+MOD05_021F5E30: ; 0x021F5E30
+ push {r4, lr}
+ add r4, r0, #0
+ bl LCRandom
+ lsr r1, r0, #0x1f
+ lsl r0, r0, #0x1e
+ sub r0, r0, r1
+ mov r2, #0x1e
+ ror r0, r2
+ add r0, r1, r0
+ add r0, r0, #1
+ add r1, r0, #0
+ mul r1, r2
+ str r1, [r4, #0x14]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r0, #2
+ ldr r0, _021F5E60 ; =UNK05_021FC9AC
+ ldr r0, [r0, r1]
+ str r0, [r4, #0x18]
+ mov r0, #4
+ str r0, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+ nop
+_021F5E60: .word UNK05_021FC9AC
+
+ thumb_func_start MOD05_021F5E64
+MOD05_021F5E64: ; 0x021F5E64
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x14]
+ add r4, r2, #0
+ sub r0, r0, #1
+ str r0, [r5, #0x14]
+ bl MOD05_021F6098
+ cmp r0, #1
+ bne _021F5E80
+ mov r0, #0xa
+ str r0, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F5E80:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ ble _021F5E8A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F5E8A:
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02058544
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD05_021E7AC0
+ str r0, [r5, #0x24]
+ mov r0, #5
+ str r0, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5EA8
+MOD05_021F5EA8: ; 0x021F5EA8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ sub r0, r0, #1
+ str r0, [r4, #0x18]
+ bl MOD05_021F6098
+ cmp r0, #1
+ bne _021F5EC2
+ mov r0, #6
+ str r0, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+_021F5EC2:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ ble _021F5ECC
+ mov r0, #0
+ pop {r4, pc}
+_021F5ECC:
+ mov r0, #0xb
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5ED4
+MOD05_021F5ED4: ; 0x021F5ED4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ add r4, r2, #0
+ bl FUN_02064520
+ mov r0, #0
+ str r0, [r5, #0x24]
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02058544
+ mov r0, #0
+ str r0, [r5, #0x10]
+ mov r1, #7
+ str r1, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5EF8
+MOD05_021F5EF8: ; 0x021F5EF8
+ push {r3, lr}
+ ldr r1, [r0, #0x10]
+ add r1, r1, #1
+ str r1, [r0, #0x10]
+ cmp r1, #0xf
+ ble _021F5F12
+ mov r1, #0
+ str r1, [r0, #0x10]
+ mov r1, #8
+ str r1, [r0, #0xc]
+ mov r1, #0x39
+ bl MOD05_021F6140
+_021F5F12:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5F18
+MOD05_021F5F18: ; 0x021F5F18
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021F617C
+ cmp r0, #0
+ bne _021F5F28
+ mov r0, #0
+ pop {r4, pc}
+_021F5F28:
+ mov r0, #9
+ str r0, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5F30
+MOD05_021F5F30: ; 0x021F5F30
+ mov r2, #1
+ str r2, [r0, #8]
+ mov r1, #0xf
+ str r1, [r0, #0xc]
+ add r0, r2, #0
+ bx lr
+
+ thumb_func_start MOD05_021F5F3C
+MOD05_021F5F3C: ; 0x021F5F3C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r2, #0
+ mov r1, #0
+ bl FUN_02058544
+ add r0, r4, #0
+ mov r1, #0x38
+ bl MOD05_021F6140
+ mov r0, #0x10
+ str r0, [r4, #0x10]
+ mov r0, #0xe
+ str r0, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5F5C
+MOD05_021F5F5C: ; 0x021F5F5C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r2, #0
+ mov r1, #0
+ bl FUN_02058544
+ add r0, r4, #0
+ mov r1, #0x37
+ bl MOD05_021F6140
+ mov r0, #0x10
+ str r0, [r4, #0x10]
+ mov r0, #0xe
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x20]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x49
+ bl FUN_0202A0E8
+ ldr r0, [r4, #0x1c]
+ bl MOD05_021F61B0
+ add r2, r0, #0
+ mov r1, #0
+ ldr r0, [r4, #0x20]
+ add r3, r1, #0
+ bl FUN_02061208
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F5F9C
+MOD05_021F5F9C: ; 0x021F5F9C
+ mov r1, #0x78
+ str r1, [r0, #0x10]
+ mov r1, #0xd
+ str r1, [r0, #0xc]
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD05_021F5FA8
+MOD05_021F5FA8: ; 0x021F5FA8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ add r4, r2, #0
+ sub r0, r0, #1
+ str r0, [r5, #0x10]
+ bl MOD05_021F6098
+ cmp r0, #1
+ bne _021F5FC4
+ mov r0, #0xa
+ str r0, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021F5FC4:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ beq _021F5FCE
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021F5FCE:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02058544
+ add r0, r5, #0
+ mov r1, #0x36
+ bl MOD05_021F6140
+ mov r0, #0x10
+ str r0, [r5, #0x10]
+ mov r0, #0xe
+ str r0, [r5, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F5FEC
+MOD05_021F5FEC: ; 0x021F5FEC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x10]
+ add r1, r1, #1
+ str r1, [r4, #0x10]
+ cmp r1, #0x10
+ bge _021F5FFE
+ mov r0, #0
+ pop {r4, pc}
+_021F5FFE:
+ mov r1, #0x10
+ str r1, [r4, #0x10]
+ bl MOD05_021F617C
+ cmp r0, #0
+ bne _021F600E
+ mov r0, #0
+ pop {r4, pc}
+_021F600E:
+ mov r0, #0xf
+ str r0, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F6018
+MOD05_021F6018: ; 0x021F6018
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021F602C
+ bl FUN_02064520
+ mov r0, #0
+ str r0, [r5, #0x24]
+_021F602C:
+ add r0, r5, #0
+ bl MOD05_021F60FC
+ add r0, r4, #0
+ bl FUN_020553C4
+ bl FUN_02055648
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E5FD8
+ add r0, r4, #0
+ bl MOD05_021E5FE0
+ mov r0, #0
+ str r0, [r5, #0x10]
+ mov r0, #0x10
+ str r0, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F6058
+MOD05_021F6058: ; 0x021F6058
+ ldr r1, [r0, #0x10]
+ add r1, r1, #1
+ str r1, [r0, #0x10]
+ cmp r1, #2
+ ble _021F6066
+ mov r1, #0x11
+ str r1, [r0, #0xc]
+_021F6066:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD05_021F606C
+MOD05_021F606C: ; 0x021F606C
+ mov r1, #1
+ str r1, [r0, #4]
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD05_021F6074
+MOD05_021F6074: ; 0x021F6074
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ add r1, r5, #0
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ bne _021F6088
+ bl GF_AssertFail
+_021F6088:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl memset
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F6098
+MOD05_021F6098: ; 0x021F6098
+ ldr r0, _021F60A8 ; =gMain
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r1, r0
+ bne _021F60A4
+ mov r0, #0
+_021F60A4:
+ bx lr
+ nop
+_021F60A8: .word gMain
+
+ thumb_func_start MOD05_021F60AC
+MOD05_021F60AC: ; 0x021F60AC
+ ldr r0, _021F60C0 ; =gMain
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021F60BA
+ mov r0, #1
+ bx lr
+_021F60BA:
+ mov r0, #0
+ bx lr
+ nop
+_021F60C0: .word gMain
+
+ thumb_func_start MOD05_021F60C4
+MOD05_021F60C4: ; 0x021F60C4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0x1a
+ mov r2, #0xc7
+ mov r3, #4
+ bl NewMsgDataFromNarc
+ str r0, [r4, #0x48]
+ mov r0, #1
+ lsl r0, r0, #0xa
+ mov r1, #4
+ bl String_ctor
+ str r0, [r4, #0x2c]
+ mov r0, #1
+ lsl r0, r0, #0xa
+ mov r1, #4
+ bl String_ctor
+ str r0, [r4, #0x30]
+ mov r0, #8
+ mov r1, #0x40
+ mov r2, #4
+ bl ScrStrBufs_new_custom
+ str r0, [r4, #0x34]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F60FC
+MOD05_021F60FC: ; 0x021F60FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ bl ScrStrBufs_delete
+ ldr r0, [r4, #0x2c]
+ bl String_dtor
+ ldr r0, [r4, #0x30]
+ bl String_dtor
+ ldr r0, [r4, #0x48]
+ bl DestroyMsgData
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F611C
+MOD05_021F611C: ; 0x021F611C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x20]
+ add r1, r5, #0
+ ldr r0, [r4, #8]
+ add r1, #0x38
+ mov r2, #3
+ bl FUN_020545B8
+ ldr r0, [r4, #0xc]
+ bl Sav2_PlayerData_GetOptionsAddr
+ add r5, #0x38
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_02054608
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021F6140
+MOD05_021F6140: ; 0x021F6140
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD05_021F611C
+ ldr r0, [r5, #0x48]
+ ldr r2, [r5, #0x30]
+ add r1, r6, #0
+ ldr r4, [r5, #0x20]
+ bl ReadMsgDataIntoString
+ ldr r0, [r5, #0x34]
+ ldr r1, [r5, #0x2c]
+ ldr r2, [r5, #0x30]
+ bl StringExpandPlaceholders
+ ldr r0, [r4, #0xc]
+ bl Sav2_PlayerData_GetOptionsAddr
+ add r2, r0, #0
+ add r0, r5, #0
+ ldr r1, [r5, #0x2c]
+ add r0, #0x38
+ mov r3, #1
+ bl FUN_02054658
+ add r5, #0x28
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F617C
+MOD05_021F617C: ; 0x021F617C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x28
+ ldrb r0, [r0]
+ bl FUN_020546C8
+ cmp r0, #1
+ bne _021F61AA
+ bl MOD05_021F60AC
+ cmp r0, #1
+ bne _021F61AA
+ add r0, r4, #0
+ add r0, #0x38
+ mov r1, #0
+ bl ClearFrameAndWindow2
+ add r4, #0x38
+ add r0, r4, #0
+ bl RemoveWindow
+ mov r0, #1
+ pop {r4, pc}
+_021F61AA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F61B0
+MOD05_021F61B0: ; 0x021F61B0
+ push {r3, lr}
+ cmp r0, #0
+ beq _021F61C2
+ cmp r0, #1
+ beq _021F61C6
+ cmp r0, #2
+ beq _021F61CA
+ bl GF_AssertFail
+_021F61C2:
+ ldr r0, _021F61D0 ; =0x000001BD
+ pop {r3, pc}
+_021F61C6:
+ ldr r0, _021F61D4 ; =0x000001BE
+ pop {r3, pc}
+_021F61CA:
+ ldr r0, _021F61D8 ; =0x000001BF
+ pop {r3, pc}
+ nop
+_021F61D0: .word 0x000001BD
+_021F61D4: .word 0x000001BE
+_021F61D8: .word 0x000001BF
+
+ .section .rodata
+
+ .global UNK05_021FC718
+UNK05_021FC718: ; 0x021FC718
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
+ .byte 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
+ .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00
+ .byte 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC79C
+UNK05_021FC79C: ; 0x021FC79C
+ .byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
+ .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK05_021FC820
+UNK05_021FC820: ; 0x021FC820
+ .word 0x00, MOD06_022492B0, MOD06_022492D4
+ .word 0x01, MOD06_022497A0, MOD06_022497BC
+ .word 0x02, MOD05_021E52A8, MOD05_021E52C4
+ .word 0x03, MOD05_021E5300, MOD05_021E531C
+ .word 0x04, MOD05_021E5564, MOD05_021E5580
+ .word 0x05, MOD05_021E55BC, MOD05_021E55D8
+ .word 0x06, MOD05_021E577C, MOD05_021E5798
+ .word 0x07, MOD05_021E5918, MOD05_021E5934
+ .word 0x08, MOD05_021E5AB4, MOD05_021E5AD0
+ .word 0x09, MOD05_021E5C8C, MOD05_021E5CA8
+ .word 0x0A, MOD05_021E5E10, MOD05_021E5E2C
+ .word 0x0B, MOD06_02249C98, MOD06_02249CB8
+ .word 0x0C, MOD06_0224A040, MOD06_0224A05C
+ .word 0x0D, MOD06_0224A280, MOD06_0224A29C
+ .word 0x0E, MOD06_0224A63C, MOD06_0224A658
+ .word 0x0F, MOD06_0224A87C, MOD06_0224A898
+ .word 0x10, MOD05_021EDB70, MOD05_021EDB8C
+ .word 0x11, MOD06_0224AB54, MOD06_0224AB70
+ .word 0x12, MOD06_0224AE10, MOD06_0224AE24
+ .word 0x13, MOD06_0224B0A8, MOD06_0224B0C4
+ .word 0x14, MOD06_0224B248, MOD06_0224B264
+ .word 0x15, MOD06_0224B3E4, MOD06_0224B400
+ .word 0x16, MOD05_021E779C, MOD05_021E77B0
+ .word 0x17, MOD06_0224B948, MOD06_0224B964
+ .word 0x18, MOD05_021ED9C0, MOD05_021ED9DC
+ .word 0x19, MOD06_0224BB50, MOD06_0224BB6C
+ .word 0x1A, MOD06_0224BCF4, MOD06_0224BD10
+ .word 0x1B, MOD06_0224BF9C, MOD06_0224BFB8
+ .word 0x1C, MOD06_0224CE30, MOD06_0224CE4C
+ .word 0x1D, MOD06_0224D244, MOD06_0224D260
+ .word 0x1E, MOD06_0224A44C, MOD06_0224A460
+ .word 0x1F, MOD06_0224A9E8, MOD06_0224AA04
+ .word 0x20, 0x00000000, 0x00000000
+
+ .global UNK05_021FC9AC
+UNK05_021FC9AC: ; 0x021FC9AC
+ .word 45, 30, 15
+
+ .global UNK05_021FC9B8
+UNK05_021FC9B8: ; 0x021FC9B8
+ .word MOD05_021F5DA8, MOD05_021F5DC0, MOD05_021F5DF8, MOD05_021F5E30
+ .word MOD05_021F5E64, MOD05_021F5EA8, MOD05_021F5ED4, MOD05_021F5EF8
+ .word MOD05_021F5F18, MOD05_021F5F30, MOD05_021F5F3C, MOD05_021F5F5C
+ .word MOD05_021F5F9C, MOD05_021F5FA8, MOD05_021F5FEC, MOD05_021F6018
+ .word MOD05_021F6058, MOD05_021F606C
diff --git a/arm9/modules/05/asm/mod05_021F61DC.s b/arm9/modules/05/asm/mod05_021F61DC.s
new file mode 100644
index 00000000..72d0f1a7
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F61DC.s
@@ -0,0 +1,521 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F61DC
+MOD05_021F61DC: ; 0x021F61DC
+ lsl r1, r0, #2
+ ldr r0, _021F61E4 ; =UNK05_021FCA00
+ ldrh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_021F61E4: .word UNK05_021FCA00
+
+ thumb_func_start MOD05_021F61E8
+MOD05_021F61E8: ; 0x021F61E8
+ lsl r1, r0, #2
+ ldr r0, _021F61F0 ; =UNK05_021FCA00 + 2
+ ldrh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_021F61F0: .word UNK05_021FCA00 + 2
+
+ .section .rodata
+
+ .global UNK05_021FCA00
+UNK05_021FCA00: ; 0x021FCA00
+ .short 0x0000, 0x0000 ; SPECIES_NONE
+ .short 0x0001, 0x0001 ; SPECIES_BULBASAUR
+ .short 0x0001, 0x0001 ; SPECIES_IVYSAUR
+ .short 0x0002, 0x0001 ; SPECIES_VENUSAUR
+ .short 0x0001, 0x0001 ; SPECIES_CHARMANDER
+ .short 0x0002, 0x0001 ; SPECIES_CHARMELEON
+ .short 0x0002, 0x0001 ; SPECIES_CHARIZARD
+ .short 0x0001, 0x0001 ; SPECIES_SQUIRTLE
+ .short 0x0001, 0x0001 ; SPECIES_WARTORTLE
+ .short 0x0002, 0x0001 ; SPECIES_BLASTOISE
+ .short 0x0001, 0x0001 ; SPECIES_CATERPIE
+ .short 0x0005, 0x0000 ; SPECIES_METAPOD
+ .short 0x0001, 0x0001 ; SPECIES_BUTTERFREE
+ .short 0x0001, 0x0001 ; SPECIES_WEEDLE
+ .short 0x0005, 0x0000 ; SPECIES_KAKUNA
+ .short 0x0002, 0x0001 ; SPECIES_BEEDRILL
+ .short 0x0001, 0x0001 ; SPECIES_PIDGEY
+ .short 0x0001, 0x0001 ; SPECIES_PIDGEOTTO
+ .short 0x0002, 0x0001 ; SPECIES_PIDGEOT
+ .short 0x0001, 0x0001 ; SPECIES_RATTATA
+ .short 0x0002, 0x0001 ; SPECIES_RATICATE
+ .short 0x0002, 0x0001 ; SPECIES_SPEAROW
+ .short 0x0002, 0x0001 ; SPECIES_FEAROW
+ .short 0x0003, 0x0000 ; SPECIES_EKANS
+ .short 0x0003, 0x0000 ; SPECIES_ARBOK
+ .short 0x0001, 0x0001 ; SPECIES_PIKACHU
+ .short 0x0001, 0x0001 ; SPECIES_RAICHU
+ .short 0x0001, 0x0001 ; SPECIES_SANDSHREW
+ .short 0x0001, 0x0001 ; SPECIES_SANDSLASH
+ .short 0x0001, 0x0001 ; SPECIES_NIDORAN_F
+ .short 0x0001, 0x0001 ; SPECIES_NIDORINA
+ .short 0x0002, 0x0001 ; SPECIES_NIDOQUEEN
+ .short 0x0001, 0x0001 ; SPECIES_NIDORAN_M
+ .short 0x0002, 0x0001 ; SPECIES_NIDORINO
+ .short 0x0002, 0x0001 ; SPECIES_NIDOKING
+ .short 0x0001, 0x0001 ; SPECIES_CLEFAIRY
+ .short 0x0001, 0x0001 ; SPECIES_CLEFABLE
+ .short 0x0001, 0x0001 ; SPECIES_VULPIX
+ .short 0x0002, 0x0001 ; SPECIES_NINETALES
+ .short 0x0001, 0x0001 ; SPECIES_JIGGLYPUFF
+ .short 0x0001, 0x0001 ; SPECIES_WIGGLYTUFF
+ .short 0x0003, 0x0000 ; SPECIES_ZUBAT
+ .short 0x0003, 0x0001 ; SPECIES_GOLBAT
+ .short 0x0001, 0x0001 ; SPECIES_ODDISH
+ .short 0x0001, 0x0001 ; SPECIES_GLOOM
+ .short 0x0001, 0x0001 ; SPECIES_VILEPLUME
+ .short 0x0005, 0x0001 ; SPECIES_PARAS
+ .short 0x0005, 0x0001 ; SPECIES_PARASECT
+ .short 0x0001, 0x0001 ; SPECIES_VENONAT
+ .short 0x0005, 0x0001 ; SPECIES_VENOMOTH
+ .short 0x0001, 0x0000 ; SPECIES_DIGLETT
+ .short 0x0001, 0x0000 ; SPECIES_DUGTRIO
+ .short 0x0001, 0x0001 ; SPECIES_MEOWTH
+ .short 0x0002, 0x0001 ; SPECIES_PERSIAN
+ .short 0x0004, 0x0001 ; SPECIES_PSYDUCK
+ .short 0x0002, 0x0001 ; SPECIES_GOLDUCK
+ .short 0x0002, 0x0001 ; SPECIES_MANKEY
+ .short 0x0002, 0x0001 ; SPECIES_PRIMEAPE
+ .short 0x0001, 0x0001 ; SPECIES_GROWLITHE
+ .short 0x0002, 0x0001 ; SPECIES_ARCANINE
+ .short 0x0001, 0x0001 ; SPECIES_POLIWAG
+ .short 0x0001, 0x0001 ; SPECIES_POLIWHIRL
+ .short 0x0002, 0x0001 ; SPECIES_POLIWRATH
+ .short 0x0001, 0x0001 ; SPECIES_ABRA
+ .short 0x0002, 0x0001 ; SPECIES_KADABRA
+ .short 0x0002, 0x0001 ; SPECIES_ALAKAZAM
+ .short 0x0001, 0x0001 ; SPECIES_MACHOP
+ .short 0x0002, 0x0001 ; SPECIES_MACHOKE
+ .short 0x0002, 0x0001 ; SPECIES_MACHAMP
+ .short 0x0001, 0x0001 ; SPECIES_BELLSPROUT
+ .short 0x0004, 0x0000 ; SPECIES_WEEPINBELL
+ .short 0x0004, 0x0000 ; SPECIES_VICTREEBEL
+ .short 0x0002, 0x0000 ; SPECIES_TENTACOOL
+ .short 0x0002, 0x0000 ; SPECIES_TENTACRUEL
+ .short 0x0001, 0x0000 ; SPECIES_GEODUDE
+ .short 0x0002, 0x0001 ; SPECIES_GRAVELER
+ .short 0x0002, 0x0001 ; SPECIES_GOLEM
+ .short 0x0001, 0x0001 ; SPECIES_PONYTA
+ .short 0x0002, 0x0001 ; SPECIES_RAPIDASH
+ .short 0x0004, 0x0001 ; SPECIES_SLOWPOKE
+ .short 0x0004, 0x0001 ; SPECIES_SLOWBRO
+ .short 0x0005, 0x0001 ; SPECIES_MAGNEMITE
+ .short 0x0005, 0x0001 ; SPECIES_MAGNETON
+ .short 0x0002, 0x0001 ; SPECIES_FARFETCHD
+ .short 0x0001, 0x0001 ; SPECIES_DODUO
+ .short 0x0002, 0x0001 ; SPECIES_DODRIO
+ .short 0x0004, 0x0000 ; SPECIES_SEEL
+ .short 0x0004, 0x0000 ; SPECIES_DEWGONG
+ .short 0x0003, 0x0000 ; SPECIES_GRIMER
+ .short 0x0003, 0x0000 ; SPECIES_MUK
+ .short 0x0004, 0x0000 ; SPECIES_SHELLDER
+ .short 0x0002, 0x0000 ; SPECIES_CLOYSTER
+ .short 0x0003, 0x0000 ; SPECIES_GASTLY
+ .short 0x0003, 0x0000 ; SPECIES_HAUNTER
+ .short 0x0003, 0x0001 ; SPECIES_GENGAR
+ .short 0x0002, 0x0000 ; SPECIES_ONIX
+ .short 0x0003, 0x0001 ; SPECIES_DROWZEE
+ .short 0x0003, 0x0001 ; SPECIES_HYPNO
+ .short 0x0001, 0x0001 ; SPECIES_KRABBY
+ .short 0x0002, 0x0001 ; SPECIES_KINGLER
+ .short 0x0002, 0x0000 ; SPECIES_VOLTORB
+ .short 0x0002, 0x0000 ; SPECIES_ELECTRODE
+ .short 0x0001, 0x0000 ; SPECIES_EXEGGCUTE
+ .short 0x0004, 0x0001 ; SPECIES_EXEGGUTOR
+ .short 0x0001, 0x0001 ; SPECIES_CUBONE
+ .short 0x0002, 0x0001 ; SPECIES_MAROWAK
+ .short 0x0002, 0x0001 ; SPECIES_HITMONLEE
+ .short 0x0002, 0x0001 ; SPECIES_HITMONCHAN
+ .short 0x0004, 0x0001 ; SPECIES_LICKITUNG
+ .short 0x0003, 0x0000 ; SPECIES_KOFFING
+ .short 0x0003, 0x0000 ; SPECIES_WEEZING
+ .short 0x0002, 0x0001 ; SPECIES_RHYHORN
+ .short 0x0002, 0x0001 ; SPECIES_RHYDON
+ .short 0x0001, 0x0001 ; SPECIES_CHANSEY
+ .short 0x0001, 0x0001 ; SPECIES_TANGELA
+ .short 0x0002, 0x0001 ; SPECIES_KANGASKHAN
+ .short 0x0001, 0x0000 ; SPECIES_HORSEA
+ .short 0x0002, 0x0000 ; SPECIES_SEADRA
+ .short 0x0001, 0x0000 ; SPECIES_GOLDEEN
+ .short 0x0002, 0x0000 ; SPECIES_SEAKING
+ .short 0x0005, 0x0001 ; SPECIES_STARYU
+ .short 0x0005, 0x0001 ; SPECIES_STARMIE
+ .short 0x0001, 0x0001 ; SPECIES_MR_MIME
+ .short 0x0002, 0x0001 ; SPECIES_SCYTHER
+ .short 0x0001, 0x0000 ; SPECIES_JYNX
+ .short 0x0002, 0x0001 ; SPECIES_ELECTABUZZ
+ .short 0x0002, 0x0001 ; SPECIES_MAGMAR
+ .short 0x0002, 0x0001 ; SPECIES_PINSIR
+ .short 0x0002, 0x0001 ; SPECIES_TAUROS
+ .short 0x0004, 0x0000 ; SPECIES_MAGIKARP
+ .short 0x0003, 0x0000 ; SPECIES_GYARADOS
+ .short 0x0001, 0x0000 ; SPECIES_LAPRAS
+ .short 0x0004, 0x0000 ; SPECIES_DITTO
+ .short 0x0001, 0x0001 ; SPECIES_EEVEE
+ .short 0x0002, 0x0001 ; SPECIES_VAPOREON
+ .short 0x0002, 0x0001 ; SPECIES_JOLTEON
+ .short 0x0002, 0x0001 ; SPECIES_FLAREON
+ .short 0x0005, 0x0001 ; SPECIES_PORYGON
+ .short 0x0001, 0x0001 ; SPECIES_OMANYTE
+ .short 0x0002, 0x0001 ; SPECIES_OMASTAR
+ .short 0x0005, 0x0001 ; SPECIES_KABUTO
+ .short 0x0002, 0x0001 ; SPECIES_KABUTOPS
+ .short 0x0002, 0x0001 ; SPECIES_AERODACTYL
+ .short 0x0004, 0x0001 ; SPECIES_SNORLAX
+ .short 0x0002, 0x0001 ; SPECIES_ARTICUNO
+ .short 0x0002, 0x0001 ; SPECIES_ZAPDOS
+ .short 0x0002, 0x0001 ; SPECIES_MOLTRES
+ .short 0x0001, 0x0000 ; SPECIES_DRATINI
+ .short 0x0002, 0x0000 ; SPECIES_DRAGONAIR
+ .short 0x0002, 0x0001 ; SPECIES_DRAGONITE
+ .short 0x0002, 0x0001 ; SPECIES_MEWTWO
+ .short 0x0001, 0x0001 ; SPECIES_MEW
+ .short 0x0001, 0x0001 ; SPECIES_CHIKORITA
+ .short 0x0001, 0x0001 ; SPECIES_BAYLEEF
+ .short 0x0002, 0x0001 ; SPECIES_MEGANIUM
+ .short 0x0001, 0x0001 ; SPECIES_CYNDAQUIL
+ .short 0x0002, 0x0001 ; SPECIES_QUILAVA
+ .short 0x0002, 0x0001 ; SPECIES_TYPHLOSION
+ .short 0x0001, 0x0001 ; SPECIES_TOTODILE
+ .short 0x0002, 0x0001 ; SPECIES_CROCONAW
+ .short 0x0002, 0x0001 ; SPECIES_FERALIGATR
+ .short 0x0001, 0x0001 ; SPECIES_SENTRET
+ .short 0x0001, 0x0001 ; SPECIES_FURRET
+ .short 0x0001, 0x0001 ; SPECIES_HOOTHOOT
+ .short 0x0002, 0x0001 ; SPECIES_NOCTOWL
+ .short 0x0001, 0x0001 ; SPECIES_LEDYBA
+ .short 0x0002, 0x0001 ; SPECIES_LEDIAN
+ .short 0x0003, 0x0001 ; SPECIES_SPINARAK
+ .short 0x0003, 0x0001 ; SPECIES_ARIADOS
+ .short 0x0003, 0x0000 ; SPECIES_CROBAT
+ .short 0x0004, 0x0000 ; SPECIES_CHINCHOU
+ .short 0x0002, 0x0000 ; SPECIES_LANTURN
+ .short 0x0001, 0x0001 ; SPECIES_PICHU
+ .short 0x0001, 0x0001 ; SPECIES_CLEFFA
+ .short 0x0001, 0x0001 ; SPECIES_IGGLYBUFF
+ .short 0x0001, 0x0001 ; SPECIES_TOGEPI
+ .short 0x0001, 0x0001 ; SPECIES_TOGETIC
+ .short 0x0001, 0x0001 ; SPECIES_NATU
+ .short 0x0005, 0x0001 ; SPECIES_XATU
+ .short 0x0001, 0x0001 ; SPECIES_MAREEP
+ .short 0x0001, 0x0001 ; SPECIES_FLAAFFY
+ .short 0x0001, 0x0001 ; SPECIES_AMPHAROS
+ .short 0x0001, 0x0000 ; SPECIES_BELLOSSOM
+ .short 0x0001, 0x0001 ; SPECIES_MARILL
+ .short 0x0001, 0x0001 ; SPECIES_AZUMARILL
+ .short 0x0004, 0x0001 ; SPECIES_SUDOWOODO
+ .short 0x0001, 0x0001 ; SPECIES_POLITOED
+ .short 0x0001, 0x0001 ; SPECIES_HOPPIP
+ .short 0x0001, 0x0001 ; SPECIES_SKIPLOOM
+ .short 0x0001, 0x0001 ; SPECIES_JUMPLUFF
+ .short 0x0001, 0x0001 ; SPECIES_AIPOM
+ .short 0x0001, 0x0000 ; SPECIES_SUNKERN
+ .short 0x0001, 0x0001 ; SPECIES_SUNFLORA
+ .short 0x0001, 0x0001 ; SPECIES_YANMA
+ .short 0x0001, 0x0001 ; SPECIES_WOOPER
+ .short 0x0004, 0x0001 ; SPECIES_QUAGSIRE
+ .short 0x0002, 0x0001 ; SPECIES_ESPEON
+ .short 0x0002, 0x0001 ; SPECIES_UMBREON
+ .short 0x0003, 0x0001 ; SPECIES_MURKROW
+ .short 0x0004, 0x0001 ; SPECIES_SLOWKING
+ .short 0x0003, 0x0000 ; SPECIES_MISDREAVUS
+ .short 0x0005, 0x0000 ; SPECIES_UNOWN
+ .short 0x0004, 0x0001 ; SPECIES_WOBBUFFET
+ .short 0x0001, 0x0001 ; SPECIES_GIRAFARIG
+ .short 0x0005, 0x0000 ; SPECIES_PINECO
+ .short 0x0005, 0x0000 ; SPECIES_FORRETRESS
+ .short 0x0004, 0x0000 ; SPECIES_DUNSPARCE
+ .short 0x0004, 0x0001 ; SPECIES_GLIGAR
+ .short 0x0002, 0x0000 ; SPECIES_STEELIX
+ .short 0x0001, 0x0001 ; SPECIES_SNUBBULL
+ .short 0x0001, 0x0001 ; SPECIES_GRANBULL
+ .short 0x0002, 0x0000 ; SPECIES_QWILFISH
+ .short 0x0002, 0x0001 ; SPECIES_SCIZOR
+ .short 0x0001, 0x0001 ; SPECIES_SHUCKLE
+ .short 0x0002, 0x0001 ; SPECIES_HERACROSS
+ .short 0x0002, 0x0001 ; SPECIES_SNEASEL
+ .short 0x0001, 0x0001 ; SPECIES_TEDDIURSA
+ .short 0x0002, 0x0001 ; SPECIES_URSARING
+ .short 0x0004, 0x0000 ; SPECIES_SLUGMA
+ .short 0x0004, 0x0000 ; SPECIES_MAGCARGO
+ .short 0x0001, 0x0001 ; SPECIES_SWINUB
+ .short 0x0004, 0x0001 ; SPECIES_PILOSWINE
+ .short 0x0001, 0x0001 ; SPECIES_CORSOLA
+ .short 0x0005, 0x0000 ; SPECIES_REMORAID
+ .short 0x0004, 0x0001 ; SPECIES_OCTILLERY
+ .short 0x0001, 0x0001 ; SPECIES_DELIBIRD
+ .short 0x0002, 0x0000 ; SPECIES_MANTINE
+ .short 0x0002, 0x0001 ; SPECIES_SKARMORY
+ .short 0x0003, 0x0001 ; SPECIES_HOUNDOUR
+ .short 0x0003, 0x0001 ; SPECIES_HOUNDOOM
+ .short 0x0002, 0x0000 ; SPECIES_KINGDRA
+ .short 0x0001, 0x0001 ; SPECIES_PHANPY
+ .short 0x0002, 0x0001 ; SPECIES_DONPHAN
+ .short 0x0005, 0x0001 ; SPECIES_PORYGON2
+ .short 0x0002, 0x0001 ; SPECIES_STANTLER
+ .short 0x0004, 0x0001 ; SPECIES_SMEARGLE
+ .short 0x0001, 0x0001 ; SPECIES_TYROGUE
+ .short 0x0002, 0x0001 ; SPECIES_HITMONTOP
+ .short 0x0001, 0x0001 ; SPECIES_SMOOCHUM
+ .short 0x0001, 0x0001 ; SPECIES_ELEKID
+ .short 0x0001, 0x0001 ; SPECIES_MAGBY
+ .short 0x0001, 0x0001 ; SPECIES_MILTANK
+ .short 0x0001, 0x0001 ; SPECIES_BLISSEY
+ .short 0x0002, 0x0001 ; SPECIES_RAIKOU
+ .short 0x0002, 0x0001 ; SPECIES_ENTEI
+ .short 0x0002, 0x0001 ; SPECIES_SUICUNE
+ .short 0x0001, 0x0001 ; SPECIES_LARVITAR
+ .short 0x0005, 0x0000 ; SPECIES_PUPITAR
+ .short 0x0003, 0x0001 ; SPECIES_TYRANITAR
+ .short 0x0002, 0x0001 ; SPECIES_LUGIA
+ .short 0x0002, 0x0001 ; SPECIES_HO_OH
+ .short 0x0001, 0x0001 ; SPECIES_CELEBI
+ .short 0x0001, 0x0001 ; SPECIES_TREECKO
+ .short 0x0002, 0x0001 ; SPECIES_GROVYLE
+ .short 0x0002, 0x0001 ; SPECIES_SCEPTILE
+ .short 0x0001, 0x0001 ; SPECIES_TORCHIC
+ .short 0x0002, 0x0001 ; SPECIES_COMBUSKEN
+ .short 0x0002, 0x0001 ; SPECIES_BLAZIKEN
+ .short 0x0001, 0x0001 ; SPECIES_MUDKIP
+ .short 0x0001, 0x0001 ; SPECIES_MARSHTOMP
+ .short 0x0002, 0x0001 ; SPECIES_SWAMPERT
+ .short 0x0001, 0x0001 ; SPECIES_POOCHYENA
+ .short 0x0002, 0x0001 ; SPECIES_MIGHTYENA
+ .short 0x0004, 0x0001 ; SPECIES_ZIGZAGOON
+ .short 0x0004, 0x0001 ; SPECIES_LINOONE
+ .short 0x0001, 0x0001 ; SPECIES_WURMPLE
+ .short 0x0005, 0x0000 ; SPECIES_SILCOON
+ .short 0x0001, 0x0001 ; SPECIES_BEAUTIFLY
+ .short 0x0005, 0x0000 ; SPECIES_CASCOON
+ .short 0x0002, 0x0001 ; SPECIES_DUSTOX
+ .short 0x0001, 0x0001 ; SPECIES_LOTAD
+ .short 0x0004, 0x0001 ; SPECIES_LOMBRE
+ .short 0x0004, 0x0001 ; SPECIES_LUDICOLO
+ .short 0x0005, 0x0001 ; SPECIES_SEEDOT
+ .short 0x0002, 0x0001 ; SPECIES_NUZLEAF
+ .short 0x0003, 0x0001 ; SPECIES_SHIFTRY
+ .short 0x0001, 0x0001 ; SPECIES_TAILLOW
+ .short 0x0002, 0x0001 ; SPECIES_SWELLOW
+ .short 0x0001, 0x0001 ; SPECIES_WINGULL
+ .short 0x0001, 0x0001 ; SPECIES_PELIPPER
+ .short 0x0001, 0x0001 ; SPECIES_RALTS
+ .short 0x0001, 0x0001 ; SPECIES_KIRLIA
+ .short 0x0001, 0x0001 ; SPECIES_GARDEVOIR
+ .short 0x0001, 0x0001 ; SPECIES_SURSKIT
+ .short 0x0002, 0x0000 ; SPECIES_MASQUERAIN
+ .short 0x0001, 0x0001 ; SPECIES_SHROOMISH
+ .short 0x0002, 0x0001 ; SPECIES_BRELOOM
+ .short 0x0004, 0x0001 ; SPECIES_SLAKOTH
+ .short 0x0002, 0x0001 ; SPECIES_VIGOROTH
+ .short 0x0004, 0x0001 ; SPECIES_SLAKING
+ .short 0x0005, 0x0001 ; SPECIES_NINCADA
+ .short 0x0002, 0x0001 ; SPECIES_NINJASK
+ .short 0x0004, 0x0001 ; SPECIES_SHEDINJA
+ .short 0x0004, 0x0001 ; SPECIES_WHISMUR
+ .short 0x0004, 0x0001 ; SPECIES_LOUDRED
+ .short 0x0002, 0x0001 ; SPECIES_EXPLOUD
+ .short 0x0001, 0x0001 ; SPECIES_MAKUHITA
+ .short 0x0002, 0x0001 ; SPECIES_HARIYAMA
+ .short 0x0001, 0x0001 ; SPECIES_AZURILL
+ .short 0x0005, 0x0001 ; SPECIES_NOSEPASS
+ .short 0x0001, 0x0001 ; SPECIES_SKITTY
+ .short 0x0001, 0x0001 ; SPECIES_DELCATTY
+ .short 0x0003, 0x0001 ; SPECIES_SABLEYE
+ .short 0x0001, 0x0001 ; SPECIES_MAWILE
+ .short 0x0001, 0x0001 ; SPECIES_ARON
+ .short 0x0002, 0x0001 ; SPECIES_LAIRON
+ .short 0x0002, 0x0001 ; SPECIES_AGGRON
+ .short 0x0001, 0x0001 ; SPECIES_MEDITITE
+ .short 0x0002, 0x0001 ; SPECIES_MEDICHAM
+ .short 0x0001, 0x0001 ; SPECIES_ELECTRIKE
+ .short 0x0002, 0x0001 ; SPECIES_MANECTRIC
+ .short 0x0001, 0x0001 ; SPECIES_PLUSLE
+ .short 0x0001, 0x0001 ; SPECIES_MINUN
+ .short 0x0002, 0x0001 ; SPECIES_VOLBEAT
+ .short 0x0001, 0x0001 ; SPECIES_ILLUMISE
+ .short 0x0001, 0x0001 ; SPECIES_ROSELIA
+ .short 0x0004, 0x0000 ; SPECIES_GULPIN
+ .short 0x0004, 0x0000 ; SPECIES_SWALOT
+ .short 0x0003, 0x0000 ; SPECIES_CARVANHA
+ .short 0x0003, 0x0000 ; SPECIES_SHARPEDO
+ .short 0x0001, 0x0000 ; SPECIES_WAILMER
+ .short 0x0002, 0x0000 ; SPECIES_WAILORD
+ .short 0x0004, 0x0001 ; SPECIES_NUMEL
+ .short 0x0004, 0x0001 ; SPECIES_CAMERUPT
+ .short 0x0004, 0x0001 ; SPECIES_TORKOAL
+ .short 0x0001, 0x0000 ; SPECIES_SPOINK
+ .short 0x0002, 0x0001 ; SPECIES_GRUMPIG
+ .short 0x0004, 0x0001 ; SPECIES_SPINDA
+ .short 0x0004, 0x0001 ; SPECIES_TRAPINCH
+ .short 0x0002, 0x0001 ; SPECIES_VIBRAVA
+ .short 0x0002, 0x0001 ; SPECIES_FLYGON
+ .short 0x0001, 0x0001 ; SPECIES_CACNEA
+ .short 0x0003, 0x0001 ; SPECIES_CACTURNE
+ .short 0x0001, 0x0001 ; SPECIES_SWABLU
+ .short 0x0001, 0x0001 ; SPECIES_ALTARIA
+ .short 0x0002, 0x0001 ; SPECIES_ZANGOOSE
+ .short 0x0003, 0x0000 ; SPECIES_SEVIPER
+ .short 0x0005, 0x0000 ; SPECIES_LUNATONE
+ .short 0x0005, 0x0000 ; SPECIES_SOLROCK
+ .short 0x0001, 0x0000 ; SPECIES_BARBOACH
+ .short 0x0004, 0x0000 ; SPECIES_WHISCASH
+ .short 0x0002, 0x0001 ; SPECIES_CORPHISH
+ .short 0x0003, 0x0001 ; SPECIES_CRAWDAUNT
+ .short 0x0005, 0x0001 ; SPECIES_BALTOY
+ .short 0x0005, 0x0001 ; SPECIES_CLAYDOL
+ .short 0x0005, 0x0001 ; SPECIES_LILEEP
+ .short 0x0005, 0x0001 ; SPECIES_CRADILY
+ .short 0x0005, 0x0000 ; SPECIES_ANORITH
+ .short 0x0002, 0x0001 ; SPECIES_ARMALDO
+ .short 0x0004, 0x0000 ; SPECIES_FEEBAS
+ .short 0x0002, 0x0000 ; SPECIES_MILOTIC
+ .short 0x0001, 0x0000 ; SPECIES_CASTFORM
+ .short 0x0001, 0x0001 ; SPECIES_KECLEON
+ .short 0x0003, 0x0000 ; SPECIES_SHUPPET
+ .short 0x0003, 0x0001 ; SPECIES_BANETTE
+ .short 0x0003, 0x0000 ; SPECIES_DUSKULL
+ .short 0x0003, 0x0001 ; SPECIES_DUSCLOPS
+ .short 0x0002, 0x0001 ; SPECIES_TROPIUS
+ .short 0x0001, 0x0000 ; SPECIES_CHIMECHO
+ .short 0x0003, 0x0001 ; SPECIES_ABSOL
+ .short 0x0004, 0x0001 ; SPECIES_WYNAUT
+ .short 0x0001, 0x0001 ; SPECIES_SNORUNT
+ .short 0x0002, 0x0000 ; SPECIES_GLALIE
+ .short 0x0001, 0x0000 ; SPECIES_SPHEAL
+ .short 0x0002, 0x0000 ; SPECIES_SEALEO
+ .short 0x0002, 0x0000 ; SPECIES_WALREIN
+ .short 0x0001, 0x0000 ; SPECIES_CLAMPERL
+ .short 0x0002, 0x0000 ; SPECIES_HUNTAIL
+ .short 0x0001, 0x0000 ; SPECIES_GOREBYSS
+ .short 0x0004, 0x0000 ; SPECIES_RELICANTH
+ .short 0x0001, 0x0000 ; SPECIES_LUVDISC
+ .short 0x0001, 0x0001 ; SPECIES_BAGON
+ .short 0x0005, 0x0001 ; SPECIES_SHELGON
+ .short 0x0002, 0x0001 ; SPECIES_SALAMENCE
+ .short 0x0005, 0x0001 ; SPECIES_BELDUM
+ .short 0x0005, 0x0001 ; SPECIES_METANG
+ .short 0x0002, 0x0001 ; SPECIES_METAGROSS
+ .short 0x0005, 0x0001 ; SPECIES_REGIROCK
+ .short 0x0005, 0x0001 ; SPECIES_REGICE
+ .short 0x0005, 0x0001 ; SPECIES_REGISTEEL
+ .short 0x0001, 0x0001 ; SPECIES_LATIAS
+ .short 0x0002, 0x0001 ; SPECIES_LATIOS
+ .short 0x0002, 0x0001 ; SPECIES_KYOGRE
+ .short 0x0002, 0x0001 ; SPECIES_GROUDON
+ .short 0x0002, 0x0000 ; SPECIES_RAYQUAZA
+ .short 0x0001, 0x0001 ; SPECIES_JIRACHI
+ .short 0x0002, 0x0001 ; SPECIES_DEOXYS
+ .short 0x0001, 0x0001 ; SPECIES_TURTWIG
+ .short 0x0001, 0x0001 ; SPECIES_GROTLE
+ .short 0x0002, 0x0001 ; SPECIES_TORTERRA
+ .short 0x0001, 0x0001 ; SPECIES_CHIMCHAR
+ .short 0x0002, 0x0001 ; SPECIES_MONFERNO
+ .short 0x0002, 0x0001 ; SPECIES_INFERNAPE
+ .short 0x0001, 0x0001 ; SPECIES_PIPLUP
+ .short 0x0002, 0x0001 ; SPECIES_PRINPLUP
+ .short 0x0002, 0x0001 ; SPECIES_EMPOLEON
+ .short 0x0001, 0x0001 ; SPECIES_STARLY
+ .short 0x0001, 0x0001 ; SPECIES_STARAVIA
+ .short 0x0002, 0x0001 ; SPECIES_STARAPTOR
+ .short 0x0004, 0x0001 ; SPECIES_BIDOOF
+ .short 0x0004, 0x0001 ; SPECIES_BIBAREL
+ .short 0x0001, 0x0001 ; SPECIES_KRICKETOT
+ .short 0x0002, 0x0001 ; SPECIES_KRICKETUNE
+ .short 0x0001, 0x0001 ; SPECIES_SHINX
+ .short 0x0001, 0x0001 ; SPECIES_LUXIO
+ .short 0x0002, 0x0001 ; SPECIES_LUXRAY
+ .short 0x0001, 0x0001 ; SPECIES_BUDEW
+ .short 0x0002, 0x0001 ; SPECIES_ROSERADE
+ .short 0x0002, 0x0001 ; SPECIES_CRANIDOS
+ .short 0x0002, 0x0001 ; SPECIES_RAMPARDOS
+ .short 0x0002, 0x0001 ; SPECIES_SHIELDON
+ .short 0x0002, 0x0001 ; SPECIES_BASTIODON
+ .short 0x0001, 0x0000 ; SPECIES_BURMY
+ .short 0x0001, 0x0000 ; SPECIES_WORMADAM
+ .short 0x0002, 0x0001 ; SPECIES_MOTHIM
+ .short 0x0001, 0x0000 ; SPECIES_COMBEE
+ .short 0x0001, 0x0000 ; SPECIES_VESPIQUEN
+ .short 0x0001, 0x0001 ; SPECIES_PACHIRISU
+ .short 0x0001, 0x0001 ; SPECIES_BUIZEL
+ .short 0x0002, 0x0001 ; SPECIES_FLOATZEL
+ .short 0x0001, 0x0001 ; SPECIES_CHERUBI
+ .short 0x0001, 0x0001 ; SPECIES_CHERRIM
+ .short 0x0001, 0x0001 ; SPECIES_SHELLOS
+ .short 0x0003, 0x0001 ; SPECIES_GASTRODON
+ .short 0x0001, 0x0001 ; SPECIES_AMBIPOM
+ .short 0x0003, 0x0000 ; SPECIES_DRIFLOON
+ .short 0x0003, 0x0000 ; SPECIES_DRIFBLIM
+ .short 0x0001, 0x0001 ; SPECIES_BUNEARY
+ .short 0x0001, 0x0001 ; SPECIES_LOPUNNY
+ .short 0x0003, 0x0000 ; SPECIES_MISMAGIUS
+ .short 0x0003, 0x0001 ; SPECIES_HONCHKROW
+ .short 0x0001, 0x0001 ; SPECIES_GLAMEOW
+ .short 0x0001, 0x0001 ; SPECIES_PURUGLY
+ .short 0x0001, 0x0001 ; SPECIES_CHINGLING
+ .short 0x0003, 0x0001 ; SPECIES_STUNKY
+ .short 0x0003, 0x0001 ; SPECIES_SKUNTANK
+ .short 0x0005, 0x0000 ; SPECIES_BRONZOR
+ .short 0x0005, 0x0000 ; SPECIES_BRONZONG
+ .short 0x0004, 0x0001 ; SPECIES_BONSLY
+ .short 0x0001, 0x0001 ; SPECIES_MIME_JR
+ .short 0x0001, 0x0001 ; SPECIES_HAPPINY
+ .short 0x0004, 0x0001 ; SPECIES_CHATOT
+ .short 0x0003, 0x0001 ; SPECIES_SPIRITOMB
+ .short 0x0001, 0x0001 ; SPECIES_GIBLE
+ .short 0x0002, 0x0001 ; SPECIES_GABITE
+ .short 0x0002, 0x0001 ; SPECIES_GARCHOMP
+ .short 0x0004, 0x0001 ; SPECIES_MUNCHLAX
+ .short 0x0001, 0x0001 ; SPECIES_RIOLU
+ .short 0x0002, 0x0001 ; SPECIES_LUCARIO
+ .short 0x0004, 0x0001 ; SPECIES_HIPPOPOTAS
+ .short 0x0002, 0x0001 ; SPECIES_HIPPOWDON
+ .short 0x0003, 0x0001 ; SPECIES_SKORUPI
+ .short 0x0003, 0x0001 ; SPECIES_DRAPION
+ .short 0x0003, 0x0001 ; SPECIES_CROAGUNK
+ .short 0x0003, 0x0001 ; SPECIES_TOXICROAK
+ .short 0x0004, 0x0000 ; SPECIES_CARNIVINE
+ .short 0x0001, 0x0000 ; SPECIES_FINNEON
+ .short 0x0002, 0x0000 ; SPECIES_LUMINEON
+ .short 0x0001, 0x0000 ; SPECIES_MANTYKE
+ .short 0x0001, 0x0001 ; SPECIES_SNOVER
+ .short 0x0002, 0x0001 ; SPECIES_ABOMASNOW
+ .short 0x0002, 0x0001 ; SPECIES_WEAVILE
+ .short 0x0005, 0x0000 ; SPECIES_MAGNEZONE
+ .short 0x0004, 0x0001 ; SPECIES_LICKILICKY
+ .short 0x0002, 0x0001 ; SPECIES_RHYPERIOR
+ .short 0x0004, 0x0001 ; SPECIES_TANGROWTH
+ .short 0x0002, 0x0001 ; SPECIES_ELECTIVIRE
+ .short 0x0002, 0x0001 ; SPECIES_MAGMORTAR
+ .short 0x0002, 0x0001 ; SPECIES_TOGEKISS
+ .short 0x0002, 0x0001 ; SPECIES_YANMEGA
+ .short 0x0002, 0x0001 ; SPECIES_LEAFEON
+ .short 0x0002, 0x0001 ; SPECIES_GLACEON
+ .short 0x0002, 0x0001 ; SPECIES_GLISCOR
+ .short 0x0004, 0x0001 ; SPECIES_MAMOSWINE
+ .short 0x0005, 0x0001 ; SPECIES_PORYGON_Z
+ .short 0x0002, 0x0001 ; SPECIES_GALLADE
+ .short 0x0005, 0x0001 ; SPECIES_PROBOPASS
+ .short 0x0003, 0x0000 ; SPECIES_DUSKNOIR
+ .short 0x0001, 0x0000 ; SPECIES_FROSLASS
+ .short 0x0002, 0x0000 ; SPECIES_ROTOM
+ .short 0x0001, 0x0001 ; SPECIES_UXIE
+ .short 0x0001, 0x0001 ; SPECIES_MESPRIT
+ .short 0x0001, 0x0001 ; SPECIES_AZELF
+ .short 0x0002, 0x0001 ; SPECIES_DIALGA
+ .short 0x0002, 0x0001 ; SPECIES_PALKIA
+ .short 0x0002, 0x0001 ; SPECIES_HEATRAN
+ .short 0x0005, 0x0001 ; SPECIES_REGIGIGAS
+ .short 0x0002, 0x0001 ; SPECIES_GIRATINA
+ .short 0x0002, 0x0000 ; SPECIES_CRESSELIA
+ .short 0x0001, 0x0000 ; SPECIES_PHIONE
+ .short 0x0001, 0x0000 ; SPECIES_MANAPHY
+ .short 0x0003, 0x0001 ; SPECIES_DARKRAI
+ .short 0x0001, 0x0001 ; SPECIES_SHAYMIN
+ .short 0x0002, 0x0001 ; SPECIES_ARCEUS
diff --git a/arm9/modules/05/asm/mod05_021F61F4.s b/arm9/modules/05/asm/mod05_021F61F4.s
new file mode 100644
index 00000000..6b6cd889
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F61F4.s
@@ -0,0 +1,216 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F61F4
+MOD05_021F61F4: ; 0x021F61F4
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #0x34
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x34
+ bl memset
+ str r6, [r4]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ str r5, [r4, #0x2c]
+ ldr r0, [r5, #0x20]
+ str r0, [r4, #0x30]
+ bl Camera_GetDistance
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x20]
+ ldr r0, _021F622C ; =MOD05_021F6270
+ ldr r2, _021F6230 ; =0x0000FFFF
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021F622C: .word MOD05_021F6270
+_021F6230: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021F6234
+MOD05_021F6234: ; 0x021F6234
+ push {r3, lr}
+ bl FUN_0201B6C8
+ ldr r0, [r0, #8]
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F6240
+MOD05_021F6240: ; 0x021F6240
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201B6C8
+ bl FreeToHeap
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F6254
+MOD05_021F6254: ; 0x021F6254
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201B6C8
+ mov r1, #0
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r5, [r0, #0xc]
+ str r4, [r0, #0x14]
+ str r6, [r0, #0x1c]
+ str r1, [r0, #0x24]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021F6270
+MOD05_021F6270: ; 0x021F6270
+ push {r3, lr}
+ add r0, r1, #0
+ ldr r1, [r1, #0xc]
+ lsl r2, r1, #2
+ ldr r1, _021F6280 ; =UNK05_021FD1B8
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ .align 2, 0
+_021F6280: .word UNK05_021FD1B8
+
+ thumb_func_start MOD05_021F6284
+MOD05_021F6284: ; 0x021F6284
+ mov r1, #1
+ str r1, [r0, #8]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD05_021F628C
+MOD05_021F628C: ; 0x021F628C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021F629C
+ cmp r1, #1
+ beq _021F62A6
+ pop {r4, pc}
+_021F629C:
+ bl MOD05_021F630C
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+_021F62A6:
+ add r0, r4, #0
+ bl MOD05_021F633C
+ cmp r0, #1
+ bne _021F62BA
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4, #8]
+_021F62BA:
+ add r0, r4, #0
+ bl MOD05_021F62FC
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F62C4
+MOD05_021F62C4: ; 0x021F62C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021F62D4
+ cmp r1, #1
+ beq _021F62DE
+ pop {r4, pc}
+_021F62D4:
+ bl MOD05_021F6324
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+_021F62DE:
+ add r0, r4, #0
+ bl MOD05_021F633C
+ cmp r0, #1
+ bne _021F62F2
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4, #8]
+_021F62F2:
+ add r0, r4, #0
+ bl MOD05_021F62FC
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD05_021F62FC
+MOD05_021F62FC: ; 0x021F62FC
+ ldr r3, _021F6308 ; =FUN_0201EFE0
+ add r1, r0, #0
+ ldr r0, [r1, #0x20]
+ ldr r1, [r1, #0x30]
+ bx r3
+ nop
+_021F6308: .word Camera_SetDistance
+
+ thumb_func_start MOD05_021F630C
+MOD05_021F630C: ; 0x021F630C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #0x1c]
+ bl _s32_div_f
+ str r0, [r4, #0x28]
+ ldr r1, [r4, #0x20]
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F6324
+MOD05_021F6324: ; 0x021F6324
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x20]
+ sub r0, r1, r0
+ ldr r1, [r4, #0x1c]
+ bl _s32_div_f
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021F633C
+MOD05_021F633C: ; 0x021F633C
+ ldr r2, [r0, #0x20]
+ ldr r1, [r0, #0x28]
+ add r1, r2, r1
+ str r1, [r0, #0x20]
+ ldr r1, [r0, #0x24]
+ add r2, r1, #1
+ str r2, [r0, #0x24]
+ ldr r1, [r0, #0x1c]
+ cmp r2, r1
+ blo _021F635A
+ str r1, [r0, #0x24]
+ ldr r1, [r0, #0x18]
+ str r1, [r0, #0x20]
+ mov r0, #1
+ bx lr
+_021F635A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ .section .rodata
+
+ .global UNK05_021FD1B8
+UNK05_021FD1B8: ; 0x021FD1B8
+ .word MOD05_021F6284, MOD05_021F628C, MOD05_021F62C4, 0x00000000
diff --git a/arm9/modules/05/asm/mod05_021F6360.s b/arm9/modules/05/asm/mod05_021F6360.s
new file mode 100644
index 00000000..c03de5a5
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021F6360.s
@@ -0,0 +1,103 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021F6360
+MOD05_021F6360: ; 0x021F6360
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl FUN_02046528
+ str r0, [sp]
+ add r0, r7, #0
+ bl FUN_0204652C
+ add r6, r0, #0
+ add r0, r7, #0
+ bl FUN_02046530
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r6, #4]
+ cmp r0, #5
+ bhi _021F6424
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F638E: ; jump table
+ .short _021F639A - _021F638E - 2 ; case 0
+ .short _021F63AC - _021F638E - 2 ; case 1
+ .short _021F63CC - _021F638E - 2 ; case 2
+ .short _021F63EA - _021F638E - 2 ; case 3
+ .short _021F6402 - _021F638E - 2 ; case 4
+ .short _021F6414 - _021F638E - 2 ; case 5
+_021F639A:
+ mov r0, #0xb
+ mov r1, #8
+ bl AllocFromHeapAtEnd
+ str r0, [r6, #4]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021F6424
+_021F63AC:
+ bl MOD05_021F57EC
+ add r6, r0, #0
+ mov r0, #0xb
+ add r1, r6, #0
+ bl AllocFromHeapAtEnd
+ str r0, [r5, #4]
+ mov r1, #0
+ add r2, r6, #0
+ bl memset
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021F6424
+_021F63CC:
+ ldr r0, [sp]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553E8
+ add r3, r0, #0
+ ldr r0, [sp]
+ ldr r2, [r6]
+ mov r1, #0
+ bl MOD06_0224666C
+ str r0, [r5]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021F6424
+_021F63EA:
+ ldr r0, [r5]
+ bl MOD06_022466A0
+ cmp r0, #0
+ beq _021F6424
+ ldr r0, [r5]
+ bl MOD06_022466AC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021F6424
+_021F6402:
+ ldr r1, _021F6428 ; =MOD05_021F57F0
+ ldr r2, [r5, #4]
+ add r0, r7, #0
+ bl FUN_0204640C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021F6424
+_021F6414:
+ add r0, r5, #0
+ bl FreeToHeap
+ add r0, r6, #0
+ bl FreeToHeap
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F6424:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F6428: .word MOD05_021F57F0
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
deleted file mode 100644
index 3cc1b9fe..00000000
--- a/arm9/modules/05/asm/module_05.s
+++ /dev/null
@@ -1,31453 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .text
- .balign 4, 0
-
- thumb_func_start MOD05_021E8648
-MOD05_021E8648: ; 0x021E8648
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldr r0, _021E8690 ; =MOD05_021E8728
- ldr r3, [r5, #0x28]
- mov r1, #0x38
- mov r2, #5
- bl FUN_020061E8
- add r6, r0, #0
- bl FUN_0201B6C8
- add r4, r0, #0
- add r2, r4, #4
- mov r3, #5
-_021E8664:
- ldmia r5!, {r0, r1}
- stmia r2!, {r0, r1}
- sub r3, r3, #1
- bne _021E8664
- ldr r0, [r5]
- str r0, [r2]
- str r6, [r4, #0x34]
- mov r0, #0
- str r0, [r4, #0x30]
- bl GX_GetBankForLCDC
- str r0, [r4]
- add r0, r4, #4
- bl MOD05_021E87C8
- ldr r0, _021E8694 ; =MOD05_021E8768
- add r1, r4, #0
- mov r2, #0
- bl FUN_0200CA98
- add r0, r4, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E8690: .word MOD05_021E8728
-_021E8694: .word MOD05_021E8768
-
- thumb_func_start MOD05_021E8698
-MOD05_021E8698: ; 0x021E8698
- push {r4, lr}
- add r4, r0, #0
- add r0, r1, #0
- add r1, r2, #0
- add r2, r3, #0
- bl GX_SetGraphicsMode
- ldr r0, [r4]
- ldr r0, [r0]
- bl GX_SetBankForLCDC
- ldr r0, [r4]
- ldr r0, [r0, #4]
- cmp r0, #0xa
- bgt _021E86C8
- bge _021E86EC
- cmp r0, #6
- bgt _021E8708
- cmp r0, #2
- blt _021E8708
- beq _021E86CE
- cmp r0, #6
- beq _021E86DE
- b _021E8708
-_021E86C8:
- cmp r0, #0xe
- beq _021E86FA
- b _021E8708
-_021E86CE:
- mov r1, #0x1a
- mov r2, #2
- mov r0, #0
- lsl r1, r1, #0x16
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
- b _021E870E
-_021E86DE:
- mov r2, #2
- ldr r1, _021E871C ; =0x06820000
- mov r0, #0
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
- b _021E870E
-_021E86EC:
- mov r2, #2
- ldr r1, _021E8720 ; =0x06840000
- mov r0, #0
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
- b _021E870E
-_021E86FA:
- mov r2, #2
- ldr r1, _021E8724 ; =0x06860000
- mov r0, #0
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
- b _021E870E
-_021E8708:
- mov r0, #0
- bl GX_SetBankForLCDC
-_021E870E:
- ldr r0, [r4]
- ldr r0, [r0, #0x34]
- bl FUN_0200621C
- mov r0, #0
- str r0, [r4]
- pop {r4, pc}
- .balign 4, 0
-_021E871C: .word 0x06820000
-_021E8720: .word 0x06840000
-_021E8724: .word 0x06860000
-
- thumb_func_start MOD05_021E8728
-MOD05_021E8728: ; 0x021E8728
- push {r4, r5, r6, r7}
- ldr r0, [r1, #0x30]
- cmp r0, #0
- beq _021E8760
- ldr r6, [r1, #0x20]
- ldr r5, [r1, #0x10]
- ldr r4, [r1, #0x1c]
- ldr r3, [r1, #0x18]
- ldr r2, [r1, #0x14]
- ldr r0, [r1, #0x24]
- ldr r1, [r1, #0x28]
- lsl r5, r5, #0x14
- lsl r7, r1, #8
- lsl r1, r3, #0x18
- lsl r3, r2, #0x1d
- mov r2, #2
- lsl r2, r2, #0x1e
- orr r3, r2
- lsl r2, r4, #0x19
- orr r2, r3
- orr r1, r2
- lsl r6, r6, #0x10
- orr r1, r5
- orr r1, r6
- orr r1, r7
- orr r1, r0
- ldr r0, _021E8764 ; =0x04000064
- str r1, [r0]
-_021E8760:
- pop {r4, r5, r6, r7}
- bx lr
- .balign 4, 0
-_021E8764: .word 0x04000064
-
- thumb_func_start MOD05_021E8768
-MOD05_021E8768: ; 0x021E8768
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4, #4]
- cmp r0, #0xa
- bgt _021E8786
- bge _021E879C
- cmp r0, #6
- bgt _021E87AC
- cmp r0, #2
- blt _021E87AC
- beq _021E878C
- cmp r0, #6
- beq _021E8794
- b _021E87AC
-_021E8786:
- cmp r0, #0xe
- beq _021E87A4
- b _021E87AC
-_021E878C:
- mov r0, #1
- bl GX_SetBankForLCDC
- b _021E87B2
-_021E8794:
- mov r0, #2
- bl GX_SetBankForLCDC
- b _021E87B2
-_021E879C:
- mov r0, #4
- bl GX_SetBankForLCDC
- b _021E87B2
-_021E87A4:
- mov r0, #8
- bl GX_SetBankForLCDC
- b _021E87B2
-_021E87AC:
- mov r0, #0
- bl GX_SetBankForLCDC
-_021E87B2:
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- ldr r2, [r4, #0xc]
- bl GX_SetGraphicsMode
- mov r0, #1
- str r0, [r4, #0x30]
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E87C8
-MOD05_021E87C8: ; 0x021E87C8
- push {r4, r5, r6, lr}
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0xa
- bgt _021E87E4
- bge _021E8808
- cmp r0, #6
- bgt _021E8822
- cmp r0, #2
- blt _021E8822
- beq _021E87EA
- cmp r0, #6
- beq _021E87FA
- b _021E8822
-_021E87E4:
- cmp r0, #0xe
- beq _021E8816
- b _021E8822
-_021E87EA:
- mov r1, #0x1a
- mov r2, #2
- mov r0, #0
- lsl r1, r1, #0x16
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
- b _021E8822
-_021E87FA:
- mov r2, #2
- ldr r1, _021E8850 ; =0x06820000
- mov r0, #0
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
- b _021E8822
-_021E8808:
- mov r2, #2
- ldr r1, _021E8854 ; =0x06840000
- mov r0, #0
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
- b _021E8822
-_021E8816:
- mov r2, #2
- ldr r1, _021E8858 ; =0x06860000
- mov r0, #0
- lsl r2, r2, #0x10
- bl MIi_CpuClearFast
-_021E8822:
- ldr r5, [r4, #0x10]
- ldr r1, [r4, #0x1c]
- ldr r3, [r4, #0x18]
- ldr r6, [r4, #0x14]
- ldr r0, [r4, #0xc]
- mov r4, #2
- lsl r2, r1, #0x10
- lsl r1, r0, #0x14
- lsl r5, r5, #0x1d
- lsl r4, r4, #0x1e
- orr r4, r5
- lsl r3, r3, #0x19
- lsl r0, r6, #0x18
- orr r3, r4
- orr r0, r3
- orr r0, r1
- add r1, r2, #0
- orr r1, r0
- mov r0, #0x10
- orr r1, r0
- ldr r0, _021E885C ; =0x04000064
- str r1, [r0]
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E8850: .word 0x06820000
-_021E8854: .word 0x06840000
-_021E8858: .word 0x06860000
-_021E885C: .word 0x04000064
-
- thumb_func_start MOD05_021E8860
-MOD05_021E8860: ; 0x021E8860
- push {r4, r5, r6, r7, lr}
- sub sp, #0x2c
- add r5, r0, #0
- add r4, r1, #0
- mov r0, #2
- mov r1, #0
- bl GX_EngineAToggleLayers
- mov r0, #4
- mov r1, #0
- bl GX_EngineAToggleLayers
- mov r0, #8
- mov r1, #0
- bl GX_EngineAToggleLayers
- bl GX_ResetBankForBG
- mov r0, #4
- add r1, r0, #0
- bl AllocFromHeap
- add r7, r0, #0
- mov r0, #0
- add r1, r7, #0
- mov r2, #4
- bl MIi_CpuClear32
- ldr r6, _021E88BC ; =UNK05_021F78E4
- add r3, sp, #0
- mov r2, #5
-_021E889E:
- ldmia r6!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021E889E
- ldr r0, [r6]
- str r0, [r3]
- add r0, sp, #0
- str r5, [sp, #0x20]
- str r4, [sp, #0x24]
- bl MOD05_021E8648
- str r0, [r7]
- add r0, r7, #0
- add sp, #0x2c
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E88BC: .word UNK05_021F78E4
-
- thumb_func_start MOD05_021E88C0
-MOD05_021E88C0: ; 0x021E88C0
- push {r4, lr}
- add r4, r0, #0
- mov r1, #1
- ldr r0, [r4]
- mov r2, #0
- add r3, r1, #0
- bl MOD05_021E8698
- mov r0, #4
- bl GX_SetBankForBG
- mov r0, #0xe
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r1, [r4]
- mov r0, #4
- bl FreeToHeapExplicit
- pop {r4, pc}
-
- thumb_func_start MOD05_021E88E8
-MOD05_021E88E8: ; 0x021E88E8
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #5
- bls _021E88FA
- b _021E8A56
-_021E88FA:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E8906: ; jump table
- .short _021E8912 - _021E8906 - 2 ; case 0
- .short _021E8936 - _021E8906 - 2 ; case 1
- .short _021E8952 - _021E8906 - 2 ; case 2
- .short _021E899C - _021E8906 - 2 ; case 3
- .short _021E89F4 - _021E8906 - 2 ; case 4
- .short _021E8A1C - _021E8906 - 2 ; case 5
-_021E8912:
- mov r0, #4
- mov r1, #0x20
- bl AllocFromHeap
- str r0, [r4, #0xc]
- mov r1, #0
- mov r2, #0x20
- bl memset
- ldr r5, [r4, #0xc]
- bl MOD05_021E3768
- str r0, [r5, #0x1c]
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8936:
- mov r1, #0x10
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r4, #4
- bl MOD05_021E3474
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8952:
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021E8A56
- mov r1, #0
- str r1, [r4, #4]
- ldr r0, [r4]
- mov r2, #2
- add r0, r0, #1
- str r0, [r4]
- ldr r0, _021E8A5C ; =0xFFFFD000
- str r1, [sp]
- str r0, [sp, #4]
- lsl r0, r0, #2
- str r0, [sp, #8]
- ldr r1, [r5, #0x1c]
- add r0, r4, #0
- mov r3, #7
- bl MOD05_021E37CC
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- str r0, [r5]
- bl Camera_GetDistance
- mov r2, #0x32
- add r1, r0, #0
- mov r0, #6
- lsl r2, r2, #0xc
- mov r3, #0x1e
- str r0, [sp]
- add r0, r5, #4
- add r2, r1, r2
- lsl r3, r3, #0xc
- bl MOD05_021E3644
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-_021E899C:
- add r0, r5, #4
- bl MOD05_021E36A4
- add r6, r0, #0
- ldr r0, [r5, #4]
- ldr r1, [r5]
- bl Camera_SetDistance
- cmp r6, #1
- bne _021E8A56
- ldr r0, [r4]
- mov r2, #2
- add r0, r0, #1
- str r0, [r4]
- ldr r0, _021E8A5C ; =0xFFFFD000
- mov r3, #6
- str r0, [sp]
- mov r0, #0xff
- lsl r0, r0, #0xc
- str r0, [sp, #4]
- mov r0, #0x1e
- lsl r0, r0, #0xc
- str r0, [sp, #8]
- ldr r1, [r5, #0x1c]
- add r0, r4, #0
- bl MOD05_021E3888
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- str r0, [r5]
- bl Camera_GetDistance
- mov r2, #0x32
- add r1, r0, #0
- mov r0, #6
- lsl r2, r2, #0xc
- str r0, [sp]
- ldr r3, _021E8A60 ; =0xFFF01000
- add r0, r5, #4
- sub r2, r1, r2
- bl MOD05_021E3644
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-_021E89F4:
- add r0, r5, #4
- bl MOD05_021E36A4
- add r6, r0, #0
- ldr r0, [r5, #4]
- ldr r1, [r5]
- bl Camera_SetDistance
- cmp r6, #1
- bne _021E8A56
- add r0, r4, #0
- bl MOD05_021E35AC
- cmp r0, #1
- bne _021E8A56
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8A1C:
- mov r0, #0
- add r1, r0, #0
- bl FUN_0200E3A0
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, _021E8A64 ; =0x04000010
- mov r1, #0
- str r1, [r0]
- str r1, [r0, #4]
- str r1, [r0, #8]
- str r1, [r0, #0xc]
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021E8A42
- mov r0, #1
- str r0, [r1]
-_021E8A42:
- ldr r0, [r5, #0x1c]
- bl MOD05_021E37A4
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
-_021E8A56:
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- nop
-_021E8A5C: .word 0xFFFFD000
-_021E8A60: .word 0xFFF01000
-_021E8A64: .word 0x04000010
-
- thumb_func_start MOD05_021E8A68
-MOD05_021E8A68: ; 0x021E8A68
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #5
- bls _021E8A7A
- b _021E8BD6
-_021E8A7A:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E8A86: ; jump table
- .short _021E8A92 - _021E8A86 - 2 ; case 0
- .short _021E8AB6 - _021E8A86 - 2 ; case 1
- .short _021E8AD2 - _021E8A86 - 2 ; case 2
- .short _021E8B1C - _021E8A86 - 2 ; case 3
- .short _021E8B74 - _021E8A86 - 2 ; case 4
- .short _021E8B9C - _021E8A86 - 2 ; case 5
-_021E8A92:
- mov r0, #4
- mov r1, #0x20
- bl AllocFromHeap
- str r0, [r4, #0xc]
- mov r1, #0
- mov r2, #0x20
- bl memset
- ldr r5, [r4, #0xc]
- bl MOD05_021E3768
- str r0, [r5, #0x1c]
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8AB6:
- mov r0, #2
- str r0, [sp]
- mov r0, #1
- add r1, r0, #0
- sub r1, #0x11
- add r2, r1, #0
- add r3, r4, #4
- bl MOD05_021E3474
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8AD2:
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021E8BD6
- mov r1, #0
- str r1, [r4, #4]
- ldr r0, [r4]
- mov r2, #5
- add r0, r0, #1
- str r0, [r4]
- ldr r0, _021E8BDC ; =0xFFFFE000
- str r1, [sp]
- str r0, [sp, #4]
- ldr r0, _021E8BE0 ; =0xFFFF4000
- mov r3, #7
- str r0, [sp, #8]
- ldr r1, [r5, #0x1c]
- add r0, r4, #0
- bl MOD05_021E37CC
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- str r0, [r5]
- bl Camera_GetDistance
- mov r2, #0x32
- add r1, r0, #0
- mov r0, #6
- lsl r2, r2, #0xc
- mov r3, #0x1e
- str r0, [sp]
- add r0, r5, #4
- add r2, r1, r2
- lsl r3, r3, #0xc
- bl MOD05_021E3644
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-_021E8B1C:
- add r0, r5, #4
- bl MOD05_021E36A4
- add r6, r0, #0
- ldr r0, [r5, #4]
- ldr r1, [r5]
- bl Camera_SetDistance
- cmp r6, #1
- bne _021E8BD6
- ldr r0, [r4]
- mov r2, #5
- add r0, r0, #1
- str r0, [r4]
- ldr r0, _021E8BDC ; =0xFFFFE000
- mov r3, #6
- str r0, [sp]
- mov r0, #0xff
- lsl r0, r0, #0xc
- str r0, [sp, #4]
- mov r0, #0x1e
- lsl r0, r0, #0xc
- str r0, [sp, #8]
- ldr r1, [r5, #0x1c]
- add r0, r4, #0
- bl MOD05_021E3888
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- str r0, [r5]
- bl Camera_GetDistance
- mov r2, #0x1e
- add r1, r0, #0
- mov r0, #6
- lsl r2, r2, #0xc
- str r0, [sp]
- ldr r3, _021E8BE4 ; =0xFFF9C000
- add r0, r5, #4
- sub r2, r1, r2
- bl MOD05_021E3644
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-_021E8B74:
- add r0, r5, #4
- bl MOD05_021E36A4
- add r6, r0, #0
- ldr r0, [r5, #4]
- ldr r1, [r5]
- bl Camera_SetDistance
- cmp r6, #1
- bne _021E8BD6
- add r0, r4, #0
- bl MOD05_021E35AC
- cmp r0, #1
- bne _021E8BD6
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8B9C:
- mov r0, #0
- add r1, r0, #0
- bl FUN_0200E3A0
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, _021E8BE8 ; =0x04000010
- mov r1, #0
- str r1, [r0]
- str r1, [r0, #4]
- str r1, [r0, #8]
- str r1, [r0, #0xc]
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021E8BC2
- mov r0, #1
- str r0, [r1]
-_021E8BC2:
- ldr r0, [r5, #0x1c]
- bl MOD05_021E37A4
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
-_021E8BD6:
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- nop
-_021E8BDC: .word 0xFFFFE000
-_021E8BE0: .word 0xFFFF4000
-_021E8BE4: .word 0xFFF9C000
-_021E8BE8: .word 0x04000010
-
- thumb_func_start MOD05_021E8BEC
-MOD05_021E8BEC: ; 0x021E8BEC
- push {r3, r4, r5, r6, lr}
- sub sp, #0x14
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #6
- bls _021E8BFE
- b _021E8D16
-_021E8BFE:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E8C0A: ; jump table
- .short _021E8C18 - _021E8C0A - 2 ; case 0
- .short _021E8C4A - _021E8C0A - 2 ; case 1
- .short _021E8C6A - _021E8C0A - 2 ; case 2
- .short _021E8CA0 - _021E8C0A - 2 ; case 3
- .short _021E8CB2 - _021E8C0A - 2 ; case 4
- .short _021E8CD4 - _021E8C0A - 2 ; case 5
- .short _021E8CE6 - _021E8C0A - 2 ; case 6
-_021E8C18:
- mov r0, #4
- mov r1, #0x10
- bl AllocFromHeap
- str r0, [r4, #0xc]
- mov r2, #0x10
- mov r1, #0
-_021E8C26:
- strb r1, [r0]
- add r0, r0, #1
- sub r2, r2, #1
- bne _021E8C26
- ldr r0, [r4, #0xc]
- mov r1, #4
- bl MOD05_021E8E8C
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F4608
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8C4A:
- mov r0, #2
- str r0, [sp]
- mov r0, #1
- add r1, r0, #0
- sub r1, #0x11
- add r2, r1, #0
- add r3, r4, #4
- bl MOD05_021E3474
- mov r0, #0xa
- str r0, [r5, #0xc]
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8C6A:
- ldr r0, [r5, #0xc]
- sub r0, r0, #1
- str r0, [r5, #0xc]
- bpl _021E8D16
- ldr r0, [r4]
- mov r3, #0x32
- add r0, r0, #1
- str r0, [r4]
- mov r0, #0xc
- str r0, [r5, #0xc]
- lsl r0, r0, #0xc
- str r0, [sp]
- lsl r3, r3, #4
- str r3, [sp, #4]
- ldr r0, _021E8D1C ; =0x04000010
- mov r1, #0
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- mov r0, #4
- str r0, [sp, #0x10]
- add r0, r5, #0
- mov r2, #0xbf
- sub r3, #0x76
- bl MOD05_021E8EC0
- add sp, #0x14
- pop {r3, r4, r5, r6, pc}
-_021E8CA0:
- ldr r0, [r5, #0xc]
- sub r0, r0, #1
- str r0, [r5, #0xc]
- bpl _021E8D16
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8CB2:
- mov r0, #8
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r2, #0
- str r0, [sp, #8]
- mov r0, #3
- mov r1, #0x1e
- add r3, r2, #0
- bl FUN_0200E1D0
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8CD4:
- bl FUN_0200E308
- cmp r0, #0
- beq _021E8D16
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8CE6:
- add r0, r5, #0
- bl MOD05_021E8EA8
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021E8D00
- mov r0, #1
- str r0, [r1]
-_021E8D00:
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
-_021E8D16:
- add sp, #0x14
- pop {r3, r4, r5, r6, pc}
- nop
-_021E8D1C: .word 0x04000010
-
- thumb_func_start MOD05_021E8D20
-MOD05_021E8D20: ; 0x021E8D20
- push {r3, r4, r5, r6, lr}
- sub sp, #0x14
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #6
- bls _021E8D32
- b _021E8E4C
-_021E8D32:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E8D3E: ; jump table
- .short _021E8D4C - _021E8D3E - 2 ; case 0
- .short _021E8D7E - _021E8D3E - 2 ; case 1
- .short _021E8D9E - _021E8D3E - 2 ; case 2
- .short _021E8DD6 - _021E8D3E - 2 ; case 3
- .short _021E8DE8 - _021E8D3E - 2 ; case 4
- .short _021E8E0A - _021E8D3E - 2 ; case 5
- .short _021E8E1C - _021E8D3E - 2 ; case 6
-_021E8D4C:
- mov r0, #4
- mov r1, #0x10
- bl AllocFromHeap
- str r0, [r4, #0xc]
- mov r2, #0x10
- mov r1, #0
-_021E8D5A:
- strb r1, [r0]
- add r0, r0, #1
- sub r2, r2, #1
- bne _021E8D5A
- ldr r0, [r4, #0xc]
- mov r1, #4
- bl MOD05_021E8E8C
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F4608
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8D7E:
- mov r1, #0x10
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r4, #4
- bl MOD05_021E3474
- mov r0, #0xa
- str r0, [r5, #0xc]
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8D9E:
- ldr r0, [r5, #0xc]
- sub r0, r0, #1
- str r0, [r5, #0xc]
- bpl _021E8E4C
- ldr r0, [r4]
- mov r3, #0x32
- add r0, r0, #1
- str r0, [r4]
- mov r0, #0xc
- str r0, [r5, #0xc]
- mov r0, #0xf
- lsl r0, r0, #0xc
- str r0, [sp]
- lsl r3, r3, #4
- str r3, [sp, #4]
- ldr r0, _021E8E50 ; =0x04000010
- mov r1, #0
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- mov r0, #4
- str r0, [sp, #0x10]
- add r0, r5, #0
- mov r2, #0xbf
- add r3, #0xdf
- bl MOD05_021E8EC0
- add sp, #0x14
- pop {r3, r4, r5, r6, pc}
-_021E8DD6:
- ldr r0, [r5, #0xc]
- sub r0, r0, #1
- str r0, [r5, #0xc]
- bpl _021E8E4C
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8DE8:
- mov r0, #8
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r2, #0
- str r0, [sp, #8]
- mov r0, #3
- mov r1, #0x1e
- add r3, r2, #0
- bl FUN_0200E1D0
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8E0A:
- bl FUN_0200E308
- cmp r0, #0
- beq _021E8E4C
- ldr r0, [r4]
- add sp, #0x14
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8E1C:
- add r0, r5, #0
- bl MOD05_021E8EA8
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021E8E36
- mov r0, #1
- str r0, [r1]
-_021E8E36:
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
-_021E8E4C:
- add sp, #0x14
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-_021E8E50: .word 0x04000010
-
- thumb_func_start MOD05_021E8E54
-MOD05_021E8E54: ; 0x021E8E54
- ldr r3, _021E8E60 ; =FUN_0200CA60
- mov r2, #1
- add r1, r0, #0
- ldr r0, _021E8E64 ; =MOD05_021E8E68
- lsl r2, r2, #0xa
- bx r3
- .balign 4, 0
-_021E8E60: .word FUN_0200CA60
-_021E8E64: .word MOD05_021E8E68
-
- thumb_func_start MOD05_021E8E68
-MOD05_021E8E68: ; 0x021E8E68
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4, #8]
- cmp r0, #2
- blo _021E8E7C
- ldr r0, [r4]
- bl FUN_02012B30
- mov r0, #0
- str r0, [r4, #8]
-_021E8E7C:
- ldr r0, [r4]
- bl FUN_02012B68
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E8E8C
-MOD05_021E8E8C: ; 0x021E8E8C
- push {r4, lr}
- add r4, r0, #0
- add r0, r1, #0
- bl FUN_02012A00
- str r0, [r4]
- mov r0, #0
- str r0, [r4, #8]
- add r0, r4, #0
- bl MOD05_021E8E54
- str r0, [r4, #4]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E8EA8
-MOD05_021E8EA8: ; 0x021E8EA8
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #4]
- bl FUN_0200CAB4
- ldr r0, [r4]
- bl FUN_02012AC4
- ldr r0, [r4]
- bl FUN_02012B00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E8EC0
-MOD05_021E8EC0: ; 0x021E8EC0
- push {r4, r5, lr}
- sub sp, #0x14
- ldr r4, [sp, #0x20]
- add r5, sp, #0x10
- str r4, [sp]
- mov r4, #0x14
- ldrsh r4, [r5, r4]
- str r4, [sp, #4]
- ldr r4, [sp, #0x28]
- str r4, [sp, #8]
- ldr r4, [sp, #0x2c]
- str r4, [sp, #0xc]
- ldr r4, [sp, #0x30]
- str r4, [sp, #0x10]
- ldr r0, [r0]
- bl FUN_02012A30
- add sp, #0x14
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E8EE8
-MOD05_021E8EE8: ; 0x021E8EE8
- push {r3, r4, r5, r6, r7, lr}
- ldr r0, [r0]
- add r7, r1, #0
- bl FUN_02012B20
- add r5, r0, #0
- mov r6, #0
-_021E8EF6:
- ldr r0, [r5]
- add r1, r7, #0
- lsl r0, r0, #0x10
- asr r4, r0, #0x10
- add r0, r6, #0
- bl _u32_div_f
- mov r1, #1
- tst r0, r1
- bne _021E8F0E
- lsl r0, r4, #0x10
- b _021E8F12
-_021E8F0E:
- neg r0, r4
- lsl r0, r0, #0x10
-_021E8F12:
- lsr r0, r0, #0x10
- str r0, [r5]
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #0xc0
- blt _021E8EF6
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E8F20
-MOD05_021E8F20: ; 0x021E8F20
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #5
- bhi _021E9026
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E8F3C: ; jump table
- .short _021E8F48 - _021E8F3C - 2 ; case 0
- .short _021E8F68 - _021E8F3C - 2 ; case 1
- .short _021E8F84 - _021E8F3C - 2 ; case 2
- .short _021E8F92 - _021E8F3C - 2 ; case 3
- .short _021E8FDC - _021E8F3C - 2 ; case 4
- .short _021E8FFC - _021E8F3C - 2 ; case 5
-_021E8F48:
- mov r0, #4
- mov r1, #0x1c
- bl AllocFromHeap
- str r0, [r4, #0xc]
- mov r2, #0x1c
- mov r1, #0
-_021E8F56:
- strb r1, [r0]
- add r0, r0, #1
- sub r2, r2, #1
- bne _021E8F56
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8F68:
- mov r0, #2
- str r0, [sp]
- mov r0, #1
- add r1, r0, #0
- sub r1, #0x11
- add r2, r1, #0
- add r3, r4, #4
- bl MOD05_021E3474
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8F84:
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _021E9026
- add r0, r0, #1
- add sp, #0xc
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8F92:
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F4608
- mov r0, #0xc
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r1, #0x10
- str r0, [sp, #8]
- mov r0, #3
- add r2, r1, #0
- mov r3, #0
- bl FUN_0200E1D0
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- str r0, [r5]
- bl Camera_GetDistance
- mov r2, #0x19
- add r1, r0, #0
- mov r0, #0xc
- lsl r2, r2, #0x10
- str r0, [sp]
- ldr r3, _021E902C ; =0xFFFFE000
- add r0, r5, #4
- sub r2, r1, r2
- bl MOD05_021E3644
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8FDC:
- add r0, r5, #4
- bl MOD05_021E36A4
- ldr r0, [r5, #4]
- ldr r1, [r5]
- bl Camera_SetDistance
- bl FUN_0200E308
- cmp r0, #0
- beq _021E9026
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E8FFC:
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021E9010
- mov r0, #1
- str r0, [r1]
-_021E9010:
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
-_021E9026:
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- nop
-_021E902C: .word 0xFFFFE000
-
- thumb_func_start MOD05_021E9030
-MOD05_021E9030: ; 0x021E9030
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #5
- bhi _021E9136
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E904C: ; jump table
- .short _021E9058 - _021E904C - 2 ; case 0
- .short _021E9078 - _021E904C - 2 ; case 1
- .short _021E9094 - _021E904C - 2 ; case 2
- .short _021E90A2 - _021E904C - 2 ; case 3
- .short _021E90EC - _021E904C - 2 ; case 4
- .short _021E910C - _021E904C - 2 ; case 5
-_021E9058:
- mov r0, #4
- mov r1, #0x1c
- bl AllocFromHeap
- str r0, [r4, #0xc]
- mov r2, #0x1c
- mov r1, #0
-_021E9066:
- strb r1, [r0]
- add r0, r0, #1
- sub r2, r2, #1
- bne _021E9066
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E9078:
- mov r1, #0x10
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r4, #4
- bl MOD05_021E3474
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E9094:
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _021E9136
- add r0, r0, #1
- add sp, #0xc
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E90A2:
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F4608
- mov r0, #0xc
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r1, #0x10
- str r0, [sp, #8]
- mov r0, #3
- add r2, r1, #0
- mov r3, #0
- bl FUN_0200E1D0
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- str r0, [r5]
- bl Camera_GetDistance
- mov r2, #0x32
- add r1, r0, #0
- mov r0, #0xc
- lsl r2, r2, #0x10
- str r0, [sp]
- ldr r3, _021E913C ; =0xFFFFB000
- add r0, r5, #4
- sub r2, r1, r2
- bl MOD05_021E3644
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E90EC:
- add r0, r5, #4
- bl MOD05_021E36A4
- ldr r0, [r5, #4]
- ldr r1, [r5]
- bl Camera_SetDistance
- bl FUN_0200E308
- cmp r0, #0
- beq _021E9136
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021E910C:
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021E9120
- mov r0, #1
- str r0, [r1]
-_021E9120:
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
-_021E9136:
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- nop
-_021E913C: .word 0xFFFFB000
-
- thumb_func_start MOD05_021E9140
-MOD05_021E9140: ; 0x021E9140
- push {r4, r5, r6, r7, lr}
- sub sp, #0x5c
- add r7, r1, #0
- str r0, [sp, #0x10]
- ldr r0, [r7]
- ldr r4, [r7, #0xc]
- cmp r0, #7
- bls _021E9152
- b _021E948A
-_021E9152:
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E915E: ; jump table
- .short _021E916E - _021E915E - 2 ; case 0
- .short _021E9228 - _021E915E - 2 ; case 1
- .short _021E9242 - _021E915E - 2 ; case 2
- .short _021E924E - _021E915E - 2 ; case 3
- .short _021E92B2 - _021E915E - 2 ; case 4
- .short _021E931A - _021E915E - 2 ; case 5
- .short _021E93A6 - _021E915E - 2 ; case 6
- .short _021E9430 - _021E915E - 2 ; case 7
-_021E916E:
- mov r1, #0x1e
- mov r0, #4
- lsl r1, r1, #4
- bl AllocFromHeap
- mov r2, #0x1e
- str r0, [r7, #0xc]
- mov r1, #0
- lsl r2, r2, #4
- bl memset
- ldr r0, [r7, #0x10]
- ldr r4, [r7, #0xc]
- ldr r1, [r0, #0x20]
- mov r0, #7
- lsl r0, r0, #6
- str r1, [r4, r0]
- bl MOD05_021E3768
- str r0, [r4, #0x44]
- add r0, r4, #0
- add r0, #0x48
- mov r1, #2
- mov r2, #1
- bl MOD05_021E3E14
- mov r0, #5
- str r0, [sp]
- mov r0, #7
- str r0, [sp, #4]
- mov r0, #6
- str r0, [sp, #8]
- ldr r0, _021E949C ; =0x000927C0
- mov r1, #0x61
- str r0, [sp, #0xc]
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x48
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- mov r0, #0
- str r0, [sp, #0x14]
- add r6, r0, #0
- add r0, r4, #0
- str r0, [sp, #0x1c]
- add r0, #0x48
- add r5, r4, #0
- str r0, [sp, #0x1c]
-_021E91D4:
- mov r0, #0
- str r0, [sp]
- mov r1, #0x61
- str r0, [sp, #4]
- lsl r1, r1, #2
- mov r2, #2
- mov r3, #6
- ldr r0, [sp, #0x1c]
- add r1, r4, r1
- lsl r2, r2, #0x12
- lsl r3, r3, #0x10
- bl MOD05_021E3FC4
- mov r1, #0x6e
- lsl r1, r1, #2
- str r0, [r5, r1]
- add r0, r1, #0
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- add r1, r6, #0
- bl FUN_02020310
- ldr r0, [sp, #0x14]
- add r5, r5, #4
- add r0, r0, #1
- add r6, r6, #2
- str r0, [sp, #0x14]
- cmp r0, #2
- blt _021E91D4
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E948A
-_021E9228:
- mov r0, #2
- str r0, [sp]
- mov r0, #1
- add r1, r0, #0
- sub r1, #0x11
- add r2, r1, #0
- add r3, r7, #4
- bl MOD05_021E3474
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E948A
-_021E9242:
- ldr r1, [r7, #4]
- cmp r1, #0
- beq _021E9310
- add r0, r0, #1
- str r0, [r7]
- b _021E948A
-_021E924E:
- mov r0, #0xa
- mov r2, #1
- str r0, [sp]
- add r0, r4, #0
- mov r1, #0x29
- lsl r2, r2, #0xc
- mov r3, #2
- bl MOD05_021E3644
- ldr r1, [r4]
- add r0, sp, #0x50
- add r2, r1, #0
- add r3, r1, #0
- bl MOD05_021E3FF8
- mov r6, #0
- add r5, r4, #0
-_021E9270:
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- add r1, sp, #0x50
- bl FUN_02020064
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E9270
- add r0, r4, #0
- ldr r2, _021E94A0 ; =0x0000FFFF
- add r0, #0x18
- mov r1, #0
- mov r3, #0xa
- bl MOD05_021E35B0
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E948A
-_021E92B2:
- add r0, r4, #0
- bl MOD05_021E36A4
- ldr r1, [r4]
- str r0, [sp, #0x18]
- add r0, sp, #0x50
- add r2, r1, #0
- add r3, r1, #0
- bl MOD05_021E3FF8
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E35C0
- mov r6, #0
- add r5, r4, #0
-_021E92D2:
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- add r1, sp, #0x50
- bl FUN_02020064
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E92D2
- mov r0, #0x6e
- ldr r1, [r4, #0x18]
- lsl r0, r0, #2
- lsl r1, r1, #0x10
- ldr r0, [r4, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
- mov r1, #0x6f
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- ldr r2, [r4, #0x18]
- sub r1, #0xbc
- sub r1, r2, r1
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- bl FUN_02020088
- ldr r0, [sp, #0x18]
- cmp r0, #1
- beq _021E9312
-_021E9310:
- b _021E948A
-_021E9312:
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E948A
-_021E931A:
- mov r0, #0
- str r0, [sp]
- mov r0, #0xff
- lsl r0, r0, #0xc
- str r0, [sp, #4]
- mov r0, #0xa
- lsl r0, r0, #0xc
- str r0, [sp, #8]
- ldr r1, [r4, #0x44]
- add r0, r7, #0
- mov r2, #0x60
- mov r3, #6
- bl MOD05_021E37CC
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_02020130
- mov r0, #0x6f
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #2
- bl FUN_02020130
- mov r0, #6
- str r0, [sp]
- add r0, r4, #0
- mov r2, #0xff
- mov r3, #0xa
- add r0, #0x2c
- mov r1, #0
- lsl r2, r2, #0xc
- lsl r3, r3, #0xc
- bl MOD05_021E3644
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- bl Camera_GetDistance
- add r1, r0, #0
- mov r0, #6
- str r0, [sp]
- mov r0, #0x71
- mov r2, #0x7d
- lsl r0, r0, #2
- lsl r2, r2, #0xe
- ldr r3, _021E94A4 ; =0xFFFF6000
- add r0, r4, r0
- sub r2, r1, r2
- bl MOD05_021E3644
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #0
- bl FUN_02020088
- mov r0, #0x6f
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #0
- bl FUN_02020088
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E948A
-_021E93A6:
- add r0, r4, #0
- add r0, #0x2c
- bl MOD05_021E36A4
- mov r1, #2
- ldr r2, [r4, #0x2c]
- lsl r1, r1, #0x12
- sub r1, r1, r2
- mov r2, #6
- add r0, sp, #0x2c
- lsl r2, r2, #0x10
- mov r3, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x2c
- ldmia r3!, {r0, r1}
- add r2, sp, #0x44
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r1, #2
- str r0, [r2]
- ldr r2, [r4, #0x2c]
- lsl r1, r1, #0x12
- add r1, r2, r1
- mov r2, #6
- add r0, sp, #0x20
- lsl r2, r2, #0x10
- mov r3, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x20
- ldmia r3!, {r0, r1}
- add r2, sp, #0x38
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, sp, #0x44
- str r0, [r2]
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_02020044
- mov r0, #0x6f
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x38
- bl FUN_02020044
- mov r0, #0x71
- lsl r0, r0, #2
- add r0, r4, r0
- bl MOD05_021E36A4
- mov r1, #0x71
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- sub r1, r1, #4
- ldr r1, [r4, r1]
- bl Camera_SetDistance
- add r0, r7, #0
- bl MOD05_021E35AC
- cmp r0, #0
- beq _021E948A
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E948A
-_021E9430:
- mov r0, #0
- add r1, r0, #0
- bl FUN_0200E3A0
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r1, [r7, #0x14]
- cmp r1, #0
- beq _021E944A
- mov r0, #1
- str r0, [r1]
-_021E944A:
- mov r6, #0
- add r5, r4, #0
-_021E944E:
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl FUN_0201FFC8
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E944E
- mov r1, #0x61
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x48
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- add r0, #0x48
- bl MOD05_021E3E44
- ldr r0, [r4, #0x44]
- bl MOD05_021E37A4
- ldr r1, [r7, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- ldr r0, [sp, #0x10]
- bl FUN_0200621C
-_021E948A:
- ldr r0, [r7]
- cmp r0, #7
- beq _021E9496
- ldr r0, [r4, #0x48]
- bl FUN_0201FDEC
-_021E9496:
- add sp, #0x5c
- pop {r4, r5, r6, r7, pc}
- nop
-_021E949C: .word 0x000927C0
-_021E94A0: .word 0x0000FFFF
-_021E94A4: .word 0xFFFF6000
-
- thumb_func_start MOD05_021E94A8
-MOD05_021E94A8: ; 0x021E94A8
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x78
- add r6, r1, #0
- str r0, [sp, #0x10]
- ldr r0, [r6]
- ldr r4, [r6, #0xc]
- cmp r0, #7
- bhi _021E95A2
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E94C4: ; jump table
- .short _021E94D4 - _021E94C4 - 2 ; case 0
- .short _021E9582 - _021E94C4 - 2 ; case 1
- .short _021E959C - _021E94C4 - 2 ; case 2
- .short _021E95AA - _021E94C4 - 2 ; case 3
- .short _021E9638 - _021E94C4 - 2 ; case 4
- .short _021E96C8 - _021E94C4 - 2 ; case 5
- .short _021E9702 - _021E94C4 - 2 ; case 6
- .short _021E972C - _021E94C4 - 2 ; case 7
-_021E94D4:
- mov r1, #0x71
- mov r0, #4
- lsl r1, r1, #2
- bl AllocFromHeap
- mov r2, #0x71
- str r0, [r6, #0xc]
- mov r1, #0
- lsl r2, r2, #2
- bl memset
- ldr r0, [r6, #0x10]
- ldr r4, [r6, #0xc]
- ldr r1, [r0, #0x20]
- mov r0, #0x69
- lsl r0, r0, #2
- str r1, [r4, r0]
- bl MOD05_021E39FC
- str r0, [r4, #0x28]
- add r0, r4, #0
- add r0, #0x2c
- mov r1, #2
- mov r2, #1
- bl MOD05_021E3E14
- mov r0, #2
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- mov r0, #3
- str r0, [sp, #8]
- ldr r0, _021E9798 ; =0x000927C0
- mov r1, #0x5a
- str r0, [sp, #0xc]
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x2c
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- add r0, r4, #0
- str r0, [sp, #0x14]
- add r0, #0x2c
- mov r7, #0
- add r5, r4, #0
- str r0, [sp, #0x14]
-_021E9536:
- mov r0, #0
- str r0, [sp]
- mov r1, #0x5a
- str r0, [sp, #4]
- lsl r1, r1, #2
- mov r2, #2
- ldr r0, [sp, #0x14]
- add r1, r4, r1
- lsl r2, r2, #0x12
- mov r3, #0
- bl MOD05_021E3FC4
- mov r1, #0x67
- lsl r1, r1, #2
- str r0, [r5, r1]
- add r0, r1, #0
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- mov r1, #2
- bl FUN_020200EC
- add r7, r7, #1
- add r5, r5, #4
- cmp r7, #2
- blt _021E9536
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021E9786
-_021E9582:
- mov r1, #0x10
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r6, #4
- bl MOD05_021E3474
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021E9786
-_021E959C:
- ldr r1, [r6, #4]
- cmp r1, #0
- bne _021E95A4
-_021E95A2:
- b _021E9786
-_021E95A4:
- add r0, r0, #1
- str r0, [r6]
- b _021E9786
-_021E95AA:
- mov r2, #3
- ldr r1, _021E979C ; =0xFFF40000
- add r0, r4, #0
- lsl r2, r2, #0x12
- mov r3, #8
- bl MOD05_021E35EC
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x1a
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r2, #2
- ldr r1, [r4]
- lsl r2, r2, #0x12
- sub r1, r2, r1
- add r0, sp, #0x3c
- lsr r2, r2, #1
- mov r3, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x3c
- ldmia r3!, {r0, r1}
- add r2, sp, #0x6c
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r3, #0
- str r0, [r2]
- mov r2, #2
- ldr r1, [r4]
- lsl r2, r2, #0x12
- add r0, sp, #0x30
- add r1, r1, r2
- bl MOD05_021E3FF8
- add r3, sp, #0x30
- ldmia r3!, {r0, r1}
- add r2, sp, #0x60
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, sp, #0x6c
- str r0, [r2]
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_02020044
- mov r0, #0x1a
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x60
- bl FUN_02020044
- add r0, r4, #0
- ldr r2, _021E97A0 ; =0x0001FFFE
- add r0, #0x14
- mov r1, #0
- mov r3, #8
- bl MOD05_021E35B0
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021E9786
-_021E9638:
- add r0, r4, #0
- bl MOD05_021E35FC
- mov r2, #2
- add r5, r0, #0
- ldr r1, [r4]
- lsl r2, r2, #0x12
- sub r1, r2, r1
- add r0, sp, #0x24
- lsr r2, r2, #1
- mov r3, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x24
- ldmia r3!, {r0, r1}
- add r2, sp, #0x54
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r3, #0
- str r0, [r2]
- mov r2, #2
- ldr r1, [r4]
- lsl r2, r2, #0x12
- add r0, sp, #0x18
- add r1, r1, r2
- bl MOD05_021E3FF8
- add r3, sp, #0x18
- ldmia r3!, {r0, r1}
- add r2, sp, #0x48
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, sp, #0x54
- str r0, [r2]
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_02020044
- mov r0, #0x1a
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x48
- bl FUN_02020044
- add r0, r4, #0
- add r0, #0x14
- bl MOD05_021E35C0
- mov r0, #0x67
- ldr r1, [r4, #0x14]
- lsl r0, r0, #2
- lsl r1, r1, #0x10
- ldr r0, [r4, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
- ldr r1, [r4, #0x14]
- mov r0, #0x1a
- lsl r0, r0, #4
- neg r1, r1
- lsl r1, r1, #0x10
- ldr r0, [r4, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
- cmp r5, #1
- bne _021E9786
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021E9786
-_021E96C8:
- mov r3, #1
- lsl r3, r3, #0xc
- str r3, [sp]
- ldr r1, [r4, #0x28]
- add r0, r6, #0
- mov r2, #8
- bl MOD05_021E3A70
- mov r0, #0x69
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl Camera_GetDistance
- add r1, r0, #0
- mov r0, #8
- str r0, [sp]
- mov r0, #0x6a
- mov r2, #0x7d
- lsl r0, r0, #2
- lsl r2, r2, #0xe
- ldr r3, _021E97A4 ; =0xFFFF6000
- add r0, r4, r0
- sub r2, r1, r2
- bl MOD05_021E3644
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021E9786
-_021E9702:
- mov r0, #0x6a
- lsl r0, r0, #2
- add r0, r4, r0
- bl MOD05_021E36A4
- mov r1, #0x6a
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- sub r1, r1, #4
- ldr r1, [r4, r1]
- bl Camera_SetDistance
- add r0, r6, #0
- bl MOD05_021E35AC
- cmp r0, #1
- bne _021E9786
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021E9786
-_021E972C:
- mov r0, #0
- add r1, r0, #0
- bl FUN_0200E3A0
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r1, [r6, #0x14]
- cmp r1, #0
- beq _021E9746
- mov r0, #1
- str r0, [r1]
-_021E9746:
- mov r7, #0
- add r5, r4, #0
-_021E974A:
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl FUN_0201FFC8
- add r7, r7, #1
- add r5, r5, #4
- cmp r7, #2
- blt _021E974A
- mov r1, #0x5a
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x2c
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- add r0, #0x2c
- bl MOD05_021E3E44
- ldr r0, [r4, #0x28]
- bl MOD05_021E3A48
- ldr r1, [r6, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- ldr r0, [sp, #0x10]
- bl FUN_0200621C
-_021E9786:
- ldr r0, [r6]
- cmp r0, #7
- beq _021E9792
- ldr r0, [r4, #0x2c]
- bl FUN_0201FDEC
-_021E9792:
- add sp, #0x78
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E9798: .word 0x000927C0
-_021E979C: .word 0xFFF40000
-_021E97A0: .word 0x0001FFFE
-_021E97A4: .word 0xFFFF6000
-
- thumb_func_start MOD05_021E97A8
-MOD05_021E97A8: ; 0x021E97A8
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x58
- add r7, r1, #0
- str r0, [sp, #0x14]
- ldr r0, [r7]
- ldr r4, [r7, #0xc]
- cmp r0, #7
- bls _021E97BA
- b _021E9B2A
-_021E97BA:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E97C6: ; jump table
- .short _021E97D6 - _021E97C6 - 2 ; case 0
- .short _021E9892 - _021E97C6 - 2 ; case 1
- .short _021E98AC - _021E97C6 - 2 ; case 2
- .short _021E98F2 - _021E97C6 - 2 ; case 3
- .short _021E9958 - _021E97C6 - 2 ; case 4
- .short _021E99E4 - _021E97C6 - 2 ; case 5
- .short _021E9A68 - _021E97C6 - 2 ; case 6
- .short _021E9AD0 - _021E97C6 - 2 ; case 7
-_021E97D6:
- mov r1, #0x7a
- mov r0, #4
- lsl r1, r1, #2
- bl AllocFromHeap
- mov r2, #0x7a
- str r0, [r7, #0xc]
- mov r1, #0
- lsl r2, r2, #2
- bl memset
- ldr r0, [r7, #0x10]
- ldr r4, [r7, #0xc]
- ldr r1, [r0, #0x20]
- mov r0, #0x72
- lsl r0, r0, #2
- str r1, [r4, r0]
- add r0, r4, #0
- add r0, #0x40
- mov r1, #4
- bl MOD05_021E8E8C
- mov r0, #0x79
- mov r1, #0xc
- lsl r0, r0, #2
- str r1, [r4, r0]
- add r0, r4, #0
- add r0, #0x50
- mov r1, #2
- mov r2, #1
- bl MOD05_021E3E14
- mov r0, #5
- str r0, [sp]
- mov r0, #7
- str r0, [sp, #4]
- mov r0, #6
- str r0, [sp, #8]
- ldr r0, _021E9B4C ; =0x000927C0
- mov r1, #0x63
- str r0, [sp, #0xc]
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x50
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- add r0, r4, #0
- str r0, [sp, #0x1c]
- add r0, #0x50
- mov r6, #0
- add r5, r4, #0
- str r0, [sp, #0x1c]
-_021E9844:
- mov r0, #0
- str r0, [sp]
- mov r1, #0x63
- str r0, [sp, #4]
- lsl r1, r1, #2
- mov r2, #2
- mov r3, #6
- ldr r0, [sp, #0x1c]
- add r1, r4, r1
- lsl r2, r2, #0x12
- lsl r3, r3, #0x10
- bl MOD05_021E3FC4
- mov r1, #7
- lsl r1, r1, #6
- str r0, [r5, r1]
- add r0, r1, #0
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- add r1, r6, #0
- bl FUN_02020310
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E9844
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E9B2A
-_021E9892:
- mov r0, #2
- str r0, [sp]
- mov r0, #1
- add r1, r0, #0
- sub r1, #0x11
- add r2, r1, #0
- add r3, r7, #4
- bl MOD05_021E3474
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E9B2A
-_021E98AC:
- mov r0, #0x79
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r0, [r4, r0]
- cmp r0, #0
- bne _021E98E4
- mov r0, #3
- lsl r0, r0, #0xe
- mov r3, #0x32
- str r0, [sp]
- lsl r3, r3, #4
- str r3, [sp, #4]
- ldr r0, _021E9B50 ; =0x04000010
- mov r1, #0
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- mov r0, #4
- str r0, [sp, #0x10]
- add r0, r4, #0
- add r0, #0x40
- mov r2, #0xbf
- sub r3, #0x76
- bl MOD05_021E8EC0
- mov r0, #1
- str r0, [r4, #0x4c]
-_021E98E4:
- ldr r0, [r7, #4]
- cmp r0, #0
- beq _021E99BE
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E9B2A
-_021E98F2:
- add r0, r4, #0
- add r0, #0x18
- mov r1, #0
- mov r2, #0x10
- mov r3, #8
- bl MOD05_021E35B0
- ldr r3, [r4, #0x18]
- mov r0, #0x10
- sub r0, r0, r3
- str r0, [sp]
- ldr r0, _021E9B54 ; =0x04000050
- mov r1, #0
- mov r2, #0xf
- bl G2x_SetBlendAlpha_
- mov r6, #0
- add r5, r4, #0
-_021E9916:
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- mov r1, #1
- bl FUN_02020398
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E9916
- add r0, r4, #0
- ldr r2, _021E9B58 ; =0x0000FFFF
- add r0, #0x2c
- mov r1, #0
- mov r3, #8
- bl MOD05_021E35B0
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E9B2A
-_021E9958:
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E35C0
- add r6, r0, #0
- ldr r1, [r4, #0x18]
- mov r0, #0x10
- sub r0, r0, r1
- lsl r0, r0, #8
- orr r1, r0
- ldr r0, _021E9B5C ; =0x04000052
- strh r1, [r0]
- ldr r0, [r4, #0x2c]
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- add r0, r4, #0
- add r0, #0x2c
- bl MOD05_021E35C0
- cmp r0, #0
- bne _021E99A2
- mov r0, #7
- ldr r1, [r4, #0x2c]
- lsl r0, r0, #6
- lsl r1, r1, #0x10
- ldr r0, [r4, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
- mov r0, #0x71
- lsl r0, r0, #2
- lsl r1, r5, #0x10
- ldr r0, [r4, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
- b _021E99BA
-_021E99A2:
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #0
- bl FUN_02020088
- mov r0, #0x71
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #0
- bl FUN_02020088
-_021E99BA:
- cmp r6, #1
- beq _021E99C0
-_021E99BE:
- b _021E9B2A
-_021E99C0:
- ldr r0, _021E9B54 ; =0x04000050
- mov r6, #0
- strh r6, [r0]
- add r5, r4, #0
-_021E99C8:
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_02020398
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E99C8
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E9B2A
-_021E99E4:
- mov r1, #8
- str r1, [sp]
- ldr r3, _021E9B60 ; =0x0000019A
- add r0, r4, #0
- lsl r1, r1, #9
- mov r2, #0x29
- bl MOD05_021E3644
- ldr r1, [r4]
- add r0, sp, #0x34
- add r2, r1, #0
- add r3, r1, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x34
- add r2, sp, #0x4c
- ldmia r3!, {r0, r1}
- str r2, [sp, #0x20]
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r6, #0
- str r0, [r2]
- add r5, r4, #0
-_021E9A12:
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- ldr r1, [sp, #0x20]
- bl FUN_02020064
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E9A12
- mov r0, #0x72
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl Camera_GetDistance
- add r1, r0, #0
- mov r0, #8
- str r0, [sp]
- mov r0, #0x73
- mov r2, #0x7d
- lsl r0, r0, #2
- lsl r2, r2, #0xe
- ldr r3, _021E9B64 ; =0xFFFF6000
- add r0, r4, r0
- sub r2, r1, r2
- bl MOD05_021E3644
- mov r0, #8
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r2, #0
- str r0, [sp, #8]
- mov r0, #3
- mov r1, #0x18
- add r3, r2, #0
- bl FUN_0200E1D0
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E9B2A
-_021E9A68:
- add r0, r4, #0
- bl MOD05_021E36A4
- ldr r1, [r4]
- str r0, [sp, #0x18]
- add r0, sp, #0x28
- add r2, r1, #0
- add r3, r1, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x28
- add r2, sp, #0x40
- ldmia r3!, {r0, r1}
- str r2, [sp, #0x24]
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r6, #0
- str r0, [r2]
- add r5, r4, #0
-_021E9A8E:
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- ldr r1, [sp, #0x24]
- bl FUN_02020064
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E9A8E
- mov r0, #0x73
- lsl r0, r0, #2
- add r0, r4, r0
- bl MOD05_021E36A4
- mov r1, #0x73
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- sub r1, r1, #4
- ldr r1, [r4, r1]
- bl Camera_SetDistance
- ldr r0, [sp, #0x18]
- cmp r0, #1
- bne _021E9B2A
- bl FUN_0200E308
- cmp r0, #1
- bne _021E9B2A
- ldr r0, [r7]
- add r0, r0, #1
- str r0, [r7]
- b _021E9B2A
-_021E9AD0:
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r1, [r7, #0x14]
- cmp r1, #0
- beq _021E9AE2
- mov r0, #1
- str r0, [r1]
-_021E9AE2:
- add r0, r4, #0
- add r0, #0x40
- bl MOD05_021E8EA8
- mov r6, #0
- str r6, [r4, #0x4c]
- add r5, r4, #0
-_021E9AF0:
- mov r0, #7
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- bl FUN_0201FFC8
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #2
- blt _021E9AF0
- mov r1, #0x63
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x50
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r4, #0x50
- add r0, r4, #0
- bl MOD05_021E3E44
- ldr r1, [r7, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- ldr r0, [sp, #0x14]
- bl FUN_0200621C
- add sp, #0x58
- pop {r3, r4, r5, r6, r7, pc}
-_021E9B2A:
- ldr r0, [r4, #0x4c]
- cmp r0, #1
- bne _021E9B3A
- add r0, r4, #0
- add r0, #0x40
- mov r1, #2
- bl MOD05_021E8EE8
-_021E9B3A:
- ldr r0, [r7]
- cmp r0, #7
- beq _021E9B46
- ldr r0, [r4, #0x50]
- bl FUN_0201FDEC
-_021E9B46:
- add sp, #0x58
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E9B4C: .word 0x000927C0
-_021E9B50: .word 0x04000010
-_021E9B54: .word 0x04000050
-_021E9B58: .word 0x0000FFFF
-_021E9B5C: .word 0x04000052
-_021E9B60: .word 0x0000019A
-_021E9B64: .word 0xFFFF6000
-
- thumb_func_start MOD05_021E9B68
-MOD05_021E9B68: ; 0x021E9B68
- push {r4, r5, r6, r7, lr}
- sub sp, #0x44
- str r0, [sp, #0x18]
- add r0, r1, #0
- ldr r0, [r0]
- str r1, [sp, #0x1c]
- ldr r4, [r1, #0xc]
- cmp r0, #7
- bls _021E9B7C
- b _021EA01A
-_021E9B7C:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E9B88: ; jump table
- .short _021E9B98 - _021E9B88 - 2 ; case 0
- .short _021E9CAA - _021E9B88 - 2 ; case 1
- .short _021E9CCA - _021E9B88 - 2 ; case 2
- .short _021E9D24 - _021E9B88 - 2 ; case 3
- .short _021E9DE4 - _021E9B88 - 2 ; case 4
- .short _021E9E82 - _021E9B88 - 2 ; case 5
- .short _021E9F1C - _021E9B88 - 2 ; case 6
- .short _021E9F70 - _021E9B88 - 2 ; case 7
-_021E9B98:
- mov r1, #9
- mov r0, #4
- lsl r1, r1, #6
- bl AllocFromHeap
- ldr r1, [sp, #0x1c]
- mov r2, #9
- str r0, [r1, #0xc]
- mov r1, #0
- lsl r2, r2, #6
- bl memset
- ldr r0, [sp, #0x1c]
- ldr r4, [r0, #0xc]
- ldr r0, [r0, #0x10]
- ldr r1, [r0, #0x20]
- mov r0, #0x22
- lsl r0, r0, #4
- str r1, [r4, r0]
- sub r0, #0x10
- add r0, r4, r0
- mov r1, #4
- bl MOD05_021E8E8C
- mov r0, #0x8f
- mov r1, #0xe
- lsl r0, r0, #2
- str r1, [r4, r0]
- add r0, r4, #0
- mov r1, #3
- mov r2, #1
- bl MOD05_021E3E14
- mov r0, #2
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- mov r0, #3
- str r0, [sp, #8]
- ldr r0, _021E9F5C ; =0x000927C0
- mov r1, #0x4f
- lsl r1, r1, #2
- str r0, [sp, #0xc]
- add r0, r4, #0
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- mov r7, #0x4f
- mov r6, #0
- add r5, r4, #0
- lsl r7, r7, #2
-_021E9C02:
- mov r0, #0
- str r0, [sp]
- mov r2, #0
- str r0, [sp, #4]
- add r0, r4, #0
- add r1, r4, r7
- add r3, r2, #0
- bl MOD05_021E3FC4
- mov r1, #0x17
- lsl r1, r1, #4
- str r0, [r5, r1]
- add r0, r1, #0
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r0, #4
- bl MOD05_021E4140
- mov r1, #0x7d
- lsl r1, r1, #2
- str r0, [r5, r1]
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #3
- blt _021E9C02
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- mov r0, #4
- mov r1, #1
- bl AllocWindows
- mov r1, #0x83
- lsl r1, r1, #2
- str r0, [r4, r1]
- mov r3, #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, [sp, #0x1c]
- ldr r1, [r4, r1]
- ldr r0, [r0, #0x10]
- mov r2, #3
- ldr r0, [r0, #8]
- bl AddWindowParameterized
- mov r1, #0
- add r0, sp, #0x28
- strh r1, [r0]
- mov r0, #3
- add r1, sp, #0x28
- mov r2, #2
- mov r3, #0x1e
- bl BG_LoadPlttData
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #0
- bl FillWindowPixelBuffer
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl ScheduleWindowCopyToVram
- ldr r0, [sp, #0x1c]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x1c]
- str r1, [r0]
- b _021EA01A
-_021E9CAA:
- mov r1, #0x10
- ldr r3, [sp, #0x1c]
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r3, #4
- bl MOD05_021E3474
- ldr r0, [sp, #0x1c]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x1c]
- str r1, [r0]
- b _021EA01A
-_021E9CCA:
- mov r3, #0x8f
- lsl r3, r3, #2
- ldr r0, [r4, r3]
- sub r0, r0, #1
- str r0, [r4, r3]
- ldr r0, [r4, r3]
- cmp r0, #0
- bne _021E9D08
- mov r0, #3
- lsl r0, r0, #0xe
- str r0, [sp]
- add r0, r3, #0
- add r0, #0xe4
- str r0, [sp, #4]
- ldr r0, _021E9F60 ; =0x04000010
- mov r1, #0
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- mov r0, #4
- str r0, [sp, #0x10]
- add r0, r3, #0
- sub r0, #0x2c
- add r0, r4, r0
- mov r2, #0xbf
- add r3, #0x6e
- bl MOD05_021E8EC0
- mov r0, #0x87
- mov r1, #1
- lsl r0, r0, #2
- str r1, [r4, r0]
-_021E9D08:
- ldr r0, [sp, #0x1c]
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021E9D34
- mov r0, #0x8f
- mov r1, #6
- lsl r0, r0, #2
- str r1, [r4, r0]
- ldr r0, [sp, #0x1c]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x1c]
- str r1, [r0]
- b _021EA01A
-_021E9D24:
- mov r0, #0x8f
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r1, [r4, r0]
- cmp r1, #0
- blt _021E9D36
-_021E9D34:
- b _021EA01A
-_021E9D36:
- sub r0, #0x1c
- ldr r0, [r4, r0]
- bl Camera_GetDistance
- add r1, r0, #0
- mov r0, #0x10
- str r0, [sp]
- mov r0, #0x89
- mov r2, #0x7d
- lsl r0, r0, #2
- lsl r2, r2, #0xe
- ldr r3, _021E9F64 ; =0xFFFF6000
- add r0, r4, r0
- sub r2, r1, r2
- bl MOD05_021E3644
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r2, _021E9F68 ; =0x0000FFFF
- add r0, r4, r0
- mov r1, #0
- mov r3, #6
- bl MOD05_021E35B0
- mov r0, #0x5f
- lsl r0, r0, #2
- mov r2, #0x1f
- add r0, r4, r0
- mov r1, #0xe7
- mvn r2, r2
- mov r3, #6
- bl MOD05_021E35B0
- mov r0, #0
- str r0, [sp]
- mov r0, #6
- str r0, [sp, #4]
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- mov r3, #0x40
- str r1, [sp, #8]
- mov r1, #0x56
- str r1, [sp, #0xc]
- str r3, [sp, #0x10]
- mov r1, #0xf
- str r1, [sp, #0x14]
- sub r0, #0x18
- mov r1, #0x2b
- ldr r0, [r4, r0]
- add r2, r1, #0
- add r3, #0xf8
- bl MOD05_021E4160
- mov r1, #0x2b
- mov r2, #0xe7
- add r0, sp, #0x38
- lsl r1, r1, #0xc
- lsl r2, r2, #0xc
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x38
- bl FUN_02020044
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r1, #1
- lsl r0, r1, #9
- str r1, [r4, r0]
- ldr r0, [sp, #0x1c]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x1c]
- str r1, [r0]
- mov r0, #0x8f
- mov r1, #4
- lsl r0, r0, #2
- str r1, [r4, r0]
- b _021EA01A
-_021E9DE4:
- mov r0, #0x8f
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r1, [r4, r0]
- cmp r1, #0
- bge _021E9E92
- sub r0, #0xac
- mov r2, #0x1f
- add r0, r4, r0
- mov r1, #0xe7
- mvn r2, r2
- mov r3, #6
- bl MOD05_021E35B0
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r2, _021E9F6C ; =0xFFFF0001
- add r0, r4, r0
- mov r1, #0
- mov r3, #6
- bl MOD05_021E35B0
- mov r0, #0
- str r0, [sp]
- mov r0, #6
- str r0, [sp, #4]
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r0, #0x14
- str r1, [sp, #8]
- mov r1, #0x56
- str r1, [sp, #0xc]
- mov r1, #0x40
- str r1, [sp, #0x10]
- mov r1, #0xf
- str r1, [sp, #0x14]
- mov r1, #0xd7
- add r3, r1, #0
- ldr r0, [r4, r0]
- add r2, r1, #0
- add r3, #0x61
- bl MOD05_021E4160
- mov r1, #0xd7
- mov r2, #0xe7
- add r0, sp, #0x38
- lsl r1, r1, #0xc
- lsl r2, r2, #0xc
- mov r3, #1
- bl MOD05_021E3FF8
- mov r0, #0x5d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x38
- bl FUN_02020044
- mov r0, #0x5d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r1, #0x81
- mov r0, #1
- lsl r1, r1, #2
- str r0, [r4, r1]
- ldr r0, [sp, #0x1c]
- add r1, #0x38
- ldr r0, [r0]
- add r2, r0, #1
- ldr r0, [sp, #0x1c]
- str r2, [r0]
- mov r0, #2
- str r0, [r4, r1]
- b _021EA01A
-_021E9E82:
- mov r0, #0x8f
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r1, [r4, r0]
- cmp r1, #0
- blt _021E9E94
-_021E9E92:
- b _021EA01A
-_021E9E94:
- sub r0, #0x98
- mov r2, #0x1f
- add r0, r4, r0
- mov r1, #0xe7
- mvn r2, r2
- mov r3, #6
- bl MOD05_021E35B0
- mov r0, #0x1e
- lsl r0, r0, #4
- ldr r2, _021E9F68 ; =0x0000FFFF
- add r0, r4, r0
- mov r1, #0
- mov r3, #6
- bl MOD05_021E35B0
- mov r0, #0
- str r0, [sp]
- mov r0, #6
- str r0, [sp, #4]
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r0, #0x10
- str r1, [sp, #8]
- mov r1, #0x56
- str r1, [sp, #0xc]
- mov r1, #0x40
- str r1, [sp, #0x10]
- mov r1, #0xf
- str r1, [sp, #0x14]
- mov r1, #0x81
- add r3, r1, #0
- ldr r0, [r4, r0]
- add r2, r1, #0
- add r3, #0xb7
- bl MOD05_021E4160
- mov r1, #0x81
- mov r2, #0xe7
- add r0, sp, #0x38
- lsl r1, r1, #0xc
- lsl r2, r2, #0xc
- mov r3, #2
- bl MOD05_021E3FF8
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x38
- bl FUN_02020044
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x82
- mov r1, #1
- lsl r0, r0, #2
- str r1, [r4, r0]
- ldr r0, [sp, #0x1c]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x1c]
- str r1, [r0]
- b _021EA01A
-_021E9F1C:
- mov r0, #0x89
- lsl r0, r0, #2
- add r0, r4, r0
- bl MOD05_021E36A4
- mov r1, #0x89
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- sub r1, r1, #4
- ldr r1, [r4, r1]
- bl Camera_SetDistance
- mov r1, #2
- lsl r1, r1, #8
- ldr r0, [r4, r1]
- cmp r0, #0
- bne _021EA01A
- add r0, r1, #4
- ldr r0, [r4, r0]
- cmp r0, #0
- bne _021EA01A
- add r1, #8
- ldr r0, [r4, r1]
- cmp r0, #0
- bne _021EA01A
- ldr r0, [sp, #0x1c]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x1c]
- str r1, [r0]
- b _021EA01A
- nop
-_021E9F5C: .word 0x000927C0
-_021E9F60: .word 0x04000010
-_021E9F64: .word 0xFFFF6000
-_021E9F68: .word 0x0000FFFF
-_021E9F6C: .word 0xFFFF0001
-_021E9F70:
- mov r0, #0
- add r1, r0, #0
- bl FUN_0200E3A0
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, [sp, #0x1c]
- ldr r1, [r0, #0x14]
- cmp r1, #0
- beq _021E9F8C
- mov r0, #1
- str r0, [r1]
-_021E9F8C:
- mov r0, #0x21
- lsl r0, r0, #4
- add r0, r4, r0
- bl MOD05_021E8EA8
- mov r0, #0x87
- lsl r0, r0, #2
- mov r6, #0
- add r7, r0, #0
- str r6, [r4, r0]
- add r5, r4, #0
- sub r7, #0x28
-_021E9FA4:
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_0201FFC8
- ldr r0, [r5, r7]
- bl MOD05_021E4158
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #3
- blt _021E9FA4
- mov r1, #0x4f
- lsl r1, r1, #2
- add r0, r4, #0
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- bl MOD05_021E3E44
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl ClearWindowTilemapAndCopyToVram
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl RemoveWindow
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl WindowArray_dtor
- mov r0, #3
- mov r1, #0x20
- mov r2, #0
- mov r3, #4
- bl BG_ClearCharDataRange
- ldr r0, [sp, #0x1c]
- mov r1, #3
- ldr r0, [r0, #0x10]
- ldr r0, [r0, #8]
- bl BgClearTilemapBufferAndCommit
- ldr r1, [sp, #0x1c]
- mov r0, #4
- ldr r1, [r1, #0xc]
- bl FreeToHeapExplicit
- ldr r0, [sp, #0x18]
- bl FUN_0200621C
- add sp, #0x44
- pop {r4, r5, r6, r7, pc}
-_021EA01A:
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- cmp r1, #1
- bne _021EA02E
- sub r0, #0xc
- add r0, r4, r0
- mov r1, #2
- bl MOD05_021E8EE8
-_021EA02E:
- mov r1, #0x5f
- mov r0, #0
- lsl r1, r1, #2
- str r0, [sp, #0x20]
- add r0, r4, r1
- add r1, #0x3c
- add r5, r4, #0
- str r0, [sp, #0x24]
- add r7, r4, r1
- add r6, r4, #0
-_021EA042:
- mov r0, #2
- lsl r0, r0, #8
- ldr r0, [r5, r0]
- cmp r0, #1
- bne _021EA0B0
- mov r0, #0x7d
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl MOD05_021E41B8
- cmp r0, #0
- beq _021EA062
- mov r0, #2
- mov r1, #0
- lsl r0, r0, #8
- str r1, [r5, r0]
-_021EA062:
- ldr r0, [sp, #0x24]
- bl MOD05_021E35C0
- add r0, r7, #0
- bl MOD05_021E35C0
- mov r1, #0x6e
- lsl r1, r1, #2
- mov r0, #0x17
- ldr r1, [r6, r1]
- lsl r0, r0, #4
- lsl r1, r1, #0x10
- ldr r0, [r5, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_0202011C
- add r3, r0, #0
- add r2, sp, #0x2c
- ldmia r3!, {r0, r1}
- mov ip, r2
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r1, ip
- str r0, [r2]
- mov r0, #0x5f
- lsl r0, r0, #2
- ldr r0, [r6, r0]
- lsl r0, r0, #0xc
- str r0, [sp, #0x30]
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_02020044
-_021EA0B0:
- ldr r0, [sp, #0x24]
- add r5, r5, #4
- add r0, #0x14
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x20]
- add r7, #0x14
- add r0, r0, #1
- add r6, #0x14
- str r0, [sp, #0x20]
- cmp r0, #3
- blt _021EA042
- mov r0, #0x83
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl ScheduleWindowCopyToVram
- ldr r0, [sp, #0x1c]
- ldr r0, [r0]
- cmp r0, #7
- beq _021EA0DE
- ldr r0, [r4]
- bl FUN_0201FDEC
-_021EA0DE:
- add sp, #0x44
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EA0E4
-MOD05_021EA0E4: ; 0x021EA0E4
- push {r4, r5, r6, r7, lr}
- sub sp, #0x34
- add r5, r1, #0
- add r6, r0, #0
- ldr r0, [r5]
- ldr r4, [r5, #0xc]
- cmp r0, #7
- bhi _021EA1B8
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EA100: ; jump table
- .short _021EA110 - _021EA100 - 2 ; case 0
- .short _021EA198 - _021EA100 - 2 ; case 1
- .short _021EA1B2 - _021EA100 - 2 ; case 2
- .short _021EA1C0 - _021EA100 - 2 ; case 3
- .short _021EA236 - _021EA100 - 2 ; case 4
- .short _021EA2C2 - _021EA100 - 2 ; case 5
- .short _021EA310 - _021EA100 - 2 ; case 6
- .short _021EA338 - _021EA100 - 2 ; case 7
-_021EA110:
- mov r1, #0x1f
- mov r0, #4
- lsl r1, r1, #4
- bl AllocFromHeap
- mov r2, #0x1f
- str r0, [r5, #0xc]
- mov r1, #0
- lsl r2, r2, #4
- bl memset
- ldr r0, [r5, #0x10]
- ldr r4, [r5, #0xc]
- ldr r1, [r0, #0x20]
- mov r0, #0x1d
- lsl r0, r0, #4
- str r1, [r4, r0]
- add r0, r4, #0
- mov r1, #1
- add r0, #0x5c
- add r2, r1, #0
- bl MOD05_021E3E14
- mov r0, #2
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- mov r0, #3
- str r0, [sp, #8]
- ldr r0, _021EA394 ; =0x000927C0
- mov r1, #0x66
- str r0, [sp, #0xc]
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x5c
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- mov r0, #0
- str r0, [sp]
- mov r1, #0x66
- str r0, [sp, #4]
- add r0, r4, #0
- lsl r1, r1, #2
- mov r2, #2
- ldr r3, _021EA398 ; =0xFFFE0000
- add r0, #0x5c
- add r1, r4, r1
- lsl r2, r2, #0x12
- bl MOD05_021E3FC4
- mov r1, #0x73
- lsl r1, r1, #2
- str r0, [r4, r1]
- ldr r0, [r4, r1]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EA382
-_021EA198:
- mov r0, #2
- str r0, [sp]
- mov r0, #1
- add r1, r0, #0
- sub r1, #0x11
- add r2, r1, #0
- add r3, r5, #4
- bl MOD05_021E3474
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EA382
-_021EA1B2:
- ldr r1, [r5, #4]
- cmp r1, #0
- bne _021EA1BA
-_021EA1B8:
- b _021EA382
-_021EA1BA:
- add r0, r0, #1
- str r0, [r5]
- b _021EA382
-_021EA1C0:
- mov r2, #1
- mov r0, #0xc
- lsl r2, r2, #0x14
- str r0, [sp]
- add r0, r4, #0
- mov r1, #0
- lsr r3, r2, #7
- bl MOD05_021E3644
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0xc
- str r0, [sp]
- add r0, r4, #0
- mov r2, #2
- ldr r1, _021EA39C ; =0x0000019A
- add r0, #0x18
- lsl r2, r2, #0xc
- mov r3, #0
- bl MOD05_021E3644
- mov r0, #0xc
- str r0, [sp]
- add r0, r4, #0
- mov r2, #2
- ldr r1, _021EA39C ; =0x0000019A
- add r0, #0x30
- lsl r2, r2, #0xc
- mov r3, #0
- bl MOD05_021E3644
- ldr r1, [r4, #0x18]
- ldr r2, [r4, #0x30]
- add r0, sp, #0x28
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x28
- mov r2, #2
- bl FUN_02020074
- add r0, r4, #0
- ldr r2, _021EA3A0 ; =0x0000FFFF
- add r0, #0x48
- mov r1, #0
- mov r3, #0xc
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EA382
-_021EA236:
- add r0, r4, #0
- bl MOD05_021E36A4
- mov r1, #2
- lsl r1, r1, #0x12
- add r6, r0, #0
- ldr r3, [r4]
- lsr r2, r1, #2
- sub r2, r3, r2
- add r0, sp, #0x10
- mov r3, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x10
- add r2, sp, #0x1c
- ldmia r3!, {r0, r1}
- add r7, r2, #0
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, r7, #0
- str r0, [r2]
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_02020044
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E36A4
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E36A4
- ldr r1, [r4, #0x18]
- ldr r2, [r4, #0x30]
- add r0, sp, #0x28
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x28
- bl FUN_02020064
- add r0, r4, #0
- add r0, #0x48
- bl MOD05_021E35C0
- mov r0, #0x73
- ldr r1, [r4, #0x48]
- lsl r0, r0, #2
- lsl r1, r1, #0x10
- ldr r0, [r4, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
- cmp r6, #1
- bne _021EA382
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #0
- bl FUN_020200A0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EA382
-_021EA2C2:
- ldr r0, [r5, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F4608
- mov r0, #0x1d
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- bl Camera_GetDistance
- add r1, r0, #0
- mov r0, #8
- str r0, [sp]
- mov r0, #0x75
- mov r2, #0xfa
- lsl r0, r0, #2
- lsl r2, r2, #0xe
- mov r3, #0xa
- add r0, r4, r0
- sub r2, r1, r2
- lsl r3, r3, #0xc
- bl MOD05_021E3644
- mov r0, #8
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r2, #0
- str r0, [sp, #8]
- mov r0, #3
- mov r1, #0x12
- add r3, r2, #0
- bl FUN_0200E1D0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EA382
-_021EA310:
- mov r0, #0x75
- lsl r0, r0, #2
- add r0, r4, r0
- bl MOD05_021E36A4
- mov r1, #0x75
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- sub r1, r1, #4
- ldr r1, [r4, r1]
- bl Camera_SetDistance
- bl FUN_0200E308
- cmp r0, #0
- beq _021EA382
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EA382
-_021EA338:
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, [r5, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r5, #0x14]
- cmp r1, #0
- beq _021EA354
- mov r0, #1
- str r0, [r1]
-_021EA354:
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_0201FFC8
- mov r1, #0x66
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x5c
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- add r0, #0x5c
- bl MOD05_021E3E44
- ldr r1, [r5, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
-_021EA382:
- ldr r0, [r5]
- cmp r0, #7
- beq _021EA38E
- ldr r0, [r4, #0x5c]
- bl FUN_0201FDEC
-_021EA38E:
- add sp, #0x34
- pop {r4, r5, r6, r7, pc}
- nop
-_021EA394: .word 0x000927C0
-_021EA398: .word 0xFFFE0000
-_021EA39C: .word 0x0000019A
-_021EA3A0: .word 0x0000FFFF
-
- thumb_func_start MOD05_021EA3A4
-MOD05_021EA3A4: ; 0x021EA3A4
- push {r4, r5, r6, r7, lr}
- sub sp, #0x44
- str r0, [sp, #0x14]
- add r0, r1, #0
- ldr r0, [r0]
- str r1, [sp, #0x18]
- ldr r4, [r1, #0xc]
- cmp r0, #9
- bls _021EA3B8
- b _021EA7DE
-_021EA3B8:
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EA3C4: ; jump table
- .short _021EA3D8 - _021EA3C4 - 2 ; case 0
- .short _021EA4CE - _021EA3C4 - 2 ; case 1
- .short _021EA4EE - _021EA3C4 - 2 ; case 2
- .short _021EA506 - _021EA3C4 - 2 ; case 3
- .short _021EA582 - _021EA3C4 - 2 ; case 4
- .short _021EA5FE - _021EA3C4 - 2 ; case 5
- .short _021EA674 - _021EA3C4 - 2 ; case 6
- .short _021EA6B4 - _021EA3C4 - 2 ; case 7
- .short _021EA6FA - _021EA3C4 - 2 ; case 8
- .short _021EA748 - _021EA3C4 - 2 ; case 9
-_021EA3D8:
- mov r1, #0x8a
- mov r0, #4
- lsl r1, r1, #2
- bl AllocFromHeap
- ldr r1, [sp, #0x18]
- mov r2, #0x8a
- str r0, [r1, #0xc]
- mov r1, #0
- lsl r2, r2, #2
- bl memset
- ldr r0, [sp, #0x18]
- mov r2, #1
- ldr r4, [r0, #0xc]
- ldr r0, [r0, #0x10]
- ldr r1, [r0, #0x20]
- mov r0, #0x82
- lsl r0, r0, #2
- str r1, [r4, r0]
- add r0, r4, #0
- mov r1, #3
- bl MOD05_021E3E14
- mov r0, #2
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- mov r0, #3
- str r0, [sp, #8]
- ldr r0, _021EA738 ; =0x000927C0
- mov r1, #0x4f
- lsl r1, r1, #2
- str r0, [sp, #0xc]
- add r0, r4, #0
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- mov r7, #0x4f
- mov r6, #0
- add r5, r4, #0
- lsl r7, r7, #2
-_021EA430:
- mov r0, #0
- mov r2, #0
- str r0, [sp]
- add r3, r2, #0
- str r0, [sp, #4]
- add r0, r4, #0
- add r1, r4, r7
- sub r3, #0x20
- bl MOD05_021E3FC4
- mov r1, #0x17
- lsl r1, r1, #4
- str r0, [r5, r1]
- add r0, r1, #0
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_020200A0
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #3
- blt _021EA430
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- mov r0, #4
- mov r1, #1
- bl AllocWindows
- mov r1, #2
- lsl r1, r1, #8
- str r0, [r4, r1]
- mov r3, #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, [sp, #0x18]
- ldr r1, [r4, r1]
- ldr r0, [r0, #0x10]
- mov r2, #3
- ldr r0, [r0, #8]
- bl AddWindowParameterized
- mov r1, #0
- add r0, sp, #0x28
- strh r1, [r0]
- mov r0, #3
- add r1, sp, #0x28
- mov r2, #2
- mov r3, #0x1e
- bl BG_LoadPlttData
- mov r0, #2
- lsl r0, r0, #8
- ldr r0, [r4, r0]
- mov r1, #0
- bl FillWindowPixelBuffer
- mov r0, #2
- lsl r0, r0, #8
- ldr r0, [r4, r0]
- bl ScheduleWindowCopyToVram
- mov r0, #4
- bl MOD05_021E4394
- mov r1, #0x81
- lsl r1, r1, #2
- str r0, [r4, r1]
- ldr r0, [sp, #0x18]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x18]
- str r1, [r0]
- b _021EA7DE
-_021EA4CE:
- mov r1, #0x10
- ldr r3, [sp, #0x18]
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r3, #4
- bl MOD05_021E3474
- ldr r0, [sp, #0x18]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x18]
- str r1, [r0]
- b _021EA7DE
-_021EA4EE:
- ldr r1, [sp, #0x18]
- ldr r1, [r1, #4]
- cmp r1, #0
- beq _021EA516
- add r1, r0, #1
- ldr r0, [sp, #0x18]
- str r1, [r0]
- mov r0, #0x89
- mov r1, #0
- lsl r0, r0, #2
- strh r1, [r4, r0]
- b _021EA7DE
-_021EA506:
- mov r0, #0x89
- lsl r0, r0, #2
- ldrsh r1, [r4, r0]
- sub r1, r1, #1
- strh r1, [r4, r0]
- ldrsh r1, [r4, r0]
- cmp r1, #0
- ble _021EA518
-_021EA516:
- b _021EA7DE
-_021EA518:
- sub r0, #0xa8
- mov r1, #0x1f
- add r0, r4, r0
- mvn r1, r1
- mov r2, #0xe0
- mov r3, #5
- bl MOD05_021E35B0
- mov r1, #2
- ldr r2, _021EA73C ; =0xFFFE0000
- add r0, sp, #0x38
- lsl r1, r1, #0x12
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x38
- bl FUN_02020044
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r2, _021EA740 ; =0x0000FFFF
- add r0, r4, r0
- mov r1, #0
- mov r3, #5
- bl MOD05_021E35B0
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r1, #0x7d
- mov r3, #1
- lsl r1, r1, #2
- str r3, [r4, r1]
- ldr r0, [sp, #0x18]
- add r1, #0x30
- ldr r0, [r0]
- add r2, r0, #1
- ldr r0, [sp, #0x18]
- str r2, [r0]
- strh r3, [r4, r1]
- b _021EA7DE
-_021EA582:
- mov r0, #0x89
- lsl r0, r0, #2
- ldrsh r1, [r4, r0]
- sub r1, r1, #1
- strh r1, [r4, r0]
- ldrsh r1, [r4, r0]
- cmp r1, #0
- bgt _021EA68E
- sub r0, #0x94
- mov r1, #0x1f
- add r0, r4, r0
- mvn r1, r1
- mov r2, #0xe0
- mov r3, #5
- bl MOD05_021E35B0
- mov r1, #0xd
- ldr r2, _021EA73C ; =0xFFFE0000
- add r0, sp, #0x38
- lsl r1, r1, #0x10
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x5d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x38
- bl FUN_02020044
- mov r0, #0x5d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x73
- lsl r0, r0, #2
- ldr r2, _021EA744 ; =0xFFFF0001
- add r0, r4, r0
- mov r1, #0
- mov r3, #5
- bl MOD05_021E35B0
- mov r0, #0x5d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r1, #0x7e
- mov r0, #1
- lsl r1, r1, #2
- str r0, [r4, r1]
- ldr r0, [sp, #0x18]
- add r1, #0x2c
- ldr r0, [r0]
- add r2, r0, #1
- ldr r0, [sp, #0x18]
- str r2, [r0]
- mov r0, #3
- strh r0, [r4, r1]
- b _021EA7DE
-_021EA5FE:
- mov r0, #0x89
- lsl r0, r0, #2
- ldrsh r1, [r4, r0]
- sub r1, r1, #1
- strh r1, [r4, r0]
- ldrsh r1, [r4, r0]
- cmp r1, #0
- bgt _021EA68E
- sub r0, #0x80
- mov r1, #0x1f
- add r0, r4, r0
- mvn r1, r1
- mov r2, #0xe0
- mov r3, #5
- bl MOD05_021E35B0
- mov r1, #3
- ldr r2, _021EA73C ; =0xFFFE0000
- add r0, sp, #0x38
- lsl r1, r1, #0x10
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x38
- bl FUN_02020044
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x1e
- lsl r0, r0, #4
- ldr r2, _021EA740 ; =0x0000FFFF
- add r0, r4, r0
- mov r1, #0
- mov r3, #5
- bl MOD05_021E35B0
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r0, #0x7f
- mov r1, #1
- lsl r0, r0, #2
- str r1, [r4, r0]
- ldr r0, [sp, #0x18]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x18]
- str r1, [r0]
- b _021EA7DE
-_021EA674:
- mov r1, #0x7d
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- cmp r0, #0
- bne _021EA68E
- add r0, r1, #4
- ldr r0, [r4, r0]
- cmp r0, #0
- bne _021EA68E
- add r1, #8
- ldr r0, [r4, r1]
- cmp r0, #0
- beq _021EA690
-_021EA68E:
- b _021EA7DE
-_021EA690:
- mov r7, #0x17
- mov r6, #0
- add r5, r4, #0
- lsl r7, r7, #4
-_021EA698:
- ldr r0, [r5, r7]
- mov r1, #0
- bl FUN_020200A0
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #3
- blt _021EA698
- ldr r0, [sp, #0x18]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x18]
- str r1, [r0]
- b _021EA7DE
-_021EA6B4:
- mov r0, #0xf
- mov r1, #1
- str r0, [sp]
- mov r0, #0x81
- lsl r0, r0, #2
- lsl r3, r1, #9
- ldr r0, [r4, r0]
- ldr r3, [r4, r3]
- add r2, r1, #0
- bl MOD05_021E43E4
- mov r0, #0x82
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl Camera_GetDistance
- add r1, r0, #0
- mov r0, #0x40
- str r0, [sp]
- mov r0, #0x83
- mov r2, #0xfa
- lsl r0, r0, #2
- lsl r2, r2, #0xe
- mov r3, #0xa
- add r0, r4, r0
- sub r2, r1, r2
- lsl r3, r3, #0xc
- bl MOD05_021E3644
- ldr r0, [sp, #0x18]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x18]
- str r1, [r0]
- b _021EA7DE
-_021EA6FA:
- mov r0, #0x81
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl MOD05_021E4424
- add r5, r0, #0
- mov r0, #2
- lsl r0, r0, #8
- ldr r0, [r4, r0]
- bl ScheduleWindowCopyToVram
- mov r0, #0x83
- lsl r0, r0, #2
- add r0, r4, r0
- bl MOD05_021E36A4
- mov r1, #0x83
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- sub r1, r1, #4
- ldr r1, [r4, r1]
- bl Camera_SetDistance
- cmp r5, #1
- bne _021EA7DE
- ldr r0, [sp, #0x18]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x18]
- str r1, [r0]
- b _021EA7DE
- .balign 4, 0
-_021EA738: .word 0x000927C0
-_021EA73C: .word 0xFFFE0000
-_021EA740: .word 0x0000FFFF
-_021EA744: .word 0xFFFF0001
-_021EA748:
- mov r0, #0
- add r1, r0, #0
- bl FUN_0200E3A0
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, [sp, #0x18]
- ldr r1, [r0, #0x14]
- cmp r1, #0
- beq _021EA764
- mov r0, #1
- str r0, [r1]
-_021EA764:
- mov r7, #0x17
- mov r6, #0
- add r5, r4, #0
- lsl r7, r7, #4
-_021EA76C:
- ldr r0, [r5, r7]
- bl FUN_0201FFC8
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #3
- blt _021EA76C
- mov r1, #0x4f
- lsl r1, r1, #2
- add r0, r4, #0
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- bl MOD05_021E3E44
- mov r0, #0x81
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl MOD05_021E43C4
- mov r0, #2
- lsl r0, r0, #8
- ldr r0, [r4, r0]
- bl ClearWindowTilemapAndCopyToVram
- mov r0, #2
- lsl r0, r0, #8
- ldr r0, [r4, r0]
- bl RemoveWindow
- mov r0, #2
- lsl r0, r0, #8
- ldr r0, [r4, r0]
- mov r1, #1
- bl WindowArray_dtor
- mov r0, #3
- mov r1, #0x20
- mov r2, #0
- mov r3, #4
- bl BG_ClearCharDataRange
- ldr r0, [sp, #0x18]
- mov r1, #3
- ldr r0, [r0, #0x10]
- ldr r0, [r0, #8]
- bl BgClearTilemapBufferAndCommit
- ldr r1, [sp, #0x18]
- mov r0, #4
- ldr r1, [r1, #0xc]
- bl FreeToHeapExplicit
- ldr r0, [sp, #0x14]
- bl FUN_0200621C
-_021EA7DE:
- mov r1, #0x5f
- mov r0, #0
- lsl r1, r1, #2
- str r0, [sp, #0x1c]
- add r0, r4, r1
- add r1, #0x3c
- add r5, r4, #0
- str r0, [sp, #0x20]
- add r7, r4, r1
- add r6, r4, #0
-_021EA7F2:
- mov r0, #0x7d
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- cmp r0, #1
- bne _021EA85A
- ldr r0, [sp, #0x20]
- bl MOD05_021E35C0
- str r0, [sp, #0x24]
- add r0, r7, #0
- bl MOD05_021E35C0
- ldr r0, [sp, #0x24]
- cmp r0, #0
- beq _021EA818
- mov r0, #0x7d
- mov r1, #0
- lsl r0, r0, #2
- str r1, [r5, r0]
-_021EA818:
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_0202011C
- add r3, r0, #0
- add r2, sp, #0x2c
- ldmia r3!, {r0, r1}
- mov ip, r2
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r1, ip
- str r0, [r2]
- mov r0, #0x5f
- lsl r0, r0, #2
- ldr r0, [r6, r0]
- lsl r0, r0, #0xc
- str r0, [sp, #0x30]
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_02020044
- mov r1, #0x6e
- lsl r1, r1, #2
- mov r0, #0x17
- ldr r1, [r6, r1]
- lsl r0, r0, #4
- lsl r1, r1, #0x10
- ldr r0, [r5, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
-_021EA85A:
- ldr r0, [sp, #0x20]
- add r5, r5, #4
- add r0, #0x14
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x1c]
- add r7, #0x14
- add r0, r0, #1
- add r6, #0x14
- str r0, [sp, #0x1c]
- cmp r0, #3
- blt _021EA7F2
- ldr r0, [sp, #0x18]
- ldr r0, [r0]
- cmp r0, #9
- beq _021EA87E
- ldr r0, [r4]
- bl FUN_0201FDEC
-_021EA87E:
- add sp, #0x44
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EA884
-MOD05_021EA884: ; 0x021EA884
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x40
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #7
- bls _021EA896
- b _021EAAC6
-_021EA896:
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EA8A2: ; jump table
- .short _021EA8B2 - _021EA8A2 - 2 ; case 0
- .short _021EA93E - _021EA8A2 - 2 ; case 1
- .short _021EA958 - _021EA8A2 - 2 ; case 2
- .short _021EA964 - _021EA8A2 - 2 ; case 3
- .short _021EA996 - _021EA8A2 - 2 ; case 4
- .short _021EA9C8 - _021EA8A2 - 2 ; case 5
- .short _021EAA38 - _021EA8A2 - 2 ; case 6
- .short _021EAA7C - _021EA8A2 - 2 ; case 7
-_021EA8B2:
- mov r1, #0x69
- mov r0, #4
- lsl r1, r1, #2
- bl AllocFromHeap
- mov r2, #0x69
- str r0, [r4, #0xc]
- mov r1, #0
- lsl r2, r2, #2
- bl memset
- ldr r5, [r4, #0xc]
- mov r1, #1
- add r0, r5, #0
- add r0, #0x2c
- add r2, r1, #0
- bl MOD05_021E3E14
- mov r0, #5
- str r0, [sp]
- mov r0, #7
- str r0, [sp, #4]
- mov r0, #6
- str r0, [sp, #8]
- ldr r0, _021EAAD8 ; =0x000927C0
- mov r1, #0x5a
- str r0, [sp, #0xc]
- add r0, r5, #0
- lsl r1, r1, #2
- add r0, #0x2c
- add r1, r5, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- mov r0, #0
- str r0, [sp]
- mov r1, #0x5a
- str r0, [sp, #4]
- add r0, r5, #0
- lsl r1, r1, #2
- mov r2, #2
- mov r3, #6
- add r0, #0x2c
- add r1, r5, r1
- lsl r2, r2, #0x12
- lsl r3, r3, #0x10
- bl MOD05_021E3FC4
- mov r1, #0x67
- lsl r1, r1, #2
- str r0, [r5, r1]
- ldr r0, [r5, r1]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- mov r1, #1
- bl FUN_02020398
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021EAAC6
-_021EA93E:
- mov r1, #0x10
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r4, #4
- bl MOD05_021E3474
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021EAAC6
-_021EA958:
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _021EA9AE
- add r0, r0, #1
- str r0, [r4]
- b _021EAAC6
-_021EA964:
- add r0, r5, #0
- mov r1, #0
- mov r2, #0x10
- mov r3, #0xc
- bl MOD05_021E35B0
- ldr r3, [r5]
- mov r0, #0x10
- sub r0, r0, r3
- str r0, [sp]
- ldr r0, _021EAADC ; =0x04000050
- mov r1, #0
- mov r2, #0xf
- bl G2x_SetBlendAlpha_
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- mov r1, #1
- bl FUN_020200A0
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021EAAC6
-_021EA996:
- add r0, r5, #0
- bl MOD05_021E35C0
- ldr r2, [r5]
- mov r1, #0x10
- sub r1, r1, r2
- lsl r1, r1, #8
- orr r1, r2
- ldr r2, _021EAAE0 ; =0x04000052
- cmp r0, #1
- strh r1, [r2]
- beq _021EA9B0
-_021EA9AE:
- b _021EAAC6
-_021EA9B0:
- mov r1, #0
- sub r0, r2, #2
- strh r1, [r0]
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl FUN_02020398
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021EAAC6
-_021EA9C8:
- mov r0, #6
- str r0, [sp]
- add r0, r5, #0
- mov r1, #1
- ldr r2, _021EAAE4 ; =0x0000019A
- add r0, #0x14
- lsl r1, r1, #0xc
- mov r3, #1
- bl MOD05_021E3644
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- mov r1, #2
- bl FUN_020200EC
- ldr r1, [r5, #0x14]
- add r0, sp, #0x1c
- add r2, r1, #0
- add r3, r1, #0
- bl MOD05_021E3FF8
- add r6, sp, #0x1c
- add r3, sp, #0x34
- ldmia r6!, {r0, r1}
- add r2, r3, #0
- stmia r3!, {r0, r1}
- ldr r0, [r6]
- add r1, r2, #0
- str r0, [r3]
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl FUN_02020064
- 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 r0, #4
- mov r2, #0
- str r0, [sp, #8]
- mov r0, #3
- mov r1, #0x10
- add r3, r2, #0
- bl FUN_0200E1D0
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021EAAC6
-_021EAA38:
- add r0, r5, #0
- add r0, #0x14
- bl MOD05_021E36A4
- ldr r1, [r5, #0x14]
- add r6, r0, #0
- add r0, sp, #0x10
- add r2, r1, #0
- add r3, r1, #0
- bl MOD05_021E3FF8
- add r3, sp, #0x10
- add r2, sp, #0x28
- ldmia r3!, {r0, r1}
- add r7, r2, #0
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, r7, #0
- str r0, [r2]
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl FUN_02020064
- cmp r6, #1
- bne _021EAAC6
- bl FUN_0200E308
- cmp r0, #1
- bne _021EAAC6
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021EAAC6
-_021EAA7C:
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021EAA98
- mov r0, #1
- str r0, [r1]
-_021EAA98:
- mov r0, #0x67
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl FUN_0201FFC8
- mov r1, #0x5a
- add r0, r5, #0
- lsl r1, r1, #2
- add r0, #0x2c
- add r1, r5, r1
- bl MOD05_021E3F3C
- add r0, r5, #0
- add r0, #0x2c
- bl MOD05_021E3E44
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
-_021EAAC6:
- ldr r0, [r4]
- cmp r0, #7
- beq _021EAAD2
- ldr r0, [r5, #0x2c]
- bl FUN_0201FDEC
-_021EAAD2:
- add sp, #0x40
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021EAAD8: .word 0x000927C0
-_021EAADC: .word 0x04000050
-_021EAAE0: .word 0x04000052
-_021EAAE4: .word 0x0000019A
-
- thumb_func_start MOD05_021EAAE8
-MOD05_021EAAE8: ; 0x021EAAE8
- push {r4, r5, r6, r7, lr}
- sub sp, #0x24
- add r6, r1, #0
- str r0, [sp, #0x10]
- ldr r0, [r6]
- ldr r4, [r6, #0xc]
- cmp r0, #7
- bhi _021EABBC
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EAB04: ; jump table
- .short _021EAB14 - _021EAB04 - 2 ; case 0
- .short _021EAB9C - _021EAB04 - 2 ; case 1
- .short _021EABB6 - _021EAB04 - 2 ; case 2
- .short _021EABC4 - _021EAB04 - 2 ; case 3
- .short _021EAC0E - _021EAB04 - 2 ; case 4
- .short _021EACC0 - _021EAB04 - 2 ; case 5
- .short _021EACEA - _021EAB04 - 2 ; case 6
- .short _021EACFA - _021EAB04 - 2 ; case 7
-_021EAB14:
- mov r1, #0x1b
- mov r0, #4
- lsl r1, r1, #4
- bl AllocFromHeap
- mov r2, #0x1b
- str r0, [r6, #0xc]
- mov r1, #0
- lsl r2, r2, #4
- bl memset
- ldr r4, [r6, #0xc]
- mov r1, #4
- add r0, r4, #0
- mov r2, #1
- bl MOD05_021E3E14
- mov r0, #2
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- mov r0, #3
- str r0, [sp, #8]
- ldr r0, _021EAD5C ; =0x000927C0
- mov r1, #0x4f
- lsl r1, r1, #2
- str r0, [sp, #0xc]
- add r0, r4, #0
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- mov r7, #0
- add r5, r4, #0
-_021EAB5A:
- mov r0, #0
- mov r1, #0x4f
- str r0, [sp]
- lsl r1, r1, #2
- mov r2, #2
- mov r3, #6
- str r0, [sp, #4]
- add r0, r4, #0
- add r1, r4, r1
- lsl r2, r2, #0x12
- lsl r3, r3, #0x10
- bl MOD05_021E3FC4
- mov r1, #0x17
- lsl r1, r1, #4
- str r0, [r5, r1]
- add r0, r1, #0
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_020200A0
- add r7, r7, #1
- add r5, r5, #4
- cmp r7, #4
- blt _021EAB5A
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021EAD4C
-_021EAB9C:
- mov r1, #0x10
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r6, #4
- bl MOD05_021E3474
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021EAD4C
-_021EABB6:
- ldr r1, [r6, #4]
- cmp r1, #0
- bne _021EABBE
-_021EABBC:
- b _021EAD4C
-_021EABBE:
- add r0, r0, #1
- str r0, [r6]
- b _021EAD4C
-_021EABC4:
- mov r3, #6
- mov r2, #4
- lsl r3, r3, #6
- str r2, [sp]
- add r0, r4, r3
- mov r1, #0
- lsl r2, r2, #0x11
- add r3, #0x1a
- bl MOD05_021E3644
- mov r3, #0x66
- mov r0, #4
- mov r2, #0xa
- lsl r3, r3, #2
- str r0, [sp]
- add r0, r4, r3
- mov r1, #0
- lsl r2, r2, #0x10
- add r3, r3, #2
- bl MOD05_021E3644
- mov r7, #0
- add r5, r4, #0
-_021EABF2:
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- mov r1, #1
- bl FUN_020200A0
- add r7, r7, #1
- add r5, r5, #4
- cmp r7, #4
- blt _021EABF2
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021EAD4C
-_021EAC0E:
- mov r0, #6
- lsl r0, r0, #6
- mov r7, #0
- add r5, r4, r0
-_021EAC16:
- add r0, r5, #0
- bl MOD05_021E36A4
- add r7, r7, #1
- add r5, #0x18
- str r0, [sp, #0x14]
- cmp r7, #2
- blt _021EAC16
- mov r2, #6
- lsl r2, r2, #6
- ldr r3, [r4, r2]
- mov r1, #2
- lsl r2, r2, #0xa
- sub r2, r2, r3
- add r0, sp, #0x18
- lsl r1, r1, #0x12
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x18
- bl FUN_02020044
- mov r2, #6
- lsl r2, r2, #6
- ldr r3, [r4, r2]
- mov r1, #2
- lsl r2, r2, #0xa
- add r2, r3, r2
- add r0, sp, #0x18
- lsl r1, r1, #0x12
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x5d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x18
- bl FUN_02020044
- mov r1, #0x66
- lsl r1, r1, #2
- ldr r2, [r4, r1]
- mov r1, #2
- lsl r1, r1, #0x12
- sub r1, r1, r2
- mov r2, #6
- add r0, sp, #0x18
- lsl r2, r2, #0x10
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x18
- bl FUN_02020044
- mov r1, #0x66
- lsl r1, r1, #2
- ldr r2, [r4, r1]
- mov r1, #2
- lsl r1, r1, #0x12
- add r1, r2, r1
- mov r2, #6
- add r0, sp, #0x18
- lsl r2, r2, #0x10
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x5f
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x18
- bl FUN_02020044
- ldr r0, [sp, #0x14]
- cmp r0, #1
- bne _021EAD4C
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021EAD4C
-_021EACC0:
- ldr r0, [r6, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F4608
- mov r0, #8
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r2, #0
- str r0, [sp, #8]
- mov r0, #3
- mov r1, #0x22
- add r3, r2, #0
- bl FUN_0200E1D0
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021EAD4C
-_021EACEA:
- bl FUN_0200E308
- cmp r0, #1
- bne _021EAD4C
- ldr r0, [r6]
- add r0, r0, #1
- str r0, [r6]
- b _021EAD4C
-_021EACFA:
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, [r6, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r6, #0x14]
- cmp r1, #0
- beq _021EAD16
- mov r0, #1
- str r0, [r1]
-_021EAD16:
- mov r7, #0
- add r5, r4, #0
-_021EAD1A:
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_0201FFC8
- add r7, r7, #1
- add r5, r5, #4
- cmp r7, #4
- blt _021EAD1A
- mov r1, #0x4f
- lsl r1, r1, #2
- add r0, r4, #0
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- bl MOD05_021E3E44
- ldr r1, [r6, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- ldr r0, [sp, #0x10]
- bl FUN_0200621C
-_021EAD4C:
- ldr r0, [r6]
- cmp r0, #7
- beq _021EAD58
- ldr r0, [r4]
- bl FUN_0201FDEC
-_021EAD58:
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EAD5C: .word 0x000927C0
-
- thumb_func_start MOD05_021EAD60
-MOD05_021EAD60: ; 0x021EAD60
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x48
- str r0, [sp, #0x10]
- add r0, r1, #0
- ldr r0, [r0]
- str r1, [sp, #0x14]
- ldr r4, [r1, #0xc]
- cmp r0, #7
- bhi _021EAE6E
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EAD7E: ; jump table
- .short _021EAD8E - _021EAD7E - 2 ; case 0
- .short _021EAE1A - _021EAD7E - 2 ; case 1
- .short _021EAE3A - _021EAD7E - 2 ; case 2
- .short _021EAE5E - _021EAD7E - 2 ; case 3
- .short _021EAF9C - _021EAD7E - 2 ; case 4
- .short _021EAFAE - _021EAD7E - 2 ; case 5
- .short _021EAFDE - _021EAD7E - 2 ; case 6
- .short _021EAFF2 - _021EAD7E - 2 ; case 7
-_021EAD8E:
- mov r1, #0x3d
- mov r0, #4
- lsl r1, r1, #4
- bl AllocFromHeap
- ldr r1, [sp, #0x14]
- mov r2, #0x3d
- str r0, [r1, #0xc]
- mov r1, #0
- lsl r2, r2, #4
- bl memset
- ldr r0, [sp, #0x14]
- mov r1, #6
- ldr r4, [r0, #0xc]
- mov r2, #1
- add r0, r4, #0
- bl MOD05_021E3E14
- mov r0, #2
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- mov r0, #3
- str r0, [sp, #8]
- ldr r0, _021EB138 ; =0x000927C0
- mov r1, #0x4f
- lsl r1, r1, #2
- str r0, [sp, #0xc]
- add r0, r4, #0
- add r1, r4, r1
- mov r2, #0
- mov r3, #1
- bl MOD05_021E3E64
- mov r7, #0x4f
- mov r6, #0
- add r5, r4, #0
- lsl r7, r7, #2
-_021EADDC:
- mov r0, #0
- str r0, [sp]
- mov r2, #0
- str r0, [sp, #4]
- add r0, r4, #0
- add r1, r4, r7
- add r3, r2, #0
- bl MOD05_021E3FC4
- mov r1, #0x17
- lsl r1, r1, #4
- str r0, [r5, r1]
- add r0, r1, #0
- ldr r0, [r5, r0]
- mov r1, #0
- bl FUN_020200A0
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #6
- blt _021EADDC
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [sp, #0x14]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x14]
- str r1, [r0]
- b _021EB04A
-_021EAE1A:
- mov r0, #2
- str r0, [sp]
- mov r0, #1
- add r1, r0, #0
- ldr r3, [sp, #0x14]
- sub r1, #0x11
- add r2, r1, #0
- add r3, r3, #4
- bl MOD05_021E3474
- ldr r0, [sp, #0x14]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x14]
- str r1, [r0]
- b _021EB04A
-_021EAE3A:
- ldr r1, [sp, #0x14]
- ldr r1, [r1, #4]
- cmp r1, #0
- beq _021EAE6E
- add r1, r0, #1
- ldr r0, [sp, #0x14]
- str r1, [r0]
- mov r0, #0xf2
- mov r1, #0
- lsl r0, r0, #2
- str r1, [r4, r0]
- ldr r1, [r4, r0]
- add r0, r0, #4
- lsl r2, r1, #5
- ldr r1, _021EB13C ; =UNK05_021F7A50
- ldr r1, [r1, r2]
- str r1, [r4, r0]
- b _021EB04A
-_021EAE5E:
- mov r0, #0xf3
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r1, [r4, r0]
- cmp r1, #0
- blt _021EAE70
-_021EAE6E:
- b _021EB04A
-_021EAE70:
- sub r0, r0, #4
- ldr r0, [r4, r0]
- mov r1, #8
- str r1, [sp]
- mov r1, #0x86
- lsl r1, r1, #2
- add r2, r4, r1
- mov r1, #0x18
- mul r1, r0
- lsl r3, r0, #5
- add r0, r2, r1
- ldr r1, _021EB140 ; =UNK05_021F7A38
- ldr r2, _021EB144 ; =UNK05_021F7A3C
- ldr r5, _021EB148 ; =UNK05_021F7A40
- ldr r1, [r1, r3]
- ldr r2, [r2, r3]
- ldr r3, [r5, r3]
- bl MOD05_021E3644
- mov r0, #0xf2
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #8
- str r1, [sp]
- mov r1, #0xaa
- lsl r1, r1, #2
- add r2, r4, r1
- mov r1, #0x18
- mul r1, r0
- lsl r3, r0, #5
- add r0, r2, r1
- ldr r1, _021EB14C ; =UNK05_021F7A44
- ldr r2, _021EB150 ; =UNK05_021F7A48
- ldr r5, _021EB154 ; =UNK05_021F7A4C
- ldr r1, [r1, r3]
- ldr r2, [r2, r3]
- ldr r3, [r5, r3]
- bl MOD05_021E3644
- mov r0, #0x62
- lsl r0, r0, #2
- mov r1, #8
- add r3, r4, r0
- mov r0, #0xf2
- str r1, [sp]
- lsl r0, r0, #2
- ldr r2, [r4, r0]
- mov r0, #0x18
- mul r0, r2
- add r0, r3, r0
- ldr r3, _021EB158 ; =0xFFFFF99A
- lsl r1, r1, #0xa
- mov r2, #0x29
- bl MOD05_021E3644
- mov r0, #0xf2
- lsl r0, r0, #2
- ldr r2, [r4, r0]
- sub r0, #0x90
- add r1, r4, r0
- mov r0, #0x14
- mul r0, r2
- lsl r3, r2, #5
- ldr r2, _021EB15C ; =UNK05_021F7A54
- add r0, r1, r0
- ldr r2, [r2, r3]
- mov r1, #0
- mov r3, #8
- bl MOD05_021E35B0
- mov r0, #0xf2
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- lsl r0, r0, #2
- add r1, r4, r0
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r1, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0xf2
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- ldr r1, _021EB140 ; =UNK05_021F7A38
- lsl r3, r0, #5
- ldr r2, _021EB14C ; =UNK05_021F7A44
- ldr r1, [r1, r3]
- ldr r2, [r2, r3]
- add r0, sp, #0x3c
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0xf2
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- lsl r0, r0, #2
- add r1, r4, r0
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r1, r0]
- add r1, sp, #0x3c
- bl FUN_02020044
- mov r1, #2
- lsl r1, r1, #0xc
- add r0, sp, #0x30
- add r2, r1, #0
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0xf2
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r2, #2
- lsl r0, r0, #2
- add r1, r4, r0
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r1, r0]
- add r1, sp, #0x30
- bl FUN_02020074
- mov r1, #0xf2
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- mov r3, #1
- lsl r0, r0, #2
- add r2, r4, r0
- add r0, r1, #0
- sub r0, #0x18
- str r3, [r2, r0]
- ldr r0, [r4, r1]
- add r0, r0, #1
- str r0, [r4, r1]
- ldr r0, [r4, r1]
- cmp r0, #6
- blt _021EAF90
- ldr r0, [sp, #0x14]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x14]
- str r1, [r0]
- b _021EB04A
-_021EAF90:
- lsl r2, r0, #5
- ldr r0, _021EB13C ; =UNK05_021F7A50
- ldr r2, [r0, r2]
- add r0, r1, #4
- str r2, [r4, r0]
- b _021EB04A
-_021EAF9C:
- mov r1, #0xf1
- lsl r1, r1, #2
- ldr r1, [r4, r1]
- cmp r1, #0
- bne _021EB04A
- add r1, r0, #1
- ldr r0, [sp, #0x14]
- str r1, [r0]
- b _021EB04A
-_021EAFAE:
- ldr r0, [sp, #0x14]
- ldr r0, [r0, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F4608
- mov r0, #0xc
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r2, #0
- str r0, [sp, #8]
- mov r0, #3
- mov r1, #0x22
- add r3, r2, #0
- bl FUN_0200E1D0
- ldr r0, [sp, #0x14]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x14]
- str r1, [r0]
- b _021EB04A
-_021EAFDE:
- bl FUN_0200E308
- cmp r0, #0
- beq _021EB04A
- ldr r0, [sp, #0x14]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #0x14]
- str r1, [r0]
- b _021EB04A
-_021EAFF2:
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, [sp, #0x14]
- ldr r0, [r0, #0x10]
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r0, [sp, #0x14]
- ldr r1, [r0, #0x14]
- cmp r1, #0
- beq _021EB012
- mov r0, #1
- str r0, [r1]
-_021EB012:
- mov r7, #0x17
- mov r6, #0
- add r5, r4, #0
- lsl r7, r7, #4
-_021EB01A:
- ldr r0, [r5, r7]
- bl FUN_0201FFC8
- add r6, r6, #1
- add r5, r5, #4
- cmp r6, #6
- blt _021EB01A
- mov r1, #0x4f
- lsl r1, r1, #2
- add r0, r4, #0
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- bl MOD05_021E3E44
- ldr r1, [sp, #0x14]
- mov r0, #4
- ldr r1, [r1, #0xc]
- bl FreeToHeapExplicit
- ldr r0, [sp, #0x10]
- bl FUN_0200621C
-_021EB04A:
- mov r1, #0x86
- mov r0, #0
- lsl r1, r1, #2
- str r0, [sp, #0x18]
- add r0, r4, r1
- str r0, [sp, #0x28]
- add r0, r1, #0
- add r0, #0x90
- add r0, r4, r0
- sub r1, #0x90
- str r0, [sp, #0x24]
- add r0, r4, r1
- str r0, [sp, #0x20]
- mov r0, #0xce
- lsl r0, r0, #2
- add r0, r4, r0
- add r5, r4, #0
- str r0, [sp, #0x1c]
- add r6, r4, #0
- add r7, r4, #0
-_021EB072:
- mov r0, #0x3b
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- cmp r0, #1
- bne _021EB0FE
- ldr r0, [sp, #0x28]
- bl MOD05_021E36A4
- str r0, [sp, #0x2c]
- ldr r0, [sp, #0x24]
- bl MOD05_021E36A4
- ldr r0, [sp, #0x20]
- bl MOD05_021E36A4
- ldr r0, [sp, #0x1c]
- bl MOD05_021E35C0
- ldr r0, [sp, #0x2c]
- cmp r0, #0
- beq _021EB0AE
- mov r0, #0x3b
- mov r1, #0
- lsl r0, r0, #4
- str r1, [r5, r0]
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_020200A0
-_021EB0AE:
- mov r1, #0x86
- mov r2, #0xaa
- lsl r1, r1, #2
- lsl r2, r2, #2
- ldr r1, [r6, r1]
- ldr r2, [r6, r2]
- add r0, sp, #0x3c
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- add r1, sp, #0x3c
- bl FUN_02020044
- mov r0, #0x62
- lsl r0, r0, #2
- ldr r1, [r6, r0]
- add r0, sp, #0x30
- add r2, r1, #0
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x17
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- add r1, sp, #0x30
- bl FUN_02020064
- mov r1, #0xce
- lsl r1, r1, #2
- mov r0, #0x17
- ldr r1, [r7, r1]
- lsl r0, r0, #4
- lsl r1, r1, #0x10
- ldr r0, [r5, r0]
- lsr r1, r1, #0x10
- bl FUN_02020088
-_021EB0FE:
- ldr r0, [sp, #0x28]
- add r5, r5, #4
- add r0, #0x18
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x24]
- add r6, #0x18
- add r0, #0x18
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x20]
- add r7, #0x14
- add r0, #0x18
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x1c]
- add r0, #0x14
- str r0, [sp, #0x1c]
- ldr r0, [sp, #0x18]
- add r0, r0, #1
- str r0, [sp, #0x18]
- cmp r0, #6
- blt _021EB072
- ldr r0, [sp, #0x14]
- ldr r0, [r0]
- cmp r0, #7
- beq _021EB134
- ldr r0, [r4]
- bl FUN_0201FDEC
-_021EB134:
- add sp, #0x48
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EB138: .word 0x000927C0
-_021EB13C: .word UNK05_021F7A50
-_021EB140: .word UNK05_021F7A38
-_021EB144: .word UNK05_021F7A3C
-_021EB148: .word UNK05_021F7A40
-_021EB14C: .word UNK05_021F7A44
-_021EB150: .word UNK05_021F7A48
-_021EB154: .word UNK05_021F7A4C
-_021EB158: .word 0xFFFFF99A
-_021EB15C: .word UNK05_021F7A54
-
- thumb_func_start MOD05_021EB160
-MOD05_021EB160: ; 0x021EB160
- push {r4, r5, r6, lr}
- sub sp, #0x18
- add r5, r1, #0
- add r6, r0, #0
- ldr r0, [r5]
- ldr r4, [r5, #0xc]
- cmp r0, #7
- bls _021EB172
- b _021EB3F2
-_021EB172:
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EB17E: ; jump table
- .short _021EB18E - _021EB17E - 2 ; case 0
- .short _021EB272 - _021EB17E - 2 ; case 1
- .short _021EB28C - _021EB17E - 2 ; case 2
- .short _021EB29A - _021EB17E - 2 ; case 3
- .short _021EB2D4 - _021EB17E - 2 ; case 4
- .short _021EB312 - _021EB17E - 2 ; case 5
- .short _021EB344 - _021EB17E - 2 ; case 6
- .short _021EB374 - _021EB17E - 2 ; case 7
-_021EB18E:
- mov r1, #0x6f
- mov r0, #4
- lsl r1, r1, #2
- bl AllocFromHeap
- mov r2, #0x6f
- str r0, [r5, #0xc]
- mov r1, #0
- lsl r2, r2, #2
- bl memset
- ldr r4, [r5, #0xc]
- mov r1, #1
- add r0, r4, #0
- add r0, #8
- add r2, r1, #0
- bl MOD05_021E3E14
- mov r0, #8
- str r0, [sp]
- mov r0, #0xa
- str r0, [sp, #4]
- mov r0, #9
- str r0, [sp, #8]
- ldr r0, _021EB404 ; =0x000927C0
- mov r1, #0x51
- str r0, [sp, #0xc]
- add r0, r4, #0
- lsl r1, r1, #2
- mov r2, #1
- add r0, #8
- add r1, r4, r1
- add r3, r2, #0
- bl MOD05_021E3E64
- mov r0, #0
- str r0, [sp]
- mov r1, #0x51
- str r0, [sp, #4]
- add r0, r4, #0
- lsl r1, r1, #2
- mov r2, #2
- mov r3, #6
- add r0, #8
- add r1, r4, r1
- lsl r2, r2, #0x12
- lsl r3, r3, #0x10
- bl MOD05_021E3FC4
- mov r1, #0x5e
- lsl r1, r1, #2
- str r0, [r4, r1]
- ldr r0, [r4, r1]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_02020398
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_02020238
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- mov r0, #4
- bl MOD05_021E4688
- str r0, [r4, #4]
- mov r0, #4
- mov r1, #1
- bl AllocWindows
- str r0, [r4]
- mov r3, #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, [r5, #0x10]
- ldr r1, [r4]
- ldr r0, [r0, #8]
- mov r2, #3
- bl AddWindowParameterized
- mov r1, #0
- add r0, sp, #0x14
- strh r1, [r0]
- mov r0, #3
- add r1, sp, #0x14
- mov r2, #2
- mov r3, #0x1e
- bl BG_LoadPlttData
- ldr r0, [r4]
- mov r1, #0
- bl FillWindowPixelBuffer
- ldr r0, [r4]
- bl ScheduleWindowCopyToVram
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EB3F2
-_021EB272:
- mov r1, #0x10
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #1
- sub r2, #0x20
- add r3, r5, #4
- bl MOD05_021E3474
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EB3F2
-_021EB28C:
- ldr r1, [r5, #4]
- cmp r1, #0
- bne _021EB294
- b _021EB3F2
-_021EB294:
- add r0, r0, #1
- str r0, [r5]
- b _021EB3F2
-_021EB29A:
- mov r0, #0x19
- lsl r0, r0, #4
- add r0, r4, r0
- mov r1, #0
- mov r2, #0x10
- mov r3, #0xf
- bl MOD05_021E35B0
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x19
- lsl r0, r0, #4
- ldr r3, [r4, r0]
- mov r0, #0x10
- sub r0, r0, r3
- str r0, [sp]
- ldr r0, _021EB408 ; =0x04000050
- mov r1, #0
- mov r2, #0xf
- bl G2x_SetBlendAlpha_
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EB3F2
-_021EB2D4:
- mov r0, #0x19
- lsl r0, r0, #4
- add r0, r4, r0
- bl MOD05_021E35C0
- mov r2, #0x19
- lsl r2, r2, #4
- ldr r1, [r4, r2]
- mov r3, #0x10
- sub r3, r3, r1
- lsl r3, r3, #8
- orr r1, r3
- ldr r3, _021EB40C ; =0x04000052
- cmp r0, #1
- strh r1, [r3]
- bne _021EB3F2
- mov r1, #0
- sub r0, r3, #2
- sub r2, #0x18
- strh r1, [r0]
- ldr r0, [r4, r2]
- bl FUN_02020398
- ldr r0, [r5]
- mov r1, #0x10
- add r0, r0, #1
- str r0, [r5]
- mov r0, #0x6e
- lsl r0, r0, #2
- str r1, [r4, r0]
- b _021EB3F2
-_021EB312:
- mov r0, #0x6e
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r1, [r4, r0]
- cmp r1, #0
- bgt _021EB3F2
- sub r0, #0x3c
- add r0, r4, r0
- mov r1, #0
- mov r2, #0xe
- mov r3, #0x10
- bl MOD05_021E35B0
- ldr r0, [r4, #4]
- ldr r2, [r4]
- mov r1, #0x10
- mov r3, #0xf
- bl MOD05_021E46D4
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EB3F2
-_021EB344:
- mov r0, #0x5f
- lsl r0, r0, #2
- add r0, r4, r0
- bl MOD05_021E35C0
- mov r0, #0x5f
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- lsl r0, r1, #4
- orr r1, r0
- ldr r0, _021EB410 ; =0x0400004D
- strb r1, [r0]
- ldr r0, [r4, #4]
- bl MOD05_021E4754
- cmp r0, #0
- beq _021EB36C
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
-_021EB36C:
- ldr r0, [r4]
- bl ScheduleWindowCopyToVram
- b _021EB3F2
-_021EB374:
- mov r0, #0
- add r1, r0, #0
- bl FUN_0200E3A0
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- ldr r0, [r4, #4]
- bl MOD05_021E46B4
- ldr r1, [r5, #0x14]
- cmp r1, #0
- beq _021EB394
- mov r0, #1
- str r0, [r1]
-_021EB394:
- mov r0, #0x5e
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_0201FFC8
- mov r1, #0x51
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #8
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r0, r4, #0
- add r0, #8
- bl MOD05_021E3E44
- ldr r0, [r4]
- bl ClearWindowTilemapAndCopyToVram
- ldr r0, [r4]
- bl RemoveWindow
- ldr r0, [r4]
- mov r1, #1
- bl WindowArray_dtor
- mov r0, #3
- mov r1, #0x20
- mov r2, #0
- mov r3, #4
- bl BG_ClearCharDataRange
- ldr r0, [r5, #0x10]
- mov r1, #3
- ldr r0, [r0, #8]
- bl BgClearTilemapBufferAndCommit
- ldr r0, _021EB410 ; =0x0400004D
- mov r1, #0
- strb r1, [r0]
- ldr r1, [r5, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
-_021EB3F2:
- ldr r0, [r5]
- cmp r0, #7
- beq _021EB3FE
- ldr r0, [r4, #8]
- bl FUN_0201FDEC
-_021EB3FE:
- add sp, #0x18
- pop {r4, r5, r6, pc}
- nop
-_021EB404: .word 0x000927C0
-_021EB408: .word 0x04000050
-_021EB40C: .word 0x04000052
-_021EB410: .word 0x0400004D
-
- thumb_func_start MOD05_021EB414
-MOD05_021EB414: ; 0x021EB414
- push {r3, r4, r5, lr}
- sub sp, #8
- add r4, r1, #0
- add r5, r0, #0
- ldrh r0, [r4, #8]
- ldr r1, [r5, #0x20]
- bl Camera_SetPerspectiveAngle
- ldr r0, [r4]
- ldr r1, [r5, #0x20]
- bl Camera_SetDistance
- ldrh r1, [r4, #4]
- add r0, sp, #0
- strh r1, [r0]
- ldrh r1, [r4, #6]
- strh r1, [r0, #2]
- mov r1, #0
- strh r1, [r0, #4]
- ldr r1, [r5, #0x20]
- add r0, sp, #0
- bl Camera_SetAngle
- add sp, #8
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EB448
-MOD05_021EB448: ; 0x021EB448
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #7
- bls _021EB45A
- b _021EB5A0
-_021EB45A:
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EB466: ; jump table
- .short _021EB476 - _021EB466 - 2 ; case 0
- .short _021EB4AE - _021EB466 - 2 ; case 1
- .short _021EB4C6 - _021EB466 - 2 ; case 2
- .short _021EB4D4 - _021EB466 - 2 ; case 3
- .short _021EB4F8 - _021EB466 - 2 ; case 4
- .short _021EB534 - _021EB466 - 2 ; case 5
- .short _021EB556 - _021EB466 - 2 ; case 6
- .short _021EB56C - _021EB466 - 2 ; case 7
-_021EB476:
- mov r0, #4
- mov r1, #0x10
- bl AllocFromHeap
- str r0, [r4, #0xc]
- mov r2, #0x10
- mov r1, #0
-_021EB484:
- strb r1, [r0]
- add r0, r0, #1
- sub r2, r2, #1
- bne _021EB484
- mov r0, #2
- mov r1, #0
- bl GX_EngineAToggleLayers
- mov r0, #4
- mov r1, #0
- bl GX_EngineAToggleLayers
- mov r0, #8
- mov r1, #0
- bl GX_EngineAToggleLayers
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB4AE:
- mov r0, #1
- mov r1, #0x10
- str r0, [sp]
- add r2, r1, #0
- add r3, r4, #4
- bl MOD05_021E3474
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB4C6:
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _021EB5A0
- add r0, r0, #1
- add sp, #0xc
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB4D4:
- mov r0, #3
- mov r1, #0xf
- bl MOD05_021E8860
- mov r2, #0
- str r0, [r5]
- mov r0, #0xc
- add r1, r2, #0
- mul r1, r0
- ldr r0, _021EB5A4 ; =UNK05_021F7982
- str r2, [r5, #8]
- ldrh r0, [r0, r1]
- add sp, #0xc
- str r0, [r5, #0xc]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB4F8:
- ldr r0, [r5, #0xc]
- sub r0, r0, #1
- str r0, [r5, #0xc]
- bpl _021EB5A0
- ldr r2, [r5, #8]
- mov r1, #0xc
- ldr r3, _021EB5A8 ; =UNK05_021F7978
- mul r1, r2
- ldr r0, [r4, #0x10]
- add r1, r3, r1
- bl MOD05_021EB414
- ldr r0, [r5, #8]
- add r2, r0, #1
- str r2, [r5, #8]
- cmp r2, #0x10
- blo _021EB524
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB524:
- mov r0, #0xc
- add r1, r2, #0
- mul r1, r0
- ldr r0, _021EB5A4 ; =UNK05_021F7982
- add sp, #0xc
- ldrh r0, [r0, r1]
- str r0, [r5, #0xc]
- pop {r3, r4, r5, r6, pc}
-_021EB534:
- mov r0, #0xa
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r1, #0
- str r0, [sp, #8]
- ldr r3, _021EB5AC ; =0x00007FFF
- mov r0, #3
- add r2, r1, #0
- bl FUN_0200E1D0
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB556:
- bl FUN_0200E308
- cmp r0, #0
- beq _021EB5A0
- mov r0, #0
- str r0, [r4, #4]
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB56C:
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- add r0, r5, #0
- bl MOD05_021E88C0
- ldr r0, _021EB5B0 ; =0x04000050
- mov r1, #0
- strh r1, [r0]
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021EB58A
- mov r0, #1
- str r0, [r1]
-_021EB58A:
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
-_021EB5A0:
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-_021EB5A4: .word UNK05_021F7982
-_021EB5A8: .word UNK05_021F7978
-_021EB5AC: .word 0x00007FFF
-_021EB5B0: .word 0x04000050
-
- thumb_func_start MOD05_021EB5B4
-MOD05_021EB5B4: ; 0x021EB5B4
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0xc]
- cmp r0, #9
- bhi _021EB636
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EB5D0: ; jump table
- .short _021EB5E4 - _021EB5D0 - 2 ; case 0
- .short _021EB618 - _021EB5D0 - 2 ; case 1
- .short _021EB630 - _021EB5D0 - 2 ; case 2
- .short _021EB640 - _021EB5D0 - 2 ; case 3
- .short _021EB66E - _021EB5D0 - 2 ; case 4
- .short _021EB698 - _021EB5D0 - 2 ; case 5
- .short _021EB6C6 - _021EB5D0 - 2 ; case 6
- .short _021EB6E8 - _021EB5D0 - 2 ; case 7
- .short _021EB70A - _021EB5D0 - 2 ; case 8
- .short _021EB720 - _021EB5D0 - 2 ; case 9
-_021EB5E4:
- mov r0, #4
- mov r1, #0x38
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x38
- str r0, [r4, #0xc]
- bl memset
- mov r0, #2
- mov r1, #0
- bl GX_EngineAToggleLayers
- mov r0, #4
- mov r1, #0
- bl GX_EngineAToggleLayers
- mov r0, #8
- mov r1, #0
- bl GX_EngineAToggleLayers
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB618:
- mov r0, #1
- mov r1, #0x10
- str r0, [sp]
- add r2, r1, #0
- add r3, r4, #4
- bl MOD05_021E3474
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB630:
- ldr r1, [r4, #4]
- cmp r1, #0
- bne _021EB638
-_021EB636:
- b _021EB754
-_021EB638:
- add r0, r0, #1
- add sp, #0xc
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB640:
- mov r0, #5
- mov r1, #0xd
- bl MOD05_021E8860
- str r0, [r5]
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- bl Camera_GetPerspectiveAngle
- mov r2, #1
- add r1, r0, #0
- add r5, #8
- lsl r2, r2, #8
- add r0, r5, #0
- add r2, r1, r2
- mov r3, #0x28
- bl MOD05_021E35B0
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB66E:
- add r0, r5, #0
- add r0, #8
- bl MOD05_021E35C0
- add r6, r0, #0
- ldr r0, [r5, #8]
- ldr r1, [r4, #0x10]
- lsl r0, r0, #0x10
- ldr r1, [r1, #0x20]
- lsr r0, r0, #0x10
- bl Camera_SetPerspectiveAngle
- cmp r6, #1
- bne _021EB754
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- mov r0, #5
- str r0, [r5, #0x34]
- pop {r3, r4, r5, r6, pc}
-_021EB698:
- ldr r0, [r5, #0x34]
- sub r0, r0, #1
- str r0, [r5, #0x34]
- bpl _021EB754
- ldr r0, [r4, #0x10]
- ldr r0, [r0, #0x20]
- bl Camera_GetDistance
- mov r3, #8
- str r3, [sp]
- ldr r2, _021EB758 ; =0x0092E000
- add r1, r0, #0
- add r5, #0x1c
- add r0, r5, #0
- sub r2, r1, r2
- lsl r3, r3, #8
- bl MOD05_021E3644
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB6C6:
- add r0, r5, #0
- add r0, #0x1c
- bl MOD05_021E36A4
- ldr r1, [r4, #0x10]
- add r6, r0, #0
- ldr r0, [r5, #0x1c]
- ldr r1, [r1, #0x20]
- bl Camera_SetDistance
- cmp r6, #1
- bne _021EB754
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB6E8:
- mov r0, #0x3c
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r1, #0
- str r0, [sp, #8]
- ldr r3, _021EB75C ; =0x00007FFF
- mov r0, #3
- add r2, r1, #0
- bl FUN_0200E1D0
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB70A:
- bl FUN_0200E308
- cmp r0, #0
- beq _021EB754
- mov r0, #0
- str r0, [r4, #4]
- ldr r0, [r4]
- add sp, #0xc
- add r0, r0, #1
- str r0, [r4]
- pop {r3, r4, r5, r6, pc}
-_021EB720:
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
- add r0, r5, #0
- bl MOD05_021E88C0
- ldr r0, _021EB760 ; =0x04000050
- mov r1, #0
- strh r1, [r0]
- ldr r1, [r4, #0x14]
- cmp r1, #0
- beq _021EB73E
- mov r0, #1
- str r0, [r1]
-_021EB73E:
- ldr r1, [r4, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add r0, r6, #0
- bl FUN_0200621C
- mov r0, #1
- mov r1, #0
- bl FUN_0200E3A0
-_021EB754:
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-_021EB758: .word 0x0092E000
-_021EB75C: .word 0x00007FFF
-_021EB760: .word 0x04000050
-
- thumb_func_start MOD05_021EB764
-MOD05_021EB764: ; 0x021EB764
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x30
- add r5, r0, #0
- str r1, [sp, #0x14]
- ldr r1, [r5]
- add r6, r2, #0
- ldr r4, [r5, #0xc]
- cmp r1, #0xe
- bls _021EB778
- b _021EBB72
-_021EB778:
- add r2, r1, r1
- add r2, pc
- ldrh r2, [r2, #6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_021EB784: ; jump table
- .short _021EB7A2 - _021EB784 - 2 ; case 0
- .short _021EB848 - _021EB784 - 2 ; case 1
- .short _021EB85E - _021EB784 - 2 ; case 2
- .short _021EB86A - _021EB784 - 2 ; case 3
- .short _021EB8B8 - _021EB784 - 2 ; case 4
- .short _021EB8D6 - _021EB784 - 2 ; case 5
- .short _021EB99C - _021EB784 - 2 ; case 6
- .short _021EB9EE - _021EB784 - 2 ; case 7
- .short _021EBA04 - _021EB784 - 2 ; case 8
- .short _021EBA34 - _021EB784 - 2 ; case 9
- .short _021EBA4A - _021EB784 - 2 ; case 10
- .short _021EBA72 - _021EB784 - 2 ; case 11
- .short _021EBA8A - _021EB784 - 2 ; case 12
- .short _021EBAAA - _021EB784 - 2 ; case 13
- .short _021EBB0E - _021EB784 - 2 ; case 14
-_021EB7A2:
- mov r1, #0x1f
- ldr r0, [sp, #0x14]
- lsl r1, r1, #4
- bl AllocFromHeap
- mov r2, #0x1f
- str r0, [r5, #0xc]
- mov r1, #0
- lsl r2, r2, #4
- bl memset
- ldr r4, [r5, #0xc]
- mov r1, #1
- add r0, r4, #0
- add r0, #0x44
- add r2, r1, #0
- bl MOD05_021E3E14
- mov r0, #0x17
- str r0, [sp]
- mov r1, #0x18
- str r1, [sp, #4]
- mov r0, #0x19
- str r0, [sp, #8]
- ldr r0, _021EBB4C ; =0x000927C0
- lsl r1, r1, #4
- str r0, [sp, #0xc]
- add r0, r4, #0
- add r0, #0x44
- add r1, r4, r1
- mov r2, #0x16
- mov r3, #1
- bl MOD05_021E3E64
- mov r0, #0
- str r0, [sp]
- mov r1, #6
- str r0, [sp, #4]
- add r0, r4, #0
- lsl r1, r1, #6
- mov r3, #0x11
- ldr r2, _021EBB50 ; =0xFFFE0000
- add r0, #0x44
- add r1, r4, r1
- lsl r3, r3, #0xe
- bl MOD05_021E3FC4
- mov r1, #0x6d
- lsl r1, r1, #2
- str r0, [r4, r1]
- ldr r0, [r4, r1]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r0, #0
- str r0, [sp]
- ldrh r0, [r6, #6]
- ldr r1, [sp, #0x14]
- mov r3, #0xa
- str r0, [sp, #4]
- mov r0, #0x6d
- lsl r0, r0, #2
- ldrh r2, [r6, #4]
- ldr r0, [r4, r0]
- bl MOD05_021E4014
- ldr r0, [r5, #0x10]
- ldr r0, [r0, #8]
- bl MOD05_021E3C00
- bl MOD05_021E4788
- str r0, [r4, #0x40]
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EB848:
- mov r0, #1
- mov r1, #0x10
- str r0, [sp]
- add r2, r1, #0
- add r3, r5, #4
- bl MOD05_021E3474
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EB85E:
- ldr r0, [r5, #4]
- cmp r0, #0
- beq _021EB8E6
- add r0, r1, #1
- str r0, [r5]
- b _021EBB72
-_021EB86A:
- ldr r3, [r5, #0x10]
- mov r0, #0xd
- ldr r3, [r3, #8]
- mov r1, #0xc
- mov r2, #0xb
- bl MOD05_021E3D20
- mov r0, #0x79
- mov r2, #8
- mov r1, #1
- lsl r0, r0, #2
- str r1, [r4, r0]
- mov r0, #0x10
- str r0, [sp]
- mov r0, #0x1f
- str r0, [sp, #4]
- mov r0, #0x17
- str r0, [sp, #8]
- ldr r1, [r4, #0x40]
- add r0, r5, #0
- add r3, r2, #0
- bl MOD05_021E47BC
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- add r0, #0x2c
- add r2, r1, #0
- mov r3, #0xf
- bl MOD05_021E35EC
- mov r0, #8
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EB8B8:
- bl MOD05_021E35AC
- cmp r0, #0
- beq _021EB8E6
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- ldr r0, [r4, #0x40]
- bl MOD05_021E47A0
- mov r0, #0x7b
- mov r1, #0xa
- lsl r0, r0, #2
- str r1, [r4, r0]
- b _021EBB72
-_021EB8D6:
- mov r0, #0x7b
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r0, [r4, r0]
- cmp r0, #0
- blt _021EB8E8
-_021EB8E6:
- b _021EBB72
-_021EB8E8:
- mov r1, #2
- lsl r1, r1, #0xc
- add r0, sp, #0x18
- add r2, r1, #0
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x18
- bl FUN_02020064
- mov r0, #0
- str r0, [sp]
- mov r0, #0x6e
- lsl r0, r0, #2
- add r0, r4, r0
- str r0, [sp, #4]
- mov r0, #0x11
- mov r2, #2
- lsl r0, r0, #0xe
- mov r1, #0x62
- lsl r2, r2, #0xc
- mov r3, #0x40
- bl MOD05_021E49F0
- ldr r3, _021EBB54 ; =0x04000048
- mov r0, #0x3f
- ldrh r2, [r3]
- mov r1, #0x1f
- bic r2, r0
- orr r2, r1
- mov r1, #0x20
- orr r2, r1
- strh r2, [r3]
- ldrh r2, [r3, #2]
- bic r2, r0
- mov r0, #0xf
- orr r0, r2
- orr r0, r1
- strh r0, [r3, #2]
- lsl r0, r1, #0x15
- ldr r3, [r0]
- ldr r2, _021EBB58 ; =0xFFFF1FFF
- lsl r1, r1, #8
- and r2, r3
- orr r1, r2
- str r1, [r0]
- mov r3, #4
- str r3, [sp]
- ldr r1, _021EBB50 ; =0xFFFE0000
- ldr r2, [r6]
- add r0, r4, #0
- lsl r3, r3, #0x10
- bl MOD05_021E3644
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #0
- bl FUN_02020238
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- mov r2, #0x11
- ldr r1, [r4]
- add r0, sp, #0x24
- lsl r2, r2, #0xe
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x24
- bl FUN_02020044
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EB99C:
- add r0, r4, #0
- bl MOD05_021E36A4
- mov r2, #0x11
- add r6, r0, #0
- ldr r1, [r4]
- add r0, sp, #0x24
- lsl r2, r2, #0xe
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x24
- bl FUN_02020044
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_0202011C
- mov r1, #0
- str r1, [sp]
- mov r1, #0x6e
- lsl r1, r1, #2
- add r1, r4, r1
- str r1, [sp, #4]
- mov r2, #2
- ldr r0, [r0, #4]
- mov r1, #0x62
- lsl r2, r2, #0xc
- mov r3, #0x40
- bl MOD05_021E49F0
- cmp r6, #1
- bne _021EBA60
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EB9EE:
- add r0, r4, #0
- add r0, #0x18
- mov r1, #0
- mov r2, #0x10
- mov r3, #3
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EBA04:
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E35C0
- add r7, r0, #0
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E4AD0
- cmp r7, #1
- bne _021EBA60
- mov r3, #0
- str r3, [sp]
- mov r0, #0x6d
- lsl r0, r0, #2
- ldrh r2, [r6, #4]
- ldr r0, [r4, r0]
- ldr r1, [sp, #0x14]
- bl MOD05_021E3F68
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EBA34:
- add r0, r4, #0
- add r0, #0x18
- mov r1, #0x10
- mov r2, #0
- mov r3, #3
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EBA4A:
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E35C0
- add r6, r0, #0
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E4AD0
- cmp r6, #1
- beq _021EBA62
-_021EBA60:
- b _021EBB72
-_021EBA62:
- ldr r0, [r5]
- mov r1, #0x1a
- add r0, r0, #1
- str r0, [r5]
- mov r0, #0x7b
- lsl r0, r0, #2
- str r1, [r4, r0]
- b _021EBB72
-_021EBA72:
- mov r0, #0x7b
- lsl r0, r0, #2
- ldr r1, [r4, r0]
- sub r1, r1, #1
- str r1, [r4, r0]
- ldr r0, [r4, r0]
- cmp r0, #0
- bge _021EBB72
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EBA8A:
- mov r0, #0xf
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r1, #0
- str r0, [sp, #8]
- ldr r3, _021EBB5C ; =0x00007FFF
- mov r0, #3
- add r2, r1, #0
- bl FUN_0200E1D0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EBAAA:
- add r0, r4, #0
- add r0, #0x2c
- bl MOD05_021E35FC
- mov r2, #1
- ldr r3, [r4, #0x2c]
- lsl r2, r2, #0xc
- add r1, r3, r2
- add r2, r3, r2
- add r0, sp, #0x18
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x18
- bl FUN_02020064
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_0202011C
- add r6, r0, #0
- ldr r0, [r4, #0x2c]
- mov r1, #0x44
- mov r2, #0x1e
- bl MOD05_021E4A3C
- add r1, r0, #0
- mov r0, #0
- str r0, [sp]
- mov r0, #0x6e
- lsl r0, r0, #2
- add r0, r4, r0
- str r0, [sp, #4]
- ldr r0, [r6, #4]
- ldr r2, [sp, #0x1c]
- mov r3, #0x40
- bl MOD05_021E49F0
- bl FUN_0200E308
- cmp r0, #0
- beq _021EBB72
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EBB72
-_021EBB0E:
- ldr r1, _021EBB5C ; =0x00007FFF
- mov r0, #1
- bl FUN_0200E3A0
- ldr r1, [r5, #0x14]
- cmp r1, #0
- beq _021EBB20
- mov r0, #1
- str r0, [r1]
-_021EBB20:
- mov r0, #0x6d
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_0201FFC8
- mov r1, #6
- add r0, r4, #0
- lsl r1, r1, #6
- add r0, #0x44
- add r1, r4, r1
- bl MOD05_021E3F3C
- add r4, #0x44
- add r0, r4, #0
- bl MOD05_021E3E44
- mov r2, #1
- lsl r2, r2, #0x1a
- ldr r1, [r2]
- ldr r0, _021EBB58 ; =0xFFFF1FFF
- b _021EBB60
- nop
-_021EBB4C: .word 0x000927C0
-_021EBB50: .word 0xFFFE0000
-_021EBB54: .word 0x04000048
-_021EBB58: .word 0xFFFF1FFF
-_021EBB5C: .word 0x00007FFF
-_021EBB60:
- and r0, r1
- str r0, [r2]
- ldr r1, [r5, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add sp, #0x30
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021EBB72:
- mov r1, #0x79
- lsl r1, r1, #2
- ldr r0, [r4, r1]
- cmp r0, #1
- bne _021EBBB6
- ldr r3, [r4, #0x2c]
- mov r0, #0
- str r3, [sp]
- str r0, [sp, #4]
- mov r0, #0x80
- str r0, [sp, #8]
- mov r0, #0x44
- str r0, [sp, #0xc]
- add r0, r1, #4
- ldr r0, [r4, r0]
- sub r1, #0x24
- str r0, [sp, #0x10]
- add r0, r4, r1
- ldr r1, [r5, #0x10]
- mov r2, #3
- ldr r1, [r1, #8]
- bl MOD05_021E3DA0
- mov r3, #0x7a
- lsl r3, r3, #2
- ldr r0, [r4, r3]
- sub r0, #0xf
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x17
- sub r1, r1, r2
- mov r0, #0x17
- ror r1, r0
- add r0, r2, r1
- str r0, [r4, r3]
-_021EBBB6:
- ldr r0, [r5]
- cmp r0, #0xe
- beq _021EBBC2
- ldr r0, [r4, #0x44]
- bl FUN_0201FDEC
-_021EBBC2:
- mov r0, #0
- add sp, #0x30
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EBBC8
-MOD05_021EBBC8: ; 0x021EBBC8
- push {r4, lr}
- ldr r2, _021EBBE4 ; =UNK05_021F7938
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBBE0
- add r0, r4, #0
- bl FUN_0200621C
-_021EBBE0:
- pop {r4, pc}
- nop
-_021EBBE4: .word UNK05_021F7938
-
- thumb_func_start MOD05_021EBBE8
-MOD05_021EBBE8: ; 0x021EBBE8
- push {r4, lr}
- ldr r2, _021EBC04 ; =UNK05_021F7940
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBC00
- add r0, r4, #0
- bl FUN_0200621C
-_021EBC00:
- pop {r4, pc}
- nop
-_021EBC04: .word UNK05_021F7940
-
- thumb_func_start MOD05_021EBC08
-MOD05_021EBC08: ; 0x021EBC08
- push {r4, lr}
- ldr r2, _021EBC24 ; =UNK05_021F7948
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBC20
- add r0, r4, #0
- bl FUN_0200621C
-_021EBC20:
- pop {r4, pc}
- nop
-_021EBC24: .word UNK05_021F7948
-
- thumb_func_start MOD05_021EBC28
-MOD05_021EBC28: ; 0x021EBC28
- push {r4, lr}
- ldr r2, _021EBC44 ; =UNK05_021F7950
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBC40
- add r0, r4, #0
- bl FUN_0200621C
-_021EBC40:
- pop {r4, pc}
- nop
-_021EBC44: .word UNK05_021F7950
-
- thumb_func_start MOD05_021EBC48
-MOD05_021EBC48: ; 0x021EBC48
- push {r4, lr}
- ldr r2, _021EBC64 ; =UNK05_021F7958
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBC60
- add r0, r4, #0
- bl FUN_0200621C
-_021EBC60:
- pop {r4, pc}
- nop
-_021EBC64: .word UNK05_021F7958
-
- thumb_func_start MOD05_021EBC68
-MOD05_021EBC68: ; 0x021EBC68
- push {r4, lr}
- ldr r2, _021EBC84 ; =UNK05_021F7960
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBC80
- add r0, r4, #0
- bl FUN_0200621C
-_021EBC80:
- pop {r4, pc}
- nop
-_021EBC84: .word UNK05_021F7960
-
- thumb_func_start MOD05_021EBC88
-MOD05_021EBC88: ; 0x021EBC88
- push {r4, lr}
- ldr r2, _021EBCA4 ; =UNK05_021F7968
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBCA0
- add r0, r4, #0
- bl FUN_0200621C
-_021EBCA0:
- pop {r4, pc}
- nop
-_021EBCA4: .word UNK05_021F7968
-
- thumb_func_start MOD05_021EBCA8
-MOD05_021EBCA8: ; 0x021EBCA8
- push {r4, lr}
- ldr r2, _021EBCC4 ; =UNK05_021F7970
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EB764
- cmp r0, #1
- bne _021EBCC0
- add r0, r4, #0
- bl FUN_0200621C
-_021EBCC0:
- pop {r4, pc}
- nop
-_021EBCC4: .word UNK05_021F7970
-
- thumb_func_start MOD05_021EBCC8
-MOD05_021EBCC8: ; 0x021EBCC8
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- bl PlayerProfile_GetTrainerGender
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EBCD8
-MOD05_021EBCD8: ; 0x021EBCD8
- push {r4, r5, r6, r7, lr}
- sub sp, #0x4c
- add r5, r0, #0
- ldr r0, [r5]
- str r1, [sp, #0x10]
- str r2, [sp, #0x14]
- ldr r4, [r5, #0xc]
- cmp r0, #0x13
- bls _021EBCEC
- b _021EC3A0
-_021EBCEC:
- add r1, r0, r0
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021EBCF8: ; jump table
- .short _021EBD20 - _021EBCF8 - 2 ; case 0
- .short _021EBEC0 - _021EBCF8 - 2 ; case 1
- .short _021EBED6 - _021EBCF8 - 2 ; case 2
- .short _021EBEE4 - _021EBCF8 - 2 ; case 3
- .short _021EBF6C - _021EBCF8 - 2 ; case 4
- .short _021EBFBA - _021EBCF8 - 2 ; case 5
- .short _021EBFD0 - _021EBCF8 - 2 ; case 6
- .short _021EC002 - _021EBCF8 - 2 ; case 7
- .short _021EC018 - _021EBCF8 - 2 ; case 8
- .short _021EC038 - _021EBCF8 - 2 ; case 9
- .short _021EC0D4 - _021EBCF8 - 2 ; case 10
- .short _021EC122 - _021EBCF8 - 2 ; case 11
- .short _021EC138 - _021EBCF8 - 2 ; case 12
- .short _021EC16A - _021EBCF8 - 2 ; case 13
- .short _021EC180 - _021EBCF8 - 2 ; case 14
- .short _021EC19E - _021EBCF8 - 2 ; case 15
- .short _021EC1E8 - _021EBCF8 - 2 ; case 16
- .short _021EC21C - _021EBCF8 - 2 ; case 17
- .short _021EC284 - _021EBCF8 - 2 ; case 18
- .short _021EC342 - _021EBCF8 - 2 ; case 19
-_021EBD20:
- mov r1, #0x9b
- ldr r0, [sp, #0x10]
- lsl r1, r1, #2
- bl AllocFromHeap
- mov r2, #0x9b
- str r0, [r5, #0xc]
- mov r1, #0
- lsl r2, r2, #2
- bl memset
- ldr r4, [r5, #0xc]
- mov r1, #4
- add r0, r4, #0
- add r0, #0x44
- mov r2, #3
- bl MOD05_021E3E14
- mov r0, #0x17
- str r0, [sp]
- mov r1, #0x18
- str r1, [sp, #4]
- mov r0, #0x19
- str r0, [sp, #8]
- ldr r0, _021EC0C0 ; =0x000927C0
- lsl r1, r1, #4
- str r0, [sp, #0xc]
- add r0, r4, #0
- add r0, #0x44
- add r1, r4, r1
- mov r2, #0x16
- mov r3, #1
- bl MOD05_021E3E64
- mov r0, #0x17
- str r0, [sp]
- mov r0, #0x18
- str r0, [sp, #4]
- mov r0, #0x19
- str r0, [sp, #8]
- ldr r0, _021EC0C4 ; =0x000927C1
- mov r1, #0x6d
- str r0, [sp, #0xc]
- add r0, r4, #0
- lsl r1, r1, #2
- add r0, #0x44
- add r1, r4, r1
- mov r2, #0x16
- mov r3, #1
- bl MOD05_021E3E64
- mov r0, #0xf
- str r0, [sp]
- mov r0, #0x10
- str r0, [sp, #4]
- mov r0, #0x11
- str r0, [sp, #8]
- ldr r0, _021EC0C8 ; =0x000927C2
- mov r1, #0x7a
- str r0, [sp, #0xc]
- ldr r2, [sp, #0x14]
- add r0, r4, #0
- lsl r1, r1, #2
- ldrb r2, [r2, #6]
- add r0, #0x44
- add r1, r4, r1
- mov r3, #0xc
- bl MOD05_021E3E64
- mov r1, #2
- lsl r1, r1, #0xc
- add r0, sp, #0x34
- add r2, r1, #0
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #6
- lsl r0, r0, #6
- add r0, r4, r0
- str r0, [sp, #0x18]
- str r0, [sp, #0x20]
- add r0, r4, #0
- str r0, [sp, #0x24]
- add r0, #0x44
- mov r7, #0
- add r6, r4, #0
- str r0, [sp, #0x24]
-_021EBDCE:
- cmp r7, #3
- bge _021EBDDA
- mov r0, #0
- ldr r1, [sp, #0x18]
- str r0, [sp, #0x1c]
- b _021EBDEA
-_021EBDDA:
- sub r1, r7, #1
- mov r0, #0x34
- add r2, r1, #0
- mul r2, r0
- ldr r0, [sp, #0x20]
- add r1, r0, r2
- mov r0, #1
- str r0, [sp, #0x1c]
-_021EBDEA:
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- mov r2, #0
- ldr r0, [sp, #0x24]
- add r3, r2, #0
- bl MOD05_021E3FC4
- mov r1, #0x87
- lsl r1, r1, #2
- str r0, [r6, r1]
- add r0, r1, #0
- ldr r0, [r6, r0]
- mov r1, #0
- bl FUN_020200A0
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r6, r0]
- ldr r1, [sp, #0x1c]
- bl FUN_02020130
- ldr r0, [sp, #0x18]
- add r7, r7, #1
- add r0, #0x34
- add r6, r6, #4
- str r0, [sp, #0x18]
- cmp r7, #4
- blt _021EBDCE
- ldr r0, [r5, #0x10]
- bl MOD05_021EBCC8
- cmp r0, #0
- bne _021EBE48
- mov r2, #0
- str r2, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- ldr r1, [sp, #0x10]
- mov r3, #0xa
- bl MOD05_021E4014
- mov r1, #0
- b _021EBE60
-_021EBE48:
- mov r0, #0
- str r0, [sp]
- mov r2, #1
- mov r0, #0x87
- str r2, [sp, #4]
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- ldr r1, [sp, #0x10]
- mov r3, #0xa
- bl MOD05_021E4014
- mov r1, #1
-_021EBE60:
- mov r0, #0x99
- lsl r0, r0, #2
- str r1, [r4, r0]
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x34
- bl FUN_02020064
- mov r0, #0
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- ldr r2, [sp, #0x14]
- mov r0, #0x22
- lsl r0, r0, #4
- ldrb r2, [r2, #5]
- ldr r0, [r4, r0]
- ldr r1, [sp, #0x10]
- mov r3, #0xa
- bl MOD05_021E4014
- mov r0, #0x22
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- mov r1, #2
- bl FUN_020200EC
- mov r0, #0x22
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x34
- bl FUN_02020064
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EBEC0:
- mov r0, #1
- mov r1, #0x10
- str r0, [sp]
- add r2, r1, #0
- add r3, r5, #4
- bl MOD05_021E3474
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EBED6:
- ldr r1, [r5, #4]
- cmp r1, #0
- bne _021EBEDE
- b _021EC3A0
-_021EBEDE:
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EBEE4:
- mov r0, #6
- mov r2, #0x2e
- mov r3, #1
- str r0, [sp]
- ldr r1, _021EC0CC ; =0xFFFB0000
- add r0, r4, #0
- lsl r2, r2, #0xc
- lsl r3, r3, #0x12
- bl MOD05_021E3644
- mov r2, #0x72
- ldr r1, [r4]
- add r0, sp, #0x40
- lsl r2, r2, #0xc
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #9
- ldr r1, [sp, #0x44]
- lsl r0, r0, #0xe
- add r0, r1, r0
- str r0, [sp, #0x44]
- mov r0, #1
- ldr r1, [sp, #0x40]
- lsl r0, r0, #0x10
- add r0, r1, r0
- str r0, [sp, #0x40]
- mov r0, #0x89
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x89
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x89
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200BC
- mov r0, #0x89
- lsl r0, r0, #2
- mov r1, #1
- ldr r0, [r4, r0]
- lsl r1, r1, #0xc
- bl FUN_020200D8
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EBF6C:
- add r0, r4, #0
- bl MOD05_021E36A4
- mov r2, #0x72
- add r6, r0, #0
- ldr r1, [r4]
- add r0, sp, #0x40
- lsl r2, r2, #0xc
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #9
- ldr r1, [sp, #0x44]
- lsl r0, r0, #0xe
- add r0, r1, r0
- str r0, [sp, #0x44]
- mov r0, #1
- ldr r1, [sp, #0x40]
- lsl r0, r0, #0x10
- add r0, r1, r0
- str r0, [sp, #0x40]
- mov r0, #0x89
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- cmp r6, #1
- bne _021EC02E
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EBFBA:
- add r0, r4, #0
- add r0, #0x30
- mov r1, #0
- mov r2, #0x10
- mov r3, #3
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EBFD0:
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E35C0
- add r6, r0, #0
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E4AD0
- cmp r6, #1
- bne _021EC02E
- mov r3, #0
- mov r2, #0x87
- str r3, [sp]
- lsl r2, r2, #2
- ldr r0, [r4, r2]
- add r2, #0x48
- ldr r1, [sp, #0x10]
- ldr r2, [r4, r2]
- bl MOD05_021E3F68
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC002:
- add r0, r4, #0
- add r0, #0x30
- mov r1, #0x10
- mov r2, #0
- mov r3, #3
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC018:
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E35C0
- add r6, r0, #0
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E4AD0
- cmp r6, #1
- beq _021EC030
-_021EC02E:
- b _021EC3A0
-_021EC030:
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC038:
- mov r0, #6
- mov r1, #0x15
- mov r2, #0xd
- str r0, [sp]
- ldr r3, _021EC0D0 ; =0xFFFC0000
- add r0, r4, #0
- lsl r1, r1, #0x10
- lsl r2, r2, #0x10
- bl MOD05_021E3644
- mov r2, #0x11
- ldr r1, [r4]
- add r0, sp, #0x40
- lsl r2, r2, #0xe
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x22
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #9
- ldr r1, [sp, #0x44]
- lsl r0, r0, #0xe
- add r0, r1, r0
- str r0, [sp, #0x44]
- mov r0, #1
- ldr r1, [sp, #0x40]
- lsl r0, r0, #0x10
- sub r0, r1, r0
- str r0, [sp, #0x40]
- mov r0, #0x8a
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #0x22
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x8a
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200A0
- mov r0, #0x8a
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- mov r1, #1
- bl FUN_020200BC
- mov r0, #0x8a
- lsl r0, r0, #2
- mov r1, #1
- ldr r0, [r4, r0]
- lsl r1, r1, #0xc
- bl FUN_020200D8
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
- .balign 4, 0
-_021EC0C0: .word 0x000927C0
-_021EC0C4: .word 0x000927C1
-_021EC0C8: .word 0x000927C2
-_021EC0CC: .word 0xFFFB0000
-_021EC0D0: .word 0xFFFC0000
-_021EC0D4:
- add r0, r4, #0
- bl MOD05_021E36A4
- mov r2, #0x11
- add r6, r0, #0
- ldr r1, [r4]
- add r0, sp, #0x40
- lsl r2, r2, #0xe
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x22
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #9
- ldr r1, [sp, #0x44]
- lsl r0, r0, #0xe
- add r0, r1, r0
- str r0, [sp, #0x44]
- mov r0, #1
- ldr r1, [sp, #0x40]
- lsl r0, r0, #0x10
- sub r0, r1, r0
- str r0, [sp, #0x40]
- mov r0, #0x8a
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- cmp r6, #1
- bne _021EC212
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC122:
- add r0, r4, #0
- add r0, #0x30
- mov r1, #0
- mov r2, #0x10
- mov r3, #3
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC138:
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E35C0
- add r6, r0, #0
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E4AD0
- cmp r6, #1
- bne _021EC212
- mov r3, #0
- mov r0, #0x22
- ldr r2, [sp, #0x14]
- str r3, [sp]
- lsl r0, r0, #4
- ldrb r2, [r2, #5]
- ldr r0, [r4, r0]
- ldr r1, [sp, #0x10]
- bl MOD05_021E3F68
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC16A:
- add r0, r4, #0
- add r0, #0x30
- mov r1, #0x10
- mov r2, #0
- mov r3, #3
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC180:
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E35C0
- add r6, r0, #0
- add r0, r4, #0
- add r0, #0x30
- bl MOD05_021E4AD0
- cmp r6, #1
- bne _021EC212
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC19E:
- ldr r0, [r5, #0x10]
- mov r1, #0x8b
- ldr r0, [r0, #0x20]
- lsl r1, r1, #2
- str r0, [r4, r1]
- ldr r1, [r4, r1]
- add r0, sp, #0x2c
- bl Camera_GetAngle
- add r1, sp, #0x2c
- mov r2, #0x92
- ldrh r0, [r1]
- lsl r2, r2, #2
- strh r0, [r4, r2]
- ldrh r3, [r1, #2]
- add r0, r2, #2
- strh r3, [r4, r0]
- ldrh r3, [r1, #4]
- add r0, r2, #4
- strh r3, [r4, r0]
- ldrh r1, [r1, #6]
- add r0, r2, #6
- ldr r3, [sp, #0x14]
- strh r1, [r4, r0]
- ldrh r1, [r4, r2]
- add r2, #8
- add r0, r4, r2
- ldr r2, [sp, #0x14]
- ldrb r3, [r3, #4]
- ldr r2, [r2]
- add r2, r1, r2
- bl MOD05_021E35B0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC1E8:
- mov r0, #0x25
- lsl r0, r0, #4
- add r0, r4, r0
- bl MOD05_021E35C0
- mov r1, #0x25
- lsl r1, r1, #4
- add r6, r0, #0
- add r0, r1, #0
- ldr r2, [r4, r1]
- sub r0, #8
- strh r2, [r4, r0]
- add r0, r1, #0
- sub r1, #0x24
- sub r0, #8
- ldr r1, [r4, r1]
- add r0, r4, r0
- bl Camera_SetAngle
- cmp r6, #1
- beq _021EC214
-_021EC212:
- b _021EC3A0
-_021EC214:
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC21C:
- mov r0, #0x8b
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl Camera_GetDistance
- add r1, r0, #0
- mov r0, #0x1e
- str r0, [sp]
- mov r0, #0x23
- mov r2, #0xfa
- lsl r0, r0, #4
- lsl r2, r2, #0xc
- add r0, r4, r0
- sub r2, r1, r2
- mov r3, #0
- bl MOD05_021E3644
- mov r0, #0x1e
- mov r1, #0
- mov r2, #6
- str r0, [sp]
- add r0, r4, #0
- lsl r2, r2, #0x10
- add r3, r1, #0
- bl MOD05_021E3644
- mov r0, #0x1e
- str r0, [sp]
- add r0, r4, #0
- mov r1, #0
- mov r2, #6
- add r0, #0x18
- lsl r2, r2, #0x10
- add r3, r1, #0
- bl MOD05_021E3644
- mov r0, #0x1e
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- mov r1, #0
- str r0, [sp, #8]
- ldr r3, _021EC3B4 ; =0x00007FFF
- mov r0, #3
- add r2, r1, #0
- bl FUN_0200E1D0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC284:
- mov r0, #0x23
- lsl r0, r0, #4
- add r0, r4, r0
- bl MOD05_021E36A4
- add r0, r4, #0
- bl MOD05_021E36A4
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E36A4
- mov r1, #0x23
- lsl r1, r1, #4
- ldr r0, [r4, r1]
- sub r1, r1, #4
- ldr r1, [r4, r1]
- bl Camera_SetDistance
- mov r1, #0x2e
- ldr r2, [r4]
- lsl r1, r1, #0xc
- sub r1, r1, r2
- mov r2, #0x72
- ldr r3, [r4, #0x18]
- lsl r2, r2, #0xc
- add r2, r3, r2
- add r0, sp, #0x40
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #9
- ldr r1, [sp, #0x44]
- lsl r0, r0, #0xe
- add r0, r1, r0
- str r0, [sp, #0x44]
- mov r0, #1
- ldr r1, [sp, #0x40]
- lsl r0, r0, #0x10
- add r0, r1, r0
- str r0, [sp, #0x40]
- mov r0, #0x89
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r1, #0xd
- ldr r2, [r4]
- lsl r1, r1, #0x10
- add r1, r2, r1
- mov r2, #0x11
- ldr r3, [r4, #0x18]
- lsl r2, r2, #0xe
- sub r2, r2, r3
- add r0, sp, #0x40
- mov r3, #0
- bl MOD05_021E3FF8
- mov r0, #0x22
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- mov r0, #9
- ldr r1, [sp, #0x44]
- lsl r0, r0, #0xe
- add r0, r1, r0
- str r0, [sp, #0x44]
- mov r0, #1
- ldr r1, [sp, #0x40]
- lsl r0, r0, #0x10
- sub r0, r1, r0
- str r0, [sp, #0x40]
- mov r0, #0x8a
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- add r1, sp, #0x40
- bl FUN_02020044
- bl FUN_0200E308
- cmp r0, #0
- beq _021EC3A0
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021EC3A0
-_021EC342:
- ldr r1, _021EC3B4 ; =0x00007FFF
- mov r0, #1
- bl FUN_0200E3A0
- ldr r1, [r5, #0x14]
- cmp r1, #0
- beq _021EC354
- mov r0, #1
- str r0, [r1]
-_021EC354:
- mov r7, #0
- add r6, r4, #0
-_021EC358:
- mov r0, #0x87
- lsl r0, r0, #2
- ldr r0, [r6, r0]
- bl FUN_0201FFC8
- add r7, r7, #1
- add r6, r6, #4
- cmp r7, #4
- blt _021EC358
- mov r0, #6
- lsl r0, r0, #6
- add r6, r4, r0
- add r0, r4, #0
- str r0, [sp, #0x28]
- add r0, #0x44
- mov r7, #0
- str r0, [sp, #0x28]
-_021EC37A:
- ldr r0, [sp, #0x28]
- add r1, r6, #0
- bl MOD05_021E3F3C
- add r7, r7, #1
- add r6, #0x34
- cmp r7, #3
- blt _021EC37A
- add r4, #0x44
- add r0, r4, #0
- bl MOD05_021E3E44
- ldr r1, [r5, #0xc]
- mov r0, #4
- bl FreeToHeapExplicit
- add sp, #0x4c
- mov r0, #1
- pop {r4, r5, r6, r7, pc}
-_021EC3A0:
- ldr r0, [r5]
- cmp r0, #0x13
- beq _021EC3AC
- ldr r0, [r4, #0x44]
- bl FUN_0201FDEC
-_021EC3AC:
- mov r0, #0
- add sp, #0x4c
- pop {r4, r5, r6, r7, pc}
- nop
-_021EC3B4: .word 0x00007FFF
-
- thumb_func_start MOD05_021EC3B8
-MOD05_021EC3B8: ; 0x021EC3B8
- push {r4, lr}
- ldr r2, _021EC3D4 ; =UNK05_021F7910
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EBCD8
- cmp r0, #1
- bne _021EC3D0
- add r0, r4, #0
- bl FUN_0200621C
-_021EC3D0:
- pop {r4, pc}
- nop
-_021EC3D4: .word UNK05_021F7910
-
- thumb_func_start MOD05_021EC3D8
-MOD05_021EC3D8: ; 0x021EC3D8
- push {r4, lr}
- ldr r2, _021EC3F4 ; =UNK05_021F7918
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EBCD8
- cmp r0, #1
- bne _021EC3F0
- add r0, r4, #0
- bl FUN_0200621C
-_021EC3F0:
- pop {r4, pc}
- nop
-_021EC3F4: .word UNK05_021F7918
-
- thumb_func_start MOD05_021EC3F8
-MOD05_021EC3F8: ; 0x021EC3F8
- push {r4, lr}
- ldr r2, _021EC414 ; =UNK05_021F7920
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EBCD8
- cmp r0, #1
- bne _021EC410
- add r0, r4, #0
- bl FUN_0200621C
-_021EC410:
- pop {r4, pc}
- nop
-_021EC414: .word UNK05_021F7920
-
- thumb_func_start MOD05_021EC418
-MOD05_021EC418: ; 0x021EC418
- push {r4, lr}
- ldr r2, _021EC434 ; =UNK05_021F7928
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EBCD8
- cmp r0, #1
- bne _021EC430
- add r0, r4, #0
- bl FUN_0200621C
-_021EC430:
- pop {r4, pc}
- nop
-_021EC434: .word UNK05_021F7928
-
- thumb_func_start MOD05_021EC438
-MOD05_021EC438: ; 0x021EC438
- push {r4, lr}
- ldr r2, _021EC454 ; =UNK05_021F7930
- add r4, r0, #0
- add r0, r1, #0
- mov r1, #4
- bl MOD05_021EBCD8
- cmp r0, #1
- bne _021EC450
- add r0, r4, #0
- bl FUN_0200621C
-_021EC450:
- pop {r4, pc}
- nop
-_021EC454: .word UNK05_021F7930
-
- thumb_func_start MOD05_021EC458
-MOD05_021EC458: ; 0x021EC458
- push {r3, lr}
- bl Sav2_DayCare_GetMonX
- bl DayCareMon_GetBoxMon
- pop {r3, pc}
-
- thumb_func_start MOD05_021EC464
-MOD05_021EC464: ; 0x021EC464
- push {r3, r4, r5, r6, r7, lr}
- mov r4, #0
- add r6, r0, #0
- add r5, r4, #0
- mov r7, #5
-_021EC46E:
- add r0, r6, #0
- add r1, r5, #0
- bl Sav2_DayCare_GetMonX
- bl DayCareMon_GetBoxMon
- add r1, r7, #0
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- beq _021EC48C
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_021EC48C:
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #2
- blo _021EC46E
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EC49C
-MOD05_021EC49C: ; 0x021EC49C
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- ldr r0, _021EC4D8 ; =UNK05_021FD680
- mov r4, #0
- str r5, [r0]
- mov r6, #5
- add r7, r4, #0
-_021EC4AA:
- add r0, r5, #0
- add r1, r4, #0
- bl Sav2_DayCare_GetMonX
- bl DayCareMon_GetBoxMon
- add r1, r6, #0
- add r2, r7, #0
- bl GetBoxMonData
- cmp r0, #0
- bne _021EC4C6
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021EC4C6:
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #2
- blo _021EC4AA
- mov r0, #0
- mvn r0, r0
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021EC4D8: .word UNK05_021FD680
-
- thumb_func_start MOD05_021EC4DC
-MOD05_021EC4DC: ; 0x021EC4DC
- push {r3, lr}
- mov r1, #6
- mov r2, #0
- bl GetBoxMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl ItemIdIsMail
- pop {r3, pc}
-
- thumb_func_start MOD05_021EC4F0
-MOD05_021EC4F0: ; 0x021EC4F0
- push {r4, r5, r6, r7, lr}
- sub sp, #0x24
- add r5, r2, #0
- add r6, r0, #0
- str r1, [sp]
- add r7, r3, #0
- bl GetPartyMonByIndex
- add r4, r0, #0
- add r0, r5, #0
- bl DayCareMon_GetExtras
- str r0, [sp, #8]
- add r0, r5, #0
- bl DayCareMon_GetBoxMon
- str r0, [sp, #4]
- add r0, r7, #0
- bl Sav2_PlayerData_GetProfileAddr
- bl PlayerProfile_GetNamePtr
- add r0, r4, #0
- mov r1, #0x74
- add r2, sp, #0xc
- bl GetMonData
- add r0, r4, #0
- bl FUN_020690E4
- bl MOD05_021EC4DC
- cmp r0, #0
- beq _021EC544
- ldr r0, [sp, #8]
- bl DayCareMail_GetCapsule
- add r2, r0, #0
- add r0, r4, #0
- mov r1, #0xa9
- bl GetMonData
-_021EC544:
- ldr r1, [sp, #4]
- add r0, r4, #0
- bl CopyBoxPokemonToBoxPokemon
- add r0, r5, #0
- mov r1, #0
- bl DayCareMon_SetSteps
- ldr r1, [sp]
- add r0, r6, #0
- bl RemoveMonFromParty
- ldr r1, _021EC578 ; =0x000001B9
- add r0, r6, #0
- bl PartyHasMon
- cmp r0, #0
- bne _021EC572
- add r0, r7, #0
- bl Sav2_Chatot_get
- bl Chatot_invalidate
-_021EC572:
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
- nop
-_021EC578: .word 0x000001B9
-
- thumb_func_start MOD05_021EC57C
-MOD05_021EC57C: ; 0x021EC57C
- push {r3, r4, r5, r6, r7, lr}
- add r7, r3, #0
- add r5, r0, #0
- add r0, r7, #0
- add r6, r1, #0
- add r4, r2, #0
- bl FUN_02029FC8
- mov r1, #0x28
- bl FUN_0202A0E8
- add r0, r4, #0
- bl MOD05_021EC49C
- add r1, r0, #0
- add r0, r4, #0
- bl Sav2_DayCare_GetMonX
- add r2, r0, #0
- add r0, r5, #0
- add r1, r6, #0
- add r3, r7, #0
- bl MOD05_021EC4F0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EC5B0
-MOD05_021EC5B0: ; 0x021EC5B0
- push {r3, r4, r5, r6, r7, lr}
- add r4, r0, #0
- mov r1, #0
- bl Sav2_DayCare_GetMonX
- add r5, r0, #0
- add r0, r4, #0
- mov r1, #1
- bl Sav2_DayCare_GetMonX
- add r4, r0, #0
- add r0, r5, #0
- bl DayCareMon_GetBoxMon
- add r6, r0, #0
- add r0, r4, #0
- bl DayCareMon_GetBoxMon
- add r7, r0, #0
- add r0, r6, #0
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- bne _021EC600
- add r0, r7, #0
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- beq _021EC600
- add r0, r5, #0
- add r1, r4, #0
- bl DayCareMon_Copy
- add r0, r4, #0
- bl DayCareMon_Init
-_021EC600:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EC604
-MOD05_021EC604: ; 0x021EC604
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r5, r0, #0
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #8]
- add r4, sp, #8
- add r6, sp, #4
- add r7, sp, #4
-_021EC616:
- add r0, r5, #0
- bl FUN_020690E8
- cmp r0, #0
- beq _021EC658
- mov r0, #0
- str r0, [sp, #8]
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl FUN_02069818
- cmp r0, #0
- beq _021EC64E
-_021EC632:
- ldr r1, _021EC664 ; =0x0000FFFF
- cmp r0, r1
- bne _021EC640
- ldrh r1, [r7]
- add r0, r5, #0
- bl FUN_02069708
-_021EC640:
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl FUN_02069818
- cmp r0, #0
- bne _021EC632
-_021EC64E:
- ldr r0, [sp]
- add r0, r0, #1
- str r0, [sp]
- cmp r0, #0x64
- blt _021EC616
-_021EC658:
- add r0, r5, #0
- bl CalcMonLevelAndStats
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- nop
-_021EC664: .word 0x0000FFFF
-
- thumb_func_start MOD05_021EC668
-MOD05_021EC668: ; 0x021EC668
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- str r0, [sp]
- add r6, r1, #0
- mov r0, #4
- add r7, r2, #0
- bl AllocMonZeroed
- add r4, r0, #0
- add r0, r6, #0
- bl DayCareMon_GetBoxMon
- add r5, r0, #0
- add r0, r6, #0
- bl DayCareMon_GetExtras
- str r0, [sp, #4]
- add r0, r7, #0
- mov r1, #0
- add r2, r5, #0
- bl BufferBoxMonNickname
- add r0, r5, #0
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- add r0, r5, #0
- add r1, r4, #0
- bl CopyBoxPokemonToPokemon
- add r0, r4, #0
- mov r1, #0xa0
- mov r2, #0
- bl GetMonData
- cmp r0, #0x64
- beq _021EC6E0
- add r0, r4, #0
- mov r1, #8
- mov r2, #0
- bl GetMonData
- str r0, [sp, #8]
- add r0, r6, #0
- bl DayCareMon_GetSteps
- ldr r1, [sp, #8]
- add r2, sp, #8
- add r0, r1, r0
- str r0, [sp, #8]
- add r0, r4, #0
- mov r1, #8
- bl SetMonData
- add r0, r4, #0
- bl MOD05_021EC604
-_021EC6E0:
- add r0, r5, #0
- bl MOD05_021EC4DC
- cmp r0, #0
- beq _021EC6FA
- ldr r0, [sp, #4]
- bl DayCareMail_GetCapsule
- add r2, r0, #0
- add r0, r4, #0
- mov r1, #0xa9
- bl SetMonData
-_021EC6FA:
- ldr r0, [sp]
- add r1, r4, #0
- bl AddMonToParty
- add r0, r5, #0
- bl ZeroBoxMonData
- add r0, r6, #0
- mov r1, #0
- bl DayCareMon_SetSteps
- add r0, r4, #0
- bl FreeToHeap
- add r0, r7, #0
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EC71C
-MOD05_021EC71C: ; 0x021EC71C
- push {r4, r5, r6, lr}
- add r6, r2, #0
- add r5, r0, #0
- add r4, r1, #0
- add r0, r6, #0
- add r1, r3, #0
- bl Sav2_DayCare_GetMonX
- add r1, r0, #0
- add r0, r5, #0
- add r2, r4, #0
- bl MOD05_021EC668
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r6, #0
- bl MOD05_021EC5B0
- add r0, r4, #0
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021EC744
-MOD05_021EC744: ; 0x021EC744
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- mov r0, #4
- add r5, r1, #0
- bl AllocMonZeroed
- add r7, r0, #0
- bl FUN_020690E4
- add r4, r0, #0
- add r0, r6, #0
- add r1, r4, #0
- bl CopyPokemonToBoxPokemon
- add r0, r4, #0
- mov r1, #8
- mov r2, #0
- bl GetBoxMonData
- str r0, [sp]
- add r0, r0, r5
- str r0, [sp]
- add r0, r4, #0
- mov r1, #8
- add r2, sp, #0
- bl SetBoxMonData
- add r0, r4, #0
- bl CalcBoxMonLevel
- add r4, r0, #0
- add r0, r7, #0
- bl FreeToHeap
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EC78C
-MOD05_021EC78C: ; 0x021EC78C
- push {r4, r5, r6, lr}
- add r5, r0, #0
- bl DayCareMon_GetBoxMon
- add r6, r0, #0
- bl CalcBoxMonLevel
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- add r0, r5, #0
- bl DayCareMon_GetSteps
- add r1, r0, #0
- add r0, r6, #0
- bl MOD05_021EC744
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- sub r0, r0, r4
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021EC7B4
-MOD05_021EC7B4: ; 0x021EC7B4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl DayCareMon_GetBoxMon
- add r4, r0, #0
- add r0, r5, #0
- bl DayCareMon_GetSteps
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021EC744
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EC7D4
-MOD05_021EC7D4: ; 0x021EC7D4
- push {r4, r5, r6, lr}
- sub sp, #8
- add r4, r0, #0
- add r5, r1, #0
- bl DayCareMon_GetBoxMon
- add r6, r0, #0
- add r0, r4, #0
- bl MOD05_021EC78C
- add r4, r0, #0
- mov r0, #0
- str r0, [sp]
- mov r1, #1
- add r0, r5, #0
- add r2, r4, #0
- mov r3, #3
- str r1, [sp, #4]
- bl BufferIntegerAsString
- add r0, r5, #0
- mov r1, #0
- add r2, r6, #0
- bl BufferBoxMonNickname
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- add sp, #8
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EC810
-MOD05_021EC810: ; 0x021EC810
- push {r4, r5, r6, lr}
- sub sp, #8
- add r4, r0, #0
- add r5, r1, #0
- bl DayCareMon_GetBoxMon
- add r6, r0, #0
- add r0, r4, #0
- bl MOD05_021EC78C
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r5, #0
- mov r1, #0
- add r2, r6, #0
- bl BufferBoxMonNickname
- add r1, r4, #1
- mov r0, #0x64
- mul r0, r1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- mov r0, #0
- str r0, [sp]
- mov r1, #1
- add r0, r5, #0
- add r2, r4, #0
- mov r3, #5
- str r1, [sp, #4]
- bl BufferIntegerAsString
- add r0, r4, #0
- add sp, #8
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021EC854
-MOD05_021EC854: ; 0x021EC854
- push {r4, lr}
- add r4, r2, #0
- bl Sav2_DayCare_GetMonX
- add r1, r4, #0
- bl MOD05_021EC810
- pop {r4, pc}
-
- thumb_func_start MOD05_021EC864
-MOD05_021EC864: ; 0x021EC864
- push {r3, r4, r5, lr}
- add r5, r2, #0
- bl Sav2_DayCare_GetMonX
- add r4, r0, #0
- bl DayCareMon_GetBoxMon
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- beq _021EC888
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021EC7D4
- pop {r3, r4, r5, pc}
-_021EC888:
- mov r0, #0
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021EC88C
-MOD05_021EC88C: ; 0x021EC88C
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- mov r1, #0
- bl MOD05_021EC458
- str r0, [r4]
- add r0, r5, #0
- mov r1, #1
- bl MOD05_021EC458
- str r0, [r4, #4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EC8A8
-MOD05_021EC8A8: ; 0x021EC8A8
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- mov r1, #0
- mvn r1, r1
- str r1, [sp]
- add r1, sp, #4
- bl MOD05_021EC88C
- mov r4, #0
- add r5, sp, #4
-_021EC8BC:
- ldr r0, [r5]
- bl GetBoxMonGender
- cmp r0, #1
- bne _021EC8C8
- str r4, [sp]
-_021EC8C8:
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #2
- blt _021EC8BC
- mov r7, #0
- add r6, r7, #0
- add r4, sp, #4
- add r5, sp, #0xc
-_021EC8D8:
- ldr r0, [r4]
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- str r0, [r5]
- cmp r0, #0x84
- bne _021EC8EC
- add r7, r7, #1
- str r6, [sp]
-_021EC8EC:
- add r6, r6, #1
- add r4, r4, #4
- add r5, r5, #4
- cmp r6, #2
- blt _021EC8D8
- cmp r7, #2
- bne _021EC90E
- bl LCRandom
- ldr r1, _021EC940 ; =0x00007FFF
- cmp r0, r1
- blo _021EC90A
- mov r0, #0
- str r0, [sp]
- b _021EC90E
-_021EC90A:
- mov r0, #1
- str r0, [sp]
-_021EC90E:
- ldr r0, [sp]
- mov r2, #0
- lsl r1, r0, #2
- add r0, sp, #4
- ldr r0, [r0, r1]
- mov r1, #6
- bl GetBoxMonData
- cmp r0, #0xe5
- bne _021EC938
- bl LCRandom
- ldr r1, _021EC940 ; =0x00007FFF
- cmp r0, r1
- blo _021EC932
- mov r0, #0
- mvn r0, r0
- str r0, [sp]
-_021EC932:
- ldr r0, [sp]
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
-_021EC938:
- mov r0, #0
- mvn r0, r0
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EC940: .word 0x00007FFF
-
- thumb_func_start MOD05_021EC944
-MOD05_021EC944: ; 0x021EC944
- push {r3, r4, r5, r6, r7, lr}
- str r0, [sp]
- mov r5, #0
- bl MOD05_021EC8A8
- add r1, r0, #0
- bpl _021EC960
- bl MTRandom
- add r1, r0, #0
- ldr r0, [sp]
- bl Sav2_DayCare_SetEggPID
- pop {r3, r4, r5, r6, r7, pc}
-_021EC960:
- ldr r0, [sp]
- bl MOD05_021EC458
- add r1, r5, #0
- add r2, r1, #0
- bl GetBoxMonData
- bl GetNatureFromPersonality
- mov r7, #0x96
- add r6, r0, #0
- lsl r7, r7, #4
-_021EC978:
- bl MTRandom
- add r4, r0, #0
- bl GetNatureFromPersonality
- cmp r6, r0
- bne _021EC98A
- cmp r4, #0
- bne _021EC990
-_021EC98A:
- add r5, r5, #1
- cmp r5, r7
- ble _021EC978
-_021EC990:
- ldr r0, [sp]
- add r1, r4, #0
- bl Sav2_DayCare_SetEggPID
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EC99C
-MOD05_021EC99C: ; 0x021EC99C
- push {r3, r4}
- sub sp, #8
- mov r2, #0xff
- strb r2, [r0, r1]
- mov r2, #0
- add r3, sp, #0
-_021EC9A8:
- ldrb r1, [r0, r2]
- add r2, r2, #1
- strb r1, [r3]
- add r3, r3, #1
- cmp r2, #6
- blt _021EC9A8
- mov r2, #0
- add r4, r2, #0
- add r3, sp, #0
-_021EC9BA:
- ldrb r1, [r3]
- cmp r1, #0xff
- beq _021EC9C4
- strb r1, [r0, r2]
- add r2, r2, #1
-_021EC9C4:
- add r4, r4, #1
- add r3, r3, #1
- cmp r4, #6
- blt _021EC9BA
- add sp, #8
- pop {r3, r4}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EC9D4
-MOD05_021EC9D4: ; 0x021EC9D4
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- add r4, r0, #0
- str r1, [sp]
- mov r0, #0
- add r1, sp, #8
-_021EC9E0:
- strb r0, [r1, r0]
- add r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #6
- blo _021EC9E0
- add r7, sp, #0xc
- mov r5, #0
- add r6, sp, #8
- add r7, #2
-_021EC9F4:
- bl LCRandom
- mov r1, #6
- sub r1, r1, r5
- bl _s32_div_f
- ldrb r0, [r6, r1]
- add r1, r5, #0
- strb r0, [r7, r5]
- add r0, r6, #0
- bl MOD05_021EC99C
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #3
- blo _021EC9F4
- add r6, sp, #4
- mov r5, #0
- add r6, #1
- mov r7, #0x1f
-_021ECA1E:
- bl LCRandom
- lsr r1, r0, #0x1f
- lsl r0, r0, #0x1f
- sub r0, r0, r1
- ror r0, r7
- add r0, r1, r0
- strb r0, [r6, r5]
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #3
- blo _021ECA1E
- mov r5, #0
- add r7, sp, #4
- add r6, sp, #4
-_021ECA3E:
- add r1, sp, #4
- add r1, #1
- ldrb r1, [r1, r5]
- ldr r0, [sp]
- bl MOD05_021EC458
- add r1, sp, #0xc
- add r1, #2
- ldrb r1, [r1, r5]
- cmp r1, #5
- bhi _021ECAEE
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021ECA60: ; jump table
- .short _021ECA6C - _021ECA60 - 2 ; case 0
- .short _021ECA82 - _021ECA60 - 2 ; case 1
- .short _021ECA98 - _021ECA60 - 2 ; case 2
- .short _021ECAAE - _021ECA60 - 2 ; case 3
- .short _021ECAC4 - _021ECA60 - 2 ; case 4
- .short _021ECADA - _021ECA60 - 2 ; case 5
-_021ECA6C:
- mov r1, #0x46
- mov r2, #0
- bl GetBoxMonData
- strb r0, [r6]
- add r0, r4, #0
- mov r1, #0x46
- add r2, r7, #0
- bl SetMonData
- b _021ECAEE
-_021ECA82:
- mov r1, #0x47
- mov r2, #0
- bl GetBoxMonData
- strb r0, [r6]
- add r0, r4, #0
- mov r1, #0x47
- add r2, r7, #0
- bl SetMonData
- b _021ECAEE
-_021ECA98:
- mov r1, #0x48
- mov r2, #0
- bl GetBoxMonData
- strb r0, [r6]
- add r0, r4, #0
- mov r1, #0x48
- add r2, r7, #0
- bl SetMonData
- b _021ECAEE
-_021ECAAE:
- mov r1, #0x49
- mov r2, #0
- bl GetBoxMonData
- strb r0, [r6]
- add r0, r4, #0
- mov r1, #0x49
- add r2, r7, #0
- bl SetMonData
- b _021ECAEE
-_021ECAC4:
- mov r1, #0x4a
- mov r2, #0
- bl GetBoxMonData
- strb r0, [r6]
- add r0, r4, #0
- mov r1, #0x4a
- add r2, r7, #0
- bl SetMonData
- b _021ECAEE
-_021ECADA:
- mov r1, #0x4b
- mov r2, #0
- bl GetBoxMonData
- strb r0, [r6]
- add r0, r4, #0
- mov r1, #0x4b
- add r2, r7, #0
- bl SetMonData
-_021ECAEE:
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #3
- blo _021ECA3E
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021ECAFC
-MOD05_021ECAFC: ; 0x021ECAFC
- push {r3, r4, r5, r6, r7, lr}
- mov r4, #0
- add r5, r1, #0
- mov r1, #5
- add r2, r4, #0
- add r6, r4, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r2, r0, #0x10
- ldr r0, _021ECB60 ; =0x00004E20
- ldr r3, _021ECB64 ; =0x00000775
- add r2, r2, r0
- ldr r0, _021ECB68 ; =UNK05_021F7B48
- add r1, r4, #0
-_021ECB1A:
- lsl r7, r1, #1
- ldrh r7, [r0, r7]
- cmp r2, r7
- bne _021ECB2A
- add r0, r1, #1
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- b _021ECB34
-_021ECB2A:
- add r1, r1, #1
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- cmp r1, r3
- blo _021ECB1A
-_021ECB34:
- ldr r2, _021ECB68 ; =UNK05_021F7B48
- lsl r0, r6, #1
- ldr r3, _021ECB60 ; =0x00004E20
- mov r1, #0
- add r0, r2, r0
-_021ECB3E:
- lsl r6, r1, #1
- ldrh r2, [r0, r6]
- cmp r2, r3
- bhi _021ECB58
- add r1, r1, #1
- strh r2, [r5, r6]
- add r2, r4, #1
- lsl r1, r1, #0x10
- lsl r2, r2, #0x10
- lsr r1, r1, #0x10
- lsr r4, r2, #0x10
- cmp r1, #0x10
- blo _021ECB3E
-_021ECB58:
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021ECB60: .word 0x00004E20
-_021ECB64: .word 0x00000775
-_021ECB68: .word UNK05_021F7B48
-
- thumb_func_start MOD05_021ECB6C
-MOD05_021ECB6C: ; 0x021ECB6C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x28
- add r7, r0, #0
- str r1, [sp]
- mov r0, #4
- mov r1, #0xb4
- str r2, [sp, #4]
- bl AllocFromHeap
- add r4, r0, #0
- mov r0, #0
- add r1, r4, #0
- mov r2, #0xb4
- str r0, [sp, #0x1c]
- bl MIi_CpuClearFast
- add r0, r7, #0
- mov r1, #5
- mov r2, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x18]
- add r0, r7, #0
- mov r1, #0x70
- mov r2, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0xc]
- add r2, r4, #0
- ldr r0, [sp, #0x18]
- ldr r1, [sp, #0xc]
- add r2, #0x30
- bl Species_LoadLearnsetTable
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x14]
- mov r5, #0
-_021ECBC0:
- lsl r0, r5, #2
- add r6, r5, #0
- str r0, [sp, #0x20]
- add r0, r4, r0
- add r6, #0x36
- str r0, [sp, #0x10]
- ldr r0, [sp]
- add r1, r6, #0
- mov r2, #0
- bl GetBoxMonData
- ldr r1, [sp, #0x20]
- mov r2, #0
- str r0, [r4, r1]
- ldr r0, [sp, #4]
- add r1, r6, #0
- bl GetBoxMonData
- ldr r1, [sp, #0x10]
- str r0, [r1, #0x20]
- add r0, r5, #1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- cmp r5, #4
- blo _021ECBC0
- add r1, r4, #0
- add r0, r7, #0
- add r1, #0x94
- bl MOD05_021ECAFC
- add r5, r0, #0
- mov r6, #0
-_021ECC00:
- lsl r0, r6, #2
- ldr r1, [r4, r0]
- str r0, [sp, #0x24]
- cmp r1, #0
- beq _021ECC50
- mov r0, #0
- cmp r5, #0
- bls _021ECC46
-_021ECC10:
- lsl r2, r0, #1
- add r2, r4, r2
- add r2, #0x94
- ldrh r2, [r2]
- cmp r1, r2
- bne _021ECC3C
- lsl r1, r1, #0x10
- add r0, r7, #0
- lsr r1, r1, #0x10
- bl FUN_02069698
- ldr r1, _021ECD60 ; =0x0000FFFF
- cmp r0, r1
- bne _021ECC46
- ldr r1, [sp, #0x24]
- add r0, r7, #0
- ldr r1, [r4, r1]
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- bl FUN_02069708
- b _021ECC46
-_021ECC3C:
- add r0, r0, #1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, r5
- blo _021ECC10
-_021ECC46:
- add r0, r6, #1
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- cmp r6, #4
- blo _021ECC00
-_021ECC50:
- mov r0, #0
- str r0, [sp, #8]
-_021ECC54:
- ldr r0, [sp, #8]
- lsl r6, r0, #2
- ldr r0, [r4, r6]
- cmp r0, #0
- beq _021ECCAC
- mov r5, #0
-_021ECC60:
- mov r0, #0x52
- lsl r0, r0, #2
- add r0, r5, r0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl TMHMGetMove
- ldr r1, [r4, r6]
- cmp r1, r0
- bne _021ECCA2
- lsl r2, r5, #0x18
- ldr r0, [sp, #0x18]
- ldr r1, [sp, #0xc]
- lsr r2, r2, #0x18
- bl FUN_0206A16C
- cmp r0, #0
- beq _021ECCA2
- ldr r1, [r4, r6]
- add r0, r7, #0
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- bl FUN_02069698
- ldr r1, _021ECD60 ; =0x0000FFFF
- cmp r0, r1
- bne _021ECCA2
- ldr r1, [r4, r6]
- add r0, r7, #0
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- bl FUN_02069708
-_021ECCA2:
- add r0, r5, #1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- cmp r5, #0x64
- blo _021ECC60
-_021ECCAC:
- ldr r0, [sp, #8]
- add r0, r0, #1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- cmp r0, #4
- blo _021ECC54
- mov r6, #0
-_021ECCBC:
- lsl r1, r6, #2
- ldr r0, [r4, r1]
- cmp r0, #0
- beq _021ECCFC
- mov r3, #0
-_021ECCC6:
- lsl r2, r3, #2
- add r2, r4, r2
- ldr r0, [r4, r1]
- ldr r2, [r2, #0x20]
- cmp r0, r2
- bne _021ECCE8
- cmp r0, #0
- beq _021ECCE8
- ldr r2, [sp, #0x1c]
- add r5, r2, #0
- add r5, r5, #1
- lsl r5, r5, #0x10
- lsr r5, r5, #0x10
- lsl r2, r2, #2
- str r5, [sp, #0x1c]
- add r2, r4, r2
- str r0, [r2, #0x10]
-_021ECCE8:
- add r0, r3, #1
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- cmp r3, #4
- blo _021ECCC6
- add r0, r6, #1
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- cmp r6, #4
- blo _021ECCBC
-_021ECCFC:
- mov r6, #0
-_021ECCFE:
- lsl r0, r6, #2
- add r5, r4, r0
- ldr r3, [r5, #0x10]
- cmp r3, #0
- beq _021ECD54
- ldr r0, [sp, #0x14]
- mov r2, #0
- cmp r0, #0
- bls _021ECD4A
-_021ECD10:
- lsl r0, r2, #1
- add r0, r4, r0
- ldrh r1, [r0, #0x30]
- cmp r1, #0
- beq _021ECD3E
- ldr r0, [r5, #0x10]
- cmp r0, r1
- bne _021ECD3E
- lsl r1, r3, #0x10
- add r0, r7, #0
- lsr r1, r1, #0x10
- bl FUN_02069698
- ldr r1, _021ECD60 ; =0x0000FFFF
- cmp r0, r1
- bne _021ECD4A
- ldr r1, [r5, #0x10]
- add r0, r7, #0
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- bl FUN_02069708
- b _021ECD4A
-_021ECD3E:
- add r0, r2, #1
- lsl r0, r0, #0x10
- lsr r2, r0, #0x10
- ldr r0, [sp, #0x14]
- cmp r2, r0
- blo _021ECD10
-_021ECD4A:
- add r0, r6, #1
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- cmp r6, #4
- blo _021ECCFE
-_021ECD54:
- add r0, r4, #0
- bl FreeToHeap
- add sp, #0x28
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021ECD60: .word 0x0000FFFF
-
- thumb_func_start MOD05_021ECD64
-MOD05_021ECD64: ; 0x021ECD64
- push {r4, lr}
- add r4, r0, #0
- mov r1, #0
- bl Sav2_DayCare_SetEggPID
- add r0, r4, #0
- mov r1, #0
- bl Sav2_DayCare_SetEggCycleCounter
- pop {r4, pc}
-
- thumb_func_start MOD05_021ECD78
-MOD05_021ECD78: ; 0x021ECD78
- push {r4, r5, r6, lr}
- sub sp, #8
- add r5, r0, #0
- add r0, r1, #0
- add r1, sp, #0
- bl MOD05_021EC88C
- ldr r2, _021ECDE8 ; =UNK05_021F7B12
- mov r3, #0
- mov r1, #6
-_021ECD8C:
- add r0, r3, #0
- mul r0, r1
- ldrh r0, [r2, r0]
- cmp r5, r0
- bne _021ECD9A
- add r6, r3, #0
- b _021ECDA4
-_021ECD9A:
- add r0, r3, #1
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- cmp r3, #9
- blo _021ECD8C
-_021ECDA4:
- cmp r3, #9
- bne _021ECDAE
- add sp, #8
- add r0, r5, #0
- pop {r4, r5, r6, pc}
-_021ECDAE:
- ldr r0, [sp]
- mov r1, #6
- mov r2, #0
- bl GetBoxMonData
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- ldr r0, [sp, #4]
- mov r1, #6
- mov r2, #0
- bl GetBoxMonData
- lsl r0, r0, #0x10
- lsr r2, r0, #0x10
- mov r0, #6
- add r1, r6, #0
- mul r1, r0
- ldr r0, _021ECDEC ; =UNK05_021F7B14
- ldrh r0, [r0, r1]
- cmp r4, r0
- beq _021ECDE0
- cmp r2, r0
- beq _021ECDE0
- ldr r0, _021ECDF0 ; =UNK05_021F7B16
- ldrh r5, [r0, r1]
-_021ECDE0:
- add r0, r5, #0
- add sp, #8
- pop {r4, r5, r6, pc}
- nop
-_021ECDE8: .word UNK05_021F7B12
-_021ECDEC: .word UNK05_021F7B14
-_021ECDF0: .word UNK05_021F7B16
-
- thumb_func_start MOD05_021ECDF4
-MOD05_021ECDF4: ; 0x021ECDF4
- push {r3, r4, r5, lr}
- sub sp, #8
- add r4, r0, #0
- add r0, r1, #0
- add r1, sp, #0
- bl MOD05_021EC88C
- ldr r0, [sp]
- mov r1, #6
- mov r2, #0
- bl GetBoxMonData
- add r5, r0, #0
- ldr r0, [sp, #4]
- mov r1, #6
- mov r2, #0
- bl GetBoxMonData
- cmp r5, #0xec
- beq _021ECE20
- cmp r0, #0xec
- bne _021ECE3A
-_021ECE20:
- mov r1, #0x56
- add r0, r4, #0
- lsl r1, r1, #2
- bl FUN_02069698
- ldr r1, _021ECE40 ; =0x0000FFFF
- cmp r0, r1
- bne _021ECE3A
- mov r1, #0x56
- add r0, r4, #0
- lsl r1, r1, #2
- bl FUN_02069708
-_021ECE3A:
- add sp, #8
- pop {r3, r4, r5, pc}
- nop
-_021ECE40: .word 0x0000FFFF
-
- thumb_func_start MOD05_021ECE44
-MOD05_021ECE44: ; 0x021ECE44
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x10
- add r5, r1, #0
- add r1, sp, #4
- str r0, [sp]
- bl MOD05_021EC88C
- mov r4, #0
- add r7, sp, #4
-_021ECE56:
- lsl r6, r4, #2
- ldr r0, [r7, r6]
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- lsl r1, r4, #1
- add r2, sp, #0xc
- strh r0, [r2, r1]
- add r0, r2, #0
- ldrh r0, [r0, r1]
- cmp r0, #0x84
- bne _021ECE7A
- mov r0, #1
- eor r0, r4
- strb r0, [r5]
- strb r4, [r5, #1]
- b _021ECE8C
-_021ECE7A:
- ldr r0, [r7, r6]
- bl GetBoxMonGender
- cmp r0, #1
- bne _021ECE8C
- mov r0, #1
- strb r4, [r5]
- eor r0, r4
- strb r0, [r5, #1]
-_021ECE8C:
- add r0, r4, #1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, #2
- blo _021ECE56
- ldrb r0, [r5]
- lsl r1, r0, #1
- add r0, sp, #0xc
- ldrh r0, [r0, r1]
- bl ReadFromPersonalPmsNarc
- add r4, r0, #0
- cmp r4, #0x1d
- bne _021ECEBC
- ldr r0, [sp]
- bl Sav2_DayCare_GetEggPID
- mov r1, #2
- lsl r1, r1, #0xe
- tst r0, r1
- beq _021ECEBA
- mov r4, #0x20
- b _021ECEBC
-_021ECEBA:
- mov r4, #0x1d
-_021ECEBC:
- ldr r0, _021ECF08 ; =0x0000013A
- cmp r4, r0
- bne _021ECED6
- ldr r0, [sp]
- bl Sav2_DayCare_GetEggPID
- mov r1, #2
- lsl r1, r1, #0xe
- tst r0, r1
- beq _021ECED4
- ldr r4, _021ECF0C ; =0x00000139
- b _021ECED6
-_021ECED4:
- ldr r4, _021ECF08 ; =0x0000013A
-_021ECED6:
- ldr r0, _021ECF10 ; =0x000001EA
- cmp r4, r0
- bne _021ECEDE
- sub r4, r0, #1
-_021ECEDE:
- ldrb r0, [r5, #1]
- lsl r1, r0, #1
- add r0, sp, #0xc
- ldrh r0, [r0, r1]
- cmp r0, #0x84
- bne _021ECF02
- ldrb r0, [r5]
- lsl r1, r0, #2
- add r0, sp, #4
- ldr r0, [r0, r1]
- bl GetBoxMonGender
- cmp r0, #1
- beq _021ECF02
- ldrb r1, [r5, #1]
- ldrb r0, [r5]
- strb r0, [r5, #1]
- strb r1, [r5]
-_021ECF02:
- add r0, r4, #0
- add sp, #0x10
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021ECF08: .word 0x0000013A
-_021ECF0C: .word 0x00000139
-_021ECF10: .word 0x000001EA
-
- thumb_func_start MOD05_SetEggStats
-MOD05_SetEggStats: ; 0x021ECF14
- push {r0, r1, r2, r3}
- push {r4, r5, r6, lr}
- sub sp, #0x20
- add r6, r1, #0
- add r5, r0, #0
- add r0, r6, #0
- mov r1, #0x13 ; BASE_EGG_CYCLES
- add r4, r3, #0
- bl GetMonBaseStat
- add r1, sp, #0x10
- strb r0, [r1]
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- str r0, [sp, #0xc]
- add r0, r5, #0
- add r1, r6, #0
- mov r2, #1
- mov r3, #0x20
- bl CreateMon
- mov r1, #0
- add r0, sp, #0x10
- strb r1, [r0, #2]
- mov r1, #4
- strh r1, [r0, #4]
- add r0, r5, #0
- mov r1, #0x9a
- add r2, sp, #0x14
- bl SetMonData
- add r0, r5, #0
- mov r1, #9
- add r2, sp, #0x10
- bl SetMonData
- add r2, sp, #0x10
- add r0, r5, #0
- mov r1, #0x9b
- add r2, #2
- bl SetMonData
- add r0, sp, #0x30
- ldrb r0, [r0, #8]
- cmp r0, #0
- beq _021ECF7E
- add r0, r5, #0
- mov r1, #0x97
- add r2, sp, #0x38
- bl SetMonData
-_021ECF7E:
- add r2, sp, #0x10
- mov r1, #1
- add r0, sp, #0x10
- strb r1, [r0, #1]
- add r0, r5, #0
- mov r1, #0x4c
- add r2, #1
- bl SetMonData
- ldr r0, _021ED008 ; =0x000001EE
- mov r1, #4
- bl GetSpeciesName
- add r6, r0, #0
- add r0, r5, #0
- mov r1, #0x76
- add r2, r6, #0
- bl SetMonData
- add r0, r6, #0
- bl String_dtor
- ldr r0, [sp, #0x40]
- cmp r0, #4
- bne _021ECFEE
- add r0, r4, #0
- bl PlayerProfile_GetTrainerID
- str r0, [sp, #0x1c]
- add r0, r4, #0
- bl PlayerProfile_GetTrainerGender
- str r0, [sp, #0x18]
- add r0, r4, #0
- mov r1, #0x20
- bl PlayerProfile_GetPlayerName_NewString
- add r6, r0, #0
- add r0, r5, #0
- mov r1, #0x90
- add r2, r6, #0
- bl SetMonData
- add r0, r5, #0
- mov r1, #7
- add r2, sp, #0x1c
- bl SetMonData
- add r0, r5, #0
- mov r1, #0x9c
- add r2, sp, #0x18
- bl SetMonData
- add r0, r6, #0
- bl String_dtor
-_021ECFEE:
- mov r0, #0
- str r0, [sp]
- ldr r2, [sp, #0x40]
- ldr r3, [sp, #0x44]
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0208089C
- add sp, #0x20
- pop {r4, r5, r6}
- pop {r3}
- add sp, #0x10
- bx r3
- .balign 4, 0
-_021ED008: .word 0x000001EE
-
- thumb_func_start MOD05_DayCare_CreateEgg
-MOD05_DayCare_CreateEgg: ; 0x021ED00C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x18
- str r1, [sp, #0x10]
- add r7, r0, #0
- ldr r0, [sp, #0x10]
- mov r1, #0x13 ; BASE_EGG_CYCLES
- add r5, r2, #0
- add r6, r3, #0
- bl GetMonBaseStat
- add r1, sp, #0x14
- strb r0, [r1]
- add r0, r5, #0
- bl Sav2_DayCare_GetEggPID
- add r4, r0, #0
- add r0, r5, #0
- bl Sav2_DayCare_MasudaCheck
- cmp r0, #0
- beq _021ED05E
- add r0, r6, #0
- add r1, r4, #0
- bl CalcShininessByOtIdAndPersonality
- cmp r0, #0
- bne _021ED05E
- mov r5, #0
-_021ED044:
- add r0, r4, #0
- bl PRandom
- add r4, r0, #0
- add r0, r6, #0
- add r1, r4, #0
- bl CalcShininessByOtIdAndPersonality
- cmp r0, #0
- bne _021ED05E
- add r5, r5, #1
- cmp r5, #4
- blt _021ED044
-_021ED05E:
- mov r2, #1
- str r2, [sp]
- str r4, [sp, #4]
- mov r0, #0
- str r0, [sp, #8]
- str r0, [sp, #0xc]
- ldr r1, [sp, #0x10]
- add r0, r7, #0
- mov r3, #0x20
- bl CreateMon
- add r2, sp, #0x14
- mov r1, #0
- add r0, sp, #0x14
- strb r1, [r0, #1]
- mov r1, #4
- strh r1, [r0, #2]
- add r0, r7, #0
- mov r1, #0x9a
- add r2, #2
- bl SetMonData
- add r0, r7, #0
- mov r1, #9
- add r2, sp, #0x14
- bl SetMonData
- add r2, sp, #0x14
- add r0, r7, #0
- mov r1, #0x9b
- add r2, #1
- bl SetMonData
- add r0, r7, #0
- mov r1, #0x70
- add r2, sp, #0x30
- bl SetMonData
- ldr r0, _021ED0C8 ; =0x000001EE
- mov r1, #4
- bl GetSpeciesName
- add r4, r0, #0
- add r0, r7, #0
- mov r1, #0x76
- add r2, r4, #0
- bl SetMonData
- add r0, r4, #0
- bl String_dtor
- add sp, #0x18
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021ED0C8: .word 0x000001EE
-
- thumb_func_start MOD05_DayCare_GiveEggToPlayer
-MOD05_DayCare_GiveEggToPlayer: ; 0x021ED0CC
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- add r5, r0, #0
- mov r0, #4
- str r1, [sp, #4]
- add r7, r2, #0
- bl AllocMonZeroed
- add r1, sp, #0x10
- add r4, r0, #0
- add r0, r5, #0
- add r1, #1
- bl MOD05_021ECE44
- add r1, r5, #0
- bl MOD05_021ECD78
- add r6, r0, #0
- add r0, r7, #0
- bl PlayerProfile_GetTrainerID
- add r1, sp, #0x10
- str r0, [sp, #8]
- ldrb r1, [r1, #1]
- add r0, r5, #0
- bl MOD05_021EC458
- mov r1, #0x70
- mov r2, #0
- bl GetBoxMonData
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp]
- ldr r3, [sp, #8]
- add r0, r4, #0
- add r1, r6, #0
- add r2, r5, #0
- bl MOD05_DayCare_CreateEgg
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021EC9D4
- add r1, sp, #0x10
- ldrb r1, [r1, #2]
- add r0, r5, #0
- bl MOD05_021EC458
- add r1, sp, #0x10
- str r0, [sp, #0xc]
- ldrb r1, [r1, #1]
- add r0, r5, #0
- bl MOD05_021EC458
- add r2, r0, #0
- ldr r1, [sp, #0xc]
- add r0, r4, #0
- bl MOD05_021ECB6C
- mov r0, #1
- mov r1, #0
- bl FUN_02015CF8
- add r3, r0, #0
- mov r0, #4
- str r0, [sp]
- add r0, r4, #0
- add r1, r7, #0
- mov r2, #3
- bl FUN_0208089C
- cmp r6, #0xac
- bne _021ED168
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021ECDF4
-_021ED168:
- mov r1, #1
- add r0, sp, #0x10
- strb r1, [r0]
- add r0, r4, #0
- mov r1, #0x4c
- add r2, sp, #0x10
- bl SetMonData
- ldr r0, [sp, #4]
- add r1, r4, #0
- bl AddMonToParty
- add r0, r5, #0
- bl MOD05_021ECD64
- add r0, r4, #0
- bl FreeToHeap
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021ED190
-MOD05_021ED190: ; 0x021ED190
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- bl GetPartyCount
- add r6, r0, #0
- mov r4, #0
- cmp r6, #0
- ble _021ED1E0
- mov r7, #0xac
-_021ED1A2:
- add r0, r5, #0
- add r1, r4, #0
- bl GetPartyMonByIndex
- add r1, r7, #0
- mov r2, #0
- bl GetMonData
- cmp r0, #0
- bne _021ED1D6
- add r0, r5, #0
- add r1, r4, #0
- bl GetPartyMonByIndex
- mov r1, #0xa
- mov r2, #0
- bl GetMonData
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x28
- beq _021ED1D2
- cmp r0, #0x31
- bne _021ED1D6
-_021ED1D2:
- mov r0, #2
- pop {r3, r4, r5, r6, r7, pc}
-_021ED1D6:
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, r6
- blt _021ED1A2
-_021ED1E0:
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021ED1E4
-MOD05_021ED1E4: ; 0x021ED1E4
- push {r4, r5, r6, r7}
- mov r4, #0
- add r3, r4, #0
-_021ED1EA:
- ldrh r7, [r0]
- add r5, r3, #0
- add r6, r1, #0
-_021ED1F0:
- ldrh r2, [r6]
- cmp r7, r2
- bne _021ED1FC
- mov r0, #1
- pop {r4, r5, r6, r7}
- bx lr
-_021ED1FC:
- add r5, r5, #1
- add r6, r6, #2
- cmp r5, #2
- blt _021ED1F0
- add r4, r4, #1
- add r0, r0, #2
- cmp r4, #2
- blt _021ED1EA
- mov r0, #0
- pop {r4, r5, r6, r7}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021ED214
-MOD05_021ED214: ; 0x021ED214
- push {r4, r5, r6, r7, lr}
- sub sp, #0x24
- add r5, r0, #0
- mov r0, #0
- str r0, [sp, #4]
- add r0, sp, #0x10
- add r4, sp, #0x18
- str r0, [sp]
- add r7, sp, #8
- add r6, sp, #0x1c
-_021ED228:
- ldr r0, [r5]
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- strh r0, [r4]
- ldr r0, [r5]
- mov r1, #7
- mov r2, #0
- bl GetBoxMonData
- ldr r1, [sp]
- str r0, [r1]
- mov r1, #0
- ldr r0, [r5]
- add r2, r1, #0
- bl GetBoxMonData
- add r1, r0, #0
- ldrh r0, [r4]
- bl GetGenderBySpeciesAndPersonality
- stmia r7!, {r0}
- ldrh r0, [r4]
- mov r1, #0x16 ; BASE_EGG_GROUP_1
- bl GetMonBaseStat
- strh r0, [r6]
- ldrh r0, [r4]
- mov r1, #0x17 ; GASE_EGG_GROUP_2
- bl GetMonBaseStat
- strh r0, [r6, #2]
- ldr r0, [sp]
- add r5, r5, #4
- add r0, r0, #4
- str r0, [sp]
- ldr r0, [sp, #4]
- add r4, r4, #2
- add r0, r0, #1
- add r6, r6, #4
- str r0, [sp, #4]
- cmp r0, #2
- blo _021ED228
- add r0, sp, #8
- ldrh r1, [r0, #0x14]
- cmp r1, #0xf
- beq _021ED28E
- ldrh r0, [r0, #0x18]
- cmp r0, #0xf
- bne _021ED294
-_021ED28E:
- add sp, #0x24
- mov r0, #0
- pop {r4, r5, r6, r7, pc}
-_021ED294:
- cmp r1, #0xd
- bne _021ED2A2
- cmp r0, #0xd
- bne _021ED2A2
- add sp, #0x24
- mov r0, #0
- pop {r4, r5, r6, r7, pc}
-_021ED2A2:
- cmp r1, #0xd
- beq _021ED2AA
- cmp r0, #0xd
- bne _021ED2BE
-_021ED2AA:
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #0x14]
- cmp r1, r0
- bne _021ED2B8
- add sp, #0x24
- mov r0, #0x14
- pop {r4, r5, r6, r7, pc}
-_021ED2B8:
- add sp, #0x24
- mov r0, #0x32
- pop {r4, r5, r6, r7, pc}
-_021ED2BE:
- ldr r1, [sp, #0xc]
- ldr r0, [sp, #8]
- cmp r0, r1
- bne _021ED2CC
- add sp, #0x24
- mov r0, #0
- pop {r4, r5, r6, r7, pc}
-_021ED2CC:
- cmp r0, #2
- beq _021ED2D4
- cmp r1, #2
- bne _021ED2DA
-_021ED2D4:
- add sp, #0x24
- mov r0, #0
- pop {r4, r5, r6, r7, pc}
-_021ED2DA:
- add r0, sp, #0x1c
- add r1, sp, #0x20
- bl MOD05_021ED1E4
- cmp r0, #0
- bne _021ED2EC
- add sp, #0x24
- mov r0, #0
- pop {r4, r5, r6, r7, pc}
-_021ED2EC:
- add r0, sp, #8
- ldrh r1, [r0, #0x10]
- ldrh r0, [r0, #0x12]
- cmp r1, r0
- bne _021ED30A
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #0x14]
- cmp r1, r0
- beq _021ED304
- add sp, #0x24
- mov r0, #0x46
- pop {r4, r5, r6, r7, pc}
-_021ED304:
- add sp, #0x24
- mov r0, #0x32
- pop {r4, r5, r6, r7, pc}
-_021ED30A:
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #0x14]
- cmp r1, r0
- beq _021ED318
- add sp, #0x24
- mov r0, #0x32
- pop {r4, r5, r6, r7, pc}
-_021ED318:
- mov r0, #0x14
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021ED320
-MOD05_021ED320: ; 0x021ED320
- push {r3, lr}
- sub sp, #8
- add r1, sp, #0
- bl MOD05_021EC88C
- add r0, sp, #0
- bl MOD05_021ED214
- add sp, #8
- pop {r3, pc}
-
- thumb_func_start MOD05_021ED334
-MOD05_021ED334: ; 0x021ED334
- push {r3, r4, r5, lr}
- add r4, r0, #0
- bl Script_GetDay
- add r5, r0, #0
- add r0, r4, #0
- bl Script_GetMonth
- mov r1, #0x64
- mul r1, r0
- add r0, r4, #0
- add r5, r5, r1
- bl FUN_0204B33C
- cmp r0, #0
- beq _021ED358
- mov r0, #0xff
- pop {r3, r4, r5, pc}
-_021ED358:
- ldr r2, _021ED374 ; =UNK05_021F7AF8
- mov r1, #0
-_021ED35C:
- ldrh r0, [r2]
- cmp r5, r0
- bne _021ED366
- mov r0, #0xe6
- pop {r3, r4, r5, pc}
-_021ED366:
- add r1, r1, #1
- add r2, r2, #2
- cmp r1, #0xd
- blo _021ED35C
- mov r0, #0xff
- pop {r3, r4, r5, pc}
- nop
-_021ED374: .word UNK05_021F7AF8
-
- thumb_func_start MOD05_021ED378
-MOD05_021ED378: ; 0x021ED378
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- add r7, r1, #0
- add r1, sp, #8
- str r0, [sp]
- str r2, [sp, #4]
- bl MOD05_021EC88C
- mov r6, #0
- add r4, r6, #0
- add r5, sp, #8
-_021ED38E:
- ldr r0, [r5]
- mov r1, #0xab
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- beq _021ED3AC
- ldr r0, [sp]
- add r1, r4, #0
- bl Sav2_DayCare_GetMonX
- mov r1, #1
- bl DayCareMon_AddSteps
- add r6, r6, #1
-_021ED3AC:
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #2
- blo _021ED38E
- ldr r0, [sp]
- bl Sav2_DayCare_GetEggPID
- cmp r0, #0
- bne _021ED3F8
- cmp r6, #2
- bne _021ED3F8
- ldr r0, [sp]
- mov r1, #1
- bl Sav2_DayCare_GetMonX
- bl DayCareMon_GetSteps
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0xff
- bne _021ED3F8
- ldr r0, [sp]
- bl MOD05_021ED320
- add r4, r0, #0
- bl LCRandom
- mov r1, #0x64
- mul r1, r0
- add r0, r1, #0
- ldr r1, _021ED498 ; =0x0000FFFF
- bl _u32_div_f
- cmp r4, r0
- bls _021ED3F8
- ldr r0, [sp]
- bl MOD05_021EC944
-_021ED3F8:
- ldr r0, [sp]
- bl Sav2_DayCare_GetEggCycleCounter
- add r4, r0, #0
- ldr r0, [sp]
- add r1, r4, #1
- bl Sav2_DayCare_SetEggCycleCounter
- ldr r0, [sp, #4]
- bl MOD05_021ED334
- add r1, r4, #1
- cmp r1, r0
- bne _021ED490
- ldr r0, [sp]
- mov r1, #0
- bl Sav2_DayCare_SetEggCycleCounter
- add r0, r7, #0
- bl MOD05_021ED190
- add r6, r0, #0
- add r0, r7, #0
- mov r5, #0
- bl GetPartyCount
- cmp r0, #0
- bls _021ED490
-_021ED430:
- add r0, r7, #0
- add r1, r5, #0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0
- add r4, r0, #0
- bl GetMonData
- cmp r0, #0
- beq _021ED484
- add r0, r4, #0
- mov r1, #3
- mov r2, #0
- bl GetMonData
- cmp r0, #0
- bne _021ED484
- add r0, r4, #0
- mov r1, #9
- mov r2, #0
- bl GetMonData
- str r0, [sp, #0x10]
- cmp r0, #0
- beq _021ED47E
- cmp r0, r6
- blo _021ED46E
- sub r0, r0, r6
- str r0, [sp, #0x10]
- b _021ED472
-_021ED46E:
- sub r0, r0, #1
- str r0, [sp, #0x10]
-_021ED472:
- add r0, r4, #0
- mov r1, #9
- add r2, sp, #0x10
- bl SetMonData
- b _021ED484
-_021ED47E:
- add sp, #0x14
- mov r0, #1
- pop {r4, r5, r6, r7, pc}
-_021ED484:
- add r0, r7, #0
- add r5, r5, #1
- bl GetPartyCount
- cmp r5, r0
- blo _021ED430
-_021ED490:
- mov r0, #0
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
- nop
-_021ED498: .word 0x0000FFFF
-
- thumb_func_start MOD05_021ED49C
-MOD05_021ED49C: ; 0x021ED49C
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- bl GetPartyCount
- add r6, r0, #0
- mov r5, #0
- cmp r6, #0
- ble _021ED4DA
-_021ED4AC:
- add r0, r7, #0
- add r1, r5, #0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0
- add r4, r0, #0
- bl GetMonData
- cmp r0, #0
- beq _021ED4D4
- add r0, r4, #0
- mov r1, #9
- mov r2, #0
- bl GetMonData
- cmp r0, #0
- bne _021ED4D4
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021ED4D4:
- add r5, r5, #1
- cmp r5, r6
- blt _021ED4AC
-_021ED4DA:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021ED4E0
-MOD05_021ED4E0: ; 0x021ED4E0
- push {r4, lr}
- sub sp, #8
- add r4, r1, #0
- add r1, sp, #0
- bl MOD05_021EC88C
- ldr r0, [sp]
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- beq _021ED50E
- ldr r2, [sp]
- add r0, r4, #0
- mov r1, #0
- bl BufferBoxMonNickname
- ldr r2, [sp]
- add r0, r4, #0
- mov r1, #2
- bl BufferBoxMonOTName
-_021ED50E:
- ldr r0, [sp, #4]
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- beq _021ED526
- ldr r2, [sp, #4]
- add r0, r4, #0
- mov r1, #1
- bl BufferBoxMonNickname
-_021ED526:
- add sp, #8
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021ED52C
-MOD05_021ED52C: ; 0x021ED52C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x10
- add r4, r1, #0
- add r1, sp, #0x18
- ldrb r6, [r1, #0x10]
- add r5, r0, #0
- add r7, r2, #0
- add r1, r6, #0
- str r3, [sp, #8]
- bl Sav2_DayCare_GetMonX
- str r0, [sp, #0xc]
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021EC458
- add r5, r0, #0
- ldr r0, [sp, #0x2c]
- add r1, r4, #0
- add r2, r5, #0
- bl BufferBoxMonNickname
- ldr r0, [sp, #0xc]
- bl DayCareMon_GetSteps
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021EC744
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
- mov r0, #0
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- ldr r0, [sp, #0x2c]
- add r1, r7, #0
- mov r3, #3
- bl BufferIntegerAsString
- add r0, r5, #0
- mov r1, #0x6f
- mov r2, #0
- bl GetBoxMonData
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #2
- beq _021ED5B4
- add r0, r5, #0
- mov r1, #5
- mov r2, #0
- bl GetBoxMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0x1d
- beq _021ED5A4
- cmp r0, #0x20
- bne _021ED5B4
-_021ED5A4:
- add r0, r5, #0
- mov r1, #0x4d
- mov r2, #0
- bl GetBoxMonData
- cmp r0, #0
- bne _021ED5B4
- mov r4, #2
-_021ED5B4:
- ldr r0, [sp, #0x2c]
- ldr r1, [sp, #8]
- add r2, r4, #0
- bl BufferGenderSymbol
- add sp, #0x10
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021ED5C4
-MOD05_021ED5C4: ; 0x021ED5C4
- push {r3, r4, r5, lr}
- add r5, r2, #0
- bl GetPartyMonByIndex
- add r4, r0, #0
- bl FUN_020690E4
- add r2, r0, #0
- add r0, r5, #0
- mov r1, #0
- bl BufferBoxMonNickname
- add r0, r4, #0
- mov r1, #5
- mov r2, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021ED5EC
-MOD05_021ED5EC: ; 0x021ED5EC
- push {r4, lr}
- add r4, r0, #0
- bl Sav2_DayCare_GetEggPID
- cmp r0, #0
- beq _021ED5FC
- mov r0, #1
- pop {r4, pc}
-_021ED5FC:
- add r0, r4, #0
- bl MOD05_021EC464
- cmp r0, #0
- beq _021ED60E
- add r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r4, pc}
-_021ED60E:
- mov r0, #0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021ED614
-MOD05_021ED614: ; 0x021ED614
- cmp r0, #0x14
- bhi _021ED620
- bhs _021ED632
- cmp r0, #0
- beq _021ED62E
- b _021ED63E
-_021ED620:
- cmp r0, #0x32
- bhi _021ED628
- beq _021ED636
- b _021ED63E
-_021ED628:
- cmp r0, #0x46
- beq _021ED63A
- b _021ED63E
-_021ED62E:
- mov r0, #3
- bx lr
-_021ED632:
- mov r0, #2
- bx lr
-_021ED636:
- mov r0, #1
- bx lr
-_021ED63A:
- mov r0, #0
- bx lr
-_021ED63E:
- mov r0, #0
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021ED644
-MOD05_021ED644: ; 0x021ED644
- push {r3, lr}
- bl MOD05_021ED320
- bl MOD05_021ED614
- pop {r3, pc}
-
- thumb_func_start MOD05_021ED650
-MOD05_021ED650: ; 0x021ED650
- push {r4, r5, r6, r7, lr}
- sub sp, #0x3c
- add r4, r0, #0
- add r5, r1, #0
- mov r0, #8
- bl String_ctor
- str r0, [sp, #0x10]
- add r0, r5, #0
- bl AllocMonZeroed
- add r6, r0, #0
- add r0, r4, #0
- mov r1, #5
- mov r2, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x14]
- mov r5, #0
- add r7, sp, #0x34
-_021ED67C:
- add r1, r5, #0
- add r0, r4, #0
- add r1, #0x36
- mov r2, #0
- bl GetMonData
- lsl r1, r5, #1
- strh r0, [r7, r1]
- add r1, r5, #0
- add r0, r4, #0
- add r1, #0x3a
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x30
- strb r0, [r1, r5]
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #4
- blo _021ED67C
- mov r1, #0
- add r0, r4, #0
- add r2, r1, #0
- bl GetMonData
- add r7, r0, #0
- mov r5, #0
-_021ED6B4:
- add r1, r5, #0
- add r0, r4, #0
- add r1, #0x46
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x24
- add r1, #2
- strb r0, [r1, r5]
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #6
- blo _021ED6B4
- add r0, r4, #0
- mov r1, #0xc
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #9]
- add r0, r4, #0
- mov r1, #0x79
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #8]
- add r0, r4, #0
- mov r1, #0xb
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #7]
- add r0, r4, #0
- mov r1, #0x99
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #0xa]
- add r0, r4, #0
- mov r1, #0x6e
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #5]
- ldr r2, [sp, #0x10]
- add r0, r4, #0
- mov r1, #0x90
- bl GetMonData
- add r0, r4, #0
- mov r1, #0x9c
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #3]
- add r0, r4, #0
- mov r1, #7
- mov r2, #0
- bl GetMonData
- str r0, [sp, #0x2c]
- add r0, r4, #0
- mov r1, #0x70
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #4]
- ldr r1, _021ED93C ; =0x000001EA
- ldr r0, [sp, #0x14]
- cmp r0, r1
- bne _021ED788
- add r0, r4, #0
- mov r1, #0x97
- mov r2, #0
- bl GetMonData
- add r5, r0, #0
- mov r0, #2
- mov r1, #1
- bl FUN_02015CF8
- cmp r5, r0
- bne _021ED788
- ldr r0, [sp, #0x2c]
- add r1, r7, #0
- bl CalcShininessByOtIdAndPersonality
- cmp r0, #0
- beq _021ED788
-_021ED774:
- add r0, r7, #0
- bl PRandom
- add r7, r0, #0
- ldr r0, [sp, #0x2c]
- add r1, r7, #0
- bl CalcShininessByOtIdAndPersonality
- cmp r0, #0
- bne _021ED774
-_021ED788:
- mov r2, #1
- str r2, [sp]
- str r7, [sp, #4]
- mov r0, #0
- str r0, [sp, #8]
- str r0, [sp, #0xc]
- ldr r1, [sp, #0x14]
- add r0, r6, #0
- mov r3, #0x20
- bl CreateMon
- mov r5, #0
- add r7, sp, #0x34
-_021ED7A2:
- add r1, r5, #0
- lsl r2, r5, #1
- add r0, r6, #0
- add r1, #0x36
- add r2, r7, r2
- bl SetMonData
- add r1, r5, #0
- add r2, sp, #0x30
- add r0, r6, #0
- add r1, #0x3a
- add r2, r2, r5
- bl SetMonData
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #4
- blo _021ED7A2
- add r7, sp, #0x24
- mov r5, #0
- add r7, #2
-_021ED7CE:
- add r1, r5, #0
- add r0, r6, #0
- add r1, #0x46
- add r2, r7, r5
- bl SetMonData
- add r0, r5, #1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #6
- blo _021ED7CE
- add r2, sp, #0x20
- add r0, r6, #0
- mov r1, #0xc
- add r2, #1
- bl SetMonData
- add r0, r6, #0
- mov r1, #0x79
- add r2, sp, #0x20
- bl SetMonData
- add r2, sp, #0x1c
- add r0, r6, #0
- mov r1, #0xb
- add r2, #3
- bl SetMonData
- add r2, sp, #0x1c
- mov r1, #0x78
- add r0, sp, #0x18
- strb r1, [r0, #6]
- add r0, r6, #0
- mov r1, #9
- add r2, #2
- bl SetMonData
- add r2, sp, #0x20
- add r0, r6, #0
- mov r1, #0x99
- add r2, #2
- bl SetMonData
- add r2, sp, #0x1c
- add r0, r6, #0
- mov r1, #0x6e
- add r2, #1
- bl SetMonData
- ldr r2, [sp, #0x10]
- add r0, r6, #0
- mov r1, #0x90
- bl SetMonData
- add r2, sp, #0x18
- add r0, r6, #0
- mov r1, #0x9c
- add r2, #3
- bl SetMonData
- add r0, r6, #0
- mov r1, #7
- add r2, sp, #0x2c
- bl SetMonData
- add r0, r6, #0
- mov r1, #0x70
- add r2, sp, #0x1c
- bl SetMonData
- add r0, r4, #0
- mov r1, #0x97
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strh r0, [r1, #0xc]
- add r0, r4, #0
- mov r1, #0x91
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #2]
- add r0, r4, #0
- mov r1, #0x92
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #1]
- add r0, r4, #0
- mov r1, #0x93
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1]
- add r0, r6, #0
- mov r1, #0x97
- add r2, sp, #0x24
- bl SetMonData
- add r2, sp, #0x18
- add r0, r6, #0
- mov r1, #0x91
- add r2, #2
- bl SetMonData
- add r2, sp, #0x18
- add r0, r6, #0
- mov r1, #0x92
- add r2, #1
- bl SetMonData
- add r0, r6, #0
- mov r1, #0x93
- add r2, sp, #0x18
- bl SetMonData
- add r0, r4, #0
- mov r1, #0x98
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strh r0, [r1, #0xc]
- add r0, r4, #0
- mov r1, #0x94
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #2]
- add r0, r4, #0
- mov r1, #0x95
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1, #1]
- add r0, r4, #0
- mov r1, #0x96
- mov r2, #0
- bl GetMonData
- add r1, sp, #0x18
- strb r0, [r1]
- add r0, r6, #0
- mov r1, #0x98
- add r2, sp, #0x24
- bl SetMonData
- add r2, sp, #0x18
- add r0, r6, #0
- mov r1, #0x94
- add r2, #2
- bl SetMonData
- add r2, sp, #0x18
- add r0, r6, #0
- mov r1, #0x95
- add r2, #1
- bl SetMonData
- add r0, r6, #0
- mov r1, #0x96
- add r2, sp, #0x18
- bl SetMonData
- add r0, r6, #0
- add r1, r4, #0
- bl CopyPokemonToPokemon
- ldr r0, [sp, #0x10]
- bl String_dtor
- add r0, r6, #0
- bl FreeToHeap
- add sp, #0x3c
- pop {r4, r5, r6, r7, pc}
- nop
-_021ED93C: .word 0x000001EA
-
- thumb_func_start MOD05_021ED940
-MOD05_021ED940: ; 0x021ED940
- push {r4, r5, lr}
- sub sp, #0x1c
- mov r3, #0x46
- add r2, sp, #0
- strb r3, [r2, #3]
- mov r5, #0
- strb r5, [r2, #2]
- mov r3, #4
- strb r3, [r2, #1]
- add r4, r0, #0
- strb r5, [r2]
- bl MOD05_021ED650
- add r2, sp, #0
- add r0, r4, #0
- mov r1, #0x4c
- add r2, #3
- bl SetMonData
- add r0, r4, #0
- mov r1, #5
- add r2, r5, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- add r1, r5, #0
- add r2, sp, #4
- bl GetSpeciesNameIntoArray
- add r0, r4, #0
- mov r1, #0x74
- add r2, sp, #4
- bl SetMonData
- add r2, sp, #0
- add r0, r4, #0
- mov r1, #0x4d
- add r2, #2
- bl SetMonData
- add r2, sp, #0
- add r0, r4, #0
- mov r1, #0x9a
- add r2, #1
- bl SetMonData
- add r0, r4, #0
- mov r1, #0x9b
- add r2, sp, #0
- bl SetMonData
- add r0, r4, #0
- bl CalcMonLevelAndStats
- add sp, #0x1c
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021ED9B4
-MOD05_021ED9B4: ; 0x021ED9B4
- push {r3, lr}
- bl MOD05_021ED214
- bl MOD05_021ED614
- pop {r3, pc}
-
- thumb_func_start MOD05_021ED9C0
-MOD05_021ED9C0: ; 0x021ED9C0
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #4
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4]
- bl MOD05_021ED9EC
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021ED9DC
-MOD05_021ED9DC: ; 0x021ED9DC
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021EDA28
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021ED9EC
-MOD05_021ED9EC: ; 0x021ED9EC
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- ldr r0, [r4]
- mov r1, #4
- mov r2, #0x57
- bl MOD05_021E5078
- ldr r0, [r4]
- mov r1, #3
- mov r2, #6
- mov r3, #1
- bl MOD05_021E50D4
- mov r0, #3
- str r0, [sp]
- mov r3, #0
- mov r1, #4
- ldr r0, _021EDA24 ; =UNK05_021F8A48
- str r3, [sp, #4]
- str r0, [sp, #8]
- ldr r0, [r4]
- add r2, r1, #0
- bl MOD05_021E4EFC
- add sp, #0xc
- pop {r3, r4, pc}
- nop
-_021EDA24: .word UNK05_021F8A48
-
- thumb_func_start MOD05_021EDA28
-MOD05_021EDA28: ; 0x021EDA28
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4]
- mov r1, #4
- bl MOD05_021E50A0
- ldr r0, [r4]
- mov r1, #3
- bl MOD05_021E5114
- ldr r0, [r4]
- mov r1, #4
- bl MOD05_021E506C
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EDA48
-MOD05_021EDA48: ; 0x021EDA48
- push {r4, r5, lr}
- sub sp, #0x24
- add r5, r0, #0
- bl MOD05_021E4C24
- add r4, r0, #0
- add r0, r5, #0
- bl FUN_02058738
- str r0, [sp, #0x14]
- add r0, r4, #0
- mov r1, #0x18
- str r4, [sp, #0x18]
- bl MOD05_021E4C08
- str r0, [sp, #0x1c]
- add r1, sp, #8
- mov r0, #0
- str r0, [r1]
- str r0, [r1, #4]
- str r0, [r1, #8]
- add r0, r5, #0
- mov r1, #2
- str r5, [sp, #0x20]
- bl FUN_0205829C
- add r1, sp, #0x14
- str r1, [sp]
- str r0, [sp, #4]
- ldr r1, _021EDA94 ; =UNK05_021F8A34
- add r0, r4, #0
- add r2, sp, #8
- mov r3, #0
- bl MOD05_021E4DC4
- add sp, #0x24
- pop {r4, r5, pc}
- nop
-_021EDA94: .word UNK05_021F8A34
-
- thumb_func_start MOD05_021EDA98
-MOD05_021EDA98: ; 0x021EDA98
- push {r4, r5, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r2, sp, #0
- mov r1, #0
- str r1, [r2]
- str r1, [r2, #4]
- add r5, r0, #0
- str r1, [r2, #8]
- bl FUN_0206475C
- add r2, r4, #0
- add r3, r0, #0
- add r2, #0x10
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r4, #0x1c]
- bl FUN_02058448
- str r0, [r4, #4]
- ldr r0, [r4, #0x1c]
- bl FUN_02058450
- str r0, [r4, #8]
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206476C
- ldr r0, [r4, #0x14]
- mov r1, #4
- add r2, sp, #0
- bl MOD05_021E4EE4
- str r0, [r4, #0x20]
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EDAE8
-MOD05_021EDAE8: ; 0x021EDAE8
- ldr r3, _021EDAF0 ; =FUN_0201F744
- ldr r0, [r1, #0x20]
- bx r3
- nop
-_021EDAF0: .word FUN_0201F744
-
- thumb_func_start MOD05_021EDAF4
-MOD05_021EDAF4: ; 0x021EDAF4
- push {r4, lr}
- add r2, r1, #0
- add r4, r0, #0
- ldr r0, [r2, #0x1c]
- ldr r1, [r2, #4]
- ldr r2, [r2, #8]
- bl FUN_020582A8
- cmp r0, #0
- bne _021EDB0E
- add r0, r4, #0
- bl MOD05_021E4DE4
-_021EDB0E:
- pop {r4, pc}
-
- thumb_func_start MOD05_021EDB10
-MOD05_021EDB10: ; 0x021EDB10
- push {r4, r5, r6, lr}
- sub sp, #0x18
- add r5, r1, #0
- ldr r4, [r5, #0x1c]
- ldr r1, [r5, #4]
- add r6, r0, #0
- ldr r2, [r5, #8]
- add r0, r4, #0
- bl FUN_020582A8
- cmp r0, #0
- bne _021EDB32
- add r0, r6, #0
- bl MOD05_021E4DE4
- add sp, #0x18
- pop {r4, r5, r6, pc}
-_021EDB32:
- add r0, r4, #0
- add r1, sp, #0xc
- bl FUN_02058B5C
- add r0, r4, #0
- add r1, sp, #0
- bl FUN_02058B84
- ldr r1, [sp, #0xc]
- ldr r0, [sp]
- add r0, r1, r0
- str r0, [sp, #0xc]
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #4]
- add r0, r1, r0
- str r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #8]
- add r1, r1, r0
- mov r0, #3
- lsl r0, r0, #0xe
- str r1, [sp, #0x14]
- add r0, r1, r0
- str r0, [sp, #0x14]
- ldr r0, [r5, #0x20]
- add r1, sp, #0xc
- bl FUN_0201F7C8
- add sp, #0x18
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EDB70
-MOD05_021EDB70: ; 0x021EDB70
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x60
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4]
- bl MOD05_021EDB9C
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EDB8C
-MOD05_021EDB8C: ; 0x021EDB8C
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021EDBBC
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021EDB9C
-MOD05_021EDB9C: ; 0x021EDB9C
- push {r3, lr}
- sub sp, #8
- add r3, r0, #0
- add r0, #0x58
- str r0, [sp]
- add r0, r3, #0
- add r0, #0x5c
- str r0, [sp, #4]
- ldr r0, [r3]
- mov r1, #0x50
- mov r2, #0
- add r3, r3, #4
- bl MOD05_021E51EC
- add sp, #8
- pop {r3, pc}
-
- thumb_func_start MOD05_021EDBBC
-MOD05_021EDBBC: ; 0x021EDBBC
- ldr r3, _021EDBC4 ; =MOD05_021E4C00
- ldr r0, [r0, #0x5c]
- bx r3
- nop
-_021EDBC4: .word MOD05_021E4C00
-
- thumb_func_start MOD05_021EDBC8
-MOD05_021EDBC8: ; 0x021EDBC8
- push {r4, r5, r6, lr}
- sub sp, #0x20
- add r2, sp, #8
- mov r1, #0
- str r1, [r2]
- str r1, [r2, #4]
- add r5, r0, #0
- str r1, [r2, #8]
- bl FUN_020553A0
- add r4, r0, #0
- bl MOD05_021E4C24
- add r6, r0, #0
- mov r1, #0x10
- str r6, [sp, #0x14]
- bl MOD05_021E4C08
- str r0, [sp, #0x18]
- add r0, r4, #0
- mov r1, #2
- str r5, [sp, #0x1c]
- bl FUN_0205829C
- add r1, sp, #0x14
- str r1, [sp]
- str r0, [sp, #4]
- ldr r1, _021EDC10 ; =UNK05_021F8A6C
- add r0, r6, #0
- add r2, sp, #8
- mov r3, #0
- bl MOD05_021E4DC4
- add sp, #0x20
- pop {r4, r5, r6, pc}
- nop
-_021EDC10: .word UNK05_021F8A6C
-
- thumb_func_start MOD05_021EDC14
-MOD05_021EDC14: ; 0x021EDC14
- push {r3, r4, r5, lr}
- add r5, r1, #0
- bl FUN_0206475C
- add r4, r0, #0
- add r3, r4, #0
- add r2, r5, #0
- ldmia r3!, {r0, r1}
- add r2, #0x24
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r4, #8]
- bl FUN_020553A0
- mov r1, #0
- mvn r1, r1
- add r4, r0, #0
- str r1, [r5, #4]
- bl FUN_02058448
- str r0, [r5, #0x14]
- add r0, r4, #0
- bl FUN_02058450
- str r0, [r5, #0x18]
- mov r0, #1
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021EDC4C
-MOD05_021EDC4C: ; 0x021EDC4C
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EDC50
-MOD05_021EDC50: ; 0x021EDC50
- push {r4, r5, r6, r7, lr}
- sub sp, #0x24
- add r5, r1, #0
- str r0, [sp]
- ldr r0, [r5, #0x2c]
- str r0, [sp, #4]
- bl FUN_020553A0
- ldr r1, [r5, #0x14]
- ldr r2, [r5, #0x18]
- add r6, r0, #0
- bl FUN_020582A8
- cmp r0, #0
- bne _021EDC78
- ldr r0, [sp]
- bl MOD05_021E4DE4
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
-_021EDC78:
- ldr r7, [r5, #4]
- add r0, r6, #0
- bl FUN_02058720
- strb r0, [r5, #8]
- ldrb r0, [r5, #8]
- bl MOD05_021EDDF4
- str r0, [r5, #4]
- mov r0, #0
- str r0, [r5]
- ldr r4, [r5, #4]
- sub r0, r0, #1
- cmp r4, r0
- beq _021EDCA0
- ldr r0, [sp, #4]
- bl FUN_020552F8
- cmp r4, r0
- beq _021EDCAE
-_021EDCA0:
- mov r0, #0
- str r0, [r5, #0x1c]
- str r0, [r5, #0x20]
- mov r0, #1
- add sp, #0x24
- str r0, [r5]
- pop {r4, r5, r6, r7, pc}
-_021EDCAE:
- cmp r7, r4
- beq _021EDCB8
- mov r0, #0
- str r0, [r5, #0x1c]
- str r0, [r5, #0x20]
-_021EDCB8:
- add r0, r6, #0
- bl FUN_02058B2C
- add r4, r0, #0
- ldr r0, [r5, #4]
- bl FUN_02059BF4
- add r7, r0, #0
- add r0, r6, #0
- bl FUN_02058B4C
- str r0, [sp, #8]
- ldr r0, [r5, #4]
- bl FUN_02059C00
- add r2, r0, #0
- ldr r1, [sp, #8]
- add r0, r4, r7
- add r1, r1, r2
- add r2, sp, #0xc
- bl FUN_02059E60
- add r0, r6, #0
- add r1, sp, #0x18
- bl FUN_02058B5C
- ldr r0, [sp, #0x1c]
- add r1, sp, #0xc
- str r0, [sp, #0x10]
- ldr r0, [sp]
- bl FUN_0206476C
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EDCFC
-MOD05_021EDCFC: ; 0x021EDCFC
- push {r3, r4, r5, r6, lr}
- sub sp, #0x3c
- add r4, r1, #0
- add r6, r0, #0
- ldr r0, [r4]
- cmp r0, #1
- beq _021EDDE2
- mov r0, #0
- ldr r1, [r4, #4]
- mvn r0, r0
- cmp r1, r0
- beq _021EDDE2
- ldr r0, [r4, #0x1c]
- add r0, r0, #1
- str r0, [r4, #0x1c]
- cmp r0, #0xf
- ble _021EDD34
- mov r0, #0
- str r0, [r4, #0x1c]
- ldr r0, [r4, #0x20]
- 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, [r4, #0x20]
-_021EDD34:
- ldr r3, _021EDDE8 ; =UNK05_021F8A60
- add r2, sp, #0x24
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- ldr r5, _021EDDEC ; =UNK05_021F8A80
- str r0, [r2]
- add r3, sp, #0
- mov r2, #4
-_021EDD46:
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021EDD46
- ldr r0, [r5]
- mov r2, #0x18
- str r0, [r3]
- ldr r1, [r4, #4]
- ldr r3, _021EDDF0 ; =UNK05_021F8AA4
- add r0, r1, #0
- mul r0, r2
- add r0, r3, r0
- ldr r5, [r4, #0x20]
- mov r3, #0xc
- mul r3, r5
- add r5, r0, r3
- cmp r1, #3
- bhi _021EDDB4
- add r0, r1, r1
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EDD76: ; jump table
- .short _021EDD7E - _021EDD76 - 2 ; case 0
- .short _021EDD8C - _021EDD76 - 2 ; case 1
- .short _021EDD9A - _021EDD76 - 2 ; case 2
- .short _021EDDA8 - _021EDD76 - 2 ; case 3
-_021EDD7E:
- mov r1, #0
- add r0, sp, #0
- mov r2, #0xb4
- add r3, r1, #0
- bl FUN_0201CB20
- b _021EDDB4
-_021EDD8C:
- mov r1, #0
- add r0, sp, #0
- add r2, r1, #0
- add r3, r1, #0
- bl FUN_0201CB20
- b _021EDDB4
-_021EDD9A:
- mov r1, #0
- add r0, sp, #0
- add r2, #0xf6
- add r3, r1, #0
- bl FUN_0201CB20
- b _021EDDB4
-_021EDDA8:
- mov r1, #0
- add r0, sp, #0
- mov r2, #0x5a
- add r3, r1, #0
- bl FUN_0201CB20
-_021EDDB4:
- add r0, r6, #0
- add r1, sp, #0x30
- bl FUN_0206477C
- ldr r1, [sp, #0x30]
- ldr r0, [r5]
- add r2, sp, #0
- add r0, r1, r0
- str r0, [sp, #0x30]
- ldr r1, [sp, #0x34]
- ldr r0, [r5, #4]
- add r3, sp, #0x24
- add r0, r1, r0
- str r0, [sp, #0x34]
- ldr r1, [sp, #0x38]
- ldr r0, [r5, #8]
- add r0, r1, r0
- str r0, [sp, #0x38]
- ldr r0, [r4, #0x28]
- add r1, sp, #0x30
- add r0, r0, #4
- bl FUN_0201B26C
-_021EDDE2:
- add sp, #0x3c
- pop {r3, r4, r5, r6, pc}
- nop
-_021EDDE8: .word UNK05_021F8A60
-_021EDDEC: .word UNK05_021F8A80
-_021EDDF0: .word UNK05_021F8AA4
-
- thumb_func_start MOD05_021EDDF4
-MOD05_021EDDF4: ; 0x021EDDF4
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020547D4
- cmp r0, #0
- beq _021EDE04
- mov r0, #0
- pop {r4, pc}
-_021EDE04:
- add r0, r4, #0
- bl FUN_020547E0
- cmp r0, #0
- beq _021EDE12
- mov r0, #1
- pop {r4, pc}
-_021EDE12:
- add r0, r4, #0
- bl FUN_020547C8
- cmp r0, #0
- beq _021EDE20
- mov r0, #2
- pop {r4, pc}
-_021EDE20:
- add r0, r4, #0
- bl FUN_020547BC
- cmp r0, #0
- beq _021EDE2E
- mov r0, #3
- pop {r4, pc}
-_021EDE2E:
- mov r0, #0
- mvn r0, r0
- pop {r4, pc}
-
- thumb_func_start MOD05_021EDE34
-MOD05_021EDE34: ; 0x021EDE34
- push {r4, r5, r6, lr}
- add r6, r2, #0
- add r5, r1, #0
- add r1, r6, #0
- bl _s32_div_f
- add r4, r1, #0
- add r0, r5, #0
- add r1, r6, #0
- bl _s32_div_f
- cmp r4, r1
- bne _021EDE52
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021EDE52:
- mov r0, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EDE58
-MOD05_021EDE58: ; 0x021EDE58
- push {r4, r5, r6, lr}
- add r6, r2, #0
- add r5, r1, #0
- add r1, r6, #0
- bl _s32_div_f
- add r4, r0, #0
- add r0, r5, #0
- add r1, r6, #0
- bl _s32_div_f
- cmp r4, r0
- bne _021EDE76
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021EDE76:
- mov r0, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EDE7C
-MOD05_021EDE7C: ; 0x021EDE7C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0x30
- add r4, r1, #0
- mul r4, r0
- add r1, r5, r4
- ldr r0, [r1, #0x14]
- cmp r0, #0
- beq _021EDE94
- ldr r0, [r1, #0xc]
- bl MOD05_021EF8F8
-_021EDE94:
- add r1, r5, r4
- ldr r0, [r1, #0x18]
- cmp r0, #0
- beq _021EDEA2
- ldr r0, [r1, #0x10]
- bl MOD05_021F4444
-_021EDEA2:
- mov r1, #1
- add r0, r5, r4
- str r1, [r0, #0x28]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EDEAC
-MOD05_021EDEAC: ; 0x021EDEAC
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x10]
- cmp r0, #0
- beq _021EDEBC
- ldr r0, [r4, #8]
- bl MOD05_021EF8F8
-_021EDEBC:
- ldr r0, [r4, #0x14]
- cmp r0, #0
- beq _021EDEC8
- ldr r0, [r4, #0xc]
- bl MOD05_021F4444
-_021EDEC8:
- mov r0, #0
- str r0, [r4, #0x10]
- str r0, [r4, #0x14]
- pop {r4, pc}
-
- thumb_func_start MOD05_021EDED0
-MOD05_021EDED0: ; 0x021EDED0
- push {r3, r4, r5, r6, r7, lr}
- add r5, r2, #0
- asr r2, r0, #4
- lsr r2, r2, #0x1b
- add r2, r0, r2
- asr r7, r2, #5
- asr r2, r1, #4
- lsr r2, r2, #0x1b
- add r2, r1, r2
- asr r6, r2, #5
- ldr r2, [sp, #0x18]
- str r3, [sp]
- ldr r4, [sp, #0x1c]
- bl MOD05_021EEE08
- ldr r1, [sp, #0x18]
- bl MOD05_021EF620
- add r1, r6, #0
- mul r1, r5
- add r1, r7, r1
- cmp r0, #3
- bhi _021EDFB6
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EDF0A: ; jump table
- .short _021EDF12 - _021EDF0A - 2 ; case 0
- .short _021EDF38 - _021EDF0A - 2 ; case 1
- .short _021EDF60 - _021EDF0A - 2 ; case 2
- .short _021EDF8A - _021EDF0A - 2 ; case 3
-_021EDF12:
- sub r2, r1, r5
- str r1, [r4, #0xc]
- sub r0, r2, #1
- str r0, [r4]
- str r2, [r4, #4]
- sub r0, r1, #1
- str r0, [r4, #8]
- sub r0, r7, #1
- bpl _021EDF2C
- mov r0, #0
- mvn r0, r0
- str r0, [r4]
- str r0, [r4, #8]
-_021EDF2C:
- sub r0, r6, #1
- bpl _021EDFBA
- mov r0, #0
- mvn r0, r0
- str r0, [r4, #4]
- pop {r3, r4, r5, r6, r7, pc}
-_021EDF38:
- str r1, [r4, #8]
- sub r0, r1, r5
- str r0, [r4]
- add r0, r0, #1
- str r0, [r4, #4]
- add r0, r1, #1
- str r0, [r4, #0xc]
- add r0, r7, #1
- cmp r0, r5
- blt _021EDF54
- mov r0, #0
- mvn r0, r0
- str r0, [r4, #4]
- str r0, [r4, #0xc]
-_021EDF54:
- sub r0, r6, #1
- bpl _021EDFBA
- mov r0, #0
- mvn r0, r0
- str r0, [r4]
- pop {r3, r4, r5, r6, r7, pc}
-_021EDF60:
- str r1, [r4, #4]
- sub r0, r1, #1
- add r1, r1, r5
- str r0, [r4]
- sub r0, r1, #1
- str r0, [r4, #8]
- str r1, [r4, #0xc]
- sub r0, r7, #1
- bpl _021EDF7A
- mov r0, #0
- mvn r0, r0
- str r0, [r4]
- str r0, [r4, #8]
-_021EDF7A:
- ldr r0, [sp]
- add r1, r6, #1
- cmp r1, r0
- ble _021EDFBA
- mov r0, #0
- mvn r0, r0
- str r0, [r4, #0xc]
- pop {r3, r4, r5, r6, r7, pc}
-_021EDF8A:
- str r1, [r4]
- add r0, r1, #1
- str r0, [r4, #4]
- add r0, r1, r5
- str r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #0xc]
- add r0, r7, #1
- cmp r0, r5
- blt _021EDFA6
- mov r0, #0
- mvn r0, r0
- str r0, [r4, #4]
- str r0, [r4, #0xc]
-_021EDFA6:
- ldr r0, [sp]
- add r1, r6, #1
- cmp r1, r0
- ble _021EDFBA
- mov r0, #0
- mvn r0, r0
- str r0, [r4]
- pop {r3, r4, r5, r6, r7, pc}
-_021EDFB6:
- bl GF_AssertFail
-_021EDFBA:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EDFBC
-MOD05_021EDFBC: ; 0x021EDFBC
- push {r3, r4, r5, r6, r7, lr}
- mov r6, #0
- add r5, r0, #0
- sub r7, r6, #1
-_021EDFC4:
- ldr r1, _021EE03C ; =0x0000086C
- mov r0, #4
- bl AllocFromHeap
- lsl r4, r6, #2
- add r1, r5, r4
- add r1, #0x90
- str r0, [r1]
- add r0, r5, r4
- add r0, #0x90
- ldr r2, [r0]
- ldr r0, _021EE040 ; =0x00000864
- mov r1, #0
- str r1, [r2, r0]
- add r2, r5, r4
- add r2, #0x90
- ldr r3, [r2]
- ldr r2, _021EE044 ; =0x00000854
- ldr r1, [r5]
- add r0, r6, #0
- add r2, r3, r2
- bl MOD05_021F3C60
- add r2, r5, r4
- add r2, #0x90
- ldr r3, [r2]
- ldr r2, _021EE048 ; =0x00000858
- ldr r1, [r5]
- add r0, r6, #0
- add r2, r3, r2
- bl MOD05_021F3C68
- mov r0, #4
- bl MOD05_021E7C00
- add r1, r5, r4
- add r1, #0x90
- ldr r2, [r1]
- ldr r1, _021EE04C ; =0x00000868
- str r0, [r2, r1]
- add r0, r5, r4
- add r0, #0x90
- ldr r1, [r0]
- mov r0, #0x86
- lsl r0, r0, #4
- str r7, [r1, r0]
- add r1, r5, r4
- add r1, #0x90
- mov r2, #2
- ldr r1, [r1]
- add r0, r7, #0
- lsl r2, r2, #0xa
- bl MIi_CpuClearFast
- add r0, r6, #1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r6, #4
- blo _021EDFC4
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EE03C: .word 0x0000086C
-_021EE040: .word 0x00000864
-_021EE044: .word 0x00000854
-_021EE048: .word 0x00000858
-_021EE04C: .word 0x00000868
-
- thumb_func_start MOD05_021EE050
-MOD05_021EE050: ; 0x021EE050
- push {r3, r4, r5, r6, r7, lr}
- mov r6, #0
- add r5, r0, #0
- add r7, r6, #0
-_021EE058:
- ldr r1, _021EE0B0 ; =0x0000086C
- mov r0, #4
- bl AllocFromHeap
- lsl r4, r6, #2
- add r1, r5, r4
- add r1, #0x90
- str r0, [r1]
- add r0, r5, r4
- add r0, #0x90
- ldr r1, [r0]
- ldr r0, _021EE0B4 ; =0x00000864
- add r2, r5, r4
- str r7, [r1, r0]
- add r2, #0x90
- ldr r3, [r2]
- ldr r2, _021EE0B8 ; =0x00000854
- ldr r1, [r5]
- add r0, r6, #0
- add r2, r3, r2
- bl MOD05_021F3C60
- mov r0, #4
- bl MOD05_021E7C00
- add r1, r5, r4
- add r1, #0x90
- ldr r2, [r1]
- ldr r1, _021EE0BC ; =0x00000868
- str r0, [r2, r1]
- add r0, r5, r4
- add r0, #0x90
- ldr r2, [r0]
- mov r1, #0
- mov r0, #0x86
- mvn r1, r1
- lsl r0, r0, #4
- str r1, [r2, r0]
- add r0, r6, #1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r6, #4
- blo _021EE058
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EE0B0: .word 0x0000086C
-_021EE0B4: .word 0x00000864
-_021EE0B8: .word 0x00000854
-_021EE0BC: .word 0x00000868
-
- thumb_func_start MOD05_021EE0C0
-MOD05_021EE0C0: ; 0x021EE0C0
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- add r7, r1, #0
- add r5, r2, #0
- cmp r6, #0
- beq _021EE0E6
- mov r0, #4
- mov r1, #0x10
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- add r0, r6, #0
- add r1, r7, #0
- mov r2, #0
- mov r3, #0x10
- str r4, [sp]
- bl NARC_ReadFromMember
- b _021EE0FC
-_021EE0E6:
- bl GF_AssertFail
- mov r0, #0x10
- str r0, [sp]
- mov r0, #0x43
- add r1, r7, #0
- mov r2, #4
- mov r3, #0
- bl AllocAtEndAndReadFromNarcMemberByIdPair
- add r4, r0, #0
-_021EE0FC:
- ldr r0, [r4]
- str r0, [r5]
- ldr r0, [r4, #4]
- str r0, [r5, #0xc]
- ldr r0, [r4, #8]
- str r0, [r5, #4]
- ldr r0, [r4, #0xc]
- str r0, [r5, #8]
- add r0, r4, #0
- bl FreeToHeap
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EE114
-MOD05_021EE114: ; 0x021EE114
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- ldr r4, [sp, #0x40]
- lsl r7, r0, #2
- add r0, r4, r7
- ldr r0, [r0, #0x18]
- str r1, [sp, #0xc]
- ldr r5, [sp, #0x3c]
- cmp r0, #0
- blt _021EE1D0
- ldr r1, [sp, #0x38]
- mul r1, r3
- cmp r0, r1
- bge _021EE1D0
- add r1, r2, #0
- bl GetMapData
- add r1, r0, #0
- ldr r0, _021EE1D4 ; =0x0000FFFF
- cmp r1, r0
- beq _021EE1D0
- add r0, r5, #0
- add r0, #0xf8
- ldr r0, [r0]
- add r2, sp, #0x10
- bl MOD05_021EE0C0
- add r0, r5, #0
- add r0, #0xf8
- ldr r0, [r0]
- ldr r1, [sp, #0x10]
- ldr r2, [r4, r7]
- bl NARC_ReadFile
- add r0, r5, #0
- add r0, #0xf0
- ldr r0, [r0]
- ldr r3, _021EE1D8 ; =0x00000868
- str r0, [sp]
- add r0, r5, #0
- ldr r6, [r4, r7]
- add r0, #0xf8
- ldr r0, [r0]
- ldr r1, [sp, #0x1c]
- ldr r2, [sp, #0xc]
- ldr r3, [r6, r3]
- bl MOD05_021E7CD8
- ldr r0, [r4, #0x10]
- add r0, r0, #1
- str r0, [r4, #0x10]
- ldr r0, [sp, #0xc]
- ldr r6, [r4, r7]
- bl MOD05_021F4C74
- ldr r3, _021EE1DC ; =0x00000864
- str r0, [sp]
- add r0, r6, r3
- add r2, r3, #0
- str r0, [sp, #4]
- add r0, r4, #0
- add r0, #0x10
- str r0, [sp, #8]
- add r0, r5, #0
- add r0, #0xf8
- sub r2, #0x64
- sub r3, #0x10
- ldr r0, [r0]
- ldr r1, [sp, #0x14]
- add r2, r6, r2
- add r3, r6, r3
- bl MOD05_021EFA00
- str r0, [r4, #8]
- ldr r0, [r4, #0x14]
- add r3, r4, #0
- add r0, r0, #1
- str r0, [r4, #0x14]
- ldr r2, [r4, r7]
- ldr r6, _021EE1E0 ; =0x00000858
- add r5, #0xf8
- add r0, r2, r6
- str r0, [sp]
- add r0, r4, #0
- add r0, #0x10
- str r0, [sp, #4]
- ldr r0, [r5]
- add r5, r6, #4
- ldr r1, [sp, #0x18]
- ldr r2, [r2, r5]
- add r3, #0x14
- bl MOD05_021F43E4
- str r0, [r4, #0xc]
-_021EE1D0:
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EE1D4: .word 0x0000FFFF
-_021EE1D8: .word 0x00000868
-_021EE1DC: .word 0x00000864
-_021EE1E0: .word 0x00000858
-
- thumb_func_start MOD05_021EE1E4
-MOD05_021EE1E4: ; 0x021EE1E4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x30
- str r1, [sp, #0xc]
- add r1, r2, #0
- add r2, r3, #0
- ldr r3, _021EE294 ; =0x00000828
- lsl r7, r0, #2
- add r3, sp
- ldr r4, [r3, #0x18]
- ldr r5, [r3, #0x14]
- add r0, r4, r7
- ldr r0, [r0, #0x18]
- cmp r0, #0
- blt _021EE286
- ldr r3, [r3, #0x10]
- mul r3, r2
- cmp r0, r3
- bge _021EE286
- bl GetMapData
- add r1, r0, #0
- ldr r0, _021EE298 ; =0x0000FFFF
- cmp r1, r0
- beq _021EE286
- add r0, r5, #0
- add r0, #0xf8
- ldr r0, [r0]
- add r2, sp, #0x10
- bl MOD05_021EE0C0
- add r0, r5, #0
- add r0, #0xf8
- mov r1, #2
- ldr r0, [r0]
- lsl r1, r1, #0xa
- add r2, sp, #0x20
- bl NARC_ReadFile
- add r0, r5, #0
- add r0, #0xf0
- ldr r0, [r0]
- ldr r3, _021EE29C ; =0x00000868
- str r0, [sp]
- add r0, r5, #0
- ldr r6, [r4, r7]
- add r0, #0xf8
- ldr r0, [r0]
- ldr r1, [sp, #0x1c]
- ldr r2, [sp, #0xc]
- ldr r3, [r6, r3]
- bl MOD05_021E7CD8
- ldr r0, [r4, #0x10]
- add r0, r0, #1
- str r0, [r4, #0x10]
- ldr r0, [sp, #0xc]
- ldr r6, [r4, r7]
- bl MOD05_021F4C74
- ldr r3, _021EE2A0 ; =0x00000864
- str r0, [sp]
- add r0, r6, r3
- add r2, r3, #0
- str r0, [sp, #4]
- add r0, r4, #0
- add r0, #0x10
- str r0, [sp, #8]
- add r5, #0xf8
- sub r2, #0x64
- sub r3, #0x10
- ldr r0, [r5]
- ldr r1, [sp, #0x14]
- add r2, r6, r2
- add r3, r6, r3
- bl MOD05_021EFA00
- str r0, [r4, #8]
-_021EE286:
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x30
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021EE294: .word 0x00000828
-_021EE298: .word 0x0000FFFF
-_021EE29C: .word 0x00000868
-_021EE2A0: .word 0x00000864
-
- thumb_func_start MOD05_021EE2A4
-MOD05_021EE2A4: ; 0x021EE2A4
- push {r4, r5, r6, r7, lr}
- sub sp, #0x1c
- add r4, r1, #0
- str r0, [sp, #4]
- str r2, [sp, #8]
- ldr r7, [sp, #0x3c]
- add r1, r0, #0
- bmi _021EE37A
- ldr r2, [sp, #0x30]
- ldr r1, [sp, #0x34]
- add r5, r2, #0
- mul r5, r1
- add r1, r0, #0
- cmp r1, r5
- bge _021EE37A
- add r1, r3, #0
- bl GetMapData
- add r1, r0, #0
- ldr r0, _021EE380 ; =0x0000FFFF
- cmp r1, r0
- beq _021EE37A
- add r0, r7, #0
- add r0, #0xf8
- ldr r0, [r0]
- add r2, sp, #0xc
- bl MOD05_021EE0C0
- lsl r5, r4, #2
- add r4, r7, #0
- add r0, r7, #0
- add r4, #0x90
- add r0, #0xf8
- ldr r0, [r0]
- ldr r1, [sp, #0xc]
- ldr r2, [r4, r5]
- bl NARC_ReadFile
- add r0, r7, #0
- add r0, #0xf0
- ldr r0, [r0]
- ldr r3, _021EE384 ; =0x00000868
- str r0, [sp]
- add r0, r7, #0
- ldr r6, [r4, r5]
- add r0, #0xf8
- ldr r0, [r0]
- ldr r1, [sp, #0x18]
- ldr r2, [sp, #8]
- ldr r3, [r6, r3]
- bl MOD05_021E7CD8
- ldr r6, [r4, r5]
- ldr r0, [sp, #8]
- bl MOD05_021F4C74
- str r0, [sp]
- add r0, r7, #0
- mov r3, #2
- add r0, #0xf8
- lsl r3, r3, #0xa
- add r2, r6, r3
- add r3, #0x54
- ldr r0, [r0]
- ldr r1, [sp, #0x10]
- add r3, r6, r3
- bl MOD05_021EFA40
- ldr r1, [sp, #0x38]
- cmp r1, #1
- bne _021EE336
- bl MOD05_021DB5EC
-_021EE336:
- ldr r6, _021EE388 ; =0x00000864
- ldr r0, [r4, r5]
- mov r1, #1
- str r1, [r0, r6]
- add r2, r6, #0
- add r0, r7, #0
- add r0, #0xf8
- ldr r3, [r4, r5]
- sub r2, #8
- sub r6, #0xc
- ldr r2, [r3, r2]
- ldr r0, [r0]
- ldr r1, [sp, #0x14]
- ldr r3, [r3, r6]
- bl MOD05_021F4344
- mov r2, #0x86
- ldr r1, [r4, r5]
- ldr r0, [sp, #4]
- lsl r2, r2, #4
- str r0, [r1, r2]
- add r0, r7, #0
- add r0, #0xfc
- ldr r3, [r0]
- cmp r3, #0
- beq _021EE37A
- mov r0, #1
- lsl r0, r0, #8
- ldr r4, [r4, r5]
- add r2, #8
- ldr r0, [r7, r0]
- ldr r1, [sp, #4]
- ldr r2, [r4, r2]
- blx r3
-_021EE37A:
- add sp, #0x1c
- pop {r4, r5, r6, r7, pc}
- nop
-_021EE380: .word 0x0000FFFF
-_021EE384: .word 0x00000868
-_021EE388: .word 0x00000864
-
- thumb_func_start MOD05_021EE38C
-MOD05_021EE38C: ; 0x021EE38C
- push {r4, r5, r6, r7, lr}
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x2c
- str r2, [sp, #8]
- ldr r2, _021EE44C ; =0x00000820
- add r4, r1, #0
- add r2, sp
- str r0, [sp, #4]
- ldr r5, [r2, #0x1c]
- add r1, r0, #0
- bmi _021EE43E
- ldr r6, [r2, #0x10]
- ldr r1, [r2, #0x14]
- add r2, r6, #0
- mul r2, r1
- add r1, r0, #0
- cmp r1, r2
- bge _021EE43E
- add r1, r3, #0
- bl GetMapData
- add r1, r0, #0
- ldr r0, _021EE450 ; =0x0000FFFF
- cmp r1, r0
- beq _021EE43E
- add r0, r5, #0
- add r0, #0xf8
- ldr r0, [r0]
- add r2, sp, #0xc
- bl MOD05_021EE0C0
- add r0, r5, #0
- add r0, #0xf8
- mov r1, #2
- ldr r0, [r0]
- lsl r1, r1, #0xa
- add r2, sp, #0x1c
- bl NARC_ReadFile
- add r0, r5, #0
- add r0, #0xf0
- ldr r0, [r0]
- add r7, r5, #0
- str r0, [sp]
- add r0, r5, #0
- add r0, #0xf8
- lsl r4, r4, #2
- add r7, #0x90
- ldr r6, [r7, r4]
- ldr r3, _021EE454 ; =0x00000868
- ldr r0, [r0]
- ldr r1, [sp, #0x18]
- ldr r2, [sp, #8]
- ldr r3, [r6, r3]
- bl MOD05_021E7CD8
- ldr r0, [sp, #8]
- ldr r6, [r7, r4]
- bl MOD05_021F4C74
- mov r3, #2
- str r0, [sp]
- add r5, #0xf8
- lsl r3, r3, #0xa
- add r2, r6, r3
- add r3, #0x54
- ldr r0, [r5]
- ldr r1, [sp, #0x10]
- add r3, r6, r3
- bl MOD05_021EFA40
- ldr r1, _021EE44C ; =0x00000820
- add r1, sp
- ldr r1, [r1, #0x18]
- cmp r1, #1
- bne _021EE42E
- bl MOD05_021DB5EC
-_021EE42E:
- ldr r1, [r7, r4]
- ldr r0, _021EE458 ; =0x00000864
- mov r2, #1
- str r2, [r1, r0]
- sub r1, r0, #4
- ldr r2, [r7, r4]
- ldr r0, [sp, #4]
- str r0, [r2, r1]
-_021EE43E:
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x2c
- pop {r4, r5, r6, r7, pc}
- nop
-_021EE44C: .word 0x00000820
-_021EE450: .word 0x0000FFFF
-_021EE454: .word 0x00000868
-_021EE458: .word 0x00000864
-
- thumb_func_start MOD05_021EE45C
-MOD05_021EE45C: ; 0x021EE45C
- ldr r1, [r0]
- cmp r1, #0
- bne _021EE46C
- ldr r0, [r0, #4]
- cmp r0, #0
- bne _021EE46C
- mov r0, #1
- bx lr
-_021EE46C:
- mov r0, #0
- bx lr
-
- thumb_func_start MOD05_021EE470
-MOD05_021EE470: ; 0x021EE470
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r4, r0, #0
- str r3, [sp]
- add r0, sp, #0x10
- add r7, r1, #0
- ldrb r1, [r0, #0x14]
- mov r0, #0x30
- str r2, [sp, #8]
- add r5, r1, #0
- mul r5, r0
- add r0, r4, #0
- str r0, [sp, #4]
- add r0, #0x2c
- str r0, [sp, #4]
- ldr r0, [r0, r5]
- cmp r0, #0
- beq _021EE498
- bl GF_AssertFail
-_021EE498:
- ldr r0, [sp, #4]
- mov r1, #1
- str r1, [r0, r5]
- add r0, sp, #0x10
- add r5, r4, r5
- add r1, r5, #0
- ldrb r2, [r0, #0x18]
- add r1, #0x30
- add r3, r4, #0
- strb r2, [r1]
- add r2, r5, #0
- ldr r1, [sp, #8]
- str r7, [r5, #0x1c]
- str r1, [r5, #0x20]
- ldr r1, [sp]
- add r2, #0x24
- strb r1, [r2]
- add r1, r5, #0
- ldrb r0, [r0, #0x10]
- add r1, #0x25
- add r3, #0x90
- strb r0, [r1]
- ldr r1, [sp]
- mov r6, #0
- lsl r2, r1, #2
- ldr r1, [r3, r2]
- str r1, [r5, #4]
- lsl r1, r0, #2
- ldr r0, [r3, r1]
- str r0, [r5, #8]
- add r0, r5, #0
- add r0, #0x26
- strb r6, [r0]
- add r0, r6, #0
- str r0, [r5, #0x28]
- add r0, r4, #0
- add r0, #0xa0
- ldrb r0, [r0]
- cmp r0, #0
- bne _021EE4F0
- add r5, r4, #0
- add r5, #0xb4
- add r0, r6, #0
- str r0, [r5]
-_021EE4F0:
- ldr r0, [r3, r2]
- mov r2, #0x86
- lsl r2, r2, #4
- str r7, [r0, r2]
- ldr r1, [r3, r1]
- ldr r0, [sp, #8]
- str r0, [r1, r2]
- add r0, r4, #0
- add r0, #0xa0
- ldrb r0, [r0]
- add r1, r0, #1
- add r0, r4, #0
- add r0, #0xa0
- strb r1, [r0]
- add r0, r4, #0
- add r0, #0xa1
- ldrb r0, [r0]
- add r4, #0xa1
- 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]
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EE52C
-MOD05_021EE52C: ; 0x021EE52C
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- add r5, r1, #0
- add r0, r5, #0
- add r0, #0xa2
- ldrb r1, [r0]
- mov r0, #0x30
- add r4, r5, #0
- add r2, r5, #4
- mul r0, r1
- add r4, #0xcc
- add r6, r2, r0
- ldr r0, [r4, #0x20]
- cmp r0, #1
- bne _021EE572
- ldr r0, [r4, #0x18]
- cmp r0, #0
- beq _021EE5D0
- ldr r0, [r4, #0x14]
- ldr r1, [r0]
- ldr r0, [r4, #0x10]
- ldr r0, [r0]
- cmp r1, r0
- ble _021EE560
- bl GF_AssertFail
-_021EE560:
- ldr r0, [r4, #0x10]
- ldr r1, [r0]
- ldr r0, [r4, #0x14]
- ldr r0, [r0]
- sub r1, r1, r0
- mov r0, #1
- lsl r0, r0, #0x10
- cmp r1, r0
- bge _021EE574
-_021EE572:
- b _021EE6B0
-_021EE574:
- ldr r1, [r4, #0xc]
- add r2, sp, #0x10
- ldr r0, [r1]
- ldr r1, [r1, #8]
- add r3, sp, #0xc
- bl MOD05_021EF4F8
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0xc]
- add r2, r5, #0
- bl MOD05_021EF2AC
- ldr r3, [r4, #0xc]
- add r2, r4, #0
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r4, #8]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x11
- sub r1, r1, r2
- mov r0, #0x11
- ror r1, r0
- add r0, r2, r1
- beq _021EE5B2
- mov r0, #1
- bl FUN_020336A0
- cmp r0, #0
- bne _021EE692
-_021EE5B2:
- ldr r0, [r4, #8]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x11
- sub r1, r1, r2
- mov r0, #0x11
- ror r1, r0
- add r0, r2, r1
- beq _021EE5C6
- bl GF_AssertFail
-_021EE5C6:
- mov r0, #0
- str r0, [r4, #0x18]
- str r0, [r4, #0x10]
- str r0, [r4, #0x14]
- b _021EE6B0
-_021EE5D0:
- ldr r2, [r4, #0xc]
- ldr r3, [r4]
- ldr r7, [r2]
- cmp r3, r7
- beq _021EE5E8
- ldr r1, [r4, #8]
- ldr r0, [r2, #8]
- cmp r1, r0
- beq _021EE5E8
- bl GF_AssertFail
- b _021EE6B0
-_021EE5E8:
- cmp r3, r7
- bne _021EE5F4
- ldr r1, [r4, #8]
- ldr r0, [r2, #8]
- cmp r1, r0
- beq _021EE6B0
-_021EE5F4:
- mov r3, #1
- str r3, [r4, #0x18]
- ldr r2, [r4, #0xc]
- ldr r0, [r4]
- ldr r1, [r2]
- cmp r0, r1
- beq _021EE648
- cmp r0, r1
- ble _021EE612
- str r4, [r4, #0x10]
- ldr r0, [r4, #0xc]
- str r0, [r4, #0x14]
- mov r0, #3
- strb r0, [r4, #0x1c]
- b _021EE618
-_021EE612:
- str r2, [r4, #0x10]
- str r4, [r4, #0x14]
- strb r3, [r4, #0x1c]
-_021EE618:
- ldr r0, [r4]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x11
- sub r1, r1, r2
- mov r0, #0x11
- ror r1, r0
- add r0, r2, r1
- beq _021EE632
- mov r0, #1
- bl FUN_020336A0
- cmp r0, #0
- bne _021EE692
-_021EE632:
- ldr r0, [r4]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x11
- sub r1, r1, r2
- mov r0, #0x11
- ror r1, r0
- add r0, r2, r1
- beq _021EE6A8
- bl GF_AssertFail
- b _021EE6A8
-_021EE648:
- add r1, r5, #0
- add r1, #0xd8
- add r0, r5, #0
- ldr r1, [r1]
- add r0, #0xd4
- ldr r0, [r0]
- ldr r1, [r1, #8]
- cmp r0, r1
- ble _021EE66A
- add r0, r4, #0
- add r0, #8
- str r0, [r4, #0x10]
- ldr r0, [r4, #0xc]
- add r0, #8
- str r0, [r4, #0x14]
- mov r0, #4
- b _021EE676
-_021EE66A:
- add r2, #8
- add r0, r4, #0
- str r2, [r4, #0x10]
- add r0, #8
- str r0, [r4, #0x14]
- mov r0, #2
-_021EE676:
- strb r0, [r4, #0x1c]
- ldr r0, [r4, #8]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x11
- sub r1, r1, r2
- mov r0, #0x11
- ror r1, r0
- add r0, r2, r1
- beq _021EE694
- mov r0, #1
- bl FUN_020336A0
- cmp r0, #0
- beq _021EE694
-_021EE692:
- b _021EE8C2
-_021EE694:
- ldr r0, [r4, #8]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x11
- sub r1, r1, r2
- mov r0, #0x11
- ror r1, r0
- add r0, r2, r1
- beq _021EE6A8
- bl GF_AssertFail
-_021EE6A8:
- ldrb r0, [r4, #0x1c]
- add r1, r5, #0
- bl MOD05_021EF458
-_021EE6B0:
- add r0, r5, #0
- add r0, #0xb4
- ldr r0, [r0]
- cmp r0, #3
- bls _021EE6BC
- b _021EE818
-_021EE6BC:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EE6C8: ; jump table
- .short _021EE6D0 - _021EE6C8 - 2 ; case 0
- .short _021EE726 - _021EE6C8 - 2 ; case 1
- .short _021EE818 - _021EE6C8 - 2 ; case 2
- .short _021EE804 - _021EE6C8 - 2 ; case 3
-_021EE6D0:
- add r0, r6, #0
- add r0, #0x22
- ldrb r0, [r0]
- add r1, r6, r0
- add r1, #0x20
- ldrb r1, [r1]
- lsl r1, r1, #2
- add r1, r5, r1
- add r1, #0x80
- ldr r1, [r1]
- cmp r1, #1
- beq _021EE710
- add r1, r5, #0
- add r1, #0xc4
- ldr r1, [r1]
- add r4, r5, #0
- str r1, [sp]
- str r5, [sp, #4]
- str r6, [sp, #8]
- add r4, #0xf4
- add r1, r5, #0
- add r2, r5, #0
- add r3, r5, #0
- ldr r4, [r4]
- add r1, #0xb8
- add r2, #0xbc
- add r3, #0xc0
- ldr r1, [r1]
- ldr r2, [r2]
- ldr r3, [r3]
- ldr r4, [r4, #4]
- blx r4
-_021EE710:
- add r0, r6, #0
- add r0, #0x22
- ldrb r0, [r0]
- add r6, #0x22
- mov r1, #1
- add r0, r0, #1
- strb r0, [r6]
- add r0, r5, #0
- add r0, #0xb4
- str r1, [r0]
- b _021EE818
-_021EE726:
- add r0, r6, #0
- add r0, #0x22
- ldrb r0, [r0]
- sub r0, r0, #1
- add r0, r6, r0
- add r0, #0x20
- ldrb r0, [r0]
- lsl r0, r0, #2
- add r0, r5, r0
- add r0, #0x80
- ldr r0, [r0]
- cmp r0, #1
- bne _021EE75E
- add r0, r6, #0
- bl MOD05_021EDEAC
- add r1, r6, #0
- add r1, #0x22
- ldrb r1, [r1]
- mov r0, #0
- sub r1, r1, #1
- add r1, r6, r1
- add r1, #0x20
- ldrb r1, [r1]
- lsl r1, r1, #2
- add r1, r5, r1
- add r1, #0x80
- str r0, [r1]
-_021EE75E:
- add r0, r6, #0
- add r0, #0x22
- ldrb r0, [r0]
- cmp r0, #2
- bhi _021EE818
- add r0, r6, #0
- add r0, #0x10
- bl MOD05_021EE45C
- cmp r0, #1
- bne _021EE818
- add r0, r6, #0
- add r0, #0x22
- ldrb r0, [r0]
- cmp r0, #2
- blo _021EE784
- mov r0, #1
- str r0, [r6, #0x24]
- b _021EE78C
-_021EE784:
- add r0, r5, #0
- mov r1, #0
- add r0, #0xb4
- str r1, [r0]
-_021EE78C:
- add r0, r6, #0
- add r0, #0x22
- ldrb r0, [r0]
- sub r0, r0, #1
- lsl r0, r0, #2
- ldr r2, [r6, r0]
- ldr r0, _021EE8C8 ; =0x00000864
- ldr r1, [r2, r0]
- cmp r1, #1
- bne _021EE7C4
- sub r0, #0x10
- ldr r0, [r2, r0]
- bl NNS_G3dGetMdlSet
- add r7, r0, #0
- ldrh r0, [r7, #0xe]
- add r0, r7, r0
- ldr r4, [r0, #0xc]
- add r0, r5, #0
- add r0, #0xb8
- ldr r0, [r0]
- bl MOD05_021F4CA8
- cmp r0, #1
- bne _021EE7C4
- add r0, r7, r4
- bl MOD05_021DB5EC
-_021EE7C4:
- add r0, r5, #0
- add r0, #0xfc
- ldr r3, [r0]
- cmp r3, #0
- beq _021EE818
- add r0, r6, #0
- add r0, #0x22
- ldrb r0, [r0]
- mov r2, #0x86
- lsl r2, r2, #4
- sub r0, r0, #1
- lsl r0, r0, #2
- ldr r4, [r6, r0]
- ldr r1, [r4, r2]
- cmp r1, #0
- blt _021EE818
- add r0, r5, #0
- add r6, r5, #0
- add r0, #0xc0
- add r6, #0xc4
- ldr r0, [r0]
- ldr r6, [r6]
- mul r6, r0
- cmp r1, r6
- bge _021EE818
- mov r0, #1
- lsl r0, r0, #8
- add r2, #8
- ldr r0, [r5, r0]
- ldr r2, [r4, r2]
- blx r3
- b _021EE818
-_021EE804:
- add r6, #0x10
- add r0, r6, #0
- bl MOD05_021EE45C
- cmp r0, #1
- bne _021EE818
- add r0, r5, #0
- mov r1, #0
- add r0, #0xa0
- strb r1, [r0]
-_021EE818:
- add r0, r5, #0
- add r0, #0xa0
- ldrb r0, [r0]
- cmp r0, #0
- bne _021EE83A
- add r0, r5, #0
- mov r1, #0
- add r0, #0xa2
- strb r1, [r0]
- add r0, r5, #0
- add r0, #0xa1
- strb r1, [r0]
- mov r0, #2
- add r5, #0xb4
- add sp, #0x14
- str r0, [r5]
- pop {r4, r5, r6, r7, pc}
-_021EE83A:
- add r0, r5, #0
- bl MOD05_021EF0F0
- cmp r0, #1
- bne _021EE8C2
- add r0, r5, #0
- add r0, #0xa2
- ldrb r1, [r0]
- mov r0, #0x30
- mov r2, #0
- mul r0, r1
- add r0, r5, r0
- str r2, [r0, #0x2c]
- add r0, r5, #0
- bl MOD05_021EF100
- add r0, r5, #0
- add r0, #0xa0
- ldrb r0, [r0]
- sub r1, r0, #1
- add r0, r5, #0
- add r0, #0xa0
- strb r1, [r0]
- add r0, r5, #0
- add r0, #0xa2
- ldrb 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, r5, #0
- add r1, r2, r1
- add r0, #0xa2
- strb r1, [r0]
- add r0, r5, #0
- add r0, #0xa0
- ldrb r0, [r0]
- cmp r0, #0
- beq _021EE890
- mov r1, #0
- b _021EE8A0
-_021EE890:
- add r0, r5, #0
- mov r1, #0
- add r0, #0xa2
- strb r1, [r0]
- add r0, r5, #0
- add r0, #0xa1
- strb r1, [r0]
- mov r1, #2
-_021EE8A0:
- add r0, r5, #0
- add r0, #0xb4
- str r1, [r0]
- ldr r0, [r5, #0x6c]
- cmp r0, #1
- bne _021EE8C2
- mov r0, #0
- str r0, [r5, #0x6c]
- add r0, r5, #0
- add r0, #0x70
- ldrb r0, [r0]
- add r1, r5, #0
- bl MOD05_021EF118
- add r0, r5, #0
- bl MOD05_021EF094
-_021EE8C2:
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
- nop
-_021EE8C8: .word 0x00000864
-
- thumb_func_start MOD05_021EE8CC
-MOD05_021EE8CC: ; 0x021EE8CC
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x18
- ldr r4, [sp, #0x34]
- str r2, [sp, #0x10]
- add r7, r0, #0
- ldr r0, [r4, #0x6c]
- add r5, r3, #0
- str r1, [sp, #0xc]
- ldr r6, [sp, #0x30]
- cmp r0, #1
- bne _021EE8E6
- bl GF_AssertFail
-_021EE8E6:
- add r0, r6, #0
- add r1, r4, #0
- add r2, sp, #0x14
- bl MOD05_021EEF9C
- cmp r0, #1
- bne _021EE964
- add r1, sp, #0x14
- ldrb r1, [r1]
- add r0, r4, #0
- bl MOD05_021EDE7C
- add r0, r4, #0
- add r0, #0xa0
- ldrb r0, [r0]
- cmp r0, #2
- blo _021EE948
- mov r0, #1
- str r0, [r4, #0x6c]
- ldr r0, [sp, #0xc]
- str r7, [r4, #0x74]
- str r0, [r4, #0x78]
- add r1, r4, #0
- ldr r0, [sp, #0x10]
- add r1, #0x7c
- strb r0, [r1]
- add r0, r4, #0
- add r0, #0x7d
- strb r5, [r0]
- ldr r0, [sp, #0x10]
- add r2, r4, #0
- add r2, #0x90
- lsl r1, r0, #2
- ldr r0, [r2, r1]
- str r0, [r4, #0x64]
- lsl r0, r5, #2
- ldr r3, [r2, r0]
- str r3, [r4, #0x68]
- add r4, #0x70
- strb r6, [r4]
- ldr r3, [r2, r1]
- mov r1, #0x86
- lsl r1, r1, #4
- str r7, [r3, r1]
- ldr r2, [r2, r0]
- ldr r0, [sp, #0xc]
- add sp, #0x18
- str r0, [r2, r1]
- pop {r3, r4, r5, r6, r7, pc}
-_021EE948:
- add r0, r4, #0
- str r5, [sp]
- add r0, #0xa1
- ldrb r0, [r0]
- ldr r2, [sp, #0xc]
- add r1, r7, #0
- str r0, [sp, #4]
- str r6, [sp, #8]
- ldr r3, [sp, #0x10]
- add r0, r4, #0
- bl MOD05_021EE470
- add sp, #0x18
- pop {r3, r4, r5, r6, r7, pc}
-_021EE964:
- add r0, r4, #0
- str r5, [sp]
- add r0, #0xa1
- ldrb r0, [r0]
- ldr r2, [sp, #0xc]
- add r1, r7, #0
- str r0, [sp, #4]
- str r6, [sp, #8]
- ldr r3, [sp, #0x10]
- add r0, r4, #0
- bl MOD05_021EE470
- cmp r0, #1
- beq _021EE984
- bl GF_AssertFail
-_021EE984:
- add sp, #0x18
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EE988
-MOD05_021EE988: ; 0x021EE988
- push {r4, r5, r6, lr}
- add r6, r1, #0
- add r4, r6, #0
- lsl r5, r0, #2
- add r4, #0x90
- ldr r1, [r4, r5]
- ldr r0, _021EE9CC ; =0x00000864
- mov r2, #0
- str r2, [r1, r0]
- ldr r1, [r4, r5]
- sub r0, #8
- ldr r0, [r1, r0]
- bl MOD05_021F43CC
- ldr r1, [r4, r5]
- ldr r0, _021EE9D0 ; =0x00000868
- ldr r0, [r1, r0]
- bl MOD05_021E7C1C
- mov r0, #0
- mov r2, #0x86
- ldr r1, [r4, r5]
- mvn r0, r0
- lsl r2, r2, #4
- str r0, [r1, r2]
- ldr r1, [r4, r5]
- sub r2, #0x60
- bl MIi_CpuClearFast
- add r0, r6, r5
- mov r1, #1
- add r0, #0x80
- str r1, [r0]
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021EE9CC: .word 0x00000864
-_021EE9D0: .word 0x00000868
-
- thumb_func_start MOD05_021EE9D4
-MOD05_021EE9D4: ; 0x021EE9D4
- push {r3, r4, r5, r6, r7, lr}
- ldr r4, [sp, #0x18]
- add r5, r1, #0
- add r1, r4, #0
- add r6, r0, #0
- add r7, r2, #0
- str r3, [sp]
- bl MOD05_021EE988
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EE988
- add r4, #0x90
- lsl r1, r6, #2
- lsl r5, r5, #2
- lsl r2, r7, #2
- ldr r0, [r4, r1]
- ldr r3, [r4, r5]
- ldr r6, [r4, r2]
- str r6, [r4, r1]
- ldr r1, [sp]
- lsl r6, r1, #2
- ldr r1, [r4, r6]
- str r1, [r4, r5]
- str r0, [r4, r2]
- str r3, [r4, r6]
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EEA0C
-MOD05_021EEA0C: ; 0x021EEA0C
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- str r1, [sp, #8]
- add r7, r0, #0
- ldr r0, [sp, #8]
- add r6, r2, #0
- cmp r0, #4
- bls _021EEA1E
- b _021EED32
-_021EEA1E:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EEA2A: ; jump table
- .short _021EED32 - _021EEA2A - 2 ; case 0
- .short _021EEBA4 - _021EEA2A - 2 ; case 1
- .short _021EEC80 - _021EEA2A - 2 ; case 2
- .short _021EEAD2 - _021EEA2A - 2 ; case 3
- .short _021EEA34 - _021EEA2A - 2 ; case 4
-_021EEA34:
- mov r0, #2
- mov r1, #3
- mov r2, #0
- mov r3, #1
- str r6, [sp]
- bl MOD05_021EE9D4
- add r0, r6, #0
- add r0, #0xad
- ldrb r0, [r0]
- cmp r0, #2
- bne _021EEA7E
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- mov r0, #1
- sub r5, r7, r2
- str r0, [sp, #0x10]
- mov r0, #0
- sub r4, r5, #1
- str r0, [sp, #0xc]
- cmp r5, #0
- bge _021EEA68
- sub r5, r0, #1
- add r4, r5, #0
- b _021EEAB4
-_021EEA68:
- cmp r4, #0
- blt _021EEA78
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EEAB4
-_021EEA78:
- mov r4, #0
- mvn r4, r4
- b _021EEAB4
-_021EEA7E:
- cmp r0, #3
- bne _021EEAB0
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- mov r0, #0
- sub r5, r7, r2
- str r0, [sp, #0x10]
- mov r0, #1
- add r4, r5, #1
- str r0, [sp, #0xc]
- cmp r5, #0
- bge _021EEA9E
- sub r5, r0, #2
- add r4, r5, #0
- b _021EEAB4
-_021EEA9E:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EEAB4
- mov r4, #0
- mvn r4, r4
- b _021EEAB4
-_021EEAB0:
- bl GF_AssertFail
-_021EEAB4:
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0xc]
- ldr r0, [sp, #8]
- lsl r2, r2, #0x18
- str r0, [sp]
- lsl r3, r3, #0x18
- add r0, r5, #0
- add r1, r4, #0
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- str r6, [sp, #4]
- bl MOD05_021EE8CC
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
-_021EEAD2:
- mov r0, #1
- mov r1, #3
- mov r2, #0
- mov r3, #2
- str r6, [sp]
- bl MOD05_021EE9D4
- add r0, r6, #0
- add r0, #0xad
- ldrb r0, [r0]
- cmp r0, #1
- bne _021EEB30
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- sub r5, r7, #1
- sub r0, r7, r2
- sub r4, r0, #1
- mov r0, #2
- str r0, [sp, #0x10]
- mov r0, #0
- str r0, [sp, #0xc]
- cmp r5, #0
- blt _021EEB0E
- add r0, r5, #0
- add r1, r7, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EEB14
-_021EEB0E:
- mov r5, #0
- mvn r5, r5
- add r4, r5, #0
-_021EEB14:
- cmp r4, #0
- blt _021EEB2A
- add r2, r6, #0
- add r2, #0xc0
- ldr r2, [r2]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE34
- cmp r0, #0
- bne _021EEB86
-_021EEB2A:
- mov r4, #0
- mvn r4, r4
- b _021EEB86
-_021EEB30:
- cmp r0, #3
- bne _021EEB82
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- sub r5, r7, #1
- add r0, r7, r2
- sub r4, r0, #1
- mov r0, #0
- str r0, [sp, #0x10]
- mov r0, #2
- str r0, [sp, #0xc]
- cmp r5, #0
- blt _021EEB58
- add r0, r5, #0
- add r1, r7, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EEB5E
-_021EEB58:
- mov r5, #0
- mvn r5, r5
- add r4, r5, #0
-_021EEB5E:
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- add r0, r6, #0
- add r0, #0xc4
- ldr r0, [r0]
- mul r0, r2
- cmp r0, r4
- ble _021EEB7C
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE34
- cmp r0, #0
- bne _021EEB86
-_021EEB7C:
- mov r4, #0
- mvn r4, r4
- b _021EEB86
-_021EEB82:
- bl GF_AssertFail
-_021EEB86:
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0xc]
- ldr r0, [sp, #8]
- lsl r2, r2, #0x18
- str r0, [sp]
- lsl r3, r3, #0x18
- add r0, r5, #0
- add r1, r4, #0
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- str r6, [sp, #4]
- bl MOD05_021EE8CC
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
-_021EEBA4:
- mov r0, #0
- mov r1, #2
- mov r2, #1
- mov r3, #3
- str r6, [sp]
- bl MOD05_021EE9D4
- add r0, r6, #0
- add r0, #0xad
- ldrb r0, [r0]
- cmp r0, #0
- bne _021EEC12
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- add r5, r7, #1
- sub r0, r7, r2
- add r4, r0, #1
- mov r0, #3
- str r0, [sp, #0x10]
- mov r0, #1
- str r0, [sp, #0xc]
- add r0, r6, #0
- add r0, #0xc4
- ldr r0, [r0]
- mul r0, r2
- cmp r0, r5
- ble _021EEBE8
- add r0, r5, #0
- add r1, r7, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EEBEE
-_021EEBE8:
- mov r5, #0
- mvn r5, r5
- add r4, r5, #0
-_021EEBEE:
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- add r0, r6, #0
- add r0, #0xc4
- ldr r0, [r0]
- mul r0, r2
- cmp r0, r4
- ble _021EEC0C
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE34
- cmp r0, #0
- bne _021EEC62
-_021EEC0C:
- mov r4, #0
- mvn r4, r4
- b _021EEC62
-_021EEC12:
- cmp r0, #2
- bne _021EEC62
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- add r5, r7, #1
- add r0, r7, r2
- add r4, r0, #1
- mov r0, #1
- str r0, [sp, #0x10]
- mov r0, #3
- str r0, [sp, #0xc]
- add r0, r6, #0
- add r0, #0xc4
- ldr r0, [r0]
- mul r0, r2
- cmp r0, r5
- ble _021EEC42
- add r0, r5, #0
- add r1, r7, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EEC48
-_021EEC42:
- mov r5, #0
- mvn r5, r5
- add r4, r5, #0
-_021EEC48:
- cmp r4, #0
- blt _021EEC5E
- add r2, r6, #0
- add r2, #0xc0
- ldr r2, [r2]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE34
- cmp r0, #0
- bne _021EEC62
-_021EEC5E:
- mov r4, #0
- mvn r4, r4
-_021EEC62:
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0xc]
- ldr r0, [sp, #8]
- lsl r2, r2, #0x18
- str r0, [sp]
- lsl r3, r3, #0x18
- add r0, r5, #0
- add r1, r4, #0
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- str r6, [sp, #4]
- bl MOD05_021EE8CC
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
-_021EEC80:
- mov r0, #0
- mov r1, #1
- mov r2, #2
- mov r3, #3
- str r6, [sp]
- bl MOD05_021EE9D4
- add r0, r6, #0
- add r0, #0xad
- ldrb r0, [r0]
- cmp r0, #0
- bne _021EECD0
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- mov r0, #3
- str r0, [sp, #0x10]
- mov r0, #2
- str r0, [sp, #0xc]
- add r0, r6, #0
- add r0, #0xc4
- ldr r0, [r0]
- add r5, r7, r2
- mul r0, r2
- sub r4, r5, #1
- cmp r0, r5
- bgt _021EECBE
- ldr r0, [sp, #0xc]
- sub r5, r0, #3
- add r4, r5, #0
- b _021EED14
-_021EECBE:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EED14
- mov r4, #0
- mvn r4, r4
- b _021EED14
-_021EECD0:
- cmp r0, #1
- bne _021EED10
- add r0, r6, #0
- add r0, #0xc0
- ldr r2, [r0]
- mov r0, #2
- str r0, [sp, #0x10]
- mov r0, #3
- str r0, [sp, #0xc]
- add r0, r6, #0
- add r0, #0xc4
- ldr r0, [r0]
- add r5, r7, r2
- mul r0, r2
- add r4, r5, #1
- cmp r0, r5
- bgt _021EECFA
- ldr r0, [sp, #0xc]
- sub r5, r0, #4
- add r4, r5, #0
- b _021EED14
-_021EECFA:
- cmp r0, r4
- ble _021EED0A
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EED14
-_021EED0A:
- mov r4, #0
- mvn r4, r4
- b _021EED14
-_021EED10:
- bl GF_AssertFail
-_021EED14:
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0xc]
- ldr r0, [sp, #8]
- lsl r2, r2, #0x18
- str r0, [sp]
- lsl r3, r3, #0x18
- add r0, r5, #0
- add r1, r4, #0
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- str r6, [sp, #4]
- bl MOD05_021EE8CC
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
-_021EED32:
- bl GF_AssertFail
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EED3C
-MOD05_021EED3C: ; 0x021EED3C
- push {r4, r5, r6, r7, lr}
- sub sp, #0x44
- add r5, r1, #0
- add r4, r5, #0
- lsl r6, r0, #2
- mov r0, #0x86
- add r3, sp, #0x38
- mov r1, #0
- str r1, [r3]
- str r1, [r3, #4]
- str r2, [sp, #4]
- add r2, r5, #0
- add r4, #0x90
- str r1, [r3, #8]
- add r2, #0xbc
- ldr r1, [r4, r6]
- lsl r0, r0, #4
- ldr r0, [r1, r0]
- add r1, r5, #0
- add r1, #0xc0
- ldr r1, [r1]
- ldr r2, [r2]
- bl MOD05_021EF300
- ldr r1, [r4, r6]
- ldr r0, _021EEDD4 ; =0x00000864
- ldr r0, [r1, r0]
- cmp r0, #1
- bne _021EEDA6
- ldr r3, _021EEDD8 ; =UNK05_021F8B14
- add r2, sp, #0x2c
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- ldr r3, _021EEDDC ; =UNK05_021F8B20
- str r0, [r2]
- add r2, sp, #8
- mov r7, #4
-_021EED88:
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- sub r7, r7, #1
- bne _021EED88
- ldr r0, [r3]
- add r3, sp, #0x2c
- str r0, [r2]
- mov r0, #2
- ldr r1, [r4, r6]
- lsl r0, r0, #0xa
- add r0, r1, r0
- add r1, sp, #0x38
- add r2, sp, #8
- bl FUN_0201B26C
-_021EEDA6:
- ldr r4, [r4, r6]
- ldr r0, _021EEDD4 ; =0x00000864
- ldr r0, [r4, r0]
- cmp r0, #1
- bne _021EEDCE
- add r0, r5, #0
- add r0, #0xb8
- ldr r0, [r0]
- bl MOD05_021F4CA8
- add r2, r0, #0
- ldr r0, _021EEDE0 ; =0x00000868
- add r5, #0xb8
- ldr r0, [r4, r0]
- ldr r3, [sp, #4]
- str r0, [sp]
- ldr r1, [r5]
- add r0, sp, #0x38
- bl MOD05_021E7DD8
-_021EEDCE:
- add sp, #0x44
- pop {r4, r5, r6, r7, pc}
- nop
-_021EEDD4: .word 0x00000864
-_021EEDD8: .word UNK05_021F8B14
-_021EEDDC: .word UNK05_021F8B20
-_021EEDE0: .word 0x00000868
-
- thumb_func_start MOD05_021EEDE4
-MOD05_021EEDE4: ; 0x021EEDE4
- push {r3, r4, r5, r6, r7, lr}
- add r7, r2, #0
- add r5, r1, #0
- add r6, r0, #0
- add r1, r7, #0
- bl _u32_div_f
- add r4, r1, #0
- add r0, r6, #0
- add r1, r7, #0
- bl _u32_div_f
- lsr r0, r0, #5
- add r1, r0, #0
- lsr r2, r4, #5
- mul r1, r5
- add r0, r2, r1
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EEE08
-MOD05_021EEE08: ; 0x021EEE08
- mul r2, r1
- add r0, r0, r2
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EEE10
-MOD05_021EEE10: ; 0x021EEE10
- push {r3, r4, r5, r6, r7, lr}
- add r7, r2, #0
- add r5, r1, #0
- add r6, r0, #0
- add r1, r7, #0
- bl _u32_div_f
- add r4, r1, #0
- add r0, r6, #0
- add r1, r7, #0
- bl _u32_div_f
- lsr r0, r0, #5
- add r1, r0, #0
- lsr r2, r4, #5
- mul r1, r5
- add r0, r2, r1
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EEE34
-MOD05_021EEE34: ; 0x021EEE34
- push {r3, lr}
- cmp r0, #0
- bne _021EEE3E
- mov r0, #3
- pop {r3, pc}
-_021EEE3E:
- cmp r0, #1
- bne _021EEE46
- mov r0, #2
- pop {r3, pc}
-_021EEE46:
- cmp r0, #2
- bne _021EEE4E
- mov r0, #1
- pop {r3, pc}
-_021EEE4E:
- cmp r0, #3
- bne _021EEE56
- mov r0, #0
- pop {r3, pc}
-_021EEE56:
- bl GF_AssertFail
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EEE60
-MOD05_021EEE60: ; 0x021EEE60
- push {r3, r4, r5, lr}
- add r5, r2, #0
- add r4, r3, #0
- cmp r0, #4
- bhi _021EEEC0
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EEE76: ; jump table
- .short _021EEEC0 - _021EEE76 - 2 ; case 0
- .short _021EEE80 - _021EEE76 - 2 ; case 1
- .short _021EEE96 - _021EEE76 - 2 ; case 2
- .short _021EEEA4 - _021EEE76 - 2 ; case 3
- .short _021EEEB8 - _021EEE76 - 2 ; case 4
-_021EEE80:
- add r0, r4, #0
- add r1, r5, #0
- bl _s32_div_f
- add r0, r1, #1
- cmp r0, r5
- blt _021EEE92
- add r0, r4, #0
- pop {r3, r4, r5, pc}
-_021EEE92:
- add r0, r4, #1
- pop {r3, r4, r5, pc}
-_021EEE96:
- lsl r1, r1, #5
- add r0, r4, r5
- mul r1, r5
- cmp r0, r1
- blt _021EEEC6
- add r0, r4, #0
- pop {r3, r4, r5, pc}
-_021EEEA4:
- add r0, r4, #0
- add r1, r5, #0
- bl _s32_div_f
- sub r0, r1, #1
- bpl _021EEEB4
- add r0, r4, #0
- pop {r3, r4, r5, pc}
-_021EEEB4:
- sub r0, r4, #1
- pop {r3, r4, r5, pc}
-_021EEEB8:
- sub r0, r4, r5
- bpl _021EEEC6
- add r0, r4, #0
- pop {r3, r4, r5, pc}
-_021EEEC0:
- bl GF_AssertFail
- mov r0, #0
-_021EEEC6:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021EEEC8
-MOD05_021EEEC8: ; 0x021EEEC8
- cmp r0, #4
- bhi _021EEF00
- add r2, r0, r0
- add r2, pc
- ldrh r2, [r2, #6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_021EEED8: ; jump table
- .short _021EEF00 - _021EEED8 - 2 ; case 0
- .short _021EEEFA - _021EEED8 - 2 ; case 1
- .short _021EEEEA - _021EEED8 - 2 ; case 2
- .short _021EEEF2 - _021EEED8 - 2 ; case 3
- .short _021EEEE2 - _021EEED8 - 2 ; case 4
-_021EEEE2:
- sub r0, r1, #2
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_021EEEEA:
- add r0, r1, #2
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_021EEEF2:
- sub r0, r1, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_021EEEFA:
- add r0, r1, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
-_021EEF00:
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EEF04
-MOD05_021EEF04: ; 0x021EEF04
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r4, r2, #0
- bl MOD05_021EEEC8
- cmp r5, r0
- bge _021EEF36
- sub r0, r0, r5
- cmp r0, #1
- bne _021EEF22
- ldrb r0, [r4]
- sub r0, r0, #1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- b _021EEF62
-_021EEF22:
- cmp r0, #2
- bne _021EEF30
- ldrb r0, [r4]
- sub r0, r0, #2
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- b _021EEF62
-_021EEF30:
- bl GF_AssertFail
- b _021EEF62
-_021EEF36:
- cmp r5, r0
- ble _021EEF5E
- sub r0, r5, r0
- cmp r0, #1
- bne _021EEF4A
- ldrb r0, [r4]
- add r0, r0, #1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- b _021EEF62
-_021EEF4A:
- cmp r0, #2
- bne _021EEF58
- ldrb r0, [r4]
- add r0, r0, #2
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- b _021EEF62
-_021EEF58:
- bl GF_AssertFail
- b _021EEF62
-_021EEF5E:
- bl GF_AssertFail
-_021EEF62:
- strb r6, [r4]
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EEF68
-MOD05_021EEF68: ; 0x021EEF68
- push {r3, lr}
- cmp r0, #4
- bhi _021EEF94
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EEF7A: ; jump table
- .short _021EEF94 - _021EEF7A - 2 ; case 0
- .short _021EEF8C - _021EEF7A - 2 ; case 1
- .short _021EEF88 - _021EEF7A - 2 ; case 2
- .short _021EEF90 - _021EEF7A - 2 ; case 3
- .short _021EEF84 - _021EEF7A - 2 ; case 4
-_021EEF84:
- mov r0, #2
- pop {r3, pc}
-_021EEF88:
- mov r0, #4
- pop {r3, pc}
-_021EEF8C:
- mov r0, #3
- pop {r3, pc}
-_021EEF90:
- mov r0, #1
- pop {r3, pc}
-_021EEF94:
- bl GF_AssertFail
- mov r0, #0
- pop {r3, pc}
-
- thumb_func_start MOD05_021EEF9C
-MOD05_021EEF9C: ; 0x021EEF9C
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- add r5, r1, #0
- add r7, r2, #0
- mov r4, #0
-_021EEFA6:
- ldr r0, [r5, #0x2c]
- cmp r0, #1
- bne _021EEFC2
- add r0, r6, #0
- bl MOD05_021EEF68
- add r1, r5, #0
- add r1, #0x30
- ldrb r1, [r1]
- cmp r1, r0
- bne _021EEFC2
- strb r4, [r7]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021EEFC2:
- add r4, r4, #1
- add r5, #0x30
- cmp r4, #2
- blt _021EEFA6
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EEFD0
-MOD05_021EEFD0: ; 0x021EEFD0
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r0, #0xa1
- ldrb r1, [r0]
- mov r0, #0x30
- add r4, r5, #0
- mul r0, r1
- add r0, r5, r0
- ldr r0, [r0, #0x2c]
- add r4, #0x64
- cmp r0, #0
- beq _021EEFEC
- bl GF_AssertFail
-_021EEFEC:
- add r1, r5, #0
- add r1, #0xa1
- ldrb r2, [r1]
- mov r1, #0x30
- mov r0, #1
- add r3, r2, #0
- mul r3, r1
- add r2, r5, r3
- add r3, r5, #0
- str r0, [r2, #0x2c]
- add r3, #0xa1
- ldrb r3, [r3]
- ldrb r2, [r4, #0xc]
- add r6, r3, #0
- mul r6, r1
- add r3, r5, r6
- add r3, #0x30
- strb r2, [r3]
- add r3, r5, #0
- add r3, #0xa1
- ldrb r3, [r3]
- ldr r2, [r4, #0x10]
- add r6, r3, #0
- mul r6, r1
- add r3, r5, r6
- str r2, [r3, #0x1c]
- add r3, r5, #0
- add r3, #0xa1
- ldrb r3, [r3]
- ldr r2, [r4, #0x14]
- add r6, r3, #0
- mul r6, r1
- add r3, r5, r6
- str r2, [r3, #0x20]
- add r3, r5, #0
- add r3, #0xa1
- ldrb r3, [r3]
- ldrb r2, [r4, #0x18]
- add r6, r3, #0
- mul r6, r1
- add r3, r5, r6
- add r3, #0x24
- strb r2, [r3]
- add r3, r5, #0
- add r3, #0xa1
- ldrb r3, [r3]
- ldrb r2, [r4, #0x19]
- add r6, r3, #0
- mul r6, r1
- add r3, r5, r6
- add r3, #0x25
- strb r2, [r3]
- add r3, r5, #0
- add r3, #0xa1
- ldrb r3, [r3]
- ldr r2, [r4]
- add r6, r3, #0
- mul r6, r1
- add r3, r5, r6
- str r2, [r3, #4]
- add r2, r5, #0
- add r2, #0xa1
- ldrb r2, [r2]
- ldr r4, [r4, #4]
- add r3, r2, #0
- mul r3, r1
- add r2, r5, r3
- add r3, r5, #0
- str r4, [r2, #8]
- add r3, #0xa1
- ldrb r3, [r3]
- mov r2, #0
- add r4, r3, #0
- mul r4, r1
- add r3, r5, r4
- add r3, #0x26
- strb r2, [r3]
- add r3, r5, #0
- add r3, #0xa1
- ldrb r3, [r3]
- mul r1, r3
- add r1, r5, r1
- str r2, [r1, #0x28]
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021EF094
-MOD05_021EF094: ; 0x021EF094
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r0, #0xa0
- ldrb r0, [r0]
- add r4, r5, #0
- add r4, #0x64
- cmp r0, #2
- blo _021EF0A8
- bl GF_AssertFail
-_021EF0A8:
- add r0, r5, #0
- bl MOD05_021EEFD0
- cmp r0, #1
- beq _021EF0B6
- bl GF_AssertFail
-_021EF0B6:
- mov r0, #0x86
- ldr r2, [r4, #0x10]
- ldr r1, [r4]
- lsl r0, r0, #4
- str r2, [r1, r0]
- ldr r2, [r4, #0x14]
- ldr r1, [r4, #4]
- str r2, [r1, r0]
- add r0, r5, #0
- add r0, #0xa0
- ldrb r0, [r0]
- add r1, r0, #1
- add r0, r5, #0
- add r0, #0xa0
- strb r1, [r0]
- add r0, r5, #0
- add r0, #0xa1
- ldrb r0, [r0]
- add r5, #0xa1
- 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, [r5]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF0F0
-MOD05_021EF0F0: ; 0x021EF0F0
- add r1, r0, #0
- add r1, #0xa2
- ldrb r2, [r1]
- mov r1, #0x30
- mul r1, r2
- add r0, r0, r1
- ldr r0, [r0, #0x28]
- bx lr
-
- thumb_func_start MOD05_021EF100
-MOD05_021EF100: ; 0x021EF100
- mov r3, #0
- add r2, r3, #0
-_021EF104:
- lsl r1, r3, #2
- add r1, r0, r1
- add r1, #0x80
- str r2, [r1]
- add r1, r3, #1
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- cmp r3, #4
- blo _021EF104
- bx lr
-
- thumb_func_start MOD05_021EF118
-MOD05_021EF118: ; 0x021EF118
- cmp r0, #4
- bhi _021EF168
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EF128: ; jump table
- .short _021EF168 - _021EF128 - 2 ; case 0
- .short _021EF140 - _021EF128 - 2 ; case 1
- .short _021EF14E - _021EF128 - 2 ; case 2
- .short _021EF15C - _021EF128 - 2 ; case 3
- .short _021EF132 - _021EF128 - 2 ; case 4
-_021EF132:
- add r0, r1, #0
- mov r2, #1
- add r0, #0x88
- str r2, [r0]
- add r1, #0x8c
- str r2, [r1]
- bx lr
-_021EF140:
- add r0, r1, #0
- mov r2, #1
- add r0, #0x80
- str r2, [r0]
- add r1, #0x88
- str r2, [r1]
- bx lr
-_021EF14E:
- add r0, r1, #0
- mov r2, #1
- add r0, #0x80
- str r2, [r0]
- add r1, #0x84
- str r2, [r1]
- bx lr
-_021EF15C:
- add r0, r1, #0
- mov r2, #1
- add r0, #0x84
- str r2, [r0]
- add r1, #0x8c
- str r2, [r1]
-_021EF168:
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EF16C
-MOD05_021EF16C: ; 0x021EF16C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- add r5, r0, #0
- add r4, r3, #0
- add r6, r1, #0
- add r7, r2, #0
- bl MOD05_021EDFBC
- add r2, r5, #0
- add r3, r5, #0
- str r4, [sp]
- add r0, sp, #0x10
- str r0, [sp, #4]
- add r2, #0xc0
- add r3, #0xc4
- ldr r2, [r2]
- ldr r3, [r3]
- add r0, r6, #0
- add r1, r7, #0
- bl MOD05_021EDED0
- mov r6, #0
- add r7, sp, #0x10
-_021EF19A:
- lsl r4, r6, #2
- bl MOD05_021F4328
- add r1, r5, r4
- add r1, #0x90
- ldr r2, [r1]
- ldr r1, _021EF1F8 ; =0x0000085C
- str r0, [r2, r1]
- add r0, r5, r4
- add r0, #0x90
- ldr r1, [r0]
- ldr r0, _021EF1F8 ; =0x0000085C
- ldr r0, [r1, r0]
- bl MOD05_021F4454
- add r0, r5, #0
- add r0, #0xb8
- ldr r0, [r0]
- bl MOD05_021F4CA8
- add r1, r5, #0
- add r1, #0xc0
- ldr r1, [r1]
- add r2, r5, #0
- str r1, [sp]
- add r1, r5, #0
- add r1, #0xc4
- ldr r1, [r1]
- add r3, r5, #0
- str r1, [sp, #4]
- str r0, [sp, #8]
- str r5, [sp, #0xc]
- add r2, #0xb8
- add r3, #0xbc
- ldr r0, [r7, r4]
- ldr r2, [r2]
- ldr r3, [r3]
- add r1, r6, #0
- bl MOD05_021EE2A4
- add r0, r6, #1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r6, #4
- blo _021EF19A
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EF1F8: .word 0x0000085C
-
- thumb_func_start MOD05_021EF1FC
-MOD05_021EF1FC: ; 0x021EF1FC
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- add r5, r0, #0
- add r4, r3, #0
- add r6, r1, #0
- add r7, r2, #0
- bl MOD05_021EE050
- add r2, r5, #0
- add r3, r5, #0
- str r4, [sp]
- add r0, sp, #0x10
- str r0, [sp, #4]
- add r2, #0xc0
- add r3, #0xc4
- ldr r2, [r2]
- ldr r3, [r3]
- add r0, r6, #0
- add r1, r7, #0
- bl MOD05_021EDED0
- mov r4, #0
- add r7, r4, #0
-_021EF22A:
- lsl r6, r4, #2
- add r0, r5, r6
- add r0, #0x90
- ldr r1, [r0]
- ldr r0, _021EF278 ; =0x0000085C
- str r7, [r1, r0]
- add r0, r5, #0
- add r0, #0xb8
- ldr r0, [r0]
- bl MOD05_021F4CA8
- add r1, r5, #0
- add r1, #0xc0
- ldr r1, [r1]
- add r2, r5, #0
- str r1, [sp]
- add r1, r5, #0
- add r1, #0xc4
- ldr r1, [r1]
- add r3, r5, #0
- str r1, [sp, #4]
- str r0, [sp, #8]
- str r5, [sp, #0xc]
- add r0, sp, #0x10
- add r2, #0xb8
- add r3, #0xbc
- ldr r0, [r0, r6]
- ldr r2, [r2]
- ldr r3, [r3]
- add r1, r4, #0
- bl MOD05_021EE38C
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #4
- blo _021EF22A
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EF278: .word 0x0000085C
-
- thumb_func_start MOD05_021EF27C
-MOD05_021EF27C: ; 0x021EF27C
- push {r4, lr}
- add r1, r0, #0
- mov r3, #0
- add r1, #0xa2
- strb r3, [r1]
- add r1, r0, #0
- add r1, #0xa1
- strb r3, [r1]
- add r1, r0, #0
- add r1, #0xa0
- strb r3, [r1]
- add r4, r0, #0
- add r2, r3, #0
- mov r1, #1
-_021EF298:
- str r2, [r4, #0x2c]
- str r1, [r4, #0x28]
- add r3, r3, #1
- add r4, #0x30
- cmp r3, #2
- blt _021EF298
- bl MOD05_021EF100
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF2AC
-MOD05_021EF2AC: ; 0x021EF2AC
- push {r4, lr}
- add r4, r2, #0
- add r2, #0xc8
- ldr r2, [r2]
- bl MOD05_021EEE08
- add r1, r4, #0
- add r1, #0xa8
- str r0, [r1]
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0xc8
- ldr r0, [r0]
- ldr r1, [r1]
- bl MOD05_021EF620
- add r1, r4, #0
- add r1, #0xad
- strb r0, [r1]
- add r0, r4, #0
- add r0, #0xad
- ldrb r0, [r0]
- bl MOD05_021EEE34
- add r1, r4, #0
- add r1, #0xac
- strb r0, [r1]
- add r0, r4, #0
- add r1, r4, #0
- add r2, r4, #0
- add r0, #0xa8
- add r1, #0xc0
- add r2, #0xc8
- ldr r0, [r0]
- ldr r1, [r1]
- ldr r2, [r2]
- bl MOD05_021EEE10
- add r4, #0xa4
- str r0, [r4]
- pop {r4, pc}
-
- thumb_func_start MOD05_021EF300
-MOD05_021EF300: ; 0x021EF300
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r7, r2, #0
- mov r2, #1
- add r5, r3, #0
- lsl r2, r2, #0x14
- str r2, [r5]
- str r2, [r5, #8]
- mov r2, #0
- add r4, r0, #0
- mvn r2, r2
- str r1, [sp, #4]
- cmp r4, r2
- beq _021EF362
- bl _s32_div_f
- lsl r0, r1, #0x10
- lsr r6, r0, #0x10
- ldr r1, [sp, #4]
- add r0, r4, #0
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r7, #0
- bl MapMatrix_GetWidth
- str r0, [sp, #8]
- add r0, r7, #0
- bl MapMatrix_GetMatrixID
- add r1, r0, #0
- ldr r0, [sp, #8]
- add r2, r6, #0
- str r0, [sp]
- add r0, r7, #0
- add r3, r4, #0
- bl MapMatrix_GetMapAltitude
- lsl r0, r0, #0xf
- str r0, [r5, #4]
- ldr r1, [r5]
- lsl r0, r6, #0x15
- add r0, r1, r0
- str r0, [r5]
- ldr r1, [r5, #8]
- lsl r0, r4, #0x15
- add r0, r1, r0
- str r0, [r5, #8]
-_021EF362:
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF368
-MOD05_021EF368: ; 0x021EF368
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- str r1, [sp]
- mov r1, #0x41
- add r5, r0, #0
- mov r0, #4
- lsl r1, r1, #2
- str r2, [sp, #4]
- add r6, r3, #0
- bl AllocFromHeap
- mov r2, #0x41
- mov r1, #0
- lsl r2, r2, #2
- add r4, r0, #0
- bl MI_CpuFill8
- cmp r6, #0
- bne _021EF39A
- add r0, r4, #0
- ldr r1, _021EF42C ; =UNK05_021F8B04
- add r0, #0xf4
- str r1, [r0]
- mov r7, #1
- b _021EF3AE
-_021EF39A:
- cmp r6, #1
- bne _021EF3AA
- add r0, r4, #0
- ldr r1, _021EF430 ; =UNK05_021F8B0C
- add r0, #0xf4
- str r1, [r0]
- mov r7, #0
- b _021EF3AE
-_021EF3AA:
- bl GF_AssertFail
-_021EF3AE:
- add r0, r7, #0
- bl MOD05_021F3BC0
- str r0, [r4]
- add r1, r4, #0
- ldr r0, [sp]
- add r1, #0xb8
- str r0, [r1]
- add r0, r4, #0
- add r0, #0xbc
- str r5, [r0]
- add r0, r5, #0
- bl MapMatrix_GetWidth
- add r1, r4, #0
- add r1, #0xc0
- str r0, [r1]
- add r0, r5, #0
- bl MapMatrix_GetHeight
- add r1, r4, #0
- add r1, #0xc4
- str r0, [r1]
- add r0, r4, #0
- add r0, #0xc0
- ldr r0, [r0]
- lsl r1, r0, #5
- add r0, r4, #0
- add r0, #0xc8
- str r1, [r0]
- add r1, r4, #0
- ldr r0, [sp, #4]
- add r1, #0xf0
- str r0, [r1]
- add r0, r4, #0
- mov r1, #1
- add r0, #0xec
- str r1, [r0]
- add r0, r4, #0
- bl MOD05_021EF27C
- add r0, r4, #0
- mov r1, #0
- add r0, #0xb0
- str r1, [r0]
- add r0, r4, #0
- mov r1, #2
- add r0, #0xb4
- str r1, [r0]
- mov r0, #0x43
- mov r1, #4
- bl NARC_ctor
- add r1, r4, #0
- add r1, #0xf8
- str r0, [r1]
- add r0, r4, #0
- mov r1, #0
- add r0, #0xfc
- str r1, [r0]
- add r0, r4, #0
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EF42C: .word UNK05_021F8B04
-_021EF430: .word UNK05_021F8B0C
-
- thumb_func_start MOD05_021EF434
-MOD05_021EF434: ; 0x021EF434
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r6, r5, #0
- add r6, #0xf4
- add r3, r5, #0
- ldr r6, [r6]
- add r3, #0xc8
- ldr r3, [r3]
- ldr r6, [r6]
- add r4, r1, #0
- add r7, r2, #0
- blx r6
- add r0, r4, #0
- add r1, r7, #0
- add r2, r5, #0
- bl MOD05_021EF2AC
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021EF458
-MOD05_021EF458: ; 0x021EF458
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- add r2, r5, #0
- add r3, r5, #0
- add r1, #0xc4
- add r2, #0xc8
- add r3, #0xa8
- ldr r1, [r1]
- ldr r2, [r2]
- ldr r3, [r3]
- add r6, r0, #0
- bl MOD05_021EEE60
- add r1, r5, #0
- add r2, r5, #0
- add r1, #0xc0
- add r2, #0xc8
- ldr r1, [r1]
- ldr r2, [r2]
- add r7, r0, #0
- bl MOD05_021EEDE4
- add r1, r5, #0
- add r1, #0xc8
- add r4, r0, #0
- ldr r1, [r1]
- add r0, r7, #0
- bl MOD05_021EF620
- add r1, r5, #0
- add r1, #0xa4
- ldr r1, [r1]
- cmp r1, r4
- bne _021EF4C0
- add r1, r5, #0
- add r1, #0xad
- ldrb r1, [r1]
- cmp r1, r0
- beq _021EF4C0
- add r0, r4, #0
- add r1, r6, #0
- add r2, r5, #0
- bl MOD05_021EEA0C
- add r1, r5, #0
- add r1, #0xad
- add r5, #0xac
- ldrb r1, [r1]
- add r0, r6, #0
- add r2, r5, #0
- bl MOD05_021EEF04
-_021EF4C0:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF4C4
-MOD05_021EF4C4: ; 0x021EF4C4
- push {r3, r4, r5, r6, r7, lr}
- mov r4, #0
- add r5, r0, #0
- add r6, r1, #0
- sub r7, r4, #1
-_021EF4CE:
- lsl r0, r4, #2
- add r0, r5, r0
- add r0, #0x90
- ldr r1, [r0]
- mov r0, #0x86
- lsl r0, r0, #4
- ldr r0, [r1, r0]
- cmp r0, r7
- beq _021EF4EA
- add r0, r4, #0
- add r1, r5, #0
- add r2, r6, #0
- bl MOD05_021EED3C
-_021EF4EA:
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #4
- blo _021EF4CE
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF4F8
-MOD05_021EF4F8: ; 0x021EF4F8
- push {r3, r4}
- asr r4, r0, #0xf
- lsr r4, r4, #0x10
- add r4, r0, r4
- asr r0, r4, #0x10
- str r0, [r2]
- asr r0, r1, #0xf
- lsr r0, r0, #0x10
- add r0, r1, r0
- asr r0, r0, #0x10
- str r0, [r3]
- pop {r3, r4}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EF514
-MOD05_021EF514: ; 0x021EF514
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- bl ClearFileCache
- bl NNS_GfdResetLnkTexVramState
- bl NNS_GfdResetLnkPlttVramState
- mov r4, #0
- add r6, r5, #4
- mov r7, #0x30
-_021EF52A:
- add r0, r4, #0
- mul r0, r7
- add r0, r6, r0
- bl MOD05_021EDEAC
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #2
- blo _021EF52A
- mov r6, #0
- add r7, r6, #0
-_021EF542:
- lsl r4, r6, #2
- add r0, r5, r4
- add r0, #0x90
- ldr r2, [r0]
- ldr r0, _021EF59C ; =0x00000864
- mov r1, #0
- str r1, [r2, r0]
- add r0, r5, r4
- add r0, #0x90
- ldr r1, [r0]
- ldr r0, _021EF5A0 ; =0x0000085C
- ldr r0, [r1, r0]
- bl MOD05_021F43C0
- add r0, r5, r4
- add r0, #0x90
- ldr r1, [r0]
- ldr r0, _021EF5A4 ; =0x00000868
- ldr r0, [r1, r0]
- bl MOD05_021E7C14
- add r0, r5, r4
- add r0, #0x90
- ldr r0, [r0]
- bl FreeToHeap
- add r0, r5, r4
- add r0, #0x90
- str r7, [r0]
- add r0, r6, #1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r6, #4
- blo _021EF542
- add r0, r5, #0
- mov r1, #3
- add r0, #0xb4
- str r1, [r0]
- add r0, r5, #0
- mov r1, #1
- add r0, #0xb0
- str r1, [r0]
- add r5, #0xec
- str r7, [r5]
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EF59C: .word 0x00000864
-_021EF5A0: .word 0x0000085C
-_021EF5A4: .word 0x00000868
-
- thumb_func_start MOD05_021EF5A8
-MOD05_021EF5A8: ; 0x021EF5A8
- push {r4, lr}
- add r4, r0, #0
- add r0, #0xf8
- ldr r0, [r0]
- bl NARC_dtor
- ldr r0, [r4]
- bl MOD05_021F3C30
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF5C4
-MOD05_021EF5C4: ; 0x021EF5C4
- add r1, r0, #0
- add r1, #0xb0
- ldr r1, [r1]
- cmp r1, #1
- bne _021EF5DA
- add r0, #0xa0
- ldrb r0, [r0]
- cmp r0, #0
- bne _021EF5DA
- mov r0, #1
- bx lr
-_021EF5DA:
- mov r0, #0
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EF5E0
-MOD05_021EF5E0: ; 0x021EF5E0
- push {r4, r5}
- add r5, r0, #0
- add r4, r1, #0
- add r2, r4, #0
- add r3, r5, #0
- ldmia r3!, {r0, r1}
- add r2, #0xcc
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r4, #0xd8
- str r0, [r2]
- str r5, [r4]
- pop {r4, r5}
- bx lr
-
- thumb_func_start MOD05_021EF5FC
-MOD05_021EF5FC: ; 0x021EF5FC
- mov r1, #0
- add r0, #0xd8
- str r1, [r0]
- bx lr
-
- thumb_func_start MOD05_021EF604
-MOD05_021EF604: ; 0x021EF604
- lsl r0, r0, #2
- add r0, r1, r0
- add r0, #0x90
- ldr r1, [r0]
- ldr r0, _021EF614 ; =0x00000868
- ldr r0, [r1, r0]
- str r0, [r2]
- bx lr
- .balign 4, 0
-_021EF614: .word 0x00000868
-
- thumb_func_start MOD05_021EF618
-MOD05_021EF618: ; 0x021EF618
- add r0, #0xac
- ldrb r0, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EF620
-MOD05_021EF620: ; 0x021EF620
- push {r4, lr}
- add r4, r0, #0
- bl _u32_div_f
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x1b
- sub r1, r1, r2
- mov r0, #0x1b
- ror r1, r0
- mov r0, #0x1f
- and r0, r4
- add r1, r2, r1
- cmp r0, #0x10
- bge _021EF648
- cmp r1, #0x10
- bge _021EF644
- mov r0, #0
- pop {r4, pc}
-_021EF644:
- mov r0, #2
- pop {r4, pc}
-_021EF648:
- cmp r1, #0x10
- bge _021EF650
- mov r0, #1
- pop {r4, pc}
-_021EF650:
- mov r0, #3
- pop {r4, pc}
-
- thumb_func_start MOD05_021EF654
-MOD05_021EF654: ; 0x021EF654
- push {r3, r4, r5, lr}
- add r4, r2, #0
- add r5, r0, #0
- add r0, r4, #0
- add r0, #0xa4
- ldr r0, [r0]
- cmp r0, r5
- bne _021EF66A
- add r4, #0xac
- ldrb r0, [r4]
- pop {r3, r4, r5, pc}
-_021EF66A:
- mov r0, #0
- mvn r0, r0
- cmp r5, r0
- bne _021EF676
- bl GF_AssertFail
-_021EF676:
- add r0, r4, #0
- add r0, #0xac
- ldrb r1, [r0]
- cmp r1, #3
- bls _021EF682
- b _021EF820
-_021EF682:
- add r0, r1, r1
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EF68E: ; jump table
- .short _021EF696 - _021EF68E - 2 ; case 0
- .short _021EF6F8 - _021EF68E - 2 ; case 1
- .short _021EF75C - _021EF68E - 2 ; case 2
- .short _021EF7BE - _021EF68E - 2 ; case 3
-_021EF696:
- add r0, r4, #0
- add r0, #0xa4
- add r2, r4, #0
- ldr r0, [r0]
- add r2, #0xc0
- ldr r2, [r2]
- sub r3, r5, r0
- cmp r2, r3
- bne _021EF6B0
- add r0, r1, #2
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF6B0:
- cmp r3, #1
- bne _021EF6CA
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- beq _021EF6CA
- add r4, #0xac
- ldrb r0, [r4]
- add r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF6CA:
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa4
- add r1, #0xc0
- ldr r2, [r1]
- ldr r0, [r0]
- add r3, r2, #1
- sub r1, r5, r0
- cmp r3, r1
- bne _021EF6F4
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EF6F4
- add r4, #0xac
- ldrb r0, [r4]
- add r0, r0, #3
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF6F4:
- mov r0, #4
- pop {r3, r4, r5, pc}
-_021EF6F8:
- add r0, r4, #0
- add r0, #0xa4
- add r2, r4, #0
- ldr r0, [r0]
- add r2, #0xc0
- ldr r2, [r2]
- sub r3, r5, r0
- cmp r2, r3
- bne _021EF712
- add r0, r1, #2
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF712:
- sub r1, r0, r5
- cmp r1, #1
- bne _021EF72E
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- beq _021EF72E
- add r4, #0xac
- ldrb r0, [r4]
- sub r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF72E:
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa4
- add r1, #0xc0
- ldr r2, [r1]
- ldr r0, [r0]
- sub r3, r2, #1
- sub r1, r5, r0
- cmp r3, r1
- bne _021EF758
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EF758
- add r4, #0xac
- ldrb r0, [r4]
- add r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF758:
- mov r0, #4
- pop {r3, r4, r5, pc}
-_021EF75C:
- add r0, r4, #0
- add r0, #0xa4
- add r2, r4, #0
- ldr r0, [r0]
- add r2, #0xc0
- ldr r2, [r2]
- sub r3, r0, r5
- cmp r2, r3
- bne _021EF776
- sub r0, r1, #2
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF776:
- sub r1, r2, #1
- cmp r1, r3
- bne _021EF792
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EF792
- add r4, #0xac
- ldrb r0, [r4]
- sub r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF792:
- add r0, r4, #0
- add r0, #0xa4
- ldr r0, [r0]
- sub r1, r5, r0
- cmp r1, #1
- bne _021EF7BA
- add r2, r4, #0
- add r2, #0xc0
- ldr r2, [r2]
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- beq _021EF7BA
- add r4, #0xac
- ldrb r0, [r4]
- add r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF7BA:
- mov r0, #4
- pop {r3, r4, r5, pc}
-_021EF7BE:
- add r0, r4, #0
- add r0, #0xa4
- add r2, r4, #0
- ldr r0, [r0]
- add r2, #0xc0
- ldr r2, [r2]
- sub r3, r0, r5
- cmp r2, r3
- bne _021EF7D8
- sub r0, r1, #2
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF7D8:
- add r1, r2, #1
- cmp r1, r3
- bne _021EF7F4
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- bne _021EF7F4
- add r4, #0xac
- ldrb r0, [r4]
- sub r0, r0, #3
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF7F4:
- add r0, r4, #0
- add r0, #0xa4
- ldr r0, [r0]
- sub r1, r0, r5
- cmp r1, #1
- bne _021EF81C
- add r2, r4, #0
- add r2, #0xc0
- ldr r2, [r2]
- add r1, r5, #0
- bl MOD05_021EDE58
- cmp r0, #0
- beq _021EF81C
- add r4, #0xac
- ldrb r0, [r4]
- sub r0, r0, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, r4, r5, pc}
-_021EF81C:
- mov r0, #4
- pop {r3, r4, r5, pc}
-_021EF820:
- mov r0, #4
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021EF824
-MOD05_021EF824: ; 0x021EF824
- push {r3, r4, r5, lr}
- add r5, r1, #0
- add r4, r0, #0
- cmp r5, #4
- blo _021EF832
- bl GF_AssertFail
-_021EF832:
- lsl r0, r5, #2
- add r0, r4, r0
- add r0, #0x90
- ldr r1, [r0]
- mov r0, #0x86
- lsl r0, r0, #4
- ldr r0, [r1, r0]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF844
-MOD05_021EF844: ; 0x021EF844
- push {r3, r4, r5, r6, r7, lr}
- add r6, r2, #0
- asr r2, r6, #4
- add r5, r0, #0
- lsr r2, r2, #0x1b
- add r2, r6, r2
- add r4, r1, #0
- add r0, #0xc0
- ldr r1, [r0]
- asr r0, r4, #4
- lsr r0, r0, #0x1b
- add r0, r4, r0
- asr r2, r2, #5
- str r3, [sp]
- add r3, r2, #0
- asr r0, r0, #5
- mul r3, r1
- add r7, r0, r3
- add r0, r5, #0
- add r0, #0xc4
- ldr r0, [r0]
- mul r0, r1
- cmp r7, r0
- blo _021EF882
- mov r0, #1
- bl FUN_020336A0
- cmp r0, #0
- beq _021EF882
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021EF882:
- add r0, r5, #0
- add r0, #0xc0
- ldr r1, [r0]
- add r0, r5, #0
- add r0, #0xc4
- ldr r0, [r0]
- mul r0, r1
- cmp r7, r0
- blo _021EF898
- bl GF_AssertFail
-_021EF898:
- add r0, r5, #0
- add r0, #0xc8
- ldr r1, [r0]
- add r0, r6, #0
- mul r0, r1
- add r0, r4, r0
- bl MOD05_021EF620
- add r1, r0, #0
- add r0, r7, #0
- add r2, r5, #0
- bl MOD05_021EF654
- ldr r1, [sp]
- cmp r1, #0
- beq _021EF8BA
- strb r0, [r1]
-_021EF8BA:
- cmp r0, #3
- bls _021EF8C2
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021EF8C2:
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EF8C8
-MOD05_021EF8C8: ; 0x021EF8C8
- lsl r1, r1, #2
- add r0, r0, r1
- add r0, #0x90
- ldr r1, [r0]
- ldr r0, _021EF8D8 ; =0x0000085C
- ldr r0, [r1, r0]
- bx lr
- nop
-_021EF8D8: .word 0x0000085C
-
- thumb_func_start MOD05_021EF8DC
-MOD05_021EF8DC: ; 0x021EF8DC
- lsl r1, r1, #2
- add r0, r0, r1
- add r0, #0x90
- ldr r0, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EF8E8
-MOD05_021EF8E8: ; 0x021EF8E8
- add r3, r0, #0
- add r3, #0xfc
- str r1, [r3]
- mov r1, #1
- lsl r1, r1, #8
- str r2, [r0, r1]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021EF8F8
-MOD05_021EF8F8: ; 0x021EF8F8
- push {r3, lr}
- bl FUN_0201B6C8
- mov r1, #1
- str r1, [r0, #0x1c]
- pop {r3, pc}
-
- thumb_func_start MOD05_021EF904
-MOD05_021EF904: ; 0x021EF904
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4, #0x1c]
- cmp r0, #1
- bne _021EF914
- mov r0, #5
- strb r0, [r4, #0x14]
-_021EF914:
- ldrb r0, [r4, #0x14]
- cmp r0, #5
- bhi _021EF9FE
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021EF926: ; jump table
- .short _021EF932 - _021EF926 - 2 ; case 0
- .short _021EF962 - _021EF926 - 2 ; case 1
- .short _021EF998 - _021EF926 - 2 ; case 2
- .short _021EF9B6 - _021EF926 - 2 ; case 3
- .short _021EF9FE - _021EF926 - 2 ; case 4
- .short _021EF9EC - _021EF926 - 2 ; case 5
-_021EF932:
- mov r0, #0
- str r0, [r4, #0x24]
- mov r0, #0xe
- ldr r5, [r4, #4]
- lsl r0, r0, #0xc
- cmp r5, r0
- bgt _021EF944
- mov r0, #2
- b _021EF948
-_021EF944:
- add r5, r0, #0
- mov r0, #1
-_021EF948:
- strb r0, [r4, #0x14]
- ldr r2, [r4, #0xc]
- ldr r0, [r4]
- ldr r3, [r2]
- ldr r2, [r4, #0x24]
- add r1, r5, #0
- add r2, r3, r2
- bl NARC_ReadFile
- ldr r0, [r4, #0x24]
- add r0, r0, r5
- str r0, [r4, #0x24]
- pop {r4, r5, r6, pc}
-_021EF962:
- ldr r2, [r4, #0x24]
- ldr r0, [r4, #4]
- sub r5, r0, r2
- mov r0, #0xe
- lsl r0, r0, #0xc
- cmp r5, r0
- ble _021EF976
- add r5, r0, #0
- mov r6, #0
- b _021EF978
-_021EF976:
- mov r6, #1
-_021EF978:
- ldr r3, [r4, #0xc]
- ldr r0, [r4]
- ldr r3, [r3]
- add r1, r5, #0
- add r2, r3, r2
- bl NARC_ReadFile
- cmp r6, #0
- beq _021EF990
- mov r0, #2
- strb r0, [r4, #0x14]
- pop {r4, r5, r6, pc}
-_021EF990:
- ldr r0, [r4, #0x24]
- add r0, r0, r5
- str r0, [r4, #0x24]
- pop {r4, r5, r6, pc}
-_021EF998:
- ldr r0, [r4, #0x10]
- cmp r0, #0
- beq _021EF9B0
- bl FUN_0201B254
- cmp r0, #1
- bne _021EF9B0
- ldr r0, [r4, #0xc]
- ldr r1, [r4, #0x10]
- ldr r0, [r0]
- bl FUN_0201B3A8
-_021EF9B0:
- mov r0, #3
- strb r0, [r4, #0x14]
- pop {r4, r5, r6, pc}
-_021EF9B6:
- ldr r0, [r4, #0xc]
- ldr r0, [r0]
- bl NNS_G3dGetMdlSet
- add r5, r0, #0
- ldrb r0, [r5, #9]
- cmp r0, #1
- beq _021EF9CA
- bl GF_AssertFail
-_021EF9CA:
- ldrh r0, [r5, #0xe]
- add r0, r5, r0
- ldr r0, [r0, #0xc]
- add r5, r5, r0
- bne _021EF9D8
- bl GF_AssertFail
-_021EF9D8:
- ldr r0, [r4, #8]
- add r1, r5, #0
- bl NNS_G3dRenderObjInit
- ldr r0, [r4, #0x18]
- mov r1, #1
- str r1, [r0]
- mov r0, #5
- strb r0, [r4, #0x14]
- pop {r4, r5, r6, pc}
-_021EF9EC:
- ldr r0, [r4, #0x20]
- mov r1, #0
- str r1, [r0]
- add r0, r4, #0
- bl FreeToHeap
- add r0, r5, #0
- bl FUN_0200CAB4
-_021EF9FE:
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021EFA00
-MOD05_021EFA00: ; 0x021EFA00
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r4, r1, #0
- mov r0, #4
-
- thumb_func_start MOD05_021EFA08
-MOD05_021EFA08: ; 0x021EFA08
- mov r1, #0x28
- add r6, r2, #0
- add r7, r3, #0
- bl AllocFromHeapAtEnd
- add r1, r0, #0
- str r5, [r1]
- str r4, [r1, #4]
- str r6, [r1, #8]
- ldr r0, [sp, #0x18]
- str r7, [r1, #0xc]
- str r0, [r1, #0x10]
- mov r2, #0
- ldr r0, [sp, #0x1c]
- strb r2, [r1, #0x14]
- str r0, [r1, #0x18]
- str r2, [r0]
- ldr r0, [sp, #0x20]
- str r0, [r1, #0x20]
- str r2, [r1, #0x1c]
- ldr r0, _021EFA3C ; =MOD05_021EF904
- mov r2, #1
- bl FUN_0200CA44
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021EFA3C: .word MOD05_021EF904
-
- thumb_func_start MOD05_021EFA40
-MOD05_021EFA40: ; 0x021EFA40
- push {r3, r4, r5, lr}
- add r4, r3, #0
- add r5, r2, #0
- ldr r2, [r4]
- bl NARC_ReadFile
- ldr r0, [sp, #0x10]
- cmp r0, #0
- beq _021EFA6A
- bl FUN_0201B254
- cmp r0, #1
- bne _021EFA6A
- ldr r0, [r4]
- ldr r1, [sp, #0x10]
- bl FUN_0201B3A8
- cmp r0, #0
- bne _021EFA6A
- bl GF_AssertFail
-_021EFA6A:
- ldr r0, [r4]
- bl NNS_G3dGetMdlSet
- ldrb r0, [r0, #9]
- cmp r0, #1
- beq _021EFA7A
- bl GF_AssertFail
-_021EFA7A:
- ldr r0, [r4]
- bl NNS_G3dGetMdlSet
- ldrh r1, [r0, #0xe]
- add r1, r0, r1
- ldr r1, [r1, #0xc]
- add r4, r0, r1
- bne _021EFA8E
- bl GF_AssertFail
-_021EFA8E:
- add r0, r5, #0
- add r1, r4, #0
- bl NNS_G3dRenderObjInit
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EFA9C
-MOD05_021EFA9C: ; 0x021EFA9C
- push {r3, lr}
- ldr r0, [r0, #4]
- ldr r0, [r0, #0x14]
- cmp r0, #0
- beq _021EFAAA
- bl MOD20_022524DC
-_021EFAAA:
- pop {r3, pc}
-
- thumb_func_start MOD05_021EFAAC
-MOD05_021EFAAC: ; 0x021EFAAC
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r5, r0, #0
- ldr r0, [r5, #0xc]
- bl Sav2_Poketch_get
- add r4, r0, #0
- ldr r0, [r5, #0xc]
- bl SavArray_Flags_get
- add r6, r0, #0
- add r0, r4, #0
- bl Sav2_Poketch_IsGiven
- cmp r0, #0
- beq _021EFAF8
- add r0, r6, #0
- bl FUN_0205F1E4
- cmp r0, #0
- bne _021EFAF8
- ldr r0, _021EFB0C ; =SDK_OVERLAY_MODULE_20_ID
- mov r1, #2
- bl HandleLoadOverlay
- mov r0, #1
- bl FUN_0200A03C
- str r0, [sp]
- ldr r1, [r5, #4]
- ldr r2, [r5, #0xc]
- ldr r3, [r5, #8]
- add r0, r5, #0
- add r1, #0x14
- bl MOD20_02252448
- add sp, #4
- pop {r3, r4, r5, r6, pc}
-_021EFAF8:
- ldr r0, _021EFB10 ; =SDK_OVERLAY_MODULE_19_ID
- mov r1, #2
- bl HandleLoadOverlay
- ldr r0, [r5, #8]
- bl MOD19_02252440
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- nop
-_021EFB0C: .word SDK_OVERLAY_MODULE_20_ID
-_021EFB10: .word SDK_OVERLAY_MODULE_19_ID
-
- thumb_func_start MOD05_021EFB14
-MOD05_021EFB14: ; 0x021EFB14
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldr r0, [r5, #0xc]
- bl Sav2_Poketch_get
- add r4, r0, #0
- ldr r0, [r5, #0xc]
- bl SavArray_Flags_get
- add r6, r0, #0
- add r0, r4, #0
- bl Sav2_Poketch_IsGiven
- cmp r0, #0
- beq _021EFB46
- add r0, r6, #0
- bl FUN_0205F1E4
- cmp r0, #0
- bne _021EFB46
- ldr r0, [r5, #4]
- ldr r0, [r0, #0x14]
- bl MOD20_022524BC
- pop {r4, r5, r6, pc}
-_021EFB46:
- ldr r0, [r5, #8]
- bl MOD19_022524F4
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EFB50
-MOD05_021EFB50: ; 0x021EFB50
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldr r0, [r5, #0xc]
- bl Sav2_Poketch_get
- add r4, r0, #0
- ldr r0, [r5, #0xc]
- bl SavArray_Flags_get
- add r6, r0, #0
- add r0, r4, #0
- bl Sav2_Poketch_IsGiven
- cmp r0, #0
- beq _021EFB94
- add r0, r6, #0
- bl FUN_0205F1E4
- cmp r0, #0
- bne _021EFB94
- ldr r0, [r5, #4]
- ldr r0, [r0, #0x14]
- bl MOD20_022524D0
- cmp r0, #0
- beq _021EFBA8
- ldr r0, [r5, #4]
- mov r1, #0
- str r1, [r0, #0x14]
- ldr r0, _021EFBAC ; =SDK_OVERLAY_MODULE_20_ID
- bl UnloadOverlayByID
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021EFB94:
- ldr r0, [r5, #8]
- bl MOD19_02252504
- cmp r0, #0
- beq _021EFBA8
- 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 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 ; =SDK_OVERLAY_MODULE_19_ID
- mov r1, #2
- bl HandleLoadOverlay
- ldr r0, [r4, #8]
- bl MOD19_02252440
- pop {r4, pc}
- .balign 4, 0
-_021EFBC8: .word SDK_OVERLAY_MODULE_19_ID
-
- thumb_func_start MOD05_021EFBCC
-MOD05_021EFBCC: ; 0x021EFBCC
- ldr r3, _021EFBD4 ; =MOD19_022524F4
- ldr r0, [r0, #8]
- bx r3
- nop
-_021EFBD4: .word MOD19_022524F4
-
- thumb_func_start MOD05_021EFBD8
-MOD05_021EFBD8: ; 0x021EFBD8
- push {r3, lr}
- ldr r0, [r0, #8]
- bl MOD19_02252504
- cmp r0, #0
- beq _021EFBEE
- 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 SDK_OVERLAY_MODULE_19_ID
-
- thumb_func_start MOD05_021EFBF8
-MOD05_021EFBF8: ; 0x021EFBF8
- push {r4, lr}
- sub sp, #8
- add r4, r0, #0
- ldr r0, [r4, #0x34]
- bl FUN_020286EC
- mov r1, #0
- bl FUN_0202838C
- add r1, r4, #0
- ldr r0, [r4, #0x34]
- add r1, #0x4c
- mov r2, #4
- bl FUN_020339B4
- cmp r0, #0
- bne _021EFC20
- add sp, #8
- mov r0, #1
- pop {r4, pc}
-_021EFC20:
- add r0, r4, #0
- mov r1, #0
- add r0, #0x8c
- str r1, [r0]
- ldr r0, [r4, #0x34]
- bl Sav2_PlayerData_GetOptionsAddr
- bl Options_GetFrame
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- ldr r0, [r4, #0x30]
- ldr r2, _021EFC6C ; =0x000001E2
- ldr r0, [r0, #8]
- mov r1, #3
- mov r3, #0xa
- bl FUN_0200CD68
- mov r0, #0
- str r0, [sp]
- mov r0, #4
- str r0, [sp, #4]
- ldr r0, [r4, #0x30]
- ldr r2, _021EFC70 ; =0x000003D9
- ldr r0, [r0, #8]
- mov r1, #3
- mov r3, #0xb
- bl FUN_0200CB00
- mov r0, #1
- str r0, [r4, #0x48]
- mov r0, #0
- add sp, #8
- pop {r4, pc}
- nop
-_021EFC6C: .word 0x000001E2
-_021EFC70: .word 0x000003D9
-
- thumb_func_start MOD05_021EFC74
-MOD05_021EFC74: ; 0x021EFC74
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- mov r1, #0
- add r6, r0, #0
- mvn r1, r1
- add r0, #0x8c
- str r1, [r0]
- mov r4, #0
- bl FUN_02030F20
- cmp r0, #0
- ble _021EFCB0
- add r5, r6, #0
-_021EFC8E:
- ldr r0, [r5, #0x4c]
- cmp r0, #2
- bne _021EFCA4
- add r0, r6, #0
- add r0, #0x8c
- str r4, [r0]
- lsl r0, r4, #2
- mov r1, #0
- add r0, r6, r0
- str r1, [r0, #0x4c]
- b _021EFCB0
-_021EFCA4:
- add r5, r5, #4
- add r4, r4, #1
- bl FUN_02030F20
- cmp r4, r0
- blt _021EFC8E
-_021EFCB0:
- add r0, r6, #0
- add r0, #0x8c
- ldr r1, [r0]
- mov r0, #0
- mvn r0, r0
- cmp r1, r0
- bne _021EFCC4
- add sp, #4
- mov r0, #1
- pop {r3, r4, r5, r6, pc}
-_021EFCC4:
- ldr r0, [r6, #0x34]
- bl Sav2_Bag_get
- ldr r1, _021EFD3C ; =0x000001B5
- mov r2, #1
- mov r3, #4
- bl Bag_HasItem
- cmp r0, #1
- bne _021EFCFE
- add r0, r6, #0
- add r0, #0x8c
- ldr r0, [r0]
- bl FUN_0202DFA4
- add r2, r0, #0
- ldr r0, [r6, #0x38]
- mov r1, #0
- bl BufferPlayersName
- add r0, r6, #0
- mov r1, #0x21
- bl MOD05_021F01EC
- mov r0, #2
- str r0, [r6, #0x48]
- add sp, #4
- mov r0, #0
- pop {r3, r4, r5, r6, pc}
-_021EFCFE:
- ldr r0, [r6, #0x34]
- bl FUN_020286EC
- add r4, r0, #0
- mov r5, #0
-_021EFD08:
- add r0, r4, #0
- add r1, r5, #0
- bl FUN_0202842C
- cmp r0, #0
- bne _021EFD2A
- mov r0, #0
- add r1, r6, #0
- str r0, [sp]
- add r1, #0x8c
- ldr r0, [r6, #0x34]
- ldr r1, [r1]
- add r2, r5, #0
- mov r3, #4
- bl FUN_02033A70
- b _021EFD30
-_021EFD2A:
- add r5, r5, #1
- cmp r5, #0x20
- blt _021EFD08
-_021EFD30:
- mov r0, #1
- str r0, [r6, #0x48]
- mov r0, #0
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- nop
-_021EFD3C: .word 0x000001B5
-
- thumb_func_start MOD05_021EFD40
-MOD05_021EFD40: ; 0x021EFD40
- push {r3, r4, lr}
- sub sp, #4
- add r4, r0, #0
- ldr r0, [r4, #0x40]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_0201BD70
- cmp r0, #0
- bne _021EFD6C
- mov r0, #4
- str r0, [sp]
- ldr r0, [r4, #0x30]
- ldr r1, _021EFD74 ; =UNK05_021F8B44
- ldr r0, [r0, #8]
- ldr r2, _021EFD78 ; =0x000003D9
- mov r3, #0xb
- bl Std_CreateYesNoMenu
- str r0, [r4, #0x44]
- mov r0, #3
- str r0, [r4, #0x48]
-_021EFD6C:
- mov r0, #0
- add sp, #4
- pop {r3, r4, pc}
- nop
-_021EFD74: .word UNK05_021F8B44
-_021EFD78: .word 0x000003D9
-
- thumb_func_start MOD05_021EFD7C
-MOD05_021EFD7C: ; 0x021EFD7C
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r6, r0, #0
- ldr r0, [r6, #0x44]
- mov r1, #4
- bl FUN_020021AC
- mov r1, #0
- mvn r1, r1
- cmp r0, r1
- bne _021EFD98
- add sp, #4
- mov r0, #0
- pop {r3, r4, r5, r6, pc}
-_021EFD98:
- cmp r0, #0
- bne _021EFDE4
- ldr r0, [r6, #0x34]
- bl FUN_020286EC
- add r5, r0, #0
- mov r4, #0
-_021EFDA6:
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0202842C
- cmp r0, #0
- bne _021EFDC8
- mov r0, #0
- add r1, r6, #0
- str r0, [sp]
- add r1, #0x8c
- ldr r0, [r6, #0x34]
- ldr r1, [r1]
- add r2, r4, #0
- mov r3, #4
- bl FUN_02033A70
- b _021EFDCE
-_021EFDC8:
- add r4, r4, #1
- cmp r4, #0x20
- blt _021EFDA6
-_021EFDCE:
- cmp r4, #0x20
- bne _021EFDE4
- add r0, r6, #0
- mov r1, #0x22
- bl MOD05_021F01EC
- mov r0, #4
- str r0, [r6, #0x48]
- add sp, #4
- mov r0, #0
- pop {r3, r4, r5, r6, pc}
-_021EFDE4:
- mov r0, #1
- str r0, [r6, #0x48]
- mov r0, #0
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021EFDF0
-MOD05_021EFDF0: ; 0x021EFDF0
- push {r3, r4, lr}
- sub sp, #4
- add r4, r0, #0
- ldr r0, [r4, #0x40]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_0201BD70
- cmp r0, #0
- bne _021EFE1C
- mov r0, #4
- str r0, [sp]
- ldr r0, [r4, #0x30]
- ldr r1, _021EFE24 ; =UNK05_021F8B44
- ldr r0, [r0, #8]
- ldr r2, _021EFE28 ; =0x000003D9
- mov r3, #0xb
- bl Std_CreateYesNoMenu
- str r0, [r4, #0x44]
- mov r0, #5
- str r0, [r4, #0x48]
-_021EFE1C:
- mov r0, #0
- add sp, #4
- pop {r3, r4, pc}
- nop
-_021EFE24: .word UNK05_021F8B44
-_021EFE28: .word 0x000003D9
-
- thumb_func_start MOD05_021EFE2C
-MOD05_021EFE2C: ; 0x021EFE2C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x44]
- mov r1, #4
- bl FUN_020021AC
- mov r1, #0
- mvn r1, r1
- cmp r0, r1
- bne _021EFE44
- mov r0, #0
- pop {r4, pc}
-_021EFE44:
- cmp r0, #0
- bne _021EFE4C
- mov r0, #8
- b _021EFE6A
-_021EFE4C:
- add r0, r4, #0
- add r0, #0x8c
- ldr r0, [r0]
- bl FUN_0202DFA4
- add r2, r0, #0
- ldr r0, [r4, #0x38]
- mov r1, #0
- bl BufferPlayersName
- add r0, r4, #0
- mov r1, #0x23
- bl MOD05_021F01EC
- mov r0, #6
-_021EFE6A:
- str r0, [r4, #0x48]
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021EFE70
-MOD05_021EFE70: ; 0x021EFE70
- push {r3, r4, lr}
- sub sp, #4
- add r4, r0, #0
- ldr r0, [r4, #0x40]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_0201BD70
- cmp r0, #0
- bne _021EFE9C
- mov r0, #4
- str r0, [sp]
- ldr r0, [r4, #0x30]
- ldr r1, _021EFEA4 ; =UNK05_021F8B44
- ldr r0, [r0, #8]
- ldr r2, _021EFEA8 ; =0x000003D9
- mov r3, #0xb
- bl Std_CreateYesNoMenu
- str r0, [r4, #0x44]
- mov r0, #7
- str r0, [r4, #0x48]
-_021EFE9C:
- mov r0, #0
- add sp, #4
- pop {r3, r4, pc}
- nop
-_021EFEA4: .word UNK05_021F8B44
-_021EFEA8: .word 0x000003D9
-
- thumb_func_start MOD05_021EFEAC
-MOD05_021EFEAC: ; 0x021EFEAC
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x44]
- mov r1, #4
- bl FUN_020021AC
- mov r1, #0
- mvn r1, r1
- cmp r0, r1
- bne _021EFEC4
- mov r0, #0
- pop {r4, pc}
-_021EFEC4:
- cmp r0, #0
- bne _021EFECC
- mov r0, #0xc
- b _021EFED6
-_021EFECC:
- add r0, r4, #0
- mov r1, #0x22
- bl MOD05_021F01EC
- mov r0, #4
-_021EFED6:
- str r0, [r4, #0x48]
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021EFEDC
-MOD05_021EFEDC: ; 0x021EFEDC
- push {r4, r5, r6, r7, lr}
- sub sp, #0x34
- add r5, r0, #0
- ldr r0, [r5, #0x34]
- bl FUN_020286EC
- add r6, r0, #0
- bl FUN_02028448
- add r7, r0, #0
- add r0, r7, #1
- mov r1, #4
- bl ListMenuItems_ctor
- str r0, [r5]
- mov r0, #1
- str r0, [sp]
- mov r0, #0xc
- str r0, [sp, #4]
- mov r0, #0xa
- str r0, [sp, #8]
- mov r0, #0xd
- str r0, [sp, #0xc]
- ldr r0, _021EFFB8 ; =0x000002A1
- add r1, r5, #0
- str r0, [sp, #0x10]
- ldr r0, [r5, #0x30]
- add r1, #0x20
- ldr r0, [r0, #8]
- mov r2, #3
- mov r3, #0x13
- bl AddWindowParameterized
- add r0, r5, #0
- ldr r2, _021EFFBC ; =0x000003D9
- add r0, #0x20
- mov r1, #1
- mov r3, #0xb
- bl FUN_0200CCA4
- mov r4, #0
-_021EFF2E:
- add r0, r6, #0
- add r1, r4, #0
- bl FUN_0202842C
- cmp r0, #0
- beq _021EFF54
- add r0, r6, #0
- add r1, r4, #0
- bl FUN_020283A4
- add r1, r0, #0
- ldr r0, [r5, #8]
- bl CopyU16ArrayToString
- ldr r0, [r5]
- ldr r1, [r5, #8]
- add r2, r4, #0
- bl ListMenuItems_AddItem
-_021EFF54:
- add r4, r4, #1
- cmp r4, #0x20
- blt _021EFF2E
- mov r2, #0xb
- add r3, r2, #0
- ldr r0, [r5]
- ldr r1, [r5, #0x3c]
- sub r3, #0xd
- bl ListMenuItems_AppendFromMsgData
- ldr r4, _021EFFC0 ; =UNK05_021F8B4C
- 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}
- add r1, r7, #1
- add r0, sp, #0x14
- strh r1, [r0, #0x10]
- mov r1, #5
- strh r1, [r0, #0x12]
- ldr r0, [r5]
- mov r1, #0
- str r0, [sp, #0x14]
- add r0, r5, #0
- add r0, #0x20
- str r0, [sp, #0x20]
- ldr r0, _021EFFC4 ; =MOD05_021F0304
- str r5, [sp, #0x30]
- str r0, [sp, #0x18]
- add r0, r2, #0
- add r2, r1, #0
- mov r3, #4
- bl ListMenuInit
- str r0, [r5, #4]
- add r0, r5, #0
- add r0, #0x20
- bl CopyWindowToVram
- mov r0, #9
- str r0, [r5, #0x48]
- mov r0, #0
- add sp, #0x34
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021EFFB8: .word 0x000002A1
-_021EFFBC: .word 0x000003D9
-_021EFFC0: .word UNK05_021F8B4C
-_021EFFC4: .word MOD05_021F0304
-
- thumb_func_start MOD05_021EFFC8
-MOD05_021EFFC8: ; 0x021EFFC8
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- ldr r0, [r5, #4]
- bl ListMenu_ProcessInput
- add r4, r0, #0
- mov r0, #1
- mvn r0, r0
- cmp r4, r0
- beq _021EFFE6
- add r0, r0, #1
- cmp r4, r0
- bne _021F000E
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021EFFE6:
- ldr r0, _021F007C ; =0x000005DC
- bl PlaySE
- add r0, r5, #0
- add r0, #0x8c
- ldr r0, [r0]
- bl FUN_0202DFA4
- add r2, r0, #0
- ldr r0, [r5, #0x38]
- mov r1, #0
- bl BufferPlayersName
- add r0, r5, #0
- mov r1, #0x23
- bl MOD05_021F01EC
- mov r0, #6
- str r0, [r5, #0x48]
- b _021F0056
-_021F000E:
- ldr r0, _021F007C ; =0x000005DC
- bl PlaySE
- add r0, r5, #0
- add r0, #0x90
- str r4, [r0]
- ldr r0, [r5, #0x34]
- bl FUN_020286EC
- add r7, r0, #0
- mov r0, #4
- bl PlayerProfile_new
- add r6, r0, #0
- add r0, r7, #0
- add r1, r4, #0
- bl FUN_020283A4
- add r1, r0, #0
- add r0, r6, #0
- bl CopyPlayerName
- ldr r0, [r5, #0x38]
- mov r1, #0
- add r2, r6, #0
- bl BufferPlayersName
- add r0, r6, #0
- bl FreeToHeap
- add r0, r5, #0
- mov r1, #0x24
- bl MOD05_021F01EC
- mov r0, #0xa
- str r0, [r5, #0x48]
-_021F0056:
- add r0, r5, #0
- add r0, #0x20
- mov r1, #0
- bl FUN_0200CCF8
- add r0, r5, #0
- add r0, #0x20
- bl RemoveWindow
- mov r1, #0
- ldr r0, [r5, #4]
- add r2, r1, #0
- bl DestroyListMenu
- ldr r0, [r5]
- bl ListMenuItems_dtor
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F007C: .word 0x000005DC
-
- thumb_func_start MOD05_021F0080
-MOD05_021F0080: ; 0x021F0080
- push {r3, r4, lr}
- sub sp, #4
- add r4, r0, #0
- ldr r0, [r4, #0x40]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_0201BD70
- cmp r0, #0
- bne _021F00AC
- mov r0, #4
- str r0, [sp]
- ldr r0, [r4, #0x30]
- ldr r1, _021F00B4 ; =UNK05_021F8B44
- ldr r0, [r0, #8]
- ldr r2, _021F00B8 ; =0x000003D9
- mov r3, #0xb
- bl Std_CreateYesNoMenu
- str r0, [r4, #0x44]
- mov r0, #0xb
- str r0, [r4, #0x48]
-_021F00AC:
- mov r0, #0
- add sp, #4
- pop {r3, r4, pc}
- nop
-_021F00B4: .word UNK05_021F8B44
-_021F00B8: .word 0x000003D9
-
- thumb_func_start MOD05_021F00BC
-MOD05_021F00BC: ; 0x021F00BC
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x34]
- bl FUN_020286EC
- add r4, r0, #0
- ldr r0, [r5, #0x44]
- mov r1, #4
- bl FUN_020021AC
- mov r1, #0
- mvn r1, r1
- cmp r0, r1
- bne _021F00DC
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F00DC:
- cmp r0, #0
- bne _021F0104
- add r1, r5, #0
- add r1, #0x90
- ldr r1, [r1]
- add r0, r4, #0
- bl FUN_02028468
- mov r0, #0
- add r1, r5, #0
- str r0, [sp]
- add r1, #0x8c
- ldr r0, [r5, #0x34]
- ldr r1, [r1]
- mov r2, #0x1f
- mov r3, #4
- bl FUN_02033A70
- mov r0, #1
- b _021F0122
-_021F0104:
- add r0, r5, #0
- add r0, #0x8c
- ldr r0, [r0]
- bl FUN_0202DFA4
- add r2, r0, #0
- ldr r0, [r5, #0x38]
- mov r1, #0
- bl BufferPlayersName
- add r0, r5, #0
- mov r1, #0x23
- bl MOD05_021F01EC
- mov r0, #6
-_021F0122:
- str r0, [r5, #0x48]
- mov r0, #0
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F0128
-MOD05_021F0128: ; 0x021F0128
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_0204652C
-
- thumb_func_start MOD05_021F0130
-MOD05_021F0130: ; 0x021F0130
- add r4, r0, #0
- add r0, r5, #0
- bl FUN_02046528
- ldr r0, [r4, #0x48]
- cmp r0, #0xc
- bhi _021F01E8
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021F014A: ; jump table
- .short _021F0164 - _021F014A - 2 ; case 0
- .short _021F0174 - _021F014A - 2 ; case 1
- .short _021F0184 - _021F014A - 2 ; case 2
- .short _021F018C - _021F014A - 2 ; case 3
- .short _021F0194 - _021F014A - 2 ; case 4
- .short _021F019C - _021F014A - 2 ; case 5
- .short _021F01A4 - _021F014A - 2 ; case 6
- .short _021F01AC - _021F014A - 2 ; case 7
- .short _021F01B4 - _021F014A - 2 ; case 8
- .short _021F01BC - _021F014A - 2 ; case 9
- .short _021F01C4 - _021F014A - 2 ; case 10
- .short _021F01CC - _021F014A - 2 ; case 11
- .short _021F01D4 - _021F014A - 2 ; case 12
-_021F0164:
- add r0, r4, #0
- bl MOD05_021EFBF8
- cmp r0, #0
- beq _021F01E8
- mov r0, #0xc
- str r0, [r4, #0x48]
- b _021F01E8
-_021F0174:
- add r0, r4, #0
- bl MOD05_021EFC74
- cmp r0, #0
- beq _021F01E8
- mov r0, #0xc
- str r0, [r4, #0x48]
- b _021F01E8
-_021F0184:
- add r0, r4, #0
- bl MOD05_021EFD40
- b _021F01E8
-_021F018C:
- add r0, r4, #0
- bl MOD05_021EFD7C
- b _021F01E8
-_021F0194:
- add r0, r4, #0
- bl MOD05_021EFDF0
- b _021F01E8
-_021F019C:
- add r0, r4, #0
- bl MOD05_021EFE2C
- b _021F01E8
-_021F01A4:
- add r0, r4, #0
- bl MOD05_021EFE70
- b _021F01E8
-_021F01AC:
- add r0, r4, #0
- bl MOD05_021EFEAC
- b _021F01E8
-_021F01B4:
- add r0, r4, #0
- bl MOD05_021EFEDC
- b _021F01E8
-_021F01BC:
- add r0, r4, #0
- bl MOD05_021EFFC8
- b _021F01E8
-_021F01C4:
- add r0, r4, #0
- bl MOD05_021F0080
- b _021F01E8
-_021F01CC:
- add r0, r4, #0
- bl MOD05_021F00BC
- b _021F01E8
-_021F01D4:
- add r0, r4, #0
- bl MOD05_021F0290
- add r0, r4, #0
- bl FreeToHeap
- bl FUN_02037778
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F01E8:
- mov r0, #0
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F01EC
-MOD05_021F01EC: ; 0x021F01EC
- push {r3, r4, r5, lr}
- add r4, r0, #0
- add r0, #0x10
- add r5, r1, #0
- bl WindowIsInUse
- cmp r0, #0
- beq _021F0204
- add r0, r4, #0
- add r0, #0x10
- bl RemoveWindow
-_021F0204:
- ldr r0, [r4, #0x3c]
- ldr r2, [r4, #8]
- add r1, r5, #0
- bl ReadMsgDataIntoString
- ldr r0, [r4, #0x38]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #8]
- bl StringExpandPlaceholders
- ldr r0, [r4, #0x30]
- add r1, r4, #0
- ldr r0, [r0, #8]
- add r1, #0x10
- mov r2, #3
- bl FUN_020545B8
- ldr r0, [r4, #0x30]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- add r1, r0, #0
- add r0, r4, #0
- add r0, #0x10
- bl FUN_02054608
- ldr r0, [r4, #0x30]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- add r2, r0, #0
- add r0, r4, #0
- ldr r1, [r4, #0xc]
- add r0, #0x10
- mov r3, #1
- bl FUN_02054658
- str r0, [r4, #0x40]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0254
-MOD05_021F0254: ; 0x021F0254
- push {r4, lr}
- mov r1, #0
- mov r2, #0x94
- add r4, r0, #0
- bl MI_CpuFill8
- mov r0, #4
- bl ScrStrBufs_new
- str r0, [r4, #0x38]
- ldr r2, _021F028C ; =0x00000251
- mov r0, #0
- mov r1, #0x1a
- mov r3, #4
- bl NewMsgDataFromNarc
- str r0, [r4, #0x3c]
- mov r0, #0x6e
- mov r1, #4
- bl String_ctor
- str r0, [r4, #0xc]
- mov r0, #0x6e
- mov r1, #4
- bl String_ctor
- str r0, [r4, #8]
- pop {r4, pc}
- .balign 4, 0
-_021F028C: .word 0x00000251
-
- thumb_func_start MOD05_021F0290
-MOD05_021F0290: ; 0x021F0290
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x3c]
- bl DestroyMsgData
- ldr r0, [r4, #0x38]
- bl ScrStrBufs_delete
- ldr r0, [r4, #0xc]
- bl String_dtor
- ldr r0, [r4, #8]
- bl String_dtor
- add r0, r4, #0
- add r0, #0x10
- bl WindowIsInUse
- cmp r0, #0
- beq _021F02C0
- add r4, #0x10
- add r0, r4, #0
- bl RemoveWindow
-_021F02C0:
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F02C4
-MOD05_021F02C4: ; 0x021F02C4
- push {r4, r5, r6, lr}
- add r6, r0, #0
- ldr r5, [r6, #0x10]
- mov r0, #0xb
- mov r1, #0x94
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- bl MOD05_021F0254
- str r6, [r4, #0x30]
- ldr r0, [r6, #0xc]
- str r0, [r4, #0x34]
- mov r0, #0
- str r0, [r4, #0x48]
- cmp r5, #0
- bne _021F02F2
- ldr r1, _021F0300 ; =MOD05_021F0128
- add r0, r6, #0
- add r2, r4, #0
- bl FUN_020463CC
- pop {r4, r5, r6, pc}
-_021F02F2:
- ldr r1, _021F0300 ; =MOD05_021F0128
- add r0, r5, #0
- add r2, r4, #0
- bl FUN_0204640C
- pop {r4, r5, r6, pc}
- nop
-_021F0300: .word MOD05_021F0128
-
- thumb_func_start MOD05_021F0304
-MOD05_021F0304: ; 0x021F0304
- push {r3, lr}
- cmp r2, #0
- bne _021F0310
- ldr r0, _021F0314 ; =0x000005DC
- bl PlaySE
-_021F0310:
- pop {r3, pc}
- nop
-_021F0314: .word 0x000005DC
-
- thumb_func_start MOD05_021F0318
-MOD05_021F0318: ; 0x021F0318
- push {r4, r5, r6, r7, lr}
- sub sp, #0x6c
- add r4, r3, #0
- add r7, r0, #0
- add r5, r1, #0
- mov r0, #0
- str r0, [sp, #0x58]
- ldr r1, [r4, #0x50]
- add r0, sp, #0x60
- add r6, r2, #0
- bl Camera_GetLookAtCamTarget
- ldr r3, _021F0434 ; =UNK05_021F8B6C
- add r2, sp, #0xc
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- cmp r6, #0x60
- str r0, [r2]
- bhs _021F0352
- mov r1, #0x60
- sub r0, r1, r6
- lsl r0, r0, #0x18
- ldrh r2, [r4]
- lsr r0, r0, #0x18
- mul r0, r2
- bl _s32_div_f
- b _021F036C
-_021F0352:
- sub r6, #0x60
- lsl r0, r6, #0x18
- ldrh r1, [r4]
- lsr r0, r0, #0x18
- mul r0, r1
- mov r1, #0x60
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- mov r0, #0
- mvn r0, r0
- mul r0, r1
-_021F036C:
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- cmp r5, #0x80
- bhs _021F038A
- mov r2, #0x80
- sub r2, r2, r5
- lsl r2, r2, #0x18
- ldrh r0, [r4, #2]
- lsr r2, r2, #0x18
- mul r2, r0
- asr r0, r2, #6
- lsr r0, r0, #0x19
- add r0, r2, r0
- lsl r0, r0, #9
- b _021F03A8
-_021F038A:
- ldrh r2, [r4, #2]
- sub r5, #0x80
- lsl r0, r5, #0x18
- lsr r0, r0, #0x18
- add r3, r2, #0
- mul r3, r0
- asr r0, r3, #6
- lsr r0, r0, #0x19
- add r0, r3, r0
- lsl r0, r0, #9
- lsr r2, r0, #0x10
- mov r0, #0
- mvn r0, r0
- mul r0, r2
- lsl r0, r0, #0x10
-_021F03A8:
- lsr r5, r0, #0x10
- asr r0, r1, #4
- lsl r3, r0, #1
- lsl r1, r3, #1
- ldr r2, _021F0438 ; =FX_SinCosTable_
- add r3, r3, #1
- lsl r3, r3, #1
- ldrsh r1, [r2, r1]
- ldrsh r2, [r2, r3]
- add r0, sp, #0x24
- bl MTX_RotX43_
- add r0, sp, #0xc
- add r1, sp, #0x24
- add r2, sp, #0x18
- bl MTX_MultVec43
- asr r0, r5, #4
- lsl r2, r0, #1
- lsl r1, r2, #1
- ldr r3, _021F0438 ; =FX_SinCosTable_
- add r2, r2, #1
- lsl r2, r2, #1
- ldrsh r1, [r3, r1]
- ldrsh r2, [r3, r2]
- add r0, sp, #0x24
- bl MTX_RotY43_
- add r0, sp, #0x18
- add r1, sp, #0x24
- add r2, r0, #0
- bl MTX_MultVec43
- add r0, sp, #0x18
- add r1, r4, #0
- add r1, #0x20
- add r2, r0, #0
- bl MTX_MultVec43
- add r0, r4, #0
- add r0, #0x10
- add r1, sp, #0x18
- bl VEC_DotProduct
- add r1, r0, #0
- ldr r0, [r4, #0x1c]
- bl FX_Div
- neg r0, r0
- add r1, sp, #0x18
- add r2, r4, #4
- add r3, sp, #0
- bl VEC_MultAdd
- ldr r1, [sp, #0x60]
- ldr r0, [sp]
- add r2, sp, #0x54
- add r0, r1, r0
- str r0, [sp, #0x54]
- ldr r1, [sp, #0x68]
- ldr r0, [sp, #8]
- add r0, r1, r0
- str r0, [sp, #0x5c]
- ldmia r2!, {r0, r1}
- stmia r7!, {r0, r1}
- ldr r0, [r2]
- str r0, [r7]
- add sp, #0x6c
- pop {r4, r5, r6, r7, pc}
- nop
-_021F0434: .word UNK05_021F8B6C
-_021F0438: .word FX_SinCosTable_
-
- thumb_func_start MOD05_021F043C
-MOD05_021F043C: ; 0x021F043C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #4
- mov r1, #0x60
- bl AllocFromHeap
- add r1, r5, #0
- add r4, r0, #0
- bl MOD05_021F0454
- add r0, r4, #0
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F0454
-MOD05_021F0454: ; 0x021F0454
- push {r4, r5, lr}
- sub sp, #0x2c
- add r5, r0, #0
- add r4, r1, #0
- add r0, sp, #0
- bl Camera_GetAngle
- add r0, r4, #0
- bl Camera_GetPerspectiveAngle
- strh r0, [r5]
- ldrh r0, [r5]
- ldr r2, _021F04F0 ; =FX_SinCosTable_
- asr r0, r0, #4
- lsl r1, r0, #1
- lsl r0, r1, #1
- add r1, r1, #1
- lsl r1, r1, #1
- ldrsh r0, [r2, r0]
- ldrsh r1, [r2, r1]
- bl FX_Div
- lsl r0, r0, #2
- mov r1, #3
- bl _s32_div_f
- bl FX_Atan
- ldr r3, _021F04F4 ; =UNK05_021F8B78
- strh r0, [r5, #2]
- ldmia r3!, {r0, r1}
- add r2, sp, #0x20
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, r4, #0
- str r0, [r2]
- add r0, sp, #0x14
- bl Camera_GetLookAtCamPos
- add r0, sp, #8
- add r1, r4, #0
- bl Camera_GetLookAtCamTarget
- add r0, sp, #0x14
- add r1, sp, #8
- add r2, r5, #4
- bl VEC_Subtract
- add r3, sp, #0x20
- add r2, r5, #0
- ldmia r3!, {r0, r1}
- add r2, #0x10
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, r5, #4
- str r0, [r2]
- add r0, sp, #0x20
- bl VEC_DotProduct
- str r0, [r5, #0x1c]
- add r0, sp, #0
- ldrh r0, [r0]
- ldr r3, _021F04F0 ; =FX_SinCosTable_
- asr r0, r0, #4
- lsl r2, r0, #1
- lsl r1, r2, #1
- add r2, r2, #1
- lsl r2, r2, #1
- add r0, r5, #0
- ldrsh r1, [r3, r1]
- ldrsh r2, [r3, r2]
- add r0, #0x20
- bl MTX_RotX43_
- str r4, [r5, #0x50]
- add sp, #0x2c
- pop {r4, r5, pc}
- nop
-_021F04F0: .word FX_SinCosTable_
-_021F04F4: .word UNK05_021F8B78
-
- thumb_func_start MOD05_021F04F8
-MOD05_021F04F8: ; 0x021F04F8
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F0512
- bne _021F0508
- bl GF_AssertFail
-_021F0508:
- ldr r0, [r4]
- bl FreeToHeap
- mov r0, #0
- str r0, [r4]
-_021F0512:
- pop {r4, pc}
-
- thumb_func_start MOD05_021F0514
-MOD05_021F0514: ; 0x021F0514
- push {r4, lr}
- add r4, r0, #0
- bl FUN_02058458
- cmp r0, #0x97
- bgt _021F053E
- bge _021F05B2
- cmp r0, #0x15
- bgt _021F052E
- bge _021F059E
- cmp r0, #0
- beq _021F059E
- b _021F05BA
-_021F052E:
- cmp r0, #0x62
- bgt _021F05BA
- cmp r0, #0x61
- blt _021F05BA
- beq _021F059E
- cmp r0, #0x62
- beq _021F059E
- b _021F05BA
-_021F053E:
- cmp r0, #0xb0
- bgt _021F0554
- bge _021F059E
- cmp r0, #0x99
- bgt _021F05BA
- cmp r0, #0x98
- blt _021F05BA
- beq _021F05B2
- cmp r0, #0x99
- beq _021F05B2
- b _021F05BA
-_021F0554:
- cmp r0, #0xb1
- bgt _021F055C
- beq _021F059E
- b _021F05BA
-_021F055C:
- sub r0, #0xb2
- cmp r0, #0x17
- bhi _021F05BA
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021F056E: ; jump table
- .short _021F059E - _021F056E - 2 ; case 0
- .short _021F059E - _021F056E - 2 ; case 1
- .short _021F059E - _021F056E - 2 ; case 2
- .short _021F059E - _021F056E - 2 ; case 3
- .short _021F05BA - _021F056E - 2 ; case 4
- .short _021F05BA - _021F056E - 2 ; case 5
- .short _021F05BA - _021F056E - 2 ; case 6
- .short _021F05BA - _021F056E - 2 ; case 7
- .short _021F059E - _021F056E - 2 ; case 8
- .short _021F059E - _021F056E - 2 ; case 9
- .short _021F059E - _021F056E - 2 ; case 10
- .short _021F059E - _021F056E - 2 ; case 11
- .short _021F05BA - _021F056E - 2 ; case 12
- .short _021F05BA - _021F056E - 2 ; case 13
- .short _021F05BA - _021F056E - 2 ; case 14
- .short _021F05BA - _021F056E - 2 ; case 15
- .short _021F05BA - _021F056E - 2 ; case 16
- .short _021F05A8 - _021F056E - 2 ; case 17
- .short _021F059E - _021F056E - 2 ; case 18
- .short _021F059E - _021F056E - 2 ; case 19
- .short _021F059E - _021F056E - 2 ; case 20
- .short _021F059E - _021F056E - 2 ; case 21
- .short _021F059E - _021F056E - 2 ; case 22
- .short _021F059E - _021F056E - 2 ; case 23
-_021F059E:
- add r0, r4, #0
- bl FUN_02058628
- ldr r0, [r0, #4]
- pop {r4, pc}
-_021F05A8:
- add r0, r4, #0
- bl FUN_02058628
- ldr r0, [r0, #4]
- pop {r4, pc}
-_021F05B2:
- add r0, r4, #0
- bl MOD05_021F1C24
- pop {r4, pc}
-_021F05BA:
- add r0, r4, #0
- bl FUN_02058628
- ldr r0, [r0, #8]
- pop {r4, pc}
-
- thumb_func_start MOD05_021F05C4
-MOD05_021F05C4: ; 0x021F05C4
- push {r3, r4, r5, lr}
- mov r1, #0x18
- add r5, r0, #0
- bl FUN_02058604
- add r4, r0, #0
- mov r0, #0
- mvn r0, r0
- add r1, r4, #0
- strh r0, [r4]
- add r0, r5, #0
- add r1, #8
- bl MOD05_021F1FC8
- ldr r0, [r4, #8]
- cmp r0, #0
- beq _021F05EC
- add r0, r5, #0
- bl FUN_020586A0
-_021F05EC:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F05F0
-MOD05_021F05F0: ; 0x021F05F0
- push {r4, lr}
- add r4, r0, #0
- bl FUN_02058628
- add r1, r0, #0
- add r0, r4, #0
- add r1, #8
- bl MOD05_021F2060
- pop {r4, pc}
-
- thumb_func_start MOD05_021F0604
-MOD05_021F0604: ; 0x021F0604
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4, #8]
- cmp r0, #0
- beq _021F061C
- add r1, r4, #0
- add r1, #0xc
- bl MOD05_021F20D8
-_021F061C:
- add r4, #8
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2060
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058410
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0634
-MOD05_021F0634: ; 0x021F0634
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F0678
- ldr r0, [r4, #8]
- cmp r0, #0
- bne _021F0658
- add r1, r4, #0
- add r0, r5, #0
- add r1, #8
- bl MOD05_021F1FC8
-_021F0658:
- ldr r0, [r4, #8]
- cmp r0, #0
- beq _021F0678
- add r1, r4, #0
- add r1, #0xc
- bl MOD05_021F20F8
- ldr r1, [r4, #8]
- add r0, r5, #0
- bl MOD05_021F2F48
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058418
-_021F0678:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F067C
-MOD05_021F067C: ; 0x021F067C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r4, r0, #0
- bl FUN_02058628
- ldr r7, [r0, #8]
- add r0, r4, #0
- bl FUN_02058628
- str r0, [sp]
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F06E6
- cmp r7, #0
- beq _021F06E6
- add r0, r4, #0
- bl FUN_020584C4
- str r0, [sp, #4]
- add r0, r4, #0
- bl FUN_0205854C
- add r5, r0, #0
- cmp r5, #9
- blt _021F06B6
- bl GF_AssertFail
-_021F06B6:
- lsl r6, r5, #2
- ldr r5, _021F06EC ; UNK05_021FC4B4
- ldr r2, [sp]
- ldr r3, [sp, #4]
- ldr r5, [r5, r6]
- add r0, r4, #0
- add r1, r7, #0
- blx r5
- ldr r1, [sp, #4]
- ldr r0, [sp]
- strh r1, [r0]
- add r0, r4, #0
- bl FUN_0205854C
- ldr r1, [sp]
- str r0, [r1, #4]
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F2F48
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F19A4
-_021F06E6:
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F06EC: .word UNK05_021FC4B4
-
- thumb_func_start MOD05_021F06F0
-MOD05_021F06F0: ; 0x021F06F0
- push {r3, r4, r5, lr}
- add r4, r0, #0
- bl FUN_02058628
- add r5, r0, #0
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F071A
- ldr r5, [r5, #8]
- cmp r5, #0
- beq _021F071A
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F2F48
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F19A4
-_021F071A:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F071C
-MOD05_021F071C: ; 0x021F071C
- push {r3, r4, r5, lr}
- add r4, r0, #0
- bl FUN_02058628
- add r5, r0, #0
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F075A
- ldr r5, [r5, #8]
- cmp r5, #0
- beq _021F075A
- add r0, r4, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F074A
- mov r1, #1
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F074A:
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F2F48
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F19A4
-_021F075A:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F075C
-MOD05_021F075C: ; 0x021F075C
- push {r4, lr}
- mov r0, #0
- ldrsh r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F0780
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F0786
-_021F0780:
- add r0, r4, #0
- bl MOD05_021F194C
-_021F0786:
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F854
- pop {r4, pc}
-
- thumb_func_start MOD05_021F0790
-MOD05_021F0790: ; 0x021F0790
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsh r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F07B4
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F07B4:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F07C8
- mov r1, #2
- add r0, r4, #0
- lsl r1, r1, #0xa
- bl FUN_0201F854
-_021F07C8:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F07CC
-MOD05_021F07CC: ; 0x021F07CC
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsh r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F07F0
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F07F0:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F0804
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F0804:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0808
-MOD05_021F0808: ; 0x021F0808
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsh r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F082C
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F082C:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F0840
- mov r1, #2
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F0840:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0844
-MOD05_021F0844: ; 0x021F0844
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsh r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F0868
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F0868:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F087C
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xe
- bl FUN_0201F854
-_021F087C:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0880
-MOD05_021F0880: ; 0x021F0880
- push {r3, r4, r5, r6, lr}
- sub sp, #0x1c
- add r6, r0, #0
- add r4, r2, #0
- mov r0, #0
- ldrsh r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F08AC
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- mov r0, #0
- strh r0, [r4, #2]
-_021F08AC:
- ldr r0, [r4, #4]
- cmp r0, #6
- beq _021F08B6
- mov r0, #0
- strh r0, [r4, #2]
-_021F08B6:
- add r0, r6, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F08FC
- ldr r6, _021F0900 ; =UNK05_021FC43C
- 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, #2
- str r0, [r3]
- ldrsh r1, [r4, r1]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r2, r1]
- bl FUN_0201F854
- mov r0, #2
- ldrsh r1, [r4, r0]
- add r1, r1, #1
- strh r1, [r4, #2]
- ldrsh r0, [r4, r0]
- lsl r1, r0, #2
- add r0, sp, #0
- ldr r0, [r0, r1]
- cmp r0, #0
- bne _021F08FC
- mov r0, #0
- strh r0, [r4, #2]
-_021F08FC:
- add sp, #0x1c
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-_021F0900: .word UNK05_021FC43C
-
- thumb_func_start MOD05_021F0904
-MOD05_021F0904: ; 0x021F0904
- push {r4, r5, r6, lr}
- sub sp, #0x10
- add r6, r0, #0
- add r4, r2, #0
- mov r0, #0
- ldrsh r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F0930
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- mov r0, #0
- strh r0, [r4, #2]
-_021F0930:
- ldr r0, [r4, #4]
- cmp r0, #7
- beq _021F093A
- mov r0, #0
- strh r0, [r4, #2]
-_021F093A:
- add r0, r6, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F0978
- ldr r6, _021F097C ; =UNK05_021FC42C
- add r3, sp, #0
- add r2, r3, #0
- ldmia r6!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r6!, {r0, r1}
- stmia r3!, {r0, r1}
- mov r1, #2
- ldrsh r1, [r4, r1]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r2, r1]
- bl FUN_0201F854
- mov r0, #2
- ldrsh r1, [r4, r0]
- add r1, r1, #1
- strh r1, [r4, #2]
- ldrsh r0, [r4, r0]
- lsl r1, r0, #2
- add r0, sp, #0
- ldr r0, [r0, r1]
- cmp r0, #0
- bne _021F0978
- mov r0, #0
- strh r0, [r4, #2]
-_021F0978:
- add sp, #0x10
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F097C: .word UNK05_021FC42C
-
- thumb_func_start MOD05_021F0980
-MOD05_021F0980: ; 0x021F0980
- push {r4, r5, r6, lr}
- sub sp, #0x20
- add r6, r0, #0
- add r4, r2, #0
- mov r0, #0
- ldrsh r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F09AC
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- mov r0, #0
- strh r0, [r4, #2]
-_021F09AC:
- ldr r0, [r4, #4]
- cmp r0, #8
- beq _021F09B6
- mov r0, #0
- strh r0, [r4, #2]
-_021F09B6:
- add r0, r6, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F09FC
- ldr r6, _021F0A00 ; =UNK05_021FC494
- add r3, sp, #0
- 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}
- mov r1, #2
- ldrsh r1, [r4, r1]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r2, r1]
- bl FUN_0201F854
- mov r0, #2
- ldrsh r1, [r4, r0]
- add r1, r1, #1
- strh r1, [r4, #2]
- ldrsh r0, [r4, r0]
- lsl r1, r0, #2
- add r0, sp, #0
- ldr r0, [r0, r1]
- cmp r0, #0
- bne _021F09FC
- mov r0, #0
- strh r0, [r4, #2]
-_021F09FC:
- add sp, #0x20
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F0A00: .word UNK05_021FC494
-
- thumb_func_start MOD05_021F0A04
-MOD05_021F0A04: ; 0x021F0A04
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r4, r0, #0
- bl FUN_02058628
- ldr r7, [r0, #8]
- add r0, r4, #0
- bl FUN_02058628
- str r0, [sp]
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F0A6E
- cmp r7, #0
- beq _021F0A6E
- add r0, r4, #0
-
- thumb_func_start MOD05_021F0A28
-MOD05_021F0A28: ; 0x021F0A28
- bl FUN_020584C4
- str r0, [sp, #4]
- add r0, r4, #0
- bl FUN_0205854C
- add r5, r0, #0
- cmp r5, #0xa
- blt _021F0A3E
- bl GF_AssertFail
-_021F0A3E:
- lsl r6, r5, #2
- ldr r5, _021F0A74 ; =UNK05_021FC528
- ldr r2, [sp]
- ldr r3, [sp, #4]
- ldr r5, [r5, r6]
- add r0, r4, #0
- add r1, r7, #0
- blx r5
- ldr r1, [sp, #4]
- ldr r0, [sp]
- strh r1, [r0]
- add r0, r4, #0
- bl FUN_0205854C
- ldr r1, [sp]
- str r0, [r1, #4]
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F2F48
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F19A4
-_021F0A6E:
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F0A74: .word UNK05_021FC528
-
- thumb_func_start MOD05_021F0A78
-MOD05_021F0A78: ; 0x021F0A78
- push {r4, lr}
- mov r0, #0
- ldrsh r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- bne _021F0A8A
- ldr r0, [r2, #4]
- cmp r0, #9
- bne _021F0AA2
-_021F0A8A:
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F0AA8
-_021F0AA2:
- add r0, r4, #0
- bl MOD05_021F194C
-_021F0AA8:
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F854
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0AB4
-MOD05_021F0AB4: ; 0x021F0AB4
- push {r4, lr}
- ldr r0, [r2, #4]
- add r4, r1, #0
- cmp r0, #9
- beq _021F0ACE
- add r0, r4, #0
- mov r1, #4
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F0ACE:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0ADC
-MOD05_021F0ADC: ; 0x021F0ADC
- push {r3, r4, r5, lr}
- mov r1, #0x14
- add r5, r0, #0
- bl FUN_02058604
- add r4, r0, #0
- mov r0, #0
- mvn r0, r0
- strb r0, [r4]
- bl LCRandom
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x1c
- sub r1, r1, r2
- mov r0, #0x1c
- ror r1, r0
- add r0, r2, r1
- strb r0, [r4, #2]
- add r0, r5, #0
- add r1, r4, #4
- bl MOD05_021F1FC8
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F0B14
- add r0, r5, #0
- bl FUN_020586A0
-_021F0B14:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0B18
-MOD05_021F0B18: ; 0x021F0B18
- push {r4, lr}
- add r4, r0, #0
- bl FUN_02058628
- add r1, r0, #0
- add r0, r4, #0
- add r1, r1, #4
- bl MOD05_021F2060
- pop {r4, pc}
-
- thumb_func_start MOD05_021F0B2C
-MOD05_021F0B2C: ; 0x021F0B2C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F0B44
- add r1, r4, #0
- add r1, #8
- bl MOD05_021F20D8
-_021F0B44:
- add r0, r5, #0
- add r1, r4, #4
- bl MOD05_021F2060
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058410
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F0B58
-MOD05_021F0B58: ; 0x021F0B58
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F0B9A
- ldr r0, [r4, #4]
- cmp r0, #0
- bne _021F0B7A
- add r0, r5, #0
- add r1, r4, #4
- bl MOD05_021F1FC8
-_021F0B7A:
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F0B9A
- add r1, r4, #0
- add r1, #8
- bl MOD05_021F20F8
- ldr r1, [r4, #4]
- add r0, r5, #0
- bl MOD05_021F2F48
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058418
-_021F0B9A:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F0B9C
-MOD05_021F0B9C: ; 0x021F0B9C
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r6, [r0, #4]
- add r0, r5, #0
- bl FUN_02058628
- add r4, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F0C26
- cmp r6, #0
- beq _021F0C26
- add r0, r5, #0
- bl FUN_020584C4
- add r7, r0, #0
- add r0, r5, #0
- bl FUN_0205854C
- mov r1, #2
- ldrsb r0, [r4, r1]
- cmp r0, #0
- beq _021F0BE0
- sub r0, r0, #1
- strb r0, [r4, #2]
- add r0, r6, #0
- mov r1, #0
- bl FUN_0201F854
- b _021F0C0C
-_021F0BE0:
- add r0, r6, #0
- lsl r1, r1, #0xb
- bl FUN_0201F854
- mov r0, #1
- ldrsb r1, [r4, r0]
- add r1, r1, #1
- strb r1, [r4, #1]
- ldrsb r0, [r4, r0]
- cmp r0, #0x20
- blt _021F0C0C
- mov r0, #0
- strb r0, [r4, #1]
- bl LCRandom
- lsr r1, r0, #0x1f
- lsl r2, r0, #0x1c
- sub r2, r2, r1
- mov r0, #0x1c
- ror r2, r0
- add r0, r1, r2
- strb r0, [r4, #2]
-_021F0C0C:
- strb r7, [r4]
- add r0, r5, #0
- bl FUN_0205854C
- strb r0, [r4, #3]
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021F19A4
-_021F0C26:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F0C28
-MOD05_021F0C28: ; 0x021F0C28
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0, #8]
- add r0, r5, #0
- bl FUN_02058628
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F0CEA
- cmp r4, #0
- beq _021F0CEA
- add r0, r5, #0
- bl FUN_020584C4
- add r7, r0, #0
- add r0, r5, #0
- bl FUN_0205854C
- cmp r0, #0
- bne _021F0C9E
- cmp r7, #1
- bls _021F0C66
- mov r0, #1
- str r0, [sp, #4]
- b _021F0C6A
-_021F0C66:
- mov r0, #0
- str r0, [sp, #4]
-_021F0C6A:
- add r0, r4, #0
- bl FUN_0201F844
- ldr r1, [sp, #4]
- cmp r1, r0
- bne _021F0C7C
- ldr r0, [r6, #4]
- cmp r0, #0
- bne _021F0C94
-_021F0C7C:
- ldr r1, [sp, #4]
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F854
-_021F0C94:
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F854
- b _021F0CD0
-_021F0C9E:
- cmp r7, #1
- bls _021F0CA8
- mov r0, #1
- str r0, [sp]
- b _021F0CAC
-_021F0CA8:
- mov r0, #0
- str r0, [sp]
-_021F0CAC:
- add r0, r4, #0
- bl FUN_0201F844
- ldr r1, [sp]
- cmp r1, r0
- beq _021F0CC6
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F0CC6:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F0CD0:
- strh r7, [r6]
- add r0, r5, #0
- bl FUN_0205854C
- str r0, [r6, #4]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F19A4
-_021F0CEA:
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0CF0
-MOD05_021F0CF0: ; 0x021F0CF0
- push {r3, r4, r5, lr}
- mov r1, #0x14
- add r5, r0, #0
- bl FUN_02058604
- add r4, r0, #0
- mov r0, #0
- mvn r0, r0
- strb r0, [r4]
- add r0, r5, #0
- add r1, r4, #4
- bl MOD05_021F1FC8
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F0D16
- add r0, r5, #0
- bl FUN_020586A0
-_021F0D16:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F0D18
-MOD05_021F0D18: ; 0x021F0D18
- push {r3, r4, lr}
- sub sp, #0xc
- add r2, sp, #0
- mov r1, #0
- str r1, [r2]
- str r1, [r2, #4]
- add r4, r0, #0
- str r1, [r2, #8]
- bl FUN_02058628
- add r1, r0, #0
- add r0, r4, #0
- add r1, r1, #4
- bl MOD05_021F2060
- add r0, r4, #0
- add r1, sp, #0
- bl FUN_02058B94
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0D44
-MOD05_021F0D44: ; 0x021F0D44
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F0D5C
- add r1, r4, #0
- add r1, #8
- bl MOD05_021F20D8
-_021F0D5C:
- add r0, r5, #0
- add r1, r4, #4
- bl MOD05_021F2060
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058410
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F0D70
-MOD05_021F0D70: ; 0x021F0D70
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F0DB2
- ldr r0, [r4, #4]
- cmp r0, #0
- bne _021F0D92
- add r0, r5, #0
- add r1, r4, #4
- bl MOD05_021F1FC8
-_021F0D92:
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F0DB2
- add r1, r4, #0
- add r1, #8
- bl MOD05_021F20F8
- ldr r1, [r4, #4]
- add r0, r5, #0
- bl MOD05_021F2F48
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058418
-_021F0DB2:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F0DB4
-MOD05_021F0DB4: ; 0x021F0DB4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r4, r0, #0
- bl FUN_02058628
- ldr r7, [r0, #4]
- add r0, r4, #0
- bl FUN_02058628
- str r0, [sp]
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F0E1E
- cmp r7, #0
- beq _021F0E1E
- add r0, r4, #0
- bl FUN_020584C4
- str r0, [sp, #4]
- add r0, r4, #0
- bl FUN_0205854C
- add r5, r0, #0
- cmp r5, #0xa
- blt _021F0DEE
- bl GF_AssertFail
-_021F0DEE:
- lsl r6, r5, #2
- ldr r5, _021F0E24 ; =UNK05_021FC500
- ldr r2, [sp]
- ldr r3, [sp, #4]
- ldr r5, [r5, r6]
- add r0, r4, #0
- add r1, r7, #0
- blx r5
- ldr r1, [sp, #4]
- ldr r0, [sp]
- strb r1, [r0]
- add r0, r4, #0
- bl FUN_0205854C
- ldr r1, [sp]
- strb r0, [r1, #2]
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F2F48
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F19A4
-_021F0E1E:
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F0E24: .word UNK05_021FC500
-
- thumb_func_start MOD05_021F0E28
-MOD05_021F0E28: ; 0x021F0E28
- push {r3, r4, r5, lr}
- add r4, r2, #0
- mov r0, #0
- ldrsb r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F0E56
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- ldrb r1, [r4, #3]
- mov r0, #1
- bic r1, r0
- strb r1, [r4, #3]
- pop {r3, r4, r5, pc}
-_021F0E56:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #9
- bne _021F0E6C
- ldrb r1, [r4, #3]
- mov r0, #1
- bic r1, r0
- mov r0, #1
- orr r0, r1
- strb r0, [r4, #3]
- pop {r3, r4, r5, pc}
-_021F0E6C:
- ldrb r0, [r4, #3]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- cmp r0, #1
- bne _021F0E8E
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F1980
- ldrb r1, [r4, #3]
- mov r0, #1
- bic r1, r0
- strb r1, [r4, #3]
- pop {r3, r4, r5, pc}
-_021F0E8E:
- add r0, r5, #0
- bl MOD05_021F194C
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0E98
-MOD05_021F0E98: ; 0x021F0E98
- push {r4, r5, r6, lr}
- add r6, r0, #0
- add r4, r2, #0
- mov r0, #0
- ldrsb r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F0EC0
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F0EF6
-_021F0EC0:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #9
- bne _021F0ED6
- ldrb r1, [r4, #3]
- mov r0, #1
- bic r1, r0
- mov r0, #1
- orr r0, r1
- strb r0, [r4, #3]
- pop {r4, r5, r6, pc}
-_021F0ED6:
- ldrb r0, [r4, #3]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- cmp r0, #1
- bne _021F0EF6
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F1980
- ldrb r1, [r4, #3]
- mov r0, #1
- bic r1, r0
- strb r1, [r4, #3]
-_021F0EF6:
- add r0, r6, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F0F0A
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0xa
- bl FUN_0201F854
-_021F0F0A:
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F0F0C
-MOD05_021F0F0C: ; 0x021F0F0C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsb r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F0F32
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F0F48
-_021F0F32:
- mov r0, #2
- ldrsb r0, [r2, r0]
- cmp r0, #9
- bne _021F0F48
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021F1980
-_021F0F48:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F0F5C
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F0F5C:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0F60
-MOD05_021F0F60: ; 0x021F0F60
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsb r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F0F86
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F0F9C
-_021F0F86:
- mov r0, #2
- ldrsb r0, [r2, r0]
- cmp r0, #9
- bne _021F0F9C
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021F1980
-_021F0F9C:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F0FB0
- mov r1, #2
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F0FB0:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F0FB4
-MOD05_021F0FB4: ; 0x021F0FB4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsb r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F0FDA
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F0FF0
-_021F0FDA:
- mov r0, #2
- ldrsb r0, [r2, r0]
- cmp r0, #9
- bne _021F0FF0
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021F1980
-_021F0FF0:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F1004
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xe
- bl FUN_0201F854
-_021F1004:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1008
-MOD05_021F1008: ; 0x021F1008
- push {r3, r4, r5, r6, lr}
- sub sp, #0x1c
- add r6, r0, #0
- add r4, r2, #0
- mov r0, #0
- ldrsb r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F1036
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- mov r0, #0
- strb r0, [r4, #1]
- b _021F104C
-_021F1036:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #9
- bne _021F104C
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F1980
-_021F104C:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #6
- beq _021F1058
- mov r0, #0
- strb r0, [r4, #1]
-_021F1058:
- add r0, r6, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F109E
- ldr r6, _021F10A4 ; =UNK05_021FC458
- 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, #1
- str r0, [r3]
- ldrsb r1, [r4, r1]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r2, r1]
- bl FUN_0201F854
- mov r0, #1
- ldrsb r1, [r4, r0]
- add r1, r1, #1
- strb r1, [r4, #1]
- ldrsb r0, [r4, r0]
- lsl r1, r0, #2
- add r0, sp, #0
- ldr r0, [r0, r1]
- cmp r0, #0
- bne _021F109E
- mov r0, #0
- strb r0, [r4, #1]
-_021F109E:
- add sp, #0x1c
- pop {r3, r4, r5, r6, pc}
- nop
-_021F10A4: .word UNK05_021FC458
-
- thumb_func_start MOD05_021F10A8
-MOD05_021F10A8: ; 0x021F10A8
- push {r4, r5, r6, lr}
- sub sp, #0x10
- add r6, r0, #0
- add r4, r2, #0
- mov r0, #0
- ldrsb r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F10D6
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- mov r0, #0
- strb r0, [r4, #1]
- b _021F10EC
-_021F10D6:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #9
- bne _021F10EC
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F1980
-_021F10EC:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #7
- beq _021F10F8
- mov r0, #0
- strb r0, [r4, #1]
-_021F10F8:
- add r0, r6, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F1136
- ldr r6, _021F113C ; =UNK05_021FC3EC
- add r3, sp, #0
- add r2, r3, #0
- ldmia r6!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r6!, {r0, r1}
- stmia r3!, {r0, r1}
- mov r1, #1
- ldrsb r1, [r4, r1]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r2, r1]
- bl FUN_0201F854
- mov r0, #1
- ldrsb r1, [r4, r0]
- add r1, r1, #1
- strb r1, [r4, #1]
- ldrsb r0, [r4, r0]
- lsl r1, r0, #2
- add r0, sp, #0
- ldr r0, [r0, r1]
- cmp r0, #0
- bne _021F1136
- mov r0, #0
- strb r0, [r4, #1]
-_021F1136:
- add sp, #0x10
- pop {r4, r5, r6, pc}
- nop
-_021F113C: .word UNK05_021FC3EC
-
- thumb_func_start MOD05_021F1140
-MOD05_021F1140: ; 0x021F1140
- push {r4, r5, r6, lr}
- sub sp, #0x20
- add r6, r0, #0
- add r4, r2, #0
- mov r0, #0
- ldrsb r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- beq _021F116E
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- mov r0, #0
- strb r0, [r4, #1]
- b _021F1184
-_021F116E:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #9
- bne _021F1184
- add r0, r3, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F1980
-_021F1184:
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #8
- beq _021F1190
- mov r0, #0
- strb r0, [r4, #1]
-_021F1190:
- add r0, r6, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F11D6
- ldr r6, _021F11DC ; =UNK05_021FC474
- add r3, sp, #0
- 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}
- mov r1, #1
- ldrsb r1, [r4, r1]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r2, r1]
- bl FUN_0201F854
- mov r0, #1
- ldrsb r1, [r4, r0]
- add r1, r1, #1
- strb r1, [r4, #1]
- ldrsb r0, [r4, r0]
- lsl r1, r0, #2
- add r0, sp, #0
- ldr r0, [r0, r1]
- cmp r0, #0
- bne _021F11D6
- mov r0, #0
- strb r0, [r4, #1]
-_021F11D6:
- add sp, #0x20
- pop {r4, r5, r6, pc}
- nop
-_021F11DC: .word UNK05_021FC474
-
- thumb_func_start MOD05_021F11E0
-MOD05_021F11E0: ; 0x021F11E0
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0
- ldrsb r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- beq _021F1206
- add r0, r3, #0
- bl MOD05_021F2FB8
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F121E
-_021F1206:
- mov r0, #2
- ldrsb r0, [r2, r0]
- cmp r0, #9
- beq _021F121E
- add r0, r3, #0
- bl MOD05_021F2FB8
- add r1, r0, #0
- add r0, r4, #0
- mov r2, #4
- bl MOD05_021F1958
-_021F121E:
- add r0, r5, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F1232
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F1232:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F1234
-MOD05_021F1234: ; 0x021F1234
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r7, r0, #0
- bl FUN_02058628
- ldr r0, [r0, #4]
- str r0, [sp]
- add r0, r7, #0
- bl FUN_02058628
- add r4, r0, #0
- add r0, r7, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F12B6
- ldr r0, [sp]
- cmp r0, #0
- beq _021F12B6
- add r0, r7, #0
- bl FUN_020584C4
- str r0, [sp, #8]
- add r0, r7, #0
- bl FUN_0205854C
- str r0, [sp, #4]
- cmp r0, #0xc
- blt _021F1272
- bl GF_AssertFail
-_021F1272:
- mov r1, #2
- ldrsb r2, [r4, r1]
- cmp r2, #0
- bne _021F128C
- ldr r0, [sp, #4]
- cmp r0, r2
- beq _021F128C
- ldrb r0, [r4, #3]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- bne _021F128C
- sub r0, r1, #3
- strb r0, [r4]
-_021F128C:
- ldr r5, [sp, #4]
- ldr r1, [sp]
- lsl r6, r5, #2
- ldr r5, _021F12BC ; =UNK05_021FC4D8
- ldr r3, [sp, #8]
- ldr r5, [r5, r6]
- add r0, r7, #0
- add r2, r4, #0
- blx r5
- ldr r0, [sp, #8]
- ldr r1, [sp]
- strb r0, [r4]
- ldr r0, [sp, #4]
- strb r0, [r4, #2]
- add r0, r7, #0
- bl MOD05_021F2F48
- ldr r1, [sp]
- add r0, r7, #0
- bl MOD05_021F19A4
-_021F12B6:
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- nop
-_021F12BC: .word UNK05_021FC4D8
-
- thumb_func_start MOD05_021F12C0
-MOD05_021F12C0: ; 0x021F12C0
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x10
- add r6, r3, #0
- add r4, r2, #0
- add r2, sp, #0
- ldr r3, _021F1348 ; =UNK05_021FC3FC
- add r5, r1, #0
- add r7, r2, #0
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- lsl r0, r6, #2
- ldr r1, [r7, r0]
- mov r0, #0
- ldrsb r0, [r4, r0]
- cmp r6, r0
- beq _021F12FE
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- ldrb r1, [r4, #3]
- mov r0, #1
- add sp, #0x10
- bic r1, r0
- strb r1, [r4, #3]
- pop {r3, r4, r5, r6, r7, pc}
-_021F12FE:
- mov r2, #2
- ldrsb r0, [r4, r2]
- cmp r0, #0
- beq _021F1316
- ldrb r1, [r4, #3]
- mov r0, #1
- add sp, #0x10
- bic r1, r0
- mov r0, #1
- orr r0, r1
- strb r0, [r4, #3]
- pop {r3, r4, r5, r6, r7, pc}
-_021F1316:
- ldrb r0, [r4, #3]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- cmp r0, #1
- bne _021F133A
- add r0, r5, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- ldrb r1, [r4, #3]
- mov r0, #1
- add sp, #0x10
- bic r1, r0
- strb r1, [r4, #3]
- pop {r3, r4, r5, r6, r7, pc}
-_021F133A:
- add r0, r5, #0
- lsl r1, r2, #0xb
- bl FUN_0201F854
- add sp, #0x10
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F1348: .word UNK05_021FC3FC
-
- thumb_func_start MOD05_021F134C
-MOD05_021F134C: ; 0x021F134C
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- add r0, r3, #0
- add r5, r1, #0
- add r6, r2, #0
- str r3, [sp]
- bl MOD05_021F2FC4
- add r4, r0, #0
- mov r0, #0
- ldrsb r1, [r6, r0]
- ldr r0, [sp]
- cmp r0, r1
- bne _021F1370
- mov r0, #2
- ldrsb r0, [r6, r0]
- cmp r0, #0
- beq _021F1382
-_021F1370:
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F13B2
-_021F1382:
- cmp r0, #0xa
- beq _021F1398
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F13B2
-_021F1398:
- add r0, r5, #0
- bl FUN_0201F844
- cmp r4, r0
- beq _021F13B2
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
-_021F13B2:
- add r0, r7, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F13C6
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0xa
- bl FUN_0201F854
-_021F13C6:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F13C8
-MOD05_021F13C8: ; 0x021F13C8
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- add r0, r3, #0
- add r5, r1, #0
- add r6, r2, #0
- str r3, [sp]
- bl MOD05_021F2FC4
- add r4, r0, #0
- mov r0, #0
- ldrsb r1, [r6, r0]
- ldr r0, [sp]
- cmp r0, r1
- beq _021F13F6
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F142A
-_021F13F6:
- mov r0, #2
- ldrsb r0, [r6, r0]
- cmp r0, #0xb
- beq _021F1410
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
- b _021F142A
-_021F1410:
- add r0, r5, #0
- bl FUN_0201F844
- cmp r4, r0
- beq _021F142A
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F890
-_021F142A:
- add r0, r7, #0
- bl MOD05_021F1DFC
- cmp r0, #0
- bne _021F143E
- mov r1, #1
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F143E:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F1440
-MOD05_021F1440: ; 0x021F1440
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r4, r0, #0
- bl FUN_02058628
- ldr r7, [r0, #4]
- add r0, r4, #0
- bl FUN_02058628
- str r0, [sp]
- cmp r7, #0
- beq _021F14B4
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F14B4
- add r0, r4, #0
- bl FUN_020584C4
- str r0, [sp, #4]
- add r0, r4, #0
- bl FUN_0205854C
- add r5, r0, #0
- cmp r5, #4
- blt _021F147A
- bl GF_AssertFail
-_021F147A:
- lsl r6, r5, #2
- ldr r5, _021F14B8 ; =UNK05_021FC40C
- ldr r2, [sp]
- ldr r3, [sp, #4]
- ldr r5, [r5, r6]
- add r0, r4, #0
- add r1, r7, #0
- blx r5
- ldr r2, [sp, #4]
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F1658
- ldr r1, [sp, #4]
- ldr r0, [sp]
- strb r1, [r0]
- add r0, r4, #0
- bl FUN_0205854C
- ldr r1, [sp]
- strb r0, [r1, #2]
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F2F48
- add r0, r4, #0
- add r1, r7, #0
- bl MOD05_021F19A4
-_021F14B4:
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F14B8: .word UNK05_021FC40C
-
- thumb_func_start MOD05_021F14BC
-MOD05_021F14BC: ; 0x021F14BC
- push {r4, lr}
- mov r0, #0
- ldrsb r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- bne _021F14D0
- mov r0, #2
- ldrsb r0, [r2, r0]
- cmp r0, #0
- beq _021F14E6
-_021F14D0:
- ldr r1, _021F1508 ; =UNK05_021FC41C
- lsl r2, r3, #2
- ldr r1, [r1, r2]
- add r0, r4, #0
- bl FUN_0201F830
- mov r1, #0xf
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F890
-_021F14E6:
- add r0, r4, #0
- bl FUN_0201F8C0
- mov r1, #1
- lsl r1, r1, #0xc
- sub r1, r0, r1
- bpl _021F14F6
- mov r1, #0
-_021F14F6:
- add r0, r4, #0
- bl FUN_0201F890
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F854
- pop {r4, pc}
- nop
-_021F1508: .word UNK05_021FC41C
-
- thumb_func_start MOD05_021F150C
-MOD05_021F150C: ; 0x021F150C
- push {r4, lr}
- mov r0, #0
- ldrsb r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- bne _021F1520
- mov r0, #2
- ldrsb r0, [r2, r0]
- cmp r0, #1
- beq _021F1534
-_021F1520:
- ldr r1, _021F1540 ; =UNK05_021FC41C
- lsl r2, r3, #2
- ldr r1, [r1, r2]
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F1534:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
- pop {r4, pc}
- .balign 4, 0
-_021F1540: .word UNK05_021FC41C
-
- thumb_func_start MOD05_021F1544
-MOD05_021F1544: ; 0x021F1544
- push {r3, r4, r5, lr}
- add r4, r2, #0
- mov r0, #0
- ldrsb r0, [r4, r0]
- add r5, r1, #0
- cmp r3, r0
- bne _021F155A
- mov r0, #2
- ldrsb r0, [r4, r0]
- cmp r0, #2
- beq _021F1578
-_021F155A:
- ldr r1, _021F1604 ; =UNK05_021FC41C
- lsl r2, r3, #2
- ldr r1, [r1, r2]
- add r0, r5, #0
- bl FUN_0201F830
- mov r1, #0xf
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0201F890
- ldrb r1, [r4, #3]
- mov r0, #0xfe
- bic r1, r0
- strb r1, [r4, #3]
-_021F1578:
- add r0, r5, #0
- bl FUN_0201F8C0
- add r1, r0, #0
- ldrb r0, [r4, #3]
- lsl r2, r0, #0x18
- lsr r2, r2, #0x19
- beq _021F1592
- cmp r2, #1
- beq _021F15B4
- cmp r2, #2
- beq _021F15DA
- b _021F15F4
-_021F1592:
- mov r3, #1
- lsl r3, r3, #0xc
- sub r1, r1, r3
- mov r3, #0xa
- lsl r3, r3, #0xc
- cmp r1, r3
- bgt _021F15F4
- add r2, r2, #1
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- mov r3, #0xfe
- lsl r2, r2, #0x19
- bic r0, r3
- lsr r2, r2, #0x18
- orr r0, r2
- strb r0, [r4, #3]
- b _021F15F4
-_021F15B4:
- mov r3, #1
- lsl r3, r3, #0xc
- add r1, r1, r3
- mov r3, #0xf
- lsl r3, r3, #0xc
- cmp r1, r3
- blt _021F15F4
- add r2, r2, #1
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- mov r3, #0xfe
- lsl r2, r2, #0x19
- bic r0, r3
- lsr r2, r2, #0x18
- orr r0, r2
- strb r0, [r4, #3]
- mov r0, #0
- strb r0, [r4, #1]
- b _021F15F4
-_021F15DA:
- mov r0, #1
- ldrsb r2, [r4, r0]
- add r2, r2, #1
- strb r2, [r4, #1]
- ldrsb r0, [r4, r0]
- cmp r0, #0x1e
- blt _021F15F4
- mov r0, #0
- strb r0, [r4, #1]
- ldrb r2, [r4, #3]
- mov r0, #0xfe
- bic r2, r0
- strb r2, [r4, #3]
-_021F15F4:
- add r0, r5, #0
- bl FUN_0201F890
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F854
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021F1604: .word UNK05_021FC41C
-
- thumb_func_start MOD05_021F1608
-MOD05_021F1608: ; 0x021F1608
- push {r4, lr}
- mov r0, #0
- ldrsb r0, [r2, r0]
- add r4, r1, #0
- cmp r3, r0
- bne _021F161C
- mov r0, #2
- ldrsb r0, [r2, r0]
- cmp r0, #3
- beq _021F1632
-_021F161C:
- ldr r1, _021F1654 ; =UNK05_021FC41C
- lsl r2, r3, #2
- ldr r1, [r1, r2]
- add r0, r4, #0
- bl FUN_0201F830
- mov r1, #0xf
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F890
-_021F1632:
- add r0, r4, #0
- bl FUN_0201F8C0
- mov r1, #1
- lsl r1, r1, #0xc
- sub r1, r0, r1
- bpl _021F1642
- mov r1, #0
-_021F1642:
- add r0, r4, #0
- bl FUN_0201F890
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F854
- pop {r4, pc}
- nop
-_021F1654: .word UNK05_021FC41C
-
- thumb_func_start MOD05_021F1658
-MOD05_021F1658: ; 0x021F1658
- push {r4, r5, lr}
- sub sp, #0xc
- add r5, r0, #0
- add r4, r2, #0
- add r2, sp, #0
- mov r0, #0
- str r0, [r2]
- str r0, [r2, #4]
- str r0, [r2, #8]
- add r0, r1, #0
- bl FUN_0201F880
- asr r1, r0, #0xb
- lsr r1, r1, #0x14
- add r1, r0, r1
- asr r0, r1, #0xc
- cmp r4, #3
- bhi _021F16BE
- add r1, r4, r4
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021F1688: ; jump table
- .short _021F16BE - _021F1688 - 2 ; case 0
- .short _021F1690 - _021F1688 - 2 ; case 1
- .short _021F169C - _021F1688 - 2 ; case 2
- .short _021F16AE - _021F1688 - 2 ; case 3
-_021F1690:
- cmp r0, #0x18
- blt _021F16BE
- mov r0, #6
- lsl r0, r0, #0xc
- str r0, [sp, #8]
- b _021F16BE
-_021F169C:
- cmp r0, #0x28
- bge _021F16A8
- mov r0, #1
- lsl r0, r0, #0xc
- str r0, [sp]
- b _021F16BE
-_021F16A8:
- ldr r0, _021F16CC ; =0xFFFFB000
- str r0, [sp]
- b _021F16BE
-_021F16AE:
- cmp r0, #0x38
- bge _021F16B8
- ldr r0, _021F16D0 ; =0xFFFFF000
- str r0, [sp]
- b _021F16BE
-_021F16B8:
- mov r0, #5
- lsl r0, r0, #0xc
- str r0, [sp]
-_021F16BE:
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_02058B94
- add sp, #0xc
- pop {r4, r5, pc}
- nop
-_021F16CC: .word 0xFFFFB000
-_021F16D0: .word 0xFFFFF000
-
- thumb_func_start MOD05_021F16D4
-MOD05_021F16D4: ; 0x021F16D4
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0, #4]
- add r0, r5, #0
- bl FUN_02058628
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F1734
- cmp r4, #0
- beq _021F1734
- add r0, r5, #0
- bl FUN_020584C4
- add r7, r0, #0
- strb r7, [r6]
- add r0, r5, #0
- bl FUN_0205854C
- strb r0, [r6, #2]
- add r0, r7, #0
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F854
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F19A4
-_021F1734:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1738
-MOD05_021F1738: ; 0x021F1738
- push {r4, r5, r6, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0, #4]
- add r0, r5, #0
- bl FUN_02058628
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F179C
- cmp r4, #0
- beq _021F179C
- add r0, r5, #0
- bl FUN_020584C4
- strb r0, [r6]
- add r0, r5, #0
- bl FUN_0205854C
- strb r0, [r6, #2]
- add r0, r4, #0
- bl FUN_0201F844
- cmp r0, #0
- beq _021F1782
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F1782:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F19A4
-_021F179C:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F17A0
-MOD05_021F17A0: ; 0x021F17A0
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0, #4]
- add r0, r5, #0
- bl FUN_02058628
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F1836
- cmp r4, #0
- beq _021F1836
- add r0, r5, #0
- bl FUN_020584C4
- add r7, r0, #0
- add r0, r5, #0
- bl FUN_0205854C
- cmp r0, #0
- bne _021F17F8
- add r0, r4, #0
- bl FUN_0201F844
- cmp r0, #1
- beq _021F17EC
- add r0, r4, #0
- mov r1, #1
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F17EC:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
- b _021F181C
-_021F17F8:
- add r0, r4, #0
- bl FUN_0201F844
- cmp r0, #0
- beq _021F1812
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F1812:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F181C:
- strb r7, [r6]
- add r0, r5, #0
- bl FUN_0205854C
- strb r0, [r6, #2]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F19A4
-_021F1836:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F1838
-MOD05_021F1838: ; 0x021F1838
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0, #4]
- add r0, r5, #0
- bl FUN_02058628
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F18A0
- cmp r4, #0
- beq _021F18A0
- add r0, r5, #0
- bl FUN_020584C4
- mov r1, #0
- ldrsb r1, [r6, r1]
- add r7, r0, #0
- cmp r7, r1
- beq _021F187C
- bl MOD05_021F2FAC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F187C:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F19A4
- add r0, r5, #0
- strb r7, [r6]
- bl FUN_0205854C
- strb r0, [r6, #2]
-_021F18A0:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F18A4
-MOD05_021F18A4: ; 0x021F18A4
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0, #4]
- add r0, r5, #0
- bl FUN_02058628
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F191A
- cmp r4, #0
- beq _021F191A
- add r0, r5, #0
- bl FUN_020584C4
- str r0, [sp]
- add r0, r5, #0
- bl FUN_0205854C
- add r7, r0, #0
- mov r0, #2
- ldrsb r0, [r6, r0]
- cmp r7, r0
- beq _021F18FA
- cmp r7, #0
- bne _021F18EA
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F830
- b _021F18F2
-_021F18EA:
- add r0, r4, #0
- mov r1, #1
- bl FUN_0201F830
-_021F18F2:
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
-_021F18FA:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
- ldr r0, [sp]
- add r1, r4, #0
- strb r0, [r6]
- add r0, r5, #0
- strb r7, [r6, #2]
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F19A4
-_021F191A:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F191C
-MOD05_021F191C: ; 0x021F191C
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r6, r1, #0
- bl FUN_0201F8C0
- asr r1, r0, #0xb
- lsr r1, r1, #0x14
- add r1, r0, r1
- asr r4, r1, #0xc
- add r0, r4, #0
- add r1, r6, #0
- bl _s32_div_f
- sub r1, r4, r1
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0201F890
- add r0, r5, #0
- mov r1, #0
- bl FUN_0201F854
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F194C
-MOD05_021F194C: ; 0x021F194C
- ldr r3, _021F1954 ; =MOD05_021F191C
- mov r1, #8
- bx r3
- nop
-_021F1954: .word MOD05_021F191C
-
- thumb_func_start MOD05_021F1958
-MOD05_021F1958: ; 0x021F1958
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- add r1, r2, #0
- bl MOD05_021F191C
- add r0, r5, #0
- bl FUN_0201F8C0
- add r6, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- add r1, r6, #0
- bl FUN_0201F890
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1980
-MOD05_021F1980: ; 0x021F1980
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F194C
- add r0, r5, #0
- bl FUN_0201F8C0
- add r6, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_0201F830
- add r0, r5, #0
- add r1, r6, #0
- bl FUN_0201F890
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F19A4
-MOD05_021F19A4: ; 0x021F19A4
- push {r4, r5, r6, lr}
- mov r4, #1
- add r6, r1, #0
- lsl r1, r4, #9
- add r5, r0, #0
- bl FUN_0205842C
- cmp r0, #1
- bne _021F19B8
- mov r4, #0
-_021F19B8:
- mov r1, #1
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0205842C
- cmp r0, #1
- bne _021F19D6
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0205842C
- cmp r0, #0
- bne _021F19D6
- mov r4, #0
-_021F19D6:
- lsl r1, r4, #0x18
- add r0, r6, #0
- lsr r1, r1, #0x18
- bl FUN_0201F80C
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F19E4
-MOD05_021F19E4: ; 0x021F19E4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r1, #4
- bl FUN_02058604
- add r4, r0, #0
- add r0, r5, #0
- bl MOD06_0224A130
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F19FC
-MOD05_021F19FC: ; 0x021F19FC
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r1, #4
- bl FUN_02058604
- add r4, r0, #0
- add r0, r5, #0
- bl MOD06_0224A6B8
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1A14
-MOD05_021F1A14: ; 0x021F1A14
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r1, #4
- bl FUN_02058604
- add r4, r0, #0
- add r0, r5, #0
- bl MOD06_0224A8D4
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1A2C
-MOD05_021F1A2C: ; 0x021F1A2C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r1, #4
- bl FUN_02058604
- add r4, r0, #0
- add r0, r5, #0
- bl MOD06_0224AA40
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1A44
-MOD05_021F1A44: ; 0x021F1A44
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F1A48
-MOD05_021F1A48: ; 0x021F1A48
- push {r4, lr}
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1A5E
- bl MOD05_021E4DE4
- mov r0, #0
- str r0, [r4]
-_021F1A5E:
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1A60
-MOD05_021F1A60: ; 0x021F1A60
- push {r4, lr}
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1A76
- bl MOD05_021E4DE4
- mov r0, #0
- str r0, [r4]
-_021F1A76:
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1A78
-MOD05_021F1A78: ; 0x021F1A78
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1A8C
- bl GF_AssertFail
-_021F1A8C:
- add r0, r5, #0
- bl MOD06_0224A130
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1A98
-MOD05_021F1A98: ; 0x021F1A98
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1AAC
- bl GF_AssertFail
-_021F1AAC:
- add r0, r5, #0
- bl MOD06_0224A6B8
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1AB8
-MOD05_021F1AB8: ; 0x021F1AB8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1ACC
- bl GF_AssertFail
-_021F1ACC:
- add r0, r5, #0
- bl MOD06_0224A8D4
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1AD8
-MOD05_021F1AD8: ; 0x021F1AD8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1AEC
- bl GF_AssertFail
-_021F1AEC:
- add r0, r5, #0
- bl MOD06_0224AA40
- str r0, [r4]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1AF8
-MOD05_021F1AF8: ; 0x021F1AF8
- push {r4, lr}
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- bl MOD06_0224A6FC
- mov r0, #0
- str r0, [r4]
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1B0C
-MOD05_021F1B0C: ; 0x021F1B0C
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- bl MOD05_021F1C34
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- add r0, r4, #0
- add r1, sp, #0
- bl FUN_02058BB4
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1B2C
-MOD05_021F1B2C: ; 0x021F1B2C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0]
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F1B54
- cmp r4, #0
- beq _021F1B54
- add r0, r5, #0
- bl MOD05_021F1C48
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xc
- bl FUN_0201F854
-_021F1B54:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1B58
-MOD05_021F1B58: ; 0x021F1B58
- ldr r3, _021F1B5C ; =MOD05_021F1CA4
- bx r3
- .balign 4, 0
-_021F1B5C: .word MOD05_021F1CA4
-
- thumb_func_start MOD05_021F1B60
-MOD05_021F1B60: ; 0x021F1B60
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1B76
- add r1, r4, #4
- bl MOD05_021F20D8
-_021F1B76:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2060
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058410
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1B8C
-MOD05_021F1B8C: ; 0x021F1B8C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- add r4, r0, #0
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F1BCC
- ldr r0, [r4]
- cmp r0, #0
- bne _021F1BAE
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F1FC8
-_021F1BAE:
- ldr r0, [r4]
- cmp r0, #0
- beq _021F1BCC
- add r1, r4, #4
- bl MOD05_021F20F8
- ldr r1, [r4]
- add r0, r5, #0
- bl MOD05_021F2F48
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0x14
- bl FUN_02058418
-_021F1BCC:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1BD0
-MOD05_021F1BD0: ; 0x021F1BD0
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- bl MOD05_021F1C34
- mov r1, #0
- mov r0, #6
- lsl r0, r0, #0xe
- str r0, [sp, #4]
- str r1, [sp]
- str r1, [sp, #8]
- add r0, r4, #0
- add r1, sp, #0
- bl FUN_02058BB4
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1BF4
-MOD05_021F1BF4: ; 0x021F1BF4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0]
- add r0, r5, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F1C12
- cmp r4, #0
- beq _021F1C12
- add r0, r5, #0
- bl MOD05_021F1C48
-_021F1C12:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F1C14
-MOD05_021F1C14: ; 0x021F1C14
- ldr r3, _021F1C18 ; =MOD05_021F1CA4
- bx r3
- .balign 4, 0
-_021F1C18: .word MOD05_021F1CA4
-
- thumb_func_start MOD05_021F1C1C
-MOD05_021F1C1C: ; 0x021F1C1C
- ldr r3, _021F1C20 ; =FUN_02058628
- bx r3
- .balign 4, 0
-_021F1C20: .word FUN_02058628
-
- thumb_func_start MOD05_021F1C24
-MOD05_021F1C24: ; 0x021F1C24
- push {r3, lr}
- bl FUN_02058628
- bl MOD05_021F1C30
- pop {r3, pc}
-
- thumb_func_start MOD05_021F1C30
-MOD05_021F1C30: ; 0x021F1C30
- ldr r0, [r0]
- bx lr
-
- thumb_func_start MOD05_021F1C34
-MOD05_021F1C34: ; 0x021F1C34
- push {r4, lr}
- add r4, r0, #0
- mov r1, #0x10
- bl FUN_02058604
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021F1FC8
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1C48
-MOD05_021F1C48: ; 0x021F1C48
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl FUN_02058628
- ldr r4, [r0]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2F48
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F1C64
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F1C64
-MOD05_021F1C64: ; 0x021F1C64
- push {r4, r5, r6, lr}
- mov r4, #1
- add r6, r1, #0
- lsl r1, r4, #9
- add r5, r0, #0
- bl FUN_0205842C
- cmp r0, #1
- bne _021F1C78
- mov r4, #0
-_021F1C78:
- mov r1, #1
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0205842C
- cmp r0, #1
- bne _021F1C96
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0205842C
- cmp r0, #0
- bne _021F1C96
- mov r4, #0
-_021F1C96:
- lsl r1, r4, #0x18
- add r0, r6, #0
- lsr r1, r1, #0x18
- bl FUN_0201F80C
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1CA4
-MOD05_021F1CA4: ; 0x021F1CA4
- push {r4, lr}
- add r4, r0, #0
- bl FUN_02058628
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021F2060
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1CB8
-MOD05_021F1CB8: ; 0x021F1CB8
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- add r4, r1, #0
- mov r1, #1
- add r5, r0, #0
- add r6, r2, #0
- add r7, r3, #0
- bl FUN_02058390
- cmp r0, #0
- beq _021F1CD2
- bl GF_AssertFail
-_021F1CD2:
- add r0, r5, #0
- bl MOD05_021F1D68
- add r0, r5, #0
- bl FUN_02058368
- str r0, [sp, #0x10]
- add r0, r5, #0
- bl FUN_0205839C
- sub r0, r0, #1
- str r0, [sp, #0xc]
- add r0, r5, #0
- bl FUN_020583A0
- str r4, [sp]
- str r6, [sp, #4]
- ldr r2, [sp, #0x10]
- ldr r3, [sp, #0xc]
- add r1, r5, #0
- str r7, [sp, #8]
- bl MOD05_021F1F04
- add r0, r5, #0
- mov r1, #4
- bl MOD05_021F3780
- add r4, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_020583A4
- ldr r1, _021F1D28 ; =UNK05_021F8B84
- add r0, r4, #0
- ldr r1, [r1]
- bl MOD05_021F3810
- add r0, r5, #0
- mov r1, #1
- bl FUN_0205837C
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F1D28: .word UNK05_021F8B84
-
- thumb_func_start MOD05_021F1D2C
-MOD05_021F1D2C: ; 0x021F1D2C
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020587E0
- cmp r0, #1
- beq _021F1D3C
- bl GF_AssertFail
-_021F1D3C:
- add r0, r4, #0
- bl FUN_020583A0
- bl MOD05_021F1F58
- add r0, r4, #0
- bl FUN_020583AC
- bl MOD05_021F379C
- add r0, r4, #0
- mov r1, #0
- bl FUN_020583A4
- add r0, r4, #0
- mov r1, #1
- bl FUN_02058384
- add r0, r4, #0
- bl MOD05_021F1D80
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1D68
-MOD05_021F1D68: ; 0x021F1D68
- push {r4, lr}
- add r4, r0, #0
- mov r0, #0x51
- mov r1, #4
- bl NARC_ctor
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_020583F0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1D80
-MOD05_021F1D80: ; 0x021F1D80
- push {r3, lr}
- bl FUN_020583F4
- bl NARC_dtor
- pop {r3, pc}
-
- thumb_func_start MOD05_021F1D8C
-MOD05_021F1D8C: ; 0x021F1D8C
- push {r4, lr}
- add r4, r0, #0
- bl FUN_02058578
- mov r1, #4
- bl FUN_02058390
- cmp r0, #0
- bne _021F1DC6
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0xe
- bl FUN_02058424
- cmp r0, #0
- beq _021F1DC6
- add r0, r4, #0
- bl FUN_02058920
- cmp r0, #0
- beq _021F1DC0
- add r0, r4, #0
- bl FUN_02058AB4
- cmp r0, #0
- beq _021F1DC6
-_021F1DC0:
- add r0, r4, #0
- bl FUN_020586A0
-_021F1DC6:
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1DC8
-MOD05_021F1DC8: ; 0x021F1DC8
- push {r3, lr}
- bl FUN_02058458
- bl MOD05_021F1DD4
- pop {r3, pc}
-
- thumb_func_start MOD05_021F1DD4
-MOD05_021F1DD4: ; 0x021F1DD4
- push {r3, lr}
- ldr r3, _021F1DF4 ; =UNK05_021F9A9C
- ldr r1, _021F1DF8 ; =0x0000FFFF
-_021F1DDA:
- ldr r2, [r3]
- cmp r2, r0
- bne _021F1DE4
- add r0, r3, #0
- pop {r3, pc}
-_021F1DE4:
- add r3, #8
- ldr r2, [r3]
- cmp r2, r1
- bne _021F1DDA
- bl GF_AssertFail
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-_021F1DF4: .word UNK05_021F9A9C
-_021F1DF8: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F1DFC
-MOD05_021F1DFC: ; 0x021F1DFC
- push {r4, lr}
- add r4, r0, #0
- bl FUN_02058920
- cmp r0, #1
- bne _021F1E16
- add r0, r4, #0
- bl FUN_02058AB4
- cmp r0, #0
- bne _021F1E16
- mov r0, #1
- pop {r4, pc}
-_021F1E16:
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #8
- bl FUN_02058424
- cmp r0, #0
- beq _021F1E28
- mov r0, #1
- pop {r4, pc}
-_021F1E28:
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1E2C
-MOD05_021F1E2C: ; 0x021F1E2C
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r2, #0
- bl FUN_020583F4
- add r1, r4, #0
- add r6, r0, #0
- bl NARC_GetMemberSize
- add r1, r0, #0
- cmp r5, #1
- bne _021F1E4C
- mov r0, #4
- bl AllocFromHeap
- b _021F1E52
-_021F1E4C:
- mov r0, #4
- bl AllocFromHeapAtEnd
-_021F1E52:
- add r5, r0, #0
- add r0, r6, #0
- add r1, r4, #0
- add r2, r5, #0
- bl NARC_ReadWholeMember
- add r0, r5, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1E64
-MOD05_021F1E64: ; 0x021F1E64
- push {r3, r4, r5, lr}
- sub sp, #0x30
- add r4, r1, #0
- add r5, r0, #0
- add r1, sp, #0x24
- bl FUN_02058B5C
- add r0, r5, #0
- add r1, sp, #0x18
- bl FUN_02058B84
- add r0, r5, #0
- add r1, sp, #0xc
- bl FUN_02058BA4
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_02058BC4
- ldr r1, [sp, #0x24]
- ldr r0, [sp, #0x18]
- ldr r2, [sp, #0xc]
- add r0, r1, r0
- ldr r3, [sp]
- add r0, r2, r0
- add r0, r3, r0
- str r0, [r4]
- ldr r1, [sp, #0x28]
- ldr r0, [sp, #0x1c]
- ldr r2, [sp, #0x10]
- add r0, r1, r0
- ldr r3, [sp, #4]
- add r0, r2, r0
- add r0, r3, r0
- str r0, [r4, #4]
- ldr r1, [sp, #0x2c]
- ldr r0, [sp, #0x20]
- ldr r2, [sp, #0x14]
- add r0, r1, r0
- ldr r3, [sp, #8]
- add r0, r2, r0
- add r0, r3, r0
- str r0, [r4, #8]
- add sp, #0x30
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1EC0
-MOD05_021F1EC0: ; 0x021F1EC0
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020584AC
- add r0, r4, #0
- bl FUN_02058884
- cmp r0, #1
- bne _021F1ED8
- add r0, r4, #0
- bl FUN_020586A0
-_021F1ED8:
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1EDC
-MOD05_021F1EDC: ; 0x021F1EDC
- push {r4, lr}
- mov r1, #1
- add r4, r0, #0
- bl FUN_0205889C
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0x14
- bl FUN_02058410
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1EF4
-MOD05_021F1EF4: ; 0x021F1EF4
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F1EF8
-MOD05_021F1EF8: ; 0x021F1EF8
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F1EFC
-MOD05_021F1EFC: ; 0x021F1EFC
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F1F00
-MOD05_021F1F00: ; 0x021F1F00
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F1F04
-MOD05_021F1F04: ; 0x021F1F04
- push {r4, r5, lr}
- sub sp, #0xc
- add r4, r2, #0
- mov r2, #0x41
- add r5, r0, #0
- lsl r2, r2, #2
- str r1, [r5, r2]
- add r1, r4, #0
- bl MOD05_021F2E40
- add r0, r5, #0
- add r1, r4, #0
- mov r2, #0xa
- bl MOD05_021F33B4
- mov r2, #4
- mov r1, #8
- ldr r0, [sp, #0x18]
- str r2, [sp]
- str r0, [sp, #4]
- ldr r0, [sp, #0x1c]
- add r3, r1, #0
- str r0, [sp, #8]
- add r0, r5, #0
- bl MOD05_021F22E0
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2160
- ldr r1, [sp, #0x20]
- ldr r2, _021F1F50 ; =UNK05_021F8B90
- ldr r3, _021F1F54 ; =UNK05_021F8B88
- add r0, r5, #0
- bl MOD05_021F25A0
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-_021F1F50: .word UNK05_021F8B90
-_021F1F54: .word UNK05_021F8B88
-
- thumb_func_start MOD05_021F1F58
-MOD05_021F1F58: ; 0x021F1F58
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021F3458
- add r0, r4, #0
- bl MOD05_021F21AC
- add r0, r4, #0
- bl MOD05_021F2D48
- bl MOD05_021F2E68
- add r0, r4, #0
- bl MOD05_021F2368
- pop {r4, pc}
-
- thumb_func_start MOD05_021F1F78
-MOD05_021F1F78: ; 0x021F1F78
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- mov r1, #0
- add r6, r2, #0
- add r7, r0, #0
- str r1, [r5]
- bl MOD05_021F2F3C
- add r1, r6, #0
- str r0, [sp]
- bl MOD05_021F28E8
- add r4, r0, #0
- bne _021F1FA2
- add r0, r7, #0
- add r1, r5, #0
- add r2, r6, #0
- bl MOD05_021F211C
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F1FA2:
- sub r0, r4, #3
- cmp r0, #1
- bhi _021F1FB8
- ldr r0, [sp]
- add r1, r7, #0
- add r2, r5, #0
- add r3, r6, #0
- bl MOD05_021F32BC
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F1FB8:
- add r0, r7, #0
- add r1, r6, #0
- bl MOD05_021F1FE0
- str r0, [r5]
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1FC8
-MOD05_021F1FC8: ; 0x021F1FC8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl FUN_02058458
- add r2, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F1F78
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F1FE0
-MOD05_021F1FE0: ; 0x021F1FE0
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r6, r0, #0
- add r5, r1, #0
- bl MOD05_021F2F3C
- add r4, r0, #0
- bl MOD05_021F2D48
- add r7, r0, #0
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F2AC8
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F21CC
- add r4, r0, #0
- bne _021F200C
- bl GF_AssertFail
-_021F200C:
- add r0, r6, #0
- add r1, sp, #0
- bl MOD05_021F1E64
- add r0, r7, #0
- add r1, r4, #0
- add r2, sp, #0
- bl MOD05_021F2E70
- add r4, r0, #0
- bne _021F2026
- bl GF_AssertFail
-_021F2026:
- add r0, r4, #0
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F202C
-MOD05_021F202C: ; 0x021F202C
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4]
- add r6, r2, #0
- bl FUN_0201F744
- mov r0, #0
- str r0, [r4]
- add r0, r5, #0
- bl FUN_02058578
- add r1, r5, #0
- add r2, r6, #0
- bl MOD05_021F2284
- cmp r0, #0
- bne _021F205C
- add r0, r5, #0
- bl MOD05_021F2F3C
- add r1, r6, #0
- bl MOD05_021F2240
-_021F205C:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2060
-MOD05_021F2060: ; 0x021F2060
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- bl MOD05_021F2150
- ldr r0, [r4]
- cmp r0, #0
- beq _021F2092
- add r0, r5, #0
- bl FUN_02058458
- add r6, r0, #0
- bl FUN_0205C334
- cmp r0, #1
- bne _021F2088
- add r0, r5, #0
- bl FUN_0205C340
- add r6, r0, #0
-_021F2088:
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021F202C
-_021F2092:
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F2094
-MOD05_021F2094: ; 0x021F2094
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r6, r0, #0
- add r4, r2, #0
- bl MOD05_021F2150
- ldr r0, [r5]
- cmp r0, #0
- beq _021F20AE
- bl FUN_0201F744
- mov r0, #0
- str r0, [r5]
-_021F20AE:
- ldr r0, _021F20D4 ; =0x0000FFFF
- cmp r4, r0
- beq _021F20D2
- add r0, r6, #0
- bl FUN_02058578
- add r1, r6, #0
- add r2, r4, #0
- bl MOD05_021F2284
- cmp r0, #0
- bne _021F20D2
- add r0, r6, #0
- bl MOD05_021F2F3C
- add r1, r4, #0
- bl MOD05_021F2240
-_021F20D2:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F20D4: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F20D8
-MOD05_021F20D8: ; 0x021F20D8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl FUN_0201F820
- str r0, [r4]
- add r0, r5, #0
- bl FUN_0201F844
- strh r0, [r4, #6]
- add r0, r5, #0
- bl FUN_0201F880
- str r0, [r4, #8]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F20F8
-MOD05_021F20F8: ; 0x021F20F8
- push {r3, r4, r5, lr}
- add r4, r1, #0
- ldr r1, [r4]
- add r5, r0, #0
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_0201F80C
- ldrh r1, [r4, #6]
- add r0, r5, #0
- bl FUN_0201F830
- ldr r1, [r4, #8]
- add r0, r5, #0
- bl FUN_0201F86C
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F211C
-MOD05_021F211C: ; 0x021F211C
- push {r3, r4, r5, r6, r7, lr}
- add r4, r2, #0
- add r6, r0, #0
- add r5, r1, #0
- bl MOD05_021F2F3C
- add r1, r4, #0
- add r7, r0, #0
- bl MOD05_021F2460
- cmp r0, #0
- bne _021F2140
- add r0, r6, #0
- add r1, r4, #0
- bl MOD05_021F1FE0
- str r0, [r5]
- pop {r3, r4, r5, r6, r7, pc}
-_021F2140:
- add r0, r7, #0
- add r1, r6, #0
- add r2, r5, #0
- add r3, r4, #0
- bl MOD05_021F32BC
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2150
-MOD05_021F2150: ; 0x021F2150
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021F2F3C
- add r1, r4, #0
- bl MOD05_021F32F8
- pop {r4, pc}
-
- thumb_func_start MOD05_021F2160
-MOD05_021F2160: ; 0x021F2160
- push {r3, r4, r5, r6, r7, lr}
- add r6, r1, #0
- mov r1, #0x28
- add r7, r0, #0
- mov r0, #4
- mul r1, r6
- bl AllocFromHeap
- add r4, r0, #0
- add r0, r7, #0
- add r0, #0xe4
- str r4, [r0]
- cmp r4, #0
- bne _021F2180
- bl GF_AssertFail
-_021F2180:
- mov r0, #4
- lsl r1, r6, #3
- bl AllocFromHeap
- add r5, r0, #0
- add r7, #0xf4
- str r5, [r7]
- cmp r5, #0
- bne _021F2196
- bl GF_AssertFail
-_021F2196:
- ldr r0, _021F21A8 ; =0x0000FFFF
-_021F2198:
- str r0, [r5]
- str r4, [r5, #4]
- add r5, #8
- add r4, #0x28
- sub r6, r6, #1
- bne _021F2198
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F21A8: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F21AC
-MOD05_021F21AC: ; 0x021F21AC
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021F2260
- add r1, r4, #0
- add r1, #0xe4
- ldr r1, [r1]
- mov r0, #4
- bl FreeToHeapExplicit
- add r4, #0xf4
- ldr r1, [r4]
- mov r0, #4
- bl FreeToHeapExplicit
- pop {r4, pc}
-
- thumb_func_start MOD05_021F21CC
-MOD05_021F21CC: ; 0x021F21CC
- push {r4, r5, r6, lr}
- add r2, r0, #0
- add r2, #0xf4
- ldr r4, [r2]
- ldr r2, [r0, #4]
- add r6, r4, #0
- add r5, r2, #0
-_021F21DA:
- ldr r3, [r6]
- cmp r3, r1
- bne _021F21E4
- ldr r0, [r6, #4]
- pop {r4, r5, r6, pc}
-_021F21E4:
- add r6, #8
- sub r5, r5, #1
- bne _021F21DA
- ldr r3, _021F2208 ; =0x0000FFFF
-_021F21EC:
- ldr r5, [r4]
- cmp r5, r3
- bne _021F21FE
- str r1, [r4]
- ldr r2, [r4, #4]
- bl MOD05_021F2ED0
- ldr r0, [r4, #4]
- pop {r4, r5, r6, pc}
-_021F21FE:
- add r4, #8
- sub r2, r2, #1
- bne _021F21EC
- mov r0, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F2208: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F220C
-MOD05_021F220C: ; 0x021F220C
- push {r3, r4, r5, lr}
- add r5, r1, #0
- add r4, r2, #0
- bl FUN_020583A0
- add r1, r0, #0
- add r1, #0xf4
- ldr r2, [r1]
- ldr r1, [r0, #4]
-_021F221E:
- ldr r0, [r2]
- cmp r0, r5
- bne _021F2234
- ldr r3, [r2, #4]
- mov r2, #5
-_021F2228:
- ldmia r3!, {r0, r1}
- stmia r4!, {r0, r1}
- sub r2, r2, #1
- bne _021F2228
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F2234:
- add r2, #8
- sub r1, r1, #1
- bne _021F221E
- mov r0, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2240
-MOD05_021F2240: ; 0x021F2240
- add r2, r0, #0
- add r2, #0xf4
- ldr r3, [r2]
- ldr r2, [r0, #4]
-_021F2248:
- ldr r0, [r3]
- cmp r0, r1
- bne _021F2254
- ldr r0, _021F225C ; =0x0000FFFF
- str r0, [r3]
- bx lr
-_021F2254:
- add r3, #8
- sub r2, r2, #1
- bne _021F2248
- bx lr
- .balign 4, 0
-_021F225C: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2260
-MOD05_021F2260: ; 0x021F2260
- push {r3, r4}
- add r1, r0, #0
- add r1, #0xf4
- ldr r4, [r1]
- ldr r1, _021F2280 ; =0x0000FFFF
- ldr r3, [r0, #4]
- add r0, r1, #0
-_021F226E:
- ldr r2, [r4]
- cmp r2, r0
- beq _021F2276
- str r1, [r4]
-_021F2276:
- add r4, #8
- sub r3, r3, #1
- bne _021F226E
- pop {r3, r4}
- bx lr
- .balign 4, 0
-_021F2280: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2284
-MOD05_021F2284: ; 0x021F2284
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r6, r1, #0
- add r7, r2, #0
- bl FUN_02058368
- add r4, r0, #0
- add r0, r5, #0
- bl FUN_020583BC
- str r0, [sp]
-_021F229A:
- ldr r0, [sp]
- cmp r0, r6
- beq _021F22CE
- bl FUN_02058830
- cmp r0, #1
- bne _021F22CE
- ldr r0, [sp]
- bl FUN_02058458
- add r5, r0, #0
- bl FUN_0205C334
- cmp r0, #1
- bne _021F22C0
- ldr r0, [sp]
- bl FUN_0205C340
- add r5, r0, #0
-_021F22C0:
- ldr r0, _021F22DC ; =0x0000FFFF
- cmp r5, r0
- beq _021F22CE
- cmp r5, r7
- bne _021F22CE
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F22CE:
- add r0, sp, #0
- bl FUN_020583D4
- sub r4, r4, #1
- bne _021F229A
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F22DC: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F22E0
-MOD05_021F22E0: ; 0x021F22E0
- push {r3, r4, r5, r6, r7, lr}
- add r4, r1, #0
- add r5, r0, #0
- add r6, r2, #0
- add r7, r3, #0
- mov r0, #4
- mov r1, #0x40
- lsl r2, r4, #0xc
- add r3, r4, #0
- bl MOD05_021F5990
- add r1, r5, #0
- add r1, #0xf8
- str r0, [r1]
- add r0, r5, #0
- bl MOD05_021F2614
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021F2D80
- add r0, r5, #0
- sub r1, r4, r6
- bl MOD05_021F2D88
- mov r0, #4
- mov r1, #0x41
- lsl r2, r7, #7
- add r3, r7, #0
- bl MOD05_021F5990
- add r1, r5, #0
- add r1, #0xfc
- str r0, [r1]
- add r0, r5, #0
- bl MOD05_021F2750
- ldr r1, [sp, #0x18]
- add r0, r5, #0
- bl MOD05_021F2D90
- ldr r1, [sp, #0x18]
- add r0, r5, #0
- sub r1, r7, r1
- bl MOD05_021F2D98
- ldr r0, [sp, #0x1c]
- mov r1, #4
- bl FUN_02020E90
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D64
- add r0, r5, #0
- bl MOD05_021F288C
- ldr r1, [sp, #0x20]
- add r0, r5, #0
- bl MOD05_021F2DA0
- ldr r2, [sp, #0x1c]
- ldr r1, [sp, #0x20]
- add r0, r5, #0
- sub r1, r2, r1
- bl MOD05_021F2DA8
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F2368
-MOD05_021F2368: ; 0x021F2368
- push {r4, lr}
- add r4, r0, #0
- add r0, #0xf8
- ldr r0, [r0]
- bl MOD05_021F59EC
- add r0, r4, #0
- add r0, #0xfc
- ldr r0, [r0]
- bl MOD05_021F59EC
- add r0, r4, #0
- bl MOD05_021F2D6C
- bl FUN_02020ED4
- pop {r4, pc}
- .balign 4, 0
-_021F238C:
- ldr r3, [r2]
- cmp r3, r0
- bne _021F2396
- add r0, r2, #0
- bx lr
-_021F2396:
- add r2, #8
- ldr r3, [r2]
- cmp r3, r1
- bne _021F238C
- mov r0, #0
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F23A4
-MOD05_021F23A4: ; 0x021F23A4
- push {r3, r4, r5, r6, r7, lr}
- add r6, r1, #0
- add r4, r2, #0
- add r5, r0, #0
- add r0, r6, #0
- add r1, r4, #0
- add r7, r3, #0
- bl MOD05_021F5AA4
- cmp r0, #1
- bne _021F23BE
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F23BE:
- ldr r2, [sp, #0x18]
- add r0, r4, #0
- add r1, r7, #0
- bl _021F238C
- add r7, r0, #0
- bne _021F23D0
- bl GF_AssertFail
-_021F23D0:
- mov r0, #0x41
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- bl FUN_020583F4
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- ldr r3, [r7, #4]
- add r0, r6, #0
- add r1, r4, #0
- bl MOD05_021F5AE4
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F23F0
-MOD05_021F23F0: ; 0x021F23F0
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r0, #0xf0
- add r4, r2, #0
- add r6, r1, #0
- ldr r0, [r0]
- add r1, r4, #0
- add r7, r3, #0
- bl FUN_02020EF8
- cmp r0, #0
- bne _021F240C
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F240C:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F3084
- cmp r0, #0
- beq _021F241C
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F241C:
- ldr r1, _021F2448 ; =0x0000FFFF
- add r0, r4, #0
- add r2, r7, #0
- bl _021F238C
- add r2, r0, #0
- bne _021F242E
- mov r0, #2
- pop {r3, r4, r5, r6, r7, pc}
-_021F242E:
- ldr r2, [r2, #4]
- add r0, r5, #0
- add r1, r4, #0
- add r3, r6, #0
- bl MOD05_021F2FD0
- cmp r0, #1
- bne _021F2442
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F2442:
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F2448: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F244C
-MOD05_021F244C: ; 0x021F244C
- push {r3, lr}
- ldr r3, _021F245C ; =UNK05_021FA0AC
- add r2, r1, #0
- mov r1, #0
- bl MOD05_021F23F0
- pop {r3, pc}
- nop
-_021F245C: .word UNK05_021FA0AC
-
- thumb_func_start MOD05_021F2460
-MOD05_021F2460: ; 0x021F2460
- push {r3, lr}
- ldr r3, _021F2470 ; =UNK05_021FA0AC
- add r2, r1, #0
- mov r1, #1
- bl MOD05_021F23F0
- pop {r3, pc}
- nop
-_021F2470: .word UNK05_021FA0AC
-
- thumb_func_start MOD05_021F2474
-MOD05_021F2474: ; 0x021F2474
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r1, [r4]
- ldr r0, _021F2494 ; =0x0000FFFF
- cmp r1, r0
- beq _021F2492
- add r6, r0, #0
-_021F2484:
- add r0, r5, #0
- bl MOD05_021F244C
- add r4, r4, #4
- ldr r1, [r4]
- cmp r1, r6
- bne _021F2484
-_021F2492:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F2494: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2498
-MOD05_021F2498: ; 0x021F2498
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D54
- ldr r0, _021F24C0 ; =UNK05_021F9094
- add r1, r5, #0
- str r0, [sp]
- add r1, #0xf8
- ldr r1, [r1]
- ldr r3, _021F24C4 ; =0x0000FFFF
- add r0, r5, #0
- add r2, r4, #0
- bl MOD05_021F23A4
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2628
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021F24C0: .word UNK05_021F9094
-_021F24C4: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F24C8
-MOD05_021F24C8: ; 0x021F24C8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D54
- ldr r0, _021F24F0 ; =UNK05_021F9094
- add r1, r5, #0
- str r0, [sp]
- add r1, #0xf8
- ldr r1, [r1]
- ldr r3, _021F24F4 ; =0x0000FFFF
- add r0, r5, #0
- add r2, r4, #0
- bl MOD05_021F23A4
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2670
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021F24F0: .word UNK05_021F9094
-_021F24F4: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F24F8
-MOD05_021F24F8: ; 0x021F24F8
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r1, [r4]
- ldr r0, _021F2518 ; =0x0000FFFF
- cmp r1, r0
- beq _021F2516
- add r6, r0, #0
-_021F2508:
- add r0, r5, #0
- bl MOD05_021F2498
- add r4, r4, #4
- ldr r1, [r4]
- cmp r1, r6
- bne _021F2508
-_021F2516:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F2518: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F251C
-MOD05_021F251C: ; 0x021F251C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D5C
- ldr r0, _021F2544 ; =UNK05_021F90E4
- add r1, r5, #0
- str r0, [sp]
- add r1, #0xfc
- ldr r1, [r1]
- ldr r3, _021F2548 ; =0x0000FFFF
- add r0, r5, #0
- add r2, r4, #0
- bl MOD05_021F23A4
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2764
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021F2544: .word UNK05_021F90E4
-_021F2548: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F254C
-MOD05_021F254C: ; 0x021F254C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D5C
- ldr r0, _021F2574 ; =UNK05_021F90E4
- add r1, r5, #0
- str r0, [sp]
- add r1, #0xfc
- ldr r1, [r1]
- ldr r3, _021F2578 ; =0x0000FFFF
- add r0, r5, #0
- add r2, r4, #0
- bl MOD05_021F23A4
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F27AC
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021F2574: .word UNK05_021F90E4
-_021F2578: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F257C
-MOD05_021F257C: ; 0x021F257C
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r1, [r4]
- ldr r0, _021F259C ; =0x0000FFFF
- cmp r1, r0
- beq _021F259A
- add r6, r0, #0
-_021F258C:
- add r0, r5, #0
- bl MOD05_021F251C
- add r4, r4, #4
- ldr r1, [r4]
- cmp r1, r6
- bne _021F258C
-_021F259A:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F259C: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F25A0
-MOD05_021F25A0: ; 0x021F25A0
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r2, #0
- add r6, r3, #0
- bl MOD05_021F2474
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F24F8
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021F257C
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F25C0:
- stmia r0!, {r1}
- sub r2, r2, #1
- bne _021F25C0
- bx lr
-
- thumb_func_start MOD05_021F25C8
-MOD05_021F25C8: ; 0x021F25C8
- push {r3, r4}
-_021F25CA:
- ldr r4, [r0]
- cmp r4, r2
- bne _021F25D8
- str r1, [r0]
- mov r0, #1
- pop {r3, r4}
- bx lr
-_021F25D8:
- add r0, r0, #4
- sub r3, r3, #1
- bne _021F25CA
- mov r0, #0
- pop {r3, r4}
- bx lr
-_021F25E4:
- ldr r3, [r0]
- cmp r3, r1
- bne _021F25EE
- mov r0, #1
- bx lr
-_021F25EE:
- add r0, r0, #4
- sub r2, r2, #1
- bne _021F25E4
- mov r0, #0
- bx lr
-
- thumb_func_start MOD05_021F25F8
-MOD05_021F25F8: ; 0x021F25F8
- push {r3, r4}
-_021F25FA:
- ldr r4, [r0]
- cmp r4, r1
- bne _021F2608
- str r2, [r0]
- mov r0, #1
- pop {r3, r4}
- bx lr
-_021F2608:
- add r0, r0, #4
- sub r3, r3, #1
- bne _021F25FA
- mov r0, #0
- pop {r3, r4}
- bx lr
-
- thumb_func_start MOD05_021F2614
-MOD05_021F2614: ; 0x021F2614
- push {r3, lr}
- bl MOD05_021F2D78
- ldr r1, _021F2624 ; =0x0000FFFF
- mov r2, #8
- bl _021F25C0
- pop {r3, pc}
- .balign 4, 0
-_021F2624: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2628
-MOD05_021F2628: ; 0x021F2628
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D84
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D78
- ldr r2, _021F2650 ; =0x0000FFFF
- add r1, r4, #0
- add r3, r6, #0
- bl MOD05_021F25C8
- cmp r0, #0
- bne _021F264C
- bl GF_AssertFail
-_021F264C:
- pop {r4, r5, r6, pc}
- nop
-_021F2650: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2654
-MOD05_021F2654: ; 0x021F2654
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D84
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D78
- add r1, r4, #0
- add r2, r6, #0
- bl _021F25E4
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F2670
-MOD05_021F2670: ; 0x021F2670
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D78
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D84
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2D8C
- add r3, r0, #0
- ldr r2, _021F26A0 ; =0x0000FFFF
- add r0, r6, r4
- add r1, r7, #0
- bl MOD05_021F25C8
- cmp r0, #0
- bne _021F269E
- bl GF_AssertFail
-_021F269E:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F26A0: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F26A4
-MOD05_021F26A4: ; 0x021F26A4
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D78
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D84
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2D8C
- add r2, r0, #0
- add r0, r6, r4
- add r1, r7, #0
- bl _021F25E4
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F26CC
-MOD05_021F26CC: ; 0x021F26CC
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D78
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D84
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2D8C
- add r3, r0, #0
- ldr r2, _021F26F4 ; =0x0000FFFF
- add r0, r6, r4
- add r1, r7, #0
- bl MOD05_021F25F8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F26F4: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F26F8
-MOD05_021F26F8: ; 0x021F26F8
- push {r3, r4, r5, r6, r7, lr}
- add r6, r1, #0
- add r7, r0, #0
- add r0, r6, #0
- bl MOD05_021F2D54
- add r0, r6, #0
- bl MOD05_021F2D78
- add r4, r0, #0
- add r0, r6, #0
- bl MOD05_021F2D84
- lsl r0, r0, #2
- add r5, r4, r0
- add r0, r6, #0
- bl MOD05_021F2D8C
- add r4, r0, #0
-_021F271E:
- ldr r1, [r5]
- ldr r0, _021F274C ; =0x0000FFFF
- cmp r1, r0
- beq _021F2742
- add r0, r7, #0
- mov r2, #0
- bl MOD05_021F2B70
- cmp r0, #0
- bne _021F2742
- add r0, r6, #0
- add r0, #0xf8
- ldr r0, [r0]
- ldr r1, [r5]
- bl MOD05_021F5A74
- ldr r0, _021F274C ; =0x0000FFFF
- str r0, [r5]
-_021F2742:
- add r5, r5, #4
- sub r4, r4, #1
- bne _021F271E
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F274C: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2750
-MOD05_021F2750: ; 0x021F2750
- push {r3, lr}
- bl MOD05_021F2D7C
- ldr r1, _021F2760 ; =0x0000FFFF
- mov r2, #8
- bl _021F25C0
- pop {r3, pc}
- .balign 4, 0
-_021F2760: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2764
-MOD05_021F2764: ; 0x021F2764
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D94
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D7C
- ldr r2, _021F278C ; =0x0000FFFF
- add r1, r4, #0
- add r3, r6, #0
- bl MOD05_021F25C8
- cmp r0, #0
- bne _021F2788
- bl GF_AssertFail
-_021F2788:
- pop {r4, r5, r6, pc}
- nop
-_021F278C: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2790
-MOD05_021F2790: ; 0x021F2790
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2D94
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D7C
- add r1, r4, #0
- add r2, r6, #0
- bl _021F25E4
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F27AC
-MOD05_021F27AC: ; 0x021F27AC
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D7C
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D94
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2D9C
- add r3, r0, #0
- ldr r2, _021F27DC ; =0x0000FFFF
- add r0, r6, r4
- add r1, r7, #0
- bl MOD05_021F25C8
- cmp r0, #0
- bne _021F27DA
- bl GF_AssertFail
-_021F27DA:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F27DC: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F27E0
-MOD05_021F27E0: ; 0x021F27E0
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D7C
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D94
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2D9C
- add r2, r0, #0
- add r0, r6, r4
- add r1, r7, #0
- bl _021F25E4
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2808
-MOD05_021F2808: ; 0x021F2808
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D7C
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D94
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2D9C
- add r3, r0, #0
- ldr r2, _021F2830 ; =0x0000FFFF
- add r0, r6, r4
- add r1, r7, #0
- bl MOD05_021F25F8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F2830: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2834
-MOD05_021F2834: ; 0x021F2834
- push {r3, r4, r5, r6, r7, lr}
- add r6, r1, #0
- add r7, r0, #0
- add r0, r6, #0
- bl MOD05_021F2D5C
- add r0, r6, #0
- bl MOD05_021F2D7C
- add r4, r0, #0
- add r0, r6, #0
- bl MOD05_021F2D94
- lsl r0, r0, #2
- add r5, r4, r0
- add r0, r6, #0
- bl MOD05_021F2D9C
- add r4, r0, #0
-_021F285A:
- ldr r1, [r5]
- ldr r0, _021F2888 ; =0x0000FFFF
- cmp r1, r0
- beq _021F287E
- add r0, r7, #0
- mov r2, #0
- bl MOD05_021F2BF8
- cmp r0, #0
- bne _021F287E
- add r0, r6, #0
- add r0, #0xfc
- ldr r0, [r0]
- ldr r1, [r5]
- bl MOD05_021F5A74
- ldr r0, _021F2888 ; =0x0000FFFF
- str r0, [r5]
-_021F287E:
- add r5, r5, #4
- sub r4, r4, #1
- bne _021F285A
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F2888: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F288C
-MOD05_021F288C: ; 0x021F288C
- push {r3, lr}
- bl MOD05_021F2D74
- ldr r1, _021F289C ; =0x0000FFFF
- mov r2, #0x20
- bl _021F25C0
- pop {r3, pc}
- .balign 4, 0
-_021F289C: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F28A0
-MOD05_021F28A0: ; 0x021F28A0
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2DA4
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D74
- ldr r2, _021F28C8 ; =0x0000FFFF
- add r1, r4, #0
- add r3, r6, #0
- bl MOD05_021F25C8
- cmp r0, #0
- bne _021F28C4
- bl GF_AssertFail
-_021F28C4:
- pop {r4, r5, r6, pc}
- nop
-_021F28C8: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F28CC
-MOD05_021F28CC: ; 0x021F28CC
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2DA4
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D74
- add r1, r4, #0
- add r2, r6, #0
- bl _021F25E4
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F28E8
-MOD05_021F28E8: ; 0x021F28E8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F28CC
- cmp r0, #1
- bne _021F28FA
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F28FA:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F29E0
- cmp r0, #1
- bne _021F290A
- mov r0, #2
- pop {r3, r4, r5, pc}
-_021F290A:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F3084
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F2914
-MOD05_021F2914: ; 0x021F2914
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D74
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2DA4
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2DAC
- add r3, r0, #0
- ldr r2, _021F2944 ; =0x0000FFFF
- add r0, r6, r4
- add r1, r7, #0
- bl MOD05_021F25C8
- cmp r0, #0
- bne _021F2942
- bl GF_AssertFail
-_021F2942:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F2944: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2948
-MOD05_021F2948: ; 0x021F2948
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D74
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2DA4
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2DAC
- add r3, r0, #0
- ldr r2, _021F2970 ; =0x0000FFFF
- add r0, r6, r4
- add r1, r7, #0
- bl MOD05_021F25F8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F2970: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2974
-MOD05_021F2974: ; 0x021F2974
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r6, r1, #0
- str r0, [sp]
- add r0, r6, #0
- bl MOD05_021F2D6C
- str r0, [sp, #4]
- add r0, r6, #0
- bl MOD05_021F2D74
- add r4, r0, #0
- add r0, r6, #0
- bl MOD05_021F2DA4
- lsl r0, r0, #2
- add r5, r4, r0
- add r0, r6, #0
- bl MOD05_021F2DAC
- add r7, r0, #0
-_021F299E:
- ldr r4, [r5]
- ldr r0, _021F29DC ; =0x0000FFFF
- cmp r4, r0
- beq _021F29D0
- ldr r0, [sp]
- add r1, r4, #0
- mov r2, #0
- bl MOD05_021F2B10
- cmp r0, #0
- bne _021F29D0
- ldr r0, [sp, #4]
- add r1, r4, #0
- bl FUN_02020FF0
- add r0, r6, #0
- add r1, r4, #0
- bl MOD05_021F3050
- add r0, r6, #0
- add r1, r4, #0
- bl MOD05_021F3204
- ldr r0, _021F29DC ; =0x0000FFFF
- str r0, [r5]
-_021F29D0:
- add r5, r5, #4
- sub r7, r7, #1
- bne _021F299E
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F29DC: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F29E0
-MOD05_021F29E0: ; 0x021F29E0
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r7, r1, #0
- bl MOD05_021F2D74
- add r6, r0, #0
- add r0, r5, #0
- bl MOD05_021F2DA4
- lsl r4, r0, #2
- add r0, r5, #0
- bl MOD05_021F2DAC
- add r2, r0, #0
- add r0, r6, r4
- add r1, r7, #0
- bl _021F25E4
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2A08
-MOD05_021F2A08: ; 0x021F2A08
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F28CC
- cmp r0, #1
- bne _021F2A1A
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F2A1A:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F29E0
- cmp r0, #1
- bne _021F2A2A
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F2A2A:
- mov r0, #2
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2A30
-MOD05_021F2A30: ; 0x021F2A30
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2654
- cmp r0, #1
- bne _021F2A42
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F2A42:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F26A4
- cmp r0, #1
- bne _021F2A52
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F2A52:
- mov r0, #2
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2A58
-MOD05_021F2A58: ; 0x021F2A58
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2790
- cmp r0, #1
- bne _021F2A6A
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F2A6A:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F27E0
- cmp r0, #1
- bne _021F2A7A
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F2A7A:
- mov r0, #2
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2A80
-MOD05_021F2A80: ; 0x021F2A80
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F28E8
- cmp r0, #0
- bne _021F2A96
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2460
-_021F2A96:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F2A98
-MOD05_021F2A98: ; 0x021F2A98
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2A30
- cmp r0, #2
- bne _021F2AAE
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F24C8
-_021F2AAE:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F2AB0
-MOD05_021F2AB0: ; 0x021F2AB0
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2A58
- cmp r0, #2
- bne _021F2AC6
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F254C
-_021F2AC6:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F2AC8
-MOD05_021F2AC8: ; 0x021F2AC8
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- add r0, r4, #0
- bl MOD05_021F2DE8
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F2A98
- add r0, r4, #0
- bl MOD05_021F2DF4
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F2AB0
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2A80
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F2AF4
-MOD05_021F2AF4: ; 0x021F2AF4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F26F8
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2834
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2974
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F2B10
-MOD05_021F2B10: ; 0x021F2B10
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r6, r1, #0
- mov r1, #0
- add r5, r2, #0
- str r1, [sp, #4]
- str r1, [sp]
- add r1, sp, #0
- add r2, sp, #4
- mov r3, #1
- add r7, r0, #0
- bl FUN_020580F4
- cmp r0, #1
- bne _021F2B6A
-_021F2B2E:
- cmp r5, #0
- beq _021F2B38
- ldr r0, [sp]
- cmp r5, r0
- beq _021F2B5A
-_021F2B38:
- ldr r0, [sp]
- bl FUN_02058458
- add r4, r0, #0
- bl FUN_0205C334
- cmp r0, #1
- bne _021F2B50
- ldr r0, [sp]
- bl FUN_0205C340
- add r4, r0, #0
-_021F2B50:
- cmp r4, r6
- bne _021F2B5A
- add sp, #8
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F2B5A:
- add r0, r7, #0
- add r1, sp, #0
- add r2, sp, #4
- mov r3, #1
- bl FUN_020580F4
- cmp r0, #1
- beq _021F2B2E
-_021F2B6A:
- mov r0, #0
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F2B70
-MOD05_021F2B70: ; 0x021F2B70
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r6, r1, #0
- mov r1, #0
- add r5, r2, #0
- str r1, [sp, #4]
- str r1, [sp]
- add r1, sp, #0
- add r2, sp, #4
- mov r3, #1
- add r7, r0, #0
- bl FUN_020580F4
- cmp r0, #1
- bne _021F2BEE
-_021F2B8E:
- cmp r5, #0
- beq _021F2B98
- ldr r0, [sp]
- cmp r5, r0
- beq _021F2BDE
-_021F2B98:
- ldr r0, [sp]
- bl FUN_02058458
- add r4, r0, #0
- ldr r0, _021F2BF4 ; =0x0000FFFF
- cmp r4, r0
- beq _021F2BDE
- ldr r0, [sp]
- bl MOD05_021F1DC8
- ldr r0, [r0, #4]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- cmp r0, #1
- bne _021F2BDE
- add r0, r4, #0
- bl FUN_0205C334
- cmp r0, #1
- bne _021F2BC8
- ldr r0, [sp]
- bl FUN_0205C340
- add r4, r0, #0
-_021F2BC8:
- ldr r0, _021F2BF4 ; =0x0000FFFF
- cmp r4, r0
- beq _021F2BDE
- add r0, r4, #0
- bl MOD05_021F2DE8
- cmp r6, r0
- bne _021F2BDE
- add sp, #8
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F2BDE:
- add r0, r7, #0
- add r1, sp, #0
- add r2, sp, #4
- mov r3, #1
- bl FUN_020580F4
- cmp r0, #1
- beq _021F2B8E
-_021F2BEE:
- mov r0, #0
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F2BF4: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2BF8
-MOD05_021F2BF8: ; 0x021F2BF8
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r6, r1, #0
- mov r1, #0
- add r5, r2, #0
- str r1, [sp, #4]
- str r1, [sp]
- add r1, sp, #0
- add r2, sp, #4
- mov r3, #1
- add r7, r0, #0
- bl FUN_020580F4
- cmp r0, #1
- bne _021F2C74
-_021F2C16:
- cmp r5, #0
- beq _021F2C20
- ldr r0, [sp]
- cmp r0, r5
- beq _021F2C64
-_021F2C20:
- ldr r0, _021F2C7C ; =0x0000FFFF
- cmp r4, r0
- beq _021F2C64
- ldr r0, [sp]
- bl MOD05_021F1DC8
- ldr r0, [r0, #4]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- cmp r0, #1
- bne _021F2C64
- ldr r0, [sp]
- bl FUN_02058458
- add r4, r0, #0
- bl FUN_0205C334
- cmp r0, #1
- bne _021F2C4E
- ldr r0, [sp]
- bl FUN_0205C340
- add r4, r0, #0
-_021F2C4E:
- ldr r0, _021F2C7C ; =0x0000FFFF
- cmp r4, r0
- beq _021F2C64
- add r0, r4, #0
- bl MOD05_021F2DF4
- cmp r6, r0
- bne _021F2C64
- add sp, #8
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F2C64:
- add r0, r7, #0
- add r1, sp, #0
- add r2, sp, #4
- mov r3, #1
- bl FUN_020580F4
- cmp r0, #1
- beq _021F2C16
-_021F2C74:
- mov r0, #0
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F2C7C: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2C80
-MOD05_021F2C80: ; 0x021F2C80
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r1, #0
- add r6, r0, #0
- add r7, r2, #0
- bl FUN_020583A0
- add r4, r0, #0
- add r0, r5, #0
- bl MOD05_021F2DE8
- str r0, [sp]
- ldr r1, [sp]
- add r0, r4, #0
- bl MOD05_021F2A30
- cmp r0, #1
- bne _021F2CC6
- ldr r1, [sp]
- add r0, r6, #0
- add r2, r7, #0
- bl MOD05_021F2B70
- cmp r0, #0
- bne _021F2CC6
- add r0, r4, #0
- add r0, #0xf8
- ldr r0, [r0]
- ldr r1, [sp]
- bl MOD05_021F5A74
- ldr r1, [sp]
- add r0, r4, #0
- bl MOD05_021F26CC
-_021F2CC6:
- add r0, r5, #0
- bl MOD05_021F2DF4
- str r0, [sp, #4]
- ldr r1, [sp, #4]
- add r0, r4, #0
- bl MOD05_021F2A58
- cmp r0, #1
- bne _021F2CFC
- ldr r1, [sp, #4]
- add r0, r6, #0
- add r2, r7, #0
- bl MOD05_021F2BF8
- cmp r0, #0
- bne _021F2CFC
- add r0, r4, #0
- add r0, #0xfc
- ldr r0, [r0]
- ldr r1, [sp, #4]
- bl MOD05_021F5A74
- ldr r1, [sp, #4]
- add r0, r4, #0
- bl MOD05_021F2808
-_021F2CFC:
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F2A08
- cmp r0, #1
- bne _021F2D3A
- add r0, r6, #0
- add r1, r5, #0
- add r2, r7, #0
- bl MOD05_021F2B10
- cmp r0, #0
- bne _021F2D3A
- add r0, r4, #0
- bl MOD05_021F2D6C
- add r1, r5, #0
- bl FUN_02020FF0
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F2948
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F3050
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F3204
-_021F2D3A:
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2D40
-MOD05_021F2D40: ; 0x021F2D40
- add r0, #0xe0
- str r1, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F2D48
-MOD05_021F2D48: ; 0x021F2D48
- add r0, #0xe0
- ldr r0, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F2D50
-MOD05_021F2D50: ; 0x021F2D50
- str r1, [r0, #4]
- bx lr
-
- thumb_func_start MOD05_021F2D54
-MOD05_021F2D54: ; 0x021F2D54
- add r0, #0xe8
- ldr r0, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F2D5C
-MOD05_021F2D5C: ; 0x021F2D5C
- add r0, #0xec
- ldr r0, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F2D64
-MOD05_021F2D64: ; 0x021F2D64
- add r0, #0xf0
- str r1, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F2D6C
-MOD05_021F2D6C: ; 0x021F2D6C
- add r0, #0xf0
- ldr r0, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F2D74
-MOD05_021F2D74: ; 0x021F2D74
- add r0, #0x60
- bx lr
-
- thumb_func_start MOD05_021F2D78
-MOD05_021F2D78: ; 0x021F2D78
- add r0, #0x20
- bx lr
-
- thumb_func_start MOD05_021F2D7C
-MOD05_021F2D7C: ; 0x021F2D7C
- add r0, #0x40
- bx lr
-
- thumb_func_start MOD05_021F2D80
-MOD05_021F2D80: ; 0x021F2D80
- str r1, [r0, #8]
- bx lr
-
- thumb_func_start MOD05_021F2D84
-MOD05_021F2D84: ; 0x021F2D84
- ldr r0, [r0, #8]
- bx lr
-
- thumb_func_start MOD05_021F2D88
-MOD05_021F2D88: ; 0x021F2D88
- str r1, [r0, #0xc]
- bx lr
-
- thumb_func_start MOD05_021F2D8C
-MOD05_021F2D8C: ; 0x021F2D8C
- ldr r0, [r0, #0xc]
- bx lr
-
- thumb_func_start MOD05_021F2D90
-MOD05_021F2D90: ; 0x021F2D90
- str r1, [r0, #0x10]
- bx lr
-
- thumb_func_start MOD05_021F2D94
-MOD05_021F2D94: ; 0x021F2D94
- ldr r0, [r0, #0x10]
- bx lr
-
- thumb_func_start MOD05_021F2D98
-MOD05_021F2D98: ; 0x021F2D98
- str r1, [r0, #0x14]
- bx lr
-
- thumb_func_start MOD05_021F2D9C
-MOD05_021F2D9C: ; 0x021F2D9C
- ldr r0, [r0, #0x14]
- bx lr
-
- thumb_func_start MOD05_021F2DA0
-MOD05_021F2DA0: ; 0x021F2DA0
- str r1, [r0, #0x18]
- bx lr
-
- thumb_func_start MOD05_021F2DA4
-MOD05_021F2DA4: ; 0x021F2DA4
- ldr r0, [r0, #0x18]
- bx lr
-
- thumb_func_start MOD05_021F2DA8
-MOD05_021F2DA8: ; 0x021F2DA8
- str r1, [r0, #0x1c]
- bx lr
-
- thumb_func_start MOD05_021F2DAC
-MOD05_021F2DAC: ; 0x021F2DAC
- ldr r0, [r0, #0x1c]
- bx lr
-
- thumb_func_start MOD05_021F2DB0
-MOD05_021F2DB0: ; 0x021F2DB0
- mov r3, #0x41
- lsl r3, r3, #2
- ldr r0, [r0, r3]
- ldr r3, _021F2DBC ; =MOD05_021F1E2C
- bx r3
- nop
-_021F2DBC: .word MOD05_021F1E2C
-
- thumb_func_start MOD05_021F2DC0
-MOD05_021F2DC0: ; 0x021F2DC0
- push {r3, lr}
- ldr r3, _021F2DE0 ; =UNK05_021FAC6C
- ldr r1, _021F2DE4 ; =0x0000FFFF
-_021F2DC6:
- ldr r2, [r3]
- cmp r2, r0
- bne _021F2DD0
- add r0, r3, #0
- pop {r3, pc}
-_021F2DD0:
- add r3, #0x10
- ldr r2, [r3]
- cmp r2, r1
- bne _021F2DC6
- bl GF_AssertFail
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-_021F2DE0: .word UNK05_021FAC6C
-_021F2DE4: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F2DE8
-MOD05_021F2DE8: ; 0x021F2DE8
- push {r3, lr}
- bl MOD05_021F2DC0
- ldr r0, [r0, #4]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2DF4
-MOD05_021F2DF4: ; 0x021F2DF4
- push {r3, lr}
- bl MOD05_021F2DC0
- ldr r0, [r0, #8]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2E00
-MOD05_021F2E00: ; 0x021F2E00
- push {r3, lr}
- bl MOD05_021F2DC0
- ldr r0, [r0, #0xc]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2E0C
-MOD05_021F2E0C: ; 0x021F2E0C
- push {r3, lr}
- cmp r1, #1
- bne _021F2E1C
- mov r1, #1
- lsl r1, r1, #0x16
- bl FUN_02058410
- pop {r3, pc}
-_021F2E1C:
- mov r1, #1
- lsl r1, r1, #0x16
- bl FUN_02058418
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2E28
-MOD05_021F2E28: ; 0x021F2E28
- push {r3, lr}
- mov r1, #1
- lsl r1, r1, #0x16
- bl FUN_02058424
- cmp r0, #0
- beq _021F2E3A
- mov r0, #1
- pop {r3, pc}
-_021F2E3A:
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2E40
-MOD05_021F2E40: ; 0x021F2E40
- push {r3, r4, r5, lr}
- sub sp, #8
- add r5, r0, #0
- mov r0, #4
- add r4, r1, #0
- str r0, [sp, #4]
- add r0, sp, #0
- str r4, [sp]
- bl FUN_0201F1B4
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021F2D40
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2D50
- add sp, #8
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F2E68
-MOD05_021F2E68: ; 0x021F2E68
- ldr r3, _021F2E6C ; =FUN_0201F23C
- bx r3
- .balign 4, 0
-_021F2E6C: .word FUN_0201F23C
-
- thumb_func_start MOD05_021F2E70
-MOD05_021F2E70: ; 0x021F2E70
- push {r4, lr}
- sub sp, #0x20
- str r0, [sp]
- str r1, [sp, #4]
- ldmia r2!, {r0, r1}
- add r3, sp, #8
- stmia r3!, {r0, r1}
- ldr r0, [r2]
- add r2, sp, #0x14
- str r0, [r3]
- ldr r3, _021F2ECC ; =0UNK05_021FC550
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- add r0, sp, #0
- bl FUN_0201F6E8
- add r4, r0, #0
- beq _021F2EC4
- mov r1, #0
- bl FUN_0201F80C
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F830
- add r0, r4, #0
- mov r1, #0
- bl FUN_0201F890
- add r0, r4, #0
- bl FUN_0201F8E0
- mov r1, #1
- bl NNS_G3dMdlSetMdlFogEnableFlagAll
- add r0, r4, #0
- bl FUN_0201F8E0
- bl MOD05_021DB5EC
-_021F2EC4:
- add r0, r4, #0
- add sp, #0x20
- pop {r4, pc}
- nop
-_021F2ECC: .word UNK05_021FC550
-
- thumb_func_start MOD05_021F2ED0
-MOD05_021F2ED0: ; 0x021F2ED0
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r6, r0, #0
- add r0, r5, #0
- add r4, r2, #0
- bl MOD05_021F2DE8
- add r1, r0, #0
- add r0, r6, #0
- add r0, #0xf8
- ldr r0, [r0]
- bl MOD05_021F5A90
- str r0, [r4]
- add r0, r5, #0
- bl MOD05_021F2DF4
- add r1, r0, #0
- add r0, r6, #0
- add r0, #0xfc
- ldr r0, [r0]
- bl MOD05_021F5A90
- add r1, r4, #0
- add r1, #0xc
- bl FUN_0202227C
- add r0, r6, #0
- bl MOD05_021F2D6C
- add r1, r5, #0
- bl FUN_02021050
- add r6, r0, #0
- bl FUN_020210AC
- str r0, [r4, #4]
- add r0, r6, #0
- bl FUN_020211AC
- str r0, [r4, #0x1c]
- add r0, r6, #0
- bl FUN_020211BC
- str r0, [r4, #0x20]
- add r0, r6, #0
- bl FUN_020211CC
- str r0, [r4, #0x24]
- add r0, r5, #0
- bl MOD05_021F2E00
- str r0, [r4, #8]
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F2F3C
-MOD05_021F2F3C: ; 0x021F2F3C
- push {r3, lr}
- bl FUN_02058578
- bl FUN_020583A0
- pop {r3, pc}
-
- thumb_func_start MOD05_021F2F48
-MOD05_021F2F48: ; 0x021F2F48
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r1, sp, #0
- bl MOD05_021F1E64
- mov r0, #6
- ldr r1, [sp, #8]
- lsl r0, r0, #0xc
- add r0, r1, r0
- str r0, [sp, #8]
- add r0, r4, #0
- add r1, sp, #0
- bl FUN_0201F7C8
- mov r0, #0
- add sp, #0xc
- pop {r3, r4, pc}
-
- thumb_func_start MOD05_021F2F6C
-MOD05_021F2F6C: ; 0x021F2F6C
- push {r4, r5, r6, lr}
- mov r4, #1
- add r6, r1, #0
- lsl r1, r4, #9
- add r5, r0, #0
- bl FUN_0205842C
- cmp r0, #1
- bne _021F2F80
- mov r4, #0
-_021F2F80:
- mov r1, #1
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0205842C
- cmp r0, #1
- bne _021F2F9E
- mov r1, #2
- add r0, r5, #0
- lsl r1, r1, #0xc
- bl FUN_0205842C
- cmp r0, #0
- bne _021F2F9E
- mov r4, #0
-_021F2F9E:
- lsl r1, r4, #0x18
- add r0, r6, #0
- lsr r1, r1, #0x18
- bl FUN_0201F80C
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F2FAC
-MOD05_021F2FAC: ; 0x021F2FAC
- lsl r1, r0, #2
- ldr r0, _021F2FB4 ; =UNK05_021FC55C
- ldr r0, [r0, r1]
- bx lr
- .balign 4, 0
-_021F2FB4: .word UNK05_021FC55C
-
- thumb_func_start MOD05_021F2FB8
-MOD05_021F2FB8: ; 0x021F2FB8
- lsl r1, r0, #2
- ldr r0, _021F2FC0 ; =UNK05_021FC56C
- ldr r0, [r0, r1]
- bx lr
- .balign 4, 0
-_021F2FC0: .word UNK05_021FC56C
-
- thumb_func_start MOD05_021F2FC4
-MOD05_021F2FC4: ; 0x021F2FC4
- lsl r1, r0, #2
- ldr r0, _021F2FCC ; =UNK05_021FC57C
- ldr r0, [r0, r1]
- bx lr
- .balign 4, 0
-_021F2FCC: .word UNK05_021FC57C
-
- thumb_func_start MOD05_021F2FD0
-MOD05_021F2FD0: ; 0x021F2FD0
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- mov r0, #1
- lsl r0, r0, #8
- ldr r4, [r5, r0]
- mov r0, #4
- add r6, r1, #0
- ldrsh r1, [r4, r0]
- mov r0, #2
- ldrsh r0, [r4, r0]
- add r7, r2, #0
- str r3, [sp]
- cmp r1, r0
- bge _021F2FFA
- add r0, r5, #0
- add r0, #0xe0
- ldr r0, [r0]
- bl FUN_0201F2C0
- cmp r0, #1
- bne _021F302C
-_021F2FFA:
- mov r2, #0
- ldrsh r3, [r4, r2]
- ldr r0, [r4, #0xc]
- cmp r3, #0
- ble _021F3024
-_021F3004:
- ldr r1, [r0, #0xc]
- cmp r1, #0
- bne _021F301C
- add r5, #0xf0
- ldr r1, [r5]
- str r1, [r0, #0xc]
- ldr r1, [sp]
- str r1, [r0, #8]
- str r6, [r0, #4]
- str r7, [r0]
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F301C:
- add r2, r2, #1
- add r0, #0x10
- cmp r2, r3
- blt _021F3004
-_021F3024:
- bl GF_AssertFail
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F302C:
- add r0, r5, #0
- add r1, r7, #0
- mov r2, #0
- bl MOD05_021F2DB0
- add r2, r0, #0
- ldr r3, [sp]
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021F317C
- mov r0, #4
- ldrsh r0, [r4, r0]
- add r0, r0, #1
- strh r0, [r4, #4]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3050
-MOD05_021F3050: ; 0x021F3050
- push {r3, r4}
- mov r2, #1
- lsl r2, r2, #8
- ldr r0, [r0, r2]
- mov r3, #0
- ldrsh r4, [r0, r3]
- ldr r2, [r0, #0xc]
- cmp r4, #0
- ble _021F307E
-_021F3062:
- ldr r0, [r2, #4]
- cmp r0, r1
- bne _021F3076
- ldr r0, [r2, #0xc]
- cmp r0, #0
- beq _021F3076
- mov r0, #0
- str r0, [r2, #0xc]
- pop {r3, r4}
- bx lr
-_021F3076:
- add r3, r3, #1
- add r2, #0x10
- cmp r3, r4
- blt _021F3062
-_021F307E:
- pop {r3, r4}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F3084
-MOD05_021F3084: ; 0x021F3084
- push {r3, r4}
- mov r2, #1
- lsl r2, r2, #8
- ldr r0, [r0, r2]
- mov r3, #0
- ldrsh r4, [r0, r3]
- ldr r2, [r0, #0xc]
- cmp r4, #0
- ble _021F30BC
-_021F3096:
- ldr r0, [r2, #4]
- cmp r0, r1
- bne _021F30B4
- ldr r0, [r2, #0xc]
- cmp r0, #0
- beq _021F30B4
- ldr r0, [r2, #8]
- cmp r0, #0
- bne _021F30AE
- mov r0, #3
- pop {r3, r4}
- bx lr
-_021F30AE:
- mov r0, #4
- pop {r3, r4}
- bx lr
-_021F30B4:
- add r3, r3, #1
- add r2, #0x10
- cmp r3, r4
- blt _021F3096
-_021F30BC:
- mov r0, #0
- pop {r3, r4}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F30C4
-MOD05_021F30C4: ; 0x021F30C4
- push {r3, r4, r5, r6, r7, lr}
- str r1, [sp]
- mov r1, #1
- ldr r0, [sp]
- lsl r1, r1, #8
- ldr r4, [r0, r1]
- add r0, #0xe0
- ldr r0, [r0]
- mov r6, #0
- ldr r5, [r4, #0xc]
- bl FUN_0201F2C0
- cmp r0, #1
- beq _021F3178
- add r7, r4, #4
- b _021F310E
-_021F30E4:
- ldr r0, [r5, #0xc]
- cmp r0, #0
- beq _021F310A
- ldr r0, [sp]
- ldr r1, [r5]
- mov r2, #0
- bl MOD05_021F2DB0
- add r2, r0, #0
- ldr r0, [sp]
- ldr r1, [r5, #4]
- ldr r3, [r5, #8]
- bl MOD05_021F317C
- mov r0, #0
- str r0, [r5, #0xc]
- ldrsh r0, [r7, r0]
- add r0, r0, #1
- strh r0, [r7]
-_021F310A:
- add r5, #0x10
- add r6, r6, #1
-_021F310E:
- mov r0, #4
- ldrsh r1, [r4, r0]
- mov r0, #2
- ldrsh r0, [r4, r0]
- cmp r1, r0
- bge _021F3122
- mov r0, #0
- ldrsh r0, [r4, r0]
- cmp r6, r0
- blt _021F30E4
-_021F3122:
- mov r6, #0
- ldrsh r0, [r4, r6]
- ldr r7, [r4, #0xc]
- sub r1, r0, #1
- cmp r1, #0
- ble _021F3174
- add r5, r7, #0
-_021F3130:
- ldr r1, [r5, #0xc]
- cmp r1, #0
- bne _021F3166
- add r2, r6, #1
- cmp r2, r0
- bge _021F3166
- lsl r1, r2, #4
- add r3, r7, r1
-_021F3140:
- ldr r1, [r3, #0xc]
- cmp r1, #0
- beq _021F315E
- lsl r0, r2, #4
- add r3, r7, r0
- mov ip, r3
- add r2, r5, #0
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- mov r1, #0
- mov r0, ip
- str r1, [r0, #0xc]
- b _021F3166
-_021F315E:
- add r2, r2, #1
- add r3, #0x10
- cmp r2, r0
- blt _021F3140
-_021F3166:
- mov r0, #0
- ldrsh r0, [r4, r0]
- add r6, r6, #1
- add r5, #0x10
- sub r1, r0, #1
- cmp r6, r1
- blt _021F3130
-_021F3174:
- mov r0, #0
- strh r0, [r4, #4]
-_021F3178:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F317C
-MOD05_021F317C: ; 0x021F317C
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r5, r0, #0
- mov r0, #4
- str r0, [sp]
- add r0, r5, #0
- add r0, #0xf0
- add r4, r1, #0
- add r6, r3, #0
- add r1, r2, #0
- ldr r0, [r0]
- add r2, r4, #0
- mov r3, #1
- bl FUN_02020F54
- cmp r0, #0
- bne _021F31A2
- bl GF_AssertFail
-_021F31A2:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F31C8
- cmp r6, #0
- bne _021F31BA
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F28A0
- add sp, #4
- pop {r3, r4, r5, r6, pc}
-_021F31BA:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F2914
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F31C8
-MOD05_021F31C8: ; 0x021F31C8
- push {r4, r5, r6, lr}
- mov r3, #1
- lsl r3, r3, #8
- ldr r3, [r0, r3]
- mov r5, #1
- ldr r4, [r3, #0x10]
- mov r2, #0
- strh r5, [r3, #6]
- ldrsh r6, [r3, r2]
- cmp r6, #0
- ble _021F31FC
-_021F31DE:
- ldr r5, [r4, #8]
- cmp r5, #0
- bne _021F31F4
- add r0, #0xf0
- ldr r0, [r0]
- str r0, [r4, #8]
- str r1, [r4, #4]
- mov r0, #0
- str r0, [r4]
- strh r0, [r3, #6]
- pop {r4, r5, r6, pc}
-_021F31F4:
- add r2, r2, #1
- add r4, #0xc
- cmp r2, r6
- blt _021F31DE
-_021F31FC:
- bl GF_AssertFail
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3204
-MOD05_021F3204: ; 0x021F3204
- push {r4, r5}
- mov r2, #1
- lsl r2, r2, #8
- ldr r2, [r0, r2]
- mov r0, #1
- ldr r4, [r2, #0x10]
- mov r3, #0
- strh r0, [r2, #6]
- ldrsh r5, [r2, r3]
- cmp r5, #0
- ble _021F3236
-_021F321A:
- ldr r0, [r4, #8]
- cmp r0, #0
- beq _021F322E
- ldr r0, [r4, #4]
- cmp r0, r1
- bne _021F322E
- mov r0, #0
- str r0, [r4, #8]
- str r0, [r4]
- b _021F3236
-_021F322E:
- add r3, r3, #1
- add r4, #0xc
- cmp r3, r5
- blt _021F321A
-_021F3236:
- mov r0, #0
- strh r0, [r2, #6]
- pop {r4, r5}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F3240
-MOD05_021F3240: ; 0x021F3240
- push {r3, r4, r5, r6, r7, lr}
- mov r0, #1
- lsl r0, r0, #8
- ldr r6, [r1, r0]
- ldrh r0, [r6, #6]
- cmp r0, #1
- beq _021F327A
- mov r4, #0
- ldrsh r0, [r6, r4]
- ldr r5, [r6, #0x10]
- cmp r0, #0
- ble _021F327A
- mov r7, #1
-_021F325A:
- ldr r0, [r5]
- cmp r0, #0
- bne _021F326E
- ldr r0, [r5, #8]
- cmp r0, #0
- beq _021F326E
- ldr r1, [r5, #4]
- bl FUN_020210F0
- str r7, [r5]
-_021F326E:
- mov r0, #0
- ldrsh r0, [r6, r0]
- add r4, r4, #1
- add r5, #0xc
- cmp r4, r0
- blt _021F325A
-_021F327A:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F327C
-MOD05_021F327C: ; 0x021F327C
- push {r3, r4, r5, r6, r7, lr}
- mov r0, #1
- lsl r0, r0, #8
- ldr r6, [r1, r0]
- mov r4, #0
- ldr r5, [r6, #0x10]
- mov r0, #1
- strh r0, [r6, #6]
- ldrsh r0, [r6, r4]
- cmp r0, #0
- ble _021F32B6
- add r7, r4, #0
-_021F3294:
- ldr r0, [r5]
- cmp r0, #1
- bne _021F32AA
- ldr r0, [r5, #8]
- cmp r0, #0
- beq _021F32AA
- ldr r1, [r5, #4]
- bl FUN_02021158
- str r7, [r5]
- str r7, [r5, #8]
-_021F32AA:
- mov r0, #0
- ldrsh r0, [r6, r0]
- add r4, r4, #1
- add r5, #0xc
- cmp r4, r0
- blt _021F3294
-_021F32B6:
- mov r0, #0
- strh r0, [r6, #6]
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F32BC
-MOD05_021F32BC: ; 0x021F32BC
- push {r4, r5, r6, lr}
- mov r5, #1
- lsl r5, r5, #8
- ldr r5, [r0, r5]
- mov r4, #0
- ldrsh r6, [r5, r4]
- ldr r0, [r5, #8]
- cmp r6, #0
- ble _021F32F2
-_021F32CE:
- ldr r5, [r0, #4]
- cmp r5, #0
- bne _021F32EA
- str r1, [r0, #4]
- str r2, [r0, #8]
- str r3, [r0]
- ldr r0, [r0, #8]
- mov r2, #0
- str r2, [r0]
- add r0, r1, #0
- mov r1, #1
- bl MOD05_021F2E0C
- pop {r4, r5, r6, pc}
-_021F32EA:
- add r4, r4, #1
- add r0, #0xc
- cmp r4, r6
- blt _021F32CE
-_021F32F2:
- bl GF_AssertFail
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F32F8
-MOD05_021F32F8: ; 0x021F32F8
- push {r3, r4}
- mov r2, #1
- lsl r2, r2, #8
- ldr r0, [r0, r2]
- mov r3, #0
- ldrsh r4, [r0, r3]
- ldr r2, [r0, #8]
- cmp r4, #0
- ble _021F3322
-_021F330A:
- ldr r0, [r2, #4]
- cmp r0, r1
- bne _021F331A
- mov r0, #0
- str r0, [r2, #4]
- str r0, [r2, #8]
- pop {r3, r4}
- bx lr
-_021F331A:
- add r3, r3, #1
- add r2, #0xc
- cmp r3, r4
- blt _021F330A
-_021F3322:
- pop {r3, r4}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F3328
-MOD05_021F3328: ; 0x021F3328
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- mov r0, #1
- lsl r0, r0, #8
- ldr r6, [r7, r0]
- mov r4, #0
- ldrsh r0, [r6, r4]
- ldr r5, [r6, #8]
- cmp r0, #0
- ble _021F3356
-_021F333C:
- ldr r0, [r5, #4]
- cmp r0, #0
- beq _021F334A
- add r0, r7, #0
- add r1, r5, #0
- bl MOD05_021F3364
-_021F334A:
- mov r0, #0
- ldrsh r0, [r6, r0]
- add r4, r4, #1
- add r5, #0xc
- cmp r4, r0
- blt _021F333C
-_021F3356:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F3358
-MOD05_021F3358: ; 0x021F3358
- ldr r3, _021F3360 ; =MOD05_021F3328
- add r0, r1, #0
- bx r3
- nop
-_021F3360: .word MOD05_021F3328
-
- thumb_func_start MOD05_021F3364
-MOD05_021F3364: ; 0x021F3364
- push {r4, lr}
- add r4, r1, #0
- ldr r1, [r4]
- bl MOD05_021F2A08
- cmp r0, #2
- beq _021F33B2
- ldr r0, [r4, #4]
- ldr r1, [r4]
- bl MOD05_021F1FE0
- ldr r1, [r4, #8]
- str r0, [r1]
- ldr r0, [r4, #8]
- ldr r0, [r0]
- cmp r0, #0
- bne _021F338A
- bl GF_AssertFail
-_021F338A:
- ldr r0, [r4, #4]
- mov r1, #0
- bl MOD05_021F2E0C
- mov r1, #2
- ldr r0, [r4, #4]
- lsl r1, r1, #0x14
- bl FUN_0205842C
- cmp r0, #1
- ldr r0, [r4, #4]
- bne _021F33A8
- bl FUN_020586DC
- b _021F33AC
-_021F33A8:
- bl FUN_020586A0
-_021F33AC:
- mov r0, #0
- str r0, [r4, #4]
- str r0, [r4, #8]
-_021F33B2:
- pop {r4, pc}
-
- thumb_func_start MOD05_021F33B4
-MOD05_021F33B4: ; 0x021F33B4
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r6, r1, #0
- add r5, r0, #0
- mov r0, #0xc
- add r7, r6, #0
- mul r7, r0
- lsl r0, r6, #4
- lsl r1, r7, #1
- str r0, [sp, #4]
- add r0, r1, r0
- str r0, [sp, #8]
- add r0, #0x28
- str r0, [sp, #8]
- ldr r1, [sp, #8]
- mov r0, #4
- str r2, [sp]
- bl AllocFromHeap
- add r4, r0, #0
- bne _021F33E2
- bl GF_AssertFail
-_021F33E2:
- ldr r2, [sp, #8]
- add r0, r4, #0
- mov r1, #0
- bl memset
- ldr r0, [sp]
- strh r6, [r4]
- strh r0, [r4, #2]
- add r0, r4, #0
- add r0, #0x28
- str r0, [r4, #8]
- add r1, r0, r7
- ldr r0, [sp, #4]
- str r1, [r4, #0xc]
- add r0, r1, r0
- str r0, [r4, #0x10]
- mov r0, #1
- lsl r0, r0, #8
- str r4, [r5, r0]
- add r0, r0, #4
- ldr r0, [r5, r0]
- bl FUN_0205839C
- add r6, r0, #0
- ldr r0, _021F3448 ; =MOD05_021F30C4
- add r1, r5, #0
- add r2, r6, #1
- bl FUN_0200CA44
- str r0, [r4, #0x18]
- ldr r0, _021F344C ; =MOD05_021F3358
- add r1, r5, #0
- add r2, r6, #2
- bl FUN_0200CA44
- str r0, [r4, #0x1c]
- ldr r0, _021F3450 ; =MOD05_021F3240
- add r1, r5, #0
- mov r2, #0xff
- bl FUN_0200CA60
- str r0, [r4, #0x20]
- ldr r0, _021F3454 ; =MOD05_021F327C
- add r1, r5, #0
- mov r2, #0xff
- bl FUN_0200CA98
- str r0, [r4, #0x24]
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- nop
-_021F3448: .word MOD05_021F30C4
-_021F344C: .word MOD05_021F3358
-_021F3450: .word MOD05_021F3240
-_021F3454: .word MOD05_021F327C
-
- thumb_func_start MOD05_021F3458
-MOD05_021F3458: ; 0x021F3458
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #1
- lsl r0, r0, #8
- ldr r4, [r5, r0]
- mov r0, #1
- strh r0, [r4, #6]
- ldr r0, [r4, #0x18]
- bl FUN_0200CAB4
- ldr r0, [r4, #0x1c]
- bl FUN_0200CAB4
- ldr r0, [r4, #0x20]
- bl FUN_0200CAB4
- ldr r0, [r4, #0x24]
- bl FUN_0200CAB4
- add r0, r4, #0
- bl FreeToHeap
- mov r0, #1
- mov r1, #0
- lsl r0, r0, #8
- str r1, [r5, r0]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3490
-MOD05_021F3490: ; 0x021F3490
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021F2E28
- cmp r0, #1
- beq _021F34A8
- add r0, r5, #0
- bl MOD05_021F0514
- cmp r0, #0
- bne _021F34D2
-_021F34A8:
- add r0, r5, #0
- bl FUN_02058458
- add r6, r0, #0
- add r0, r5, #0
- bl FUN_02058578
- add r7, r0, #0
- add r0, r5, #0
- bl FUN_020576A8
- add r0, r7, #0
- add r1, r6, #0
- add r2, r5, #0
- bl MOD05_021F2C80
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_02057614
- pop {r3, r4, r5, r6, r7, pc}
-_021F34D2:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F34DC
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F34DC
-MOD05_021F34DC: ; 0x021F34DC
- push {r4, r5, r6, r7, lr}
- sub sp, #0x34
- add r7, r0, #0
- str r1, [sp, #8]
- bl MOD05_021F2F3C
- str r0, [sp, #0x18]
- bl MOD05_021F2D48
- str r0, [sp, #0x14]
- add r0, r7, #0
- bl MOD05_021F0514
- str r0, [sp, #0x10]
- mov r0, #4
- mov r1, #0x58
- bl AllocFromHeapAtEnd
- mov r1, #0
- mov r2, #0x58
- add r5, r0, #0
- bl memset
- ldr r0, [sp, #8]
- str r0, [r5]
- add r0, r7, #0
- str r7, [r5, #0x50]
- bl FUN_02058458
- add r6, r0, #0
- bl MOD05_021F2DE8
- ldr r4, _021F36C4 ; =UNK05_021F9094
- ldr r2, _021F36C8 ; =0x0000FFFF
-_021F3520:
- ldr r1, [r4]
- cmp r1, r0
- beq _021F352E
- add r4, #8
- ldr r1, [r4]
- cmp r1, r2
- bne _021F3520
-_021F352E:
- ldr r0, _021F36C8 ; =0x0000FFFF
- cmp r1, r0
- bne _021F3538
- bl GF_AssertFail
-_021F3538:
- ldr r0, [sp, #0x18]
- ldr r1, [r4, #4]
- mov r2, #0
- bl MOD05_021F2DB0
- str r0, [r5, #8]
- add r0, r6, #0
- bl MOD05_021F2DF4
- ldr r4, _021F36CC ; =UNK05_021F90E4
- ldr r2, _021F36C8 ; =0x0000FFFF
-_021F354E:
- ldr r1, [r4]
- cmp r1, r0
- beq _021F355C
- add r4, #8
- ldr r1, [r4]
- cmp r1, r2
- bne _021F354E
-_021F355C:
- ldr r0, _021F36C8 ; =0x0000FFFF
- cmp r1, r0
- bne _021F3566
- bl GF_AssertFail
-_021F3566:
- ldr r0, [sp, #0x18]
- ldr r1, [r4, #4]
- mov r2, #0
- bl MOD05_021F2DB0
- add r1, r5, #0
- add r1, #0x14
- str r0, [r5, #0xc]
- bl FUN_0202227C
- ldr r4, _021F36D0 ; =UNK05_021FA0AC
- ldr r0, _021F36C8 ; =0x0000FFFF
-_021F357E:
- ldr r1, [r4]
- cmp r1, r6
- beq _021F358C
- add r4, #8
- ldr r1, [r4]
- cmp r1, r0
- bne _021F357E
-_021F358C:
- ldr r0, _021F36C8 ; =0x0000FFFF
- cmp r1, r0
- bne _021F3596
- bl GF_AssertFail
-_021F3596:
- ldr r0, [sp, #0x18]
- ldr r1, [r4, #4]
- mov r2, #0
- bl MOD05_021F2DB0
- str r0, [r5, #0x10]
- bl NNS_G3dGetTex
- add r4, r0, #0
- add r0, r6, #0
- bl MOD05_021F2E00
- add r3, r0, #0
- add r0, r5, #0
- add r0, #0x14
- str r0, [sp]
- add r0, r5, #0
- ldr r1, [r5, #8]
- add r0, #0x28
- add r2, r4, #0
- bl FUN_0201F7A4
- ldr r0, [sp, #0x10]
- bl FUN_0201F7E0
- add r3, r0, #0
- add r2, sp, #0x28
- ldmia r3!, {r0, r1}
- add r4, r2, #0
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r1, r5, #0
- str r0, [r2]
- ldr r0, [sp, #0x14]
- add r1, #0x28
- add r2, r4, #0
- bl MOD05_021F2E70
- str r0, [r5, #0x24]
- cmp r0, #0
- bne _021F35EC
- bl GF_AssertFail
-_021F35EC:
- ldr r0, [sp, #0x10]
- bl FUN_0201F844
- add r1, r0, #0
- ldr r0, [r5, #0x24]
- bl FUN_0201F830
- ldr r0, [sp, #0x10]
- bl FUN_0201F8C0
- add r1, r0, #0
- ldr r0, [r5, #0x24]
- bl FUN_0201F890
- ldr r0, [sp, #0x10]
- bl FUN_0201F880
- add r1, r0, #0
- ldr r0, [r5, #0x24]
- bl FUN_0201F86C
- ldr r0, [r5, #0x24]
- mov r1, #0
- bl FUN_0201F854
- ldr r0, [r5, #0x24]
- mov r1, #1
- bl FUN_0201F80C
- ldr r0, [r5, #0x24]
- bl FUN_0201F8F0
- add r0, r7, #0
- bl FUN_02058A9C
- cmp r0, #1
- bne _021F367A
- add r0, r7, #0
- mov r1, #2
- bl FUN_0205829C
- str r0, [sp, #0xc]
- add r0, r7, #0
- mov r1, #1
- bl FUN_02059C90
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- mov r4, #0
- bl FUN_02054AF0
- cmp r0, #0
- bne _021F3658
- mov r4, #1
-_021F3658:
- add r0, r7, #0
- add r1, sp, #0x1c
- bl FUN_02058B5C
- add r0, r7, #0
- bl MOD05_021E4C24
- ldr r1, [sp, #0xc]
- str r4, [sp]
- str r1, [sp, #4]
- add r1, r5, #0
- ldr r2, [r5, #0x24]
- add r1, #0x28
- add r3, sp, #0x1c
- bl MOD06_02249B7C
- str r0, [r5, #0x54]
-_021F367A:
- add r0, r7, #0
- bl FUN_020576A8
- mov r1, #0x41
- ldr r0, [sp, #0x18]
- lsl r1, r1, #2
- ldr r0, [r0, r1]
- add r1, r6, #0
- add r2, r7, #0
- bl MOD05_021F2C80
- ldr r1, [sp, #8]
- add r0, r7, #0
- bl FUN_02057614
- mov r1, #0x41
- ldr r0, [sp, #0x18]
- lsl r1, r1, #2
- ldr r0, [r0, r1]
- bl FUN_0205839C
- ldr r0, _021F36D4 ; =MOD05_021F36D8
- add r1, r5, #0
- mov r2, #0xff
- bl FUN_0200CA98
- add r4, r0, #0
- bne _021F36B6
- bl GF_AssertFail
-_021F36B6:
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F36D8
- add sp, #0x34
- pop {r4, r5, r6, r7, pc}
- nop
-_021F36C4: .word UNK05_021F9094
-_021F36C8: .word 0x0000FFFF
-_021F36CC: .word UNK05_021F90E4
-_021F36D0: .word UNK05_021FA0AC
-_021F36D4: .word MOD05_021F36D8
-
- thumb_func_start MOD05_021F36D8
-MOD05_021F36D8: ; 0x021F36D8
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r6, r0, #0
- ldr r0, [r5, #4]
- ldr r4, [r5, #0x50]
- cmp r0, #0
- beq _021F36EC
- cmp r0, #1
- beq _021F3744
- pop {r4, r5, r6, pc}
-_021F36EC:
- add r0, r4, #0
- bl FUN_02058830
- cmp r0, #0
- beq _021F3700
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #0
- bne _021F3730
-_021F3700:
- ldr r0, [r5, #0x54]
- cmp r0, #0
- beq _021F370A
- bl FUN_02064520
-_021F370A:
- ldr r0, [r5, #0x24]
- bl FUN_0201F744
- ldr r0, [r5, #8]
- bl FreeToHeap
- ldr r0, [r5, #0xc]
- bl FreeToHeap
- ldr r0, [r5, #0x10]
- bl FreeToHeap
- add r0, r5, #0
- bl FreeToHeap
- add r0, r6, #0
- bl FUN_0200CAB4
- pop {r4, r5, r6, pc}
-_021F3730:
- add r0, r4, #0
- bl FUN_02058458
- ldr r1, [r5]
- cmp r1, r0
- beq _021F377C
- ldr r0, [r5, #4]
- add r0, r0, #1
- str r0, [r5, #4]
- pop {r4, r5, r6, pc}
-_021F3744:
- add r0, r4, #0
- bl MOD05_021F2E28
- cmp r0, #0
- bne _021F377C
- ldr r0, [r5, #0x54]
- cmp r0, #0
- beq _021F3758
- bl FUN_02064520
-_021F3758:
- ldr r0, [r5, #0x24]
- bl FUN_0201F744
- ldr r0, [r5, #8]
- bl FreeToHeap
- ldr r0, [r5, #0xc]
- bl FreeToHeap
- ldr r0, [r5, #0x10]
- bl FreeToHeap
- add r0, r5, #0
- bl FreeToHeap
- add r0, r6, #0
- bl FUN_0200CAB4
-_021F377C:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3780
-MOD05_021F3780: ; 0x021F3780
- push {r4, r5, r6, lr}
- add r6, r1, #0
- add r5, r0, #0
- add r0, r6, #0
- bl MOD05_021F37AC
- add r4, r0, #0
- str r6, [r4]
- str r5, [r4, #8]
- bl MOD05_021F37DC
- add r0, r4, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F379C
-MOD05_021F379C: ; 0x021F379C
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021F37E0
- add r0, r4, #0
- bl MOD05_021F37D0
- pop {r4, pc}
-
- thumb_func_start MOD05_021F37AC
-MOD05_021F37AC: ; 0x021F37AC
- push {r4, lr}
- mov r1, #0x10
- bl AllocFromHeap
- add r4, r0, #0
- bne _021F37BC
- bl GF_AssertFail
-_021F37BC:
- add r2, r4, #0
- mov r1, #0x10
- mov r0, #0
-_021F37C2:
- strb r0, [r2]
- add r2, r2, #1
- sub r1, r1, #1
- bne _021F37C2
- add r0, r4, #0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F37D0
-MOD05_021F37D0: ; 0x021F37D0
- ldr r3, _021F37D8 ; =FreeToHeapExplicit
- add r1, r0, #0
- ldr r0, [r1]
- bx r3
- .balign 4, 0
-_021F37D8: .word FreeToHeapExplicit
-
- thumb_func_start MOD05_021F37DC
-MOD05_021F37DC: ; 0x021F37DC
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F37E0
-MOD05_021F37E0: ; 0x021F37E0
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #4]
- cmp r0, #0
- beq _021F380E
- ldr r4, [r5, #0xc]
- cmp r4, #0
- beq _021F380E
-_021F37F0:
- ldr r0, [r4, #0x5c]
- cmp r0, #0
- beq _021F37FC
- add r0, r4, #0
- bl MOD05_021F383C
-_021F37FC:
- ldr r0, [r5, #4]
- add r4, #0x60
- sub r0, r0, #1
- str r0, [r5, #4]
- bne _021F37F0
- ldr r0, [r5]
- ldr r1, [r5, #0xc]
- bl FreeToHeapExplicit
-_021F380E:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F3810
-MOD05_021F3810: ; 0x021F3810
- push {r3, r4, r5, lr}
- add r4, r0, #0
- str r1, [r4, #4]
- mov r0, #0x60
- add r5, r1, #0
- mul r5, r0
- ldr r0, [r4]
- add r1, r5, #0
- bl AllocFromHeap
- str r0, [r4, #0xc]
- cmp r0, #0
- bne _021F382E
- bl GF_AssertFail
-_021F382E:
- ldr r0, [r4, #0xc]
- mov r1, #0
- add r2, r5, #0
- bl memset
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F383C
-MOD05_021F383C: ; 0x021F383C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x5c]
- bl FreeToHeap
- add r0, r4, #0
- mov r1, #0
- mov r2, #0x60
- bl memset
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3854
-MOD05_021F3854: ; 0x021F3854
- mov r0, #0
- str r0, [r2]
- str r0, [r2, #4]
- bx lr
-
- thumb_func_start MOD05_021F385C
-MOD05_021F385C: ; 0x021F385C
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F3860
-MOD05_021F3860: ; 0x021F3860
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- ldr r0, [r5, #0x38]
- add r4, r2, #0
- bl FUN_02055320
- add r6, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_0205532C
- add r7, r0, #0
- ldr r0, [r4]
- cmp r0, r6
- bne _021F3882
- ldr r0, [r4, #4]
- cmp r0, r7
- beq _021F38B4
-_021F3882:
- str r6, [r4]
- add r0, r5, #0
- add r1, r6, #0
- add r2, r7, #0
- str r7, [r4, #4]
- bl FUN_0204A6E0
- add r4, r0, #0
- bl FUN_02054A18
- cmp r0, #0
- beq _021F389E
- mov r2, #0
- b _021F38AA
-_021F389E:
- add r0, r4, #0
- bl FUN_02054A0C
- cmp r0, #0
- beq _021F38B4
- mov r2, #1
-_021F38AA:
- add r0, r6, #0
- add r1, r7, #0
- add r3, r5, #0
- bl MOD05_021DAFA8
-_021F38B4:
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F38B8
-MOD05_021F38B8: ; 0x021F38B8
- ldr r0, [r0, #4]
- ldr r3, _021F38C4 ; =MOD05_021D8024
- ldr r0, [r0, #4]
- ldr r1, _021F38C8 ; =UNK05_021FC58C
- bx r3
- nop
-_021F38C4: .word MOD05_021D8024
-_021F38C8: .word UNK05_021FC58C
-
- thumb_func_start MOD05_021F38CC
-MOD05_021F38CC: ; 0x021F38CC
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- mov r1, #0
- add r2, r1, #0
- add r5, r0, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r5, #0
- mov r1, #0x46
- mov r2, #0
- bl GetMonData
- mov r1, #0xf
- and r0, r1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- add r0, r5, #0
- mov r1, #0x47
- mov r2, #0
- bl GetMonData
- mov r1, #0xf
- and r0, r1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #4]
- add r0, r5, #0
- mov r1, #0x48
- mov r2, #0
- bl GetMonData
- mov r1, #0xf
- and r0, r1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp]
- add r0, r5, #0
- mov r1, #0x49
- mov r2, #0
- bl GetMonData
- mov r1, #0xf
- and r0, r1
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- add r0, r5, #0
- mov r1, #0x4a
- mov r2, #0
- bl GetMonData
- mov r1, #0xf
- and r0, r1
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- add r0, r5, #0
- mov r1, #0x4b
- mov r2, #0
- bl GetMonData
- mov r1, #0xf
- and r0, r1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- eor r0, r6
- asr r1, r4, #8
- mul r0, r7
- eor r0, r1
- lsl r1, r4, #0x18
- lsr r3, r1, #0x18
- lsl r0, r0, #0x10
- ldr r2, [sp, #4]
- ldr r1, [sp]
- lsr r0, r0, #0x10
- eor r2, r1
- ldr r1, [sp, #8]
- mul r2, r1
- add r1, r3, #0
- eor r1, r2
- lsl r1, r1, #0x10
- lsr r1, r1, #8
- add r0, r0, r1
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F3978
-MOD05_021F3978: ; 0x021F3978
- ldr r2, _021F399C ; =UNK05_021FC5A4
- mov r3, #1
-_021F397C:
- lsl r1, r3, #3
- add r1, r2, r1
- ldrh r1, [r1, #4]
- cmp r0, r1
- bhs _021F398E
- sub r0, r3, #1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_021F398E:
- add r1, r3, #1
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- cmp r3, #0xf
- blo _021F397C
- add r0, r3, #0
- bx lr
- .balign 4, 0
-_021F399C: .word UNK05_021FC5A4
-
- thumb_func_start MOD05_021F39A0
-MOD05_021F39A0: ; 0x021F39A0
- push {r4, r5, r6, lr}
- add r6, r0, #0
- mov r0, #4
- add r5, r1, #0
- bl FUN_02087A6C
- add r4, r0, #0
- bl FUN_02087A84
- add r0, r4, #0
- mov r1, #0
- mov r2, #4
- bl FUN_02087A98
- add r0, r4, #0
- add r1, r6, #0
- bl FUN_02087B58
- add r6, r0, #0
- add r0, r4, #0
- bl FUN_02087B0C
- add r0, r5, #0
- bl MOD05_021F3978
- lsl r4, r0, #3
- ldr r0, _021F3A0C ; =UNK05_021FC5A8
- ldr r2, _021F3A10 ; =UNK05_021FC5A6
- ldrh r0, [r0, r4]
- ldrh r2, [r2, r4]
- asr r1, r5, #0x1f
- mov r3, #0
- sub r0, r5, r0
- sbc r1, r3
- bl _ll_udiv
- add r2, r0, #0
- add r0, r6, #0
- ldr r6, _021F3A14 ; =UNK05_021FC5A4
- add r3, r1, #0
- mov r5, #0
- ldrh r4, [r6, r4]
- add r1, r5, #0
- add r2, r4, r2
- adc r5, r3
- add r3, r5, #0
- bl _ll_mul
- mov r2, #0xa
- mov r3, #0
- bl _ll_udiv
- pop {r4, r5, r6, pc}
- nop
-_021F3A0C: .word UNK05_021FC5A8
-_021F3A10: .word UNK05_021FC5A6
-_021F3A14: .word UNK05_021FC5A4
-
- thumb_func_start MOD05_021F3A18
-MOD05_021F3A18: ; 0x021F3A18
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- add r5, r1, #0
- bl SavArray_PlayerParty_get
- add r1, r5, #0
- bl GetPartyMonByIndex
- mov r1, #5
- mov r2, #0
- str r0, [sp]
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- ldr r0, [sp]
- bl MOD05_021F38CC
- add r1, sp, #4
- strh r0, [r1, #2]
- ldrh r1, [r1, #2]
- add r0, r5, #0
- bl MOD05_021F39A0
- add r6, r0, #0
- ldr r0, [r4, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205F3E8
- add r1, sp, #4
- strh r0, [r1]
- ldrh r1, [r1]
- add r0, r5, #0
- bl MOD05_021F39A0
- add r7, r0, #0
- mov r0, #0xfa
- lsl r0, r0, #2
- mul r0, r6
- mov r1, #0xfe
- bl _u32_div_f
- add r0, r0, #5
- mov r1, #0xa
- bl _u32_div_f
- add r5, r0, #0
- mov r0, #0xfa
- lsl r0, r0, #2
- mul r0, r7
- mov r1, #0xfe
- bl _u32_div_f
- add r0, r0, #5
- mov r1, #0xa
- bl _u32_div_f
- cmp r5, r0
- bne _021F3A9A
- add sp, #8
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F3A9A:
- cmp r5, r0
- bls _021F3AAE
- ldr r2, [sp]
- add r0, r4, #0
- add r1, r6, #0
- bl FUN_020619C0
- add sp, #8
- mov r0, #2
- pop {r3, r4, r5, r6, r7, pc}
-_021F3AAE:
- mov r0, #0
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F3AB4
-MOD05_021F3AB4: ; 0x021F3AB4
- push {r3, r4, r5, lr}
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- add r5, r1, #0
- bl SavArray_PlayerParty_get
- add r1, r5, #0
- bl GetPartyMonByIndex
- bl MOD05_021F38CC
- add r1, sp, #0
- strh r0, [r1]
- ldr r0, [r4, #0xc]
- bl SavArray_Flags_get
- add r1, sp, #0
- ldrh r1, [r1]
- bl FUN_0205F3F8
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3AE0
-MOD05_021F3AE0: ; 0x021F3AE0
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r6, r1, #0
- mov r1, #0xf
- add r7, r2, #0
- add r4, r3, #0
- bl FUN_02039438
- add r1, sp, #0x10
- add r5, r0, #0
- ldrh r1, [r1, #0x10]
- add r0, r4, #0
- bl MOD05_021F39A0
- mov r1, #0xfa
- lsl r1, r1, #2
- mul r1, r0
- add r0, r1, #0
- mov r1, #0xfe
- bl _u32_div_f
- add r0, r0, #5
- mov r1, #0xa
- bl _u32_div_f
- mov r1, #0xa
- add r4, r0, #0
- bl _u32_div_f
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- ldr r0, [r5]
- add r1, r6, #0
- mov r3, #3
- bl BufferIntegerAsString
- add r0, r4, #0
- mov r1, #0xa
- bl _u32_div_f
- mov r0, #0
- add r2, r1, #0
- str r0, [sp]
- mov r3, #1
- str r3, [sp, #4]
- ldr r0, [r5]
- add r1, r7, #0
- bl BufferIntegerAsString
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F3B4C
-MOD05_021F3B4C: ; 0x021F3B4C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r0, #0
- ldr r0, [r5, #0xc]
- add r4, r1, #0
- add r6, r2, #0
- add r7, r3, #0
- bl SavArray_Flags_get
- bl FUN_0205F3E8
- add r1, sp, #4
- strh r0, [r1]
- ldrh r0, [r1]
- add r1, r4, #0
- add r2, r6, #0
- str r0, [sp]
- add r0, r5, #0
- add r3, r7, #0
- bl MOD05_021F3AE0
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3B7C
-MOD05_021F3B7C: ; 0x021F3B7C
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r5, r0, #0
- str r2, [sp, #4]
- ldr r0, [r5, #0xc]
- add r4, r3, #0
- add r7, r1, #0
- bl SavArray_PlayerParty_get
- add r1, r4, #0
- bl GetPartyMonByIndex
- mov r1, #5
- mov r2, #0
- add r6, r0, #0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r6, #0
- bl MOD05_021F38CC
- add r1, sp, #8
- strh r0, [r1]
- ldrh r0, [r1]
- add r1, r7, #0
- add r3, r4, #0
- str r0, [sp]
- ldr r2, [sp, #4]
- add r0, r5, #0
- bl MOD05_021F3AE0
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F3BC0
-MOD05_021F3BC0: ; 0x021F3BC0
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- mov r0, #4
- mov r1, #0x20
- bl AllocFromHeap
- add r5, r0, #0
- mov r4, #0
-_021F3BD0:
- mov r1, #0xf
- lsl r1, r1, #0xc
- add r2, r4, #0
- mul r2, r1
- ldr r1, _021F3C2C ; =UNK05_021FD684
- lsl r0, r4, #2
- add r1, r1, r2
- add r6, r5, r0
- str r1, [r5, r0]
- ldr r0, [r5, r0]
- cmp r0, #0
- bne _021F3BEC
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F3BEC:
- cmp r7, #0
- beq _021F3C0A
- mov r1, #9
- mov r0, #4
- lsl r1, r1, #0xc
- bl AllocFromHeap
- str r0, [r6, #0x10]
- cmp r0, #0
- bne _021F3C04
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F3C04:
- mov r2, #9
- lsl r2, r2, #0xc
- b _021F3C10
-_021F3C0A:
- mov r0, #0
- str r0, [r6, #0x10]
- add r2, r0, #0
-_021F3C10:
- mov r1, #0xf
- add r0, r4, #0
- lsl r1, r1, #0xc
- add r3, r5, #0
- bl MOD05_021F3C74
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #4
- blo _021F3BD0
- add r0, r5, #0
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F3C2C: .word UNK05_021FD684
-
- thumb_func_start MOD05_021F3C30
-MOD05_021F3C30: ; 0x021F3C30
- push {r3, r4, r5, r6, r7, lr}
- mov r4, #0
- add r6, r0, #0
- add r7, r4, #0
-_021F3C38:
- lsl r0, r4, #2
- add r5, r6, r0
- str r7, [r6, r0]
- ldr r0, [r5, #0x10]
- cmp r0, #0
- beq _021F3C4C
- bl FreeToHeap
- mov r0, #0
- str r0, [r5, #0x10]
-_021F3C4C:
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #4
- blo _021F3C38
- add r0, r6, #0
- bl FreeToHeap
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3C60
-MOD05_021F3C60: ; 0x021F3C60
- lsl r0, r0, #2
- ldr r0, [r1, r0]
- str r0, [r2]
- bx lr
-
- thumb_func_start MOD05_021F3C68
-MOD05_021F3C68: ; 0x021F3C68
- lsl r0, r0, #2
- add r0, r1, r0
- ldr r0, [r0, #0x10]
- str r0, [r2]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F3C74
-MOD05_021F3C74: ; 0x021F3C74
- push {r3, r4, r5, r6, r7, lr}
- add r5, r3, #0
- lsl r4, r0, #2
- add r6, r1, #0
- add r7, r2, #0
- ldr r0, [r5, r4]
- mov r1, #0
- add r2, r6, #0
- bl MI_CpuFill8
- add r0, r5, r4
- ldr r0, [r0, #0x10]
- mov r1, #0
- add r2, r7, #0
- bl MI_CpuFill8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F3C98
-MOD05_021F3C98: ; 0x021F3C98
- push {r4, r5, r6, r7}
- add r4, r0, #0
- add r3, r2, #0
- mov r5, #0xc
- add r2, r1, #0
- ldr r0, [r4, #4]
- mul r2, r5
- ldrh r0, [r0, r2]
- ldr r6, [r4, #0x10]
- add r1, r0, #0
- mul r1, r5
- add r7, r6, r1
- ldmia r7!, {r0, r1}
- add r6, r3, #0
- stmia r6!, {r0, r1}
- ldr r0, [r7]
- str r0, [r6]
- ldr r1, [r4, #4]
- ldr r0, [r4, #0x10]
- add r1, r1, r2
- ldrh r1, [r1, #2]
- add r6, r1, #0
- mul r6, r5
- add r7, r0, r6
- add r6, r3, #0
- ldmia r7!, {r0, r1}
- add r6, #0xc
- stmia r6!, {r0, r1}
- ldr r0, [r7]
- add r3, #0x18
- str r0, [r6]
- ldr r1, [r4, #4]
- ldr r0, [r4, #0x10]
- add r1, r1, r2
- ldrh r1, [r1, #4]
- add r2, r1, #0
- mul r2, r5
- add r2, r0, r2
- ldmia r2!, {r0, r1}
- stmia r3!, {r0, r1}
- ldr r0, [r2]
- str r0, [r3]
- pop {r4, r5, r6, r7}
- bx lr
-
- thumb_func_start MOD05_021F3CF0
-MOD05_021F3CF0: ; 0x021F3CF0
- push {r4, r5}
- ldr r3, [r0, #0x14]
- ldr r5, [r0, #4]
- mov r0, #0xc
- add r4, r1, #0
- mul r4, r0
- add r1, r5, r4
- ldrh r1, [r1, #6]
- mul r0, r1
- add r3, r3, r0
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- pop {r4, r5}
- bx lr
-
- thumb_func_start MOD05_021F3D10
-MOD05_021F3D10: ; 0x021F3D10
- mov r3, #0
- add r2, r3, #0
- sub r1, r3, #1
-_021F3D16:
- str r2, [r0]
- str r1, [r0, #4]
- str r1, [r0, #8]
- add r3, r3, #1
- add r0, #0xc
- cmp r3, #0xa
- blt _021F3D16
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F3D28
-MOD05_021F3D28: ; 0x021F3D28
- push {r4, r5, r6, r7}
- add r4, r0, #0
- add r0, r2, #0
- mov ip, r3
- cmp r1, #0
- bne _021F3D3A
- mov r0, #0
- pop {r4, r5, r6, r7}
- bx lr
-_021F3D3A:
- cmp r1, #1
- bne _021F3D4A
- mov r1, #0
- mov r0, ip
- strh r1, [r0]
- mov r0, #1
- pop {r4, r5, r6, r7}
- bx lr
-_021F3D4A:
- sub r5, r1, #1
- lsr r1, r5, #0x1f
- add r1, r5, r1
- mov r3, #0
- asr r6, r1, #1
- mov r7, #0xa
-_021F3D56:
- add r1, r6, #0
- mul r1, r7
- add r2, r4, r1
- ldrh r1, [r2, #4]
- ldrh r2, [r2, #2]
- lsl r1, r1, #0x10
- orr r1, r2
- cmp r1, r0
- ble _021F3D84
- sub r1, r5, #1
- cmp r1, r3
- ble _021F3D7A
- add r2, r3, r6
- lsr r1, r2, #0x1f
- add r1, r2, r1
- add r5, r6, #0
- asr r6, r1, #1
- b _021F3D56
-_021F3D7A:
- mov r0, ip
- strh r6, [r0]
- mov r0, #1
- pop {r4, r5, r6, r7}
- bx lr
-_021F3D84:
- add r1, r3, #1
- cmp r1, r5
- bge _021F3D96
- add r2, r6, r5
- lsr r1, r2, #0x1f
- add r1, r2, r1
- add r3, r6, #0
- asr r6, r1, #1
- b _021F3D56
-_021F3D96:
- add r1, r6, #1
- mov r0, ip
- strh r1, [r0]
- mov r0, #1
- pop {r4, r5, r6, r7}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F3DA4
-MOD05_021F3DA4: ; 0x021F3DA4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x110
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x128]
- add r4, r3, #0
- str r0, [sp, #0x128]
- ldr r0, [r4, #0x1c]
- add r6, r1, #0
- add r7, r2, #0
- cmp r0, #0
- bne _021F3DC0
- add sp, #0x110
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F3DC0:
- mov r5, #0
- add r0, sp, #0x98
- str r6, [sp, #0x68]
- str r5, [sp, #0x6c]
- str r7, [sp, #0x70]
- bl MOD05_021F3D10
- ldr r1, [r4]
- ldr r0, [r1, #4]
- sub r0, r6, r0
- bpl _021F3DD8
- add r0, r5, #0
-_021F3DD8:
- ldr r2, [r1, #8]
- sub r7, r7, r2
- bpl _021F3DE0
- mov r7, #0
-_021F3DE0:
- ldr r1, [r1, #0x14]
- bl FX_Div
- ldr r1, [r4]
- asr r6, r0, #0xc
- ldrh r0, [r1]
- cmp r6, r0
- blo _021F3DF2
- sub r6, r0, #1
-_021F3DF2:
- ldr r1, [r1, #0x18]
- add r0, r7, #0
- bl FX_Div
- asr r1, r0, #0xc
- ldr r0, [r4]
- ldrh r0, [r0, #2]
- cmp r1, r0
- blo _021F3E06
- sub r1, r0, #1
-_021F3E06:
- mul r0, r1
- add r0, r6, r0
- lsl r2, r0, #2
- ldr r1, [r4, #8]
- ldr r0, [r4, #0xc]
- add r3, r1, r2
- ldrh r6, [r3, #2]
- ldrh r1, [r1, r2]
- lsl r3, r6, #2
- add r3, r6, r3
- lsl r3, r3, #1
- add r6, r0, r3
- ldr r0, [sp, #0x70]
- add r3, sp, #0x58
- str r0, [sp, #0x28]
- ldr r2, [sp, #0x28]
- add r0, r6, #0
- bl MOD05_021F3D28
- cmp r0, #0
- bne _021F3E36
- add sp, #0x110
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F3E36:
- add r0, sp, #0x58
- ldrh r1, [r0]
- lsl r0, r1, #2
- add r1, r1, r0
- lsl r0, r1, #1
- ldrh r0, [r6, r0]
- str r0, [sp, #0x44]
- add r0, r1, #4
- lsl r0, r0, #1
- add r1, r1, #3
- ldrh r0, [r6, r0]
- lsl r1, r1, #1
- ldrh r1, [r6, r1]
- lsl r0, r0, #0x10
- orr r1, r0
- mov r0, #0
- str r0, [sp, #0x48]
- ldr r0, [sp, #0x44]
- cmp r0, #0
- bls _021F3F50
- add r0, sp, #0x98
- str r0, [sp, #0x40]
- lsl r0, r1, #1
- str r0, [sp, #0x3c]
- ldr r0, [sp, #0x28]
- asr r0, r0, #0x1f
- str r0, [sp, #0x38]
- ldr r0, [sp, #0x68]
- str r0, [sp, #0x2c]
- asr r0, r0, #0x1f
- str r0, [sp, #0x30]
- mov r0, sp
- str r0, [sp, #0x4c]
- sub r0, r0, #4
- str r0, [sp, #0x4c]
-_021F3E7C:
- ldr r0, [sp, #0x48]
- ldr r2, [r4, #0x18]
- lsl r1, r0, #1
- ldr r0, [sp, #0x3c]
- add r0, r0, r2
- ldrh r7, [r1, r0]
- add r0, r4, #0
- add r2, sp, #0x74
- add r1, r7, #0
- bl MOD05_021F3C98
- mov r0, #0
- add r3, sp, #0x80
- str r0, [sp, #0x78]
- str r0, [sp, #0x84]
- str r0, [sp, #0x90]
- ldmia r3!, {r0, r1}
- add r2, sp, #8
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r3, sp, #0x8c
- str r0, [r2]
- ldmia r3!, {r0, r1}
- add r2, sp, #0x14
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r3, sp, #0x74
- str r0, [r2]
- ldr r2, [sp, #0x4c]
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r6, sp, #0x68
- str r0, [r2]
- ldr r0, [sp, #0x4c]
- ldr r3, [r0]
- ldmia r6!, {r0, r1, r2}
- bl FUN_0201C878
- cmp r0, #1
- bne _021F3F40
- add r0, r4, #0
- add r1, r7, #0
- add r2, sp, #0x5c
- bl MOD05_021F3CF0
- ldr r0, [sp, #0x5c]
- ldr r2, [sp, #0x2c]
- ldr r3, [sp, #0x30]
- asr r1, r0, #0x1f
- bl _ll_mul
- str r0, [sp, #0x50]
- ldr r0, [sp, #0x64]
- add r6, r1, #0
- ldr r2, [sp, #0x28]
- ldr r3, [sp, #0x38]
- asr r1, r0, #0x1f
- bl _ll_mul
- mov ip, r0
- mov r2, #0xc
- ldr r0, [r4, #4]
- mul r2, r7
- add r0, r0, r2
- mov r2, #2
- ldr r3, [sp, #0x50]
- lsl r2, r2, #0xa
- add r3, r3, r2
- ldr r2, _021F3FDC ; =0x00000000
- ldr r0, [r0, #8]
- adc r6, r2
- lsl r2, r6, #0x14
- lsr r3, r3, #0xc
- orr r3, r2
- mov r2, #2
- lsl r2, r2, #0xa
- mov r6, ip
- add r2, r6, r2
- ldr r6, _021F3FDC ; =0x00000000
- adc r1, r6
- lsl r1, r1, #0x14
- lsr r2, r2, #0xc
- orr r2, r1
- add r1, r3, r2
- add r0, r0, r1
- ldr r1, [sp, #0x60]
- neg r0, r0
- bl FX_Div
- ldr r1, [sp, #0x40]
- add r5, r5, #1
- str r0, [r1]
- add r0, r1, #0
- add r0, #0xc
- str r0, [sp, #0x40]
- cmp r5, #0xa
- bge _021F3F50
-_021F3F40:
- ldr r0, [sp, #0x48]
- add r0, r0, #1
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- str r1, [sp, #0x48]
- ldr r0, [sp, #0x44]
- cmp r1, r0
- blo _021F3E7C
-_021F3F50:
- cmp r5, #1
- ble _021F3FB8
- mov r0, #0
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x20]
- ldr r1, [sp, #0x98]
- bl FUN_0201C7A8
- add r4, r0, #0
- ldr r0, [sp, #0x20]
- ldr r1, [sp, #0x98]
- bl FUN_0201C7A0
- sub r6, r4, r0
- mov r4, #1
- cmp r5, #1
- ble _021F3FA4
-_021F3F72:
- mov r0, #0xc
- add r7, r4, #0
- mul r7, r0
- add r1, sp, #0x98
- ldr r0, [sp, #0x20]
- ldr r1, [r1, r7]
- bl FUN_0201C7A8
- add r1, sp, #0x98
- str r0, [sp, #0x54]
- ldr r0, [sp, #0x20]
- ldr r1, [r1, r7]
- bl FUN_0201C7A0
- ldr r1, [sp, #0x54]
- sub r0, r1, r0
- cmp r6, r0
- ble _021F3F9A
- add r6, r0, #0
- str r4, [sp, #0x24]
-_021F3F9A:
- add r0, r4, #1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, r5
- blt _021F3F72
-_021F3FA4:
- ldr r0, [sp, #0x24]
- mov r1, #0xc
- mul r1, r0
- add r0, sp, #0x98
- ldr r1, [r0, r1]
- ldr r0, [sp, #0x128]
- add sp, #0x110
- str r1, [r0]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F3FB8:
- bne _021F3FC6
- ldr r1, [sp, #0x98]
- ldr r0, [sp, #0x128]
- add sp, #0x110
- str r1, [r0]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F3FC6:
- cmp r5, #0
- beq _021F3FD6
- ldr r1, [sp, #0x98]
- ldr r0, [sp, #0x128]
- add sp, #0x110
- str r1, [r0]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F3FD6:
- mov r0, #0
- add sp, #0x110
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F3FDC: .word 0x00000000
-
- thumb_func_start MOD05_021F3FE0
-MOD05_021F3FE0: ; 0x021F3FE0
- push {r3, r4, r5, lr}
- sub sp, #8
- add r5, r0, #0
- mov r0, #0
- mov r2, #0x1c
- add r4, r1, #0
- bl MIi_CpuClear32
- add r0, r5, #0
- mov r1, #8
- add r2, sp, #0
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, sp, #0
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, r4, #0
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, sp, #0
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, r4, #4
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, sp, #0
- bl NARC_ReadFile
- add r2, r4, #0
- add r0, r5, #0
- mov r1, #2
- add r2, #8
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, sp, #0
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, sp, #0
- bl NARC_ReadFile
- add r2, r4, #0
- add r0, r5, #0
- mov r1, #2
- add r2, #0xc
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, sp, #0
- bl NARC_ReadFile
- add r2, r4, #0
- add r0, r5, #0
- mov r1, #2
- add r2, #0x18
- bl NARC_ReadFile
- add r0, r5, #0
- mov r1, #2
- add r2, sp, #0
- bl NARC_ReadFile
- add r2, r4, #0
- add r0, r5, #0
- mov r1, #4
- add r2, #0x14
- bl NARC_ReadFile
- add r4, #0x10
- add r0, r5, #0
- mov r1, #4
- add r2, r4, #0
- bl NARC_ReadFile
- add sp, #8
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F4094
-MOD05_021F4094: ; 0x021F4094
- push {r4, r5, r6, lr}
- ldr r4, [r2]
- mov r3, #0
- str r4, [r1, #0x10]
- ldr r5, [r0]
- mov r4, #0xc
- mul r4, r5
- add r3, r3, r4
- lsr r6, r3, #0x1f
- lsl r5, r3, #0x1e
- sub r5, r5, r6
- mov r4, #0x1e
- ror r5, r4
- add r4, r6, r5
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- beq _021F40B8
- add r3, r3, r4
-_021F40B8:
- ldr r4, [r2]
- add r4, r4, r3
- str r4, [r1, #0x14]
- ldr r5, [r0, #4]
- mov r4, #0xc
- mul r4, r5
- add r3, r3, r4
- lsr r6, r3, #0x1f
- lsl r5, r3, #0x1e
- sub r5, r5, r6
- mov r4, #0x1e
- ror r5, r4
- add r4, r6, r5
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- beq _021F40DA
- add r3, r3, r4
-_021F40DA:
- ldr r4, [r2]
- add r4, r4, r3
- str r4, [r1, #4]
- ldr r5, [r0, #8]
- mov r4, #0xc
- mul r4, r5
- add r3, r3, r4
- lsr r6, r3, #0x1f
- lsl r5, r3, #0x1e
- sub r5, r5, r6
- mov r4, #0x1e
- ror r5, r4
- add r4, r6, r5
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- beq _021F40FC
- add r3, r3, r4
-_021F40FC:
- ldr r4, [r2]
- add r4, r4, r3
- add r3, #0x1c
- str r4, [r1]
- lsr r6, r3, #0x1f
- lsl r5, r3, #0x1e
- sub r5, r5, r6
- mov r4, #0x1e
- ror r5, r4
- add r4, r6, r5
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- beq _021F4118
- add r3, r3, r4
-_021F4118:
- ldr r4, [r2]
- add r4, r4, r3
- str r4, [r1, #8]
- ldr r4, [r0, #0xc]
- lsl r4, r4, #2
- add r3, r3, r4
- lsr r6, r3, #0x1f
- lsl r5, r3, #0x1e
- sub r5, r5, r6
- mov r4, #0x1e
- ror r5, r4
- add r4, r6, r5
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- beq _021F4138
- add r3, r3, r4
-_021F4138:
- ldr r4, [r2]
- add r4, r4, r3
- str r4, [r1, #0xc]
- ldr r4, [r0, #0x14]
- add r3, r3, r4
- lsr r6, r3, #0x1f
- lsl r5, r3, #0x1e
- sub r5, r5, r6
- mov r4, #0x1e
- ror r5, r4
- add r4, r6, r5
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- beq _021F4156
- add r3, r3, r4
-_021F4156:
- ldr r2, [r2]
- add r2, r2, r3
- str r2, [r1, #0x18]
- ldr r0, [r0, #0x10]
- add r3, r3, r0
- lsr r2, r3, #0x1f
- lsl r1, r3, #0x1e
- sub r1, r1, r2
- mov r0, #0x1e
- ror r1, r0
- add r0, r2, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- beq _021F4174
- add r3, r3, r0
-_021F4174:
- mov r0, #9
- lsl r0, r0, #0xc
- cmp r3, r0
- ble _021F4180
- bl GF_AssertFail
-_021F4180:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4184
-MOD05_021F4184: ; 0x021F4184
- ldr r3, _021F4190 ; =NARC_ReadFile
- add r2, r1, #0
- mov r1, #0x1c
- ldr r2, [r2]
- bx r3
- nop
-_021F4190: .word NARC_ReadFile
-
- thumb_func_start MOD05_021F4194
-MOD05_021F4194: ; 0x021F4194
- ldr r2, [r2]
- add r3, r1, #0
- mov r1, #0xc
- mul r1, r2
- ldr r2, [r3, #0x10]
- ldr r3, _021F41A4 ; =NARC_ReadFile
- bx r3
- nop
-_021F41A4: .word NARC_ReadFile
-
- thumb_func_start MOD05_021F41A8
-MOD05_021F41A8: ; 0x021F41A8
- ldr r2, [r2, #4]
- add r3, r1, #0
- mov r1, #0xc
- mul r1, r2
- ldr r2, [r3, #0x14]
- ldr r3, _021F41B8 ; =NARC_ReadFile
- bx r3
- nop
-_021F41B8: .word NARC_ReadFile
-
- thumb_func_start MOD05_021F41BC
-MOD05_021F41BC: ; 0x021F41BC
- ldr r2, [r2, #8]
- add r3, r1, #0
- mov r1, #0xc
- mul r1, r2
- ldr r2, [r3, #4]
- ldr r3, _021F41CC ; =NARC_ReadFile
- bx r3
- nop
-_021F41CC: .word NARC_ReadFile
-
- thumb_func_start MOD05_021F41D0
-MOD05_021F41D0: ; 0x021F41D0
- add r3, r1, #0
- ldr r1, [r2, #0xc]
- ldr r2, [r3, #8]
- ldr r3, _021F41DC ; =NARC_ReadFile
- lsl r1, r1, #2
- bx r3
- .balign 4, 0
-_021F41DC: .word NARC_ReadFile
-
- thumb_func_start MOD05_021F41E0
-MOD05_021F41E0: ; 0x021F41E0
- add r3, r1, #0
- ldr r1, [r2, #0x14]
- ldr r2, [r3, #0xc]
- ldr r3, _021F41EC ; =NARC_ReadFile
- bx r3
- nop
-_021F41EC: .word NARC_ReadFile
-
- thumb_func_start MOD05_021F41F0
-MOD05_021F41F0: ; 0x021F41F0
- add r3, r1, #0
- ldr r1, [r2, #0x10]
- ldr r2, [r3, #0x18]
- ldr r3, _021F41FC ; =NARC_ReadFile
- bx r3
- nop
-_021F41FC: .word NARC_ReadFile
-
- thumb_func_start MOD05_021F4200
-MOD05_021F4200: ; 0x021F4200
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r1, #0xa0
- ldr r1, [r1]
- add r5, r0, #0
- cmp r1, #1
- bne _021F4216
- add r1, r4, #0
- mov r2, #2
- add r1, #0x6c
- strb r2, [r1]
-_021F4216:
- add r1, r4, #0
- add r1, #0x6c
- ldrb r1, [r1]
- cmp r1, #0
- beq _021F422A
- cmp r1, #1
- beq _021F425E
- cmp r1, #2
- beq _021F42EA
- b _021F4302
-_021F422A:
- add r0, r4, #0
- add r0, #0xb0
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, #0
- beq _021F423A
- mov r0, #0
- b _021F4302
-_021F423A:
- add r0, r4, #0
- add r0, #0xa8
- add r1, r4, #0
- ldr r0, [r0]
- add r1, #0x4c
- bl MOD05_021F3FE0
- add r1, r4, #0
- add r1, #0x9c
- add r0, r4, #0
- add r2, r4, #0
- ldr r1, [r1]
- add r0, #0x4c
- add r2, #0x98
- bl MOD05_021F4094
- mov r0, #1
- b _021F4302
-_021F425E:
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0x9c
- ldr r0, [r0]
- ldr r1, [r1]
- bl MOD05_021F4184
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0x9c
- add r2, r4, #0
- ldr r0, [r0]
- ldr r1, [r1]
- add r2, #0x4c
- bl MOD05_021F4194
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0x9c
- add r2, r4, #0
- ldr r0, [r0]
- ldr r1, [r1]
- add r2, #0x4c
- bl MOD05_021F41A8
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0x9c
- add r2, r4, #0
- ldr r0, [r0]
- ldr r1, [r1]
- add r2, #0x4c
- bl MOD05_021F41BC
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0x9c
- add r2, r4, #0
- ldr r0, [r0]
- ldr r1, [r1]
- add r2, #0x4c
- bl MOD05_021F41D0
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0x9c
- add r2, r4, #0
- ldr r0, [r0]
- ldr r1, [r1]
- add r2, #0x4c
- bl MOD05_021F41E0
- add r0, r4, #0
- add r1, r4, #0
- add r0, #0xa8
- add r1, #0x9c
- add r2, r4, #0
- ldr r0, [r0]
- ldr r1, [r1]
- add r2, #0x4c
- bl MOD05_021F41F0
- mov r0, #1
- b _021F4302
-_021F42EA:
- add r0, r4, #0
- add r0, #0xa4
- ldr r0, [r0]
- mov r1, #0
- str r1, [r0]
- add r0, r4, #0
- bl FreeToHeap
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
-_021F4302:
- cmp r0, #1
- bne _021F4326
- add r0, r4, #0
- add r0, #0x6c
- ldrb r0, [r0]
- add r1, r0, #1
- add r0, r4, #0
- add r0, #0x6c
- strb r1, [r0]
- add r0, r4, #0
- add r0, #0x6c
- ldrb r0, [r0]
- cmp r0, #2
- bne _021F4326
- add r4, #0x9c
- ldr r0, [r4]
- mov r1, #1
- str r1, [r0, #0x1c]
-_021F4326:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F4328
-MOD05_021F4328: ; 0x021F4328
- push {r3, lr}
- mov r0, #4
- mov r1, #0x20
- bl AllocFromHeap
- mov r1, #0
- str r1, [r0, #0x10]
- str r1, [r0, #0x14]
- str r1, [r0, #4]
- str r1, [r0]
- str r1, [r0, #8]
- str r1, [r0, #0xc]
- str r1, [r0, #0x18]
- pop {r3, pc}
-
- thumb_func_start MOD05_021F4344
-MOD05_021F4344: ; 0x021F4344
- push {r0, r1, r2, r3}
- push {r4, r5, r6, lr}
- add r5, r0, #0
- mov r0, #4
- mov r1, #0x1c
- add r4, r2, #0
- bl AllocFromHeapAtEnd
- add r6, r0, #0
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021F3FE0
- add r0, r6, #0
- add r1, r4, #0
- add r2, sp, #0x1c
- bl MOD05_021F4094
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F4184
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021F4194
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021F41A8
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021F41BC
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021F41D0
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021F41E0
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021F41F0
- add r0, r6, #0
- bl FreeToHeap
- mov r0, #1
- str r0, [r4, #0x1c]
- pop {r4, r5, r6}
- pop {r3}
- add sp, #0x10
- bx r3
- .balign 4, 0
-
- thumb_func_start MOD05_021F43C0
-MOD05_021F43C0: ; 0x021F43C0
- push {r3, lr}
- cmp r0, #0
- beq _021F43CA
- bl FreeToHeap
-_021F43CA:
- pop {r3, pc}
-
- thumb_func_start MOD05_021F43CC
-MOD05_021F43CC: ; 0x021F43CC
- cmp r0, #0
- beq _021F43E2
- mov r1, #0
- str r1, [r0, #0x1c]
- str r1, [r0, #0x10]
- str r1, [r0, #0x14]
- str r1, [r0, #4]
- str r1, [r0]
- str r1, [r0, #8]
- str r1, [r0, #0xc]
- str r1, [r0, #0x18]
-_021F43E2:
- bx lr
-
- thumb_func_start MOD05_021F43E4
-MOD05_021F43E4: ; 0x021F43E4
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r4, r1, #0
- mov r0, #4
- mov r1, #0xb4
- add r6, r2, #0
- add r7, r3, #0
- bl AllocFromHeapAtEnd
- add r1, r0, #0
- add r2, r1, #0
- mov r0, #0
- add r2, #0x6c
- strb r0, [r2]
- add r2, r1, #0
- add r2, #0xa8
- str r5, [r2]
- add r2, r1, #0
- add r2, #0xac
- str r4, [r2]
- add r2, r1, #0
- add r2, #0x9c
- str r6, [r2]
- add r2, r1, #0
- add r2, #0xa4
- str r7, [r2]
- add r2, r1, #0
- add r2, #0xa0
- str r0, [r2]
- str r0, [r1, #0x68]
- str r0, [r1, #0x48]
- ldr r0, [sp, #0x18]
- ldr r2, [r0]
- add r0, r1, #0
- add r0, #0x98
- str r2, [r0]
- add r0, r1, #0
- ldr r2, [sp, #0x1c]
- add r0, #0xb0
- str r2, [r0]
- ldr r0, _021F4440 ; =MOD05_021F4200
- mov r2, #1
- bl FUN_0200CA44
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F4440: .word MOD05_021F4200
-
- thumb_func_start MOD05_021F4444
-MOD05_021F4444: ; 0x021F4444
- push {r3, lr}
- bl FUN_0201B6C8
- mov r1, #1
- add r0, #0xa0
- str r1, [r0]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4454
-MOD05_021F4454: ; 0x021F4454
- mov r1, #0
- str r1, [r0, #0x1c]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F445C
-MOD05_021F445C: ; 0x021F445C
- push {r4, r5}
- ldr r3, [r2, #0x14]
- cmp r3, #0
- bne _021F446A
- mov r0, #0
- pop {r4, r5}
- bx lr
-_021F446A:
- ldr r5, [r2]
- ldr r3, [r2, #8]
- ldr r4, [r2, #4]
- ldr r2, [r2, #0xc]
- add r3, r5, r3
- add r2, r4, r2
- sub r3, r3, #1
- sub r2, r2, #1
- cmp r5, r0
- bgt _021F4490
- cmp r0, r3
- bgt _021F4490
- cmp r4, r1
- bgt _021F4490
- cmp r1, r2
- bgt _021F4490
- mov r0, #1
- pop {r4, r5}
- bx lr
-_021F4490:
- mov r0, #0
- pop {r4, r5}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F4498
-MOD05_021F4498: ; 0x021F4498
- push {r4, r5, r6, lr}
- add r6, r1, #0
- add r5, r0, #0
- add r0, r6, #0
- mov r1, #8
- bl AllocFromHeap
- mov r1, #0x18
- add r4, r0, #0
- add r0, r6, #0
- mul r1, r5
- bl AllocFromHeap
- str r0, [r4, #4]
- mov r6, #0
- str r5, [r4]
- cmp r5, #0
- bls _021F44D4
- add r0, r6, #0
- mov r1, #0x18
-_021F44C0:
- add r2, r6, #0
- ldr r3, [r4, #4]
- mul r2, r1
- add r2, r3, r2
- str r0, [r2, #0x14]
- add r2, r6, #1
- lsl r2, r2, #0x18
- lsr r6, r2, #0x18
- cmp r6, r5
- blo _021F44C0
-_021F44D4:
- add r0, r4, #0
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F44D8
-MOD05_021F44D8: ; 0x021F44D8
- push {r4, r5}
- ldr r5, [sp, #0x10]
- mov r4, #0x18
- mul r4, r0
- ldr r0, [r5, #4]
- str r1, [r0, r4]
- ldr r0, [r5, #4]
- ldr r1, [sp, #8]
- add r0, r0, r4
- str r2, [r0, #4]
- ldr r0, [r5, #4]
- add r0, r0, r4
- str r3, [r0, #8]
- ldr r0, [r5, #4]
- add r0, r0, r4
- str r1, [r0, #0xc]
- ldr r0, [r5, #4]
- ldr r1, [sp, #0xc]
- add r0, r0, r4
- str r1, [r0, #0x10]
- ldr r0, [r5, #4]
- mov r1, #1
- add r0, r0, r4
- str r1, [r0, #0x14]
- pop {r4, r5}
- bx lr
-
- thumb_func_start MOD05_021F450C
-MOD05_021F450C: ; 0x021F450C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #4]
- bl FreeToHeap
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4520
-MOD05_021F4520: ; 0x021F4520
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- add r7, r1, #0
- add r5, r2, #0
- str r3, [sp]
- cmp r3, #0
- bne _021F4532
- bl GF_AssertFail
-_021F4532:
- ldr r0, [r5]
- mov r4, #0
- cmp r0, #0
- ble _021F4562
-_021F453A:
- mov r3, #0x18
- ldr r2, [r5, #4]
- mul r3, r4
- add r0, r6, #0
- add r1, r7, #0
- add r2, r2, r3
- bl MOD05_021F445C
- cmp r0, #0
- beq _021F4556
- ldr r0, [sp]
- strb r4, [r0]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F4556:
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- ldr r0, [r5]
- cmp r4, r0
- blt _021F453A
-_021F4562:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4568
-MOD05_021F4568: ; 0x021F4568
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4]
- cmp r5, r0
- blt _021F4578
- bl GF_AssertFail
-_021F4578:
- mov r0, #0x18
- add r6, r5, #0
- mul r6, r0
- ldr r0, [r4, #4]
- add r0, r0, r6
- ldr r0, [r0, #0x14]
- cmp r0, #0
- bne _021F458C
- bl GF_AssertFail
-_021F458C:
- ldr r0, [r4, #4]
- add r0, r0, r6
- ldr r0, [r0, #0x10]
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F4594
-MOD05_021F4594: ; 0x021F4594
- push {r4, r5, r6, lr}
- add r6, r2, #0
- add r5, r0, #0
- ldr r0, [r6]
- add r4, r1, #0
- cmp r5, r0
- blt _021F45A6
- bl GF_AssertFail
-_021F45A6:
- mov r0, #0x18
- ldr r1, [r6, #4]
- mul r0, r5
- add r0, r1, r0
- str r4, [r0, #0x10]
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F45B4
-MOD05_021F45B4: ; 0x021F45B4
- push {r4, lr}
- mov r1, #0x1c
- bl AllocFromHeap
- add r4, r0, #0
- bl MOD05_021F4650
- add r0, r4, #0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F45C8
-MOD05_021F45C8: ; 0x021F45C8
- push {r4, lr}
- add r4, r0, #0
- beq _021F45E4
- ldr r1, [r4]
- cmp r1, #1
- bne _021F45D8
- bl MOD05_021F4608
-_021F45D8:
- add r0, r4, #0
- bl MOD05_021F4650
- add r0, r4, #0
- bl FreeToHeap
-_021F45E4:
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F45E8
-MOD05_021F45E8: ; 0x021F45E8
- push {r4, lr}
- add r4, r0, #0
- ldr r0, _021F4604 ; =MOD05_021F4688
- add r1, r4, #0
- bl FUN_02015F34
- cmp r0, #1
- beq _021F45FC
- bl GF_AssertFail
-_021F45FC:
- mov r0, #1
- str r0, [r4]
- pop {r4, pc}
- nop
-_021F4604: .word MOD05_021F4688
-
- thumb_func_start MOD05_021F4608
-MOD05_021F4608: ; 0x021F4608
- push {r4, lr}
- add r4, r0, #0
- mov r0, #0
- add r1, r0, #0
- bl FUN_02015F34
- cmp r0, #1
- beq _021F461C
- bl GF_AssertFail
-_021F461C:
- mov r0, #0
- str r0, [r4]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4624
-MOD05_021F4624: ; 0x021F4624
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r6, r2, #0
- bl MOD05_021F46A8
- add r4, r0, #0
- bne _021F4636
- bl GF_AssertFail
-_021F4636:
- cmp r4, #0
- beq _021F4642
- str r6, [r4, #4]
- str r5, [r4, #8]
- mov r0, #1
- str r0, [r4]
-_021F4642:
- add r0, r4, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4648
-MOD05_021F4648: ; 0x021F4648
- ldr r3, _021F464C ; =MOD05_021F4678
- bx r3
- .balign 4, 0
-_021F464C: .word MOD05_021F4678
-
- thumb_func_start MOD05_021F4650
-MOD05_021F4650: ; 0x021F4650
- push {r3, r4, r5, lr}
- add r3, r0, #0
- mov r2, #0x1c
- mov r1, #0
-_021F4658:
- strb r1, [r3]
- add r3, r3, #1
- sub r2, r2, #1
- bne _021F4658
- mov r4, #0
- str r4, [r0]
- add r5, r0, #4
-_021F4666:
- add r0, r5, #0
- bl MOD05_021F4678
- add r4, r4, #1
- add r5, #0xc
- cmp r4, #2
- blt _021F4666
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4678
-MOD05_021F4678: ; 0x021F4678
- mov r2, #0
- ldr r1, _021F4684 ; =MOD05_021F46A4
- str r2, [r0]
- str r1, [r0, #8]
- str r2, [r0, #4]
- bx lr
- .balign 4, 0
-_021F4684: .word MOD05_021F46A4
-
- thumb_func_start MOD05_021F4688
-MOD05_021F4688: ; 0x021F4688
- push {r4, r5, r6, lr}
- add r5, r0, #0
- mov r6, #0
- add r4, r5, #4
-_021F4690:
- ldr r1, [r5, #8]
- ldr r2, [r5, #0xc]
- add r0, r4, #0
- blx r2
- add r6, r6, #1
- add r5, #0xc
- add r4, #0xc
- cmp r6, #2
- blt _021F4690
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F46A4
-MOD05_021F46A4: ; 0x021F46A4
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F46A8
-MOD05_021F46A8: ; 0x021F46A8
- mov r2, #0
- add r3, r0, #0
-_021F46AC:
- ldr r1, [r3, #4]
- cmp r1, #0
- bne _021F46BC
- add r1, r0, #4
- mov r0, #0xc
- mul r0, r2
- add r0, r1, r0
- bx lr
-_021F46BC:
- add r2, r2, #1
- add r3, #0xc
- cmp r2, #2
- blt _021F46AC
- mov r0, #0
- bx lr
-
- thumb_func_start MOD05_021F46C8
-MOD05_021F46C8: ; 0x021F46C8
- push {r4, r5, r6, lr}
- add r5, r1, #0
- mov r1, #0xca
- lsl r1, r1, #2
- add r6, r0, #0
- bl AllocFromHeap
- mov r2, #0xca
- mov r1, #0
- lsl r2, r2, #2
- add r4, r0, #0
- bl memset
- mov r2, #0x63
- mov r0, #0
- add r1, r4, #0
- lsl r2, r2, #2
- str r0, [r4]
- add r0, r6, #0
- add r1, #0xc
- add r2, r4, r2
- bl FUN_02012944
- mov r1, #0xc3
- lsl r1, r1, #2
- str r0, [r4, r1]
- add r0, r1, #4
- str r5, [r4, r0]
- add r0, r4, #0
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F4704
-MOD05_021F4704: ; 0x021F4704
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4]
- cmp r1, #1
- bne _021F4712
- bl MOD05_021F491C
-_021F4712:
- mov r0, #0xc3
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_02012974
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start MOD05_021F4724
-MOD05_021F4724: ; 0x021F4724
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F4732
- bl GF_AssertFail
-_021F4732:
- mov r0, #0x31
- lsl r0, r0, #4
- ldr r0, [r4, r0]
- ldr r1, _021F47A4 ; =MOD05_021F48CC
- add r2, r4, #0
- bl MOD05_021F4624
- mov r2, #0xc5
- lsl r2, r2, #2
- str r0, [r4, r2]
- ldr r0, _021F47A8 ; =MOD05_021F47B4
- add r1, r4, #0
- add r2, #0xec
- bl FUN_0200CA44
- mov r2, #0xc7
- lsl r2, r2, #2
- str r0, [r4, r2]
- ldr r0, _021F47AC ; =MOD05_021F48BC
- add r1, r4, #0
- add r2, #0xe4
- bl FUN_0200CA60
- mov r2, #0x32
- lsl r2, r2, #4
- str r0, [r4, r2]
- ldr r0, _021F47B0 ; =MOD05_021F48F0
- add r1, r4, #0
- add r2, #0xe0
- bl FUN_0200CA60
- mov r1, #0xc9
- lsl r1, r1, #2
- str r0, [r4, r1]
- add r0, r4, #0
- mov r2, #6
- add r0, #0xc
- mov r1, #0
- lsl r2, r2, #6
- bl memset
- mov r2, #0x63
- lsl r2, r2, #2
- add r0, r4, r2
- mov r1, #0
- sub r2, #0xc
- bl memset
- mov r0, #1
- str r0, [r4]
- mov r0, #0
- str r0, [r4, #8]
- mov r0, #0x61
- lsl r0, r0, #4
- bl PlaySE
- pop {r4, pc}
- .balign 4, 0
-_021F47A4: .word MOD05_021F48CC
-_021F47A8: .word MOD05_021F47B4
-_021F47AC: .word MOD05_021F48BC
-_021F47B0: .word MOD05_021F48F0
-
- thumb_func_start MOD05_021F47B4
-MOD05_021F47B4: ; 0x021F47B4
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4, #8]
- cmp r0, #3
- bhi _021F483C
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021F47CA: ; jump table
- .short _021F47D2 - _021F47CA - 2 ; case 0
- .short _021F47DE - _021F47CA - 2 ; case 1
- .short _021F480A - _021F47CA - 2 ; case 2
- .short _021F4830 - _021F47CA - 2 ; case 3
-_021F47D2:
- mov r0, #3
- str r0, [r4, #4]
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- pop {r4, pc}
-_021F47DE:
- ldr r0, [r4, #4]
- sub r0, r0, #1
- str r0, [r4, #4]
- mov r0, #0xc3
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_02012988
- ldr r1, [r4, #4]
- mov r2, #3
- sub r1, r2, r1
- bl MOD05_021F4878
- ldr r0, [r4, #4]
- cmp r0, #0
- bgt _021F483C
- mov r0, #3
- str r0, [r4, #4]
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- pop {r4, pc}
-_021F480A:
- ldr r0, [r4, #4]
- sub r0, r0, #1
- str r0, [r4, #4]
- mov r0, #0xc3
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_02012988
- ldr r1, [r4, #4]
- mov r2, #3
- bl MOD05_021F4878
- ldr r0, [r4, #4]
- cmp r0, #0
- bgt _021F483C
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- pop {r4, pc}
-_021F4830:
- add r0, r4, #0
- bl MOD05_021F491C
- mov r0, #0
- bl G3X_SetHOffset
-_021F483C:
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4840
-MOD05_021F4840: ; 0x021F4840
- push {r4, lr}
- ldr r1, _021F4870 ; =0x04000006
- ldrh r4, [r1]
- mov r1, #0xc3
- lsl r1, r1, #2
- ldr r0, [r0, r1]
- bl FUN_0201299C
- cmp r4, #0xc0
- bge _021F486E
- add r3, r4, #1
- cmp r3, #0xc0
- blt _021F485C
- sub r3, #0xc0
-_021F485C:
- ldr r1, _021F4874 ; =0x04000004
- ldrh r2, [r1]
- mov r1, #2
- tst r1, r2
- beq _021F486E
- lsl r1, r3, #1
- ldrh r0, [r0, r1]
- bl G3X_SetHOffset
-_021F486E:
- pop {r4, pc}
- .balign 4, 0
-_021F4870: .word 0x04000006
-_021F4874: .word 0x04000004
-
- thumb_func_start MOD05_021F4878
-MOD05_021F4878: ; 0x021F4878
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- lsl r0, r1, #1
- add r0, r1, r0
- add r1, r2, #0
- mov r4, #1
- bl _s32_div_f
- neg r1, r0
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- lsl r0, r0, #0x10
- mov r6, #0
- str r1, [sp]
- lsr r7, r0, #0x10
-_021F4896:
- add r0, r6, #0
- mov r1, #0xa
- bl _s32_div_f
- cmp r1, #0
- bne _021F48A6
- mov r0, #1
- eor r4, r0
-_021F48A6:
- cmp r4, #0
- beq _021F48AE
- strh r7, [r5]
- b _021F48B2
-_021F48AE:
- ldr r0, [sp]
- strh r0, [r5]
-_021F48B2:
- add r6, r6, #1
- add r5, r5, #2
- cmp r6, #0xc0
- blt _021F4896
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F48BC
-MOD05_021F48BC: ; 0x021F48BC
- mov r2, #0xc6
- ldr r3, _021F48C8 ; =G3X_SetHOffset
- mov r0, #0
- lsl r2, r2, #2
- str r0, [r1, r2]
- bx r3
- .balign 4, 0
-_021F48C8: .word G3X_SetHOffset
-
- thumb_func_start MOD05_021F48CC
-MOD05_021F48CC: ; 0x021F48CC
- ldr r3, _021F48D4 ; =MOD05_021F48D8
- add r0, r1, #0
- bx r3
- nop
-_021F48D4: .word MOD05_021F48D8
-
- thumb_func_start MOD05_021F48D8
-MOD05_021F48D8: ; 0x021F48D8
- push {r3, lr}
- ldr r1, [r0]
- cmp r1, #1
- bne _021F48EE
- mov r1, #0xc6
- lsl r1, r1, #2
- ldr r1, [r0, r1]
- cmp r1, #1
- bne _021F48EE
- bl MOD05_021F4840
-_021F48EE:
- pop {r3, pc}
-
- thumb_func_start MOD05_021F48F0
-MOD05_021F48F0: ; 0x021F48F0
- ldr r3, _021F48F8 ; =MOD05_021F48FC
- add r0, r1, #0
- bx r3
- nop
-_021F48F8: .word MOD05_021F48FC
-
- thumb_func_start MOD05_021F48FC
-MOD05_021F48FC: ; 0x021F48FC
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #1
- bne _021F4918
- mov r0, #0xc3
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl FUN_020129B4
- mov r0, #0xc6
- mov r1, #1
- lsl r0, r0, #2
- str r1, [r4, r0]
-_021F4918:
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F491C
-MOD05_021F491C: ; 0x021F491C
- push {r4, lr}
- add r4, r0, #0
- mov r0, #0xc5
- lsl r0, r0, #2
- ldr r0, [r4, r0]
- bl MOD05_021F4648
- mov r0, #0xc5
- mov r1, #0
- lsl r0, r0, #2
- str r1, [r4, r0]
- add r0, #8
- ldr r0, [r4, r0]
- bl FUN_0200CAB4
- mov r0, #0xc7
- mov r1, #0
- lsl r0, r0, #2
- str r1, [r4, r0]
- add r0, r0, #4
- ldr r0, [r4, r0]
- bl FUN_0200CAB4
- mov r0, #0x32
- mov r1, #0
- lsl r0, r0, #4
- str r1, [r4, r0]
- add r0, r0, #4
- ldr r0, [r4, r0]
- bl FUN_0200CAB4
- mov r0, #0xc9
- mov r1, #0
- lsl r0, r0, #2
- str r1, [r4, r0]
- str r1, [r4]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4968
-MOD05_021F4968: ; 0x021F4968
- ldr r2, [r1, #0x14]
- ldr r3, _021F4974 ; =FUN_02016B44
- add r1, r1, r2
- sub r1, r1, r0
- bx r3
- nop
-_021F4974: .word ReallocFromHeap
-
- thumb_func_start MOD05_021F4978
-MOD05_021F4978: ; 0x021F4978
- push {r4, r5, r6, lr}
- add r6, r1, #0
- mov r1, #0x23
- add r5, r0, #0
- mov r0, #4
- lsl r1, r1, #6
- bl AllocFromHeap
- add r4, r0, #0
- mov r0, #4
- mov r1, #0x10
- bl AllocFromHeapAtEnd
- ldr r1, _021F49A8 ; =0x000008B8
- mov r2, #0
- str r0, [r4, r1]
- ldr r0, [r4, r1]
- str r5, [r0]
- ldr r0, [r4, r1]
- str r6, [r0, #4]
- ldr r0, [r4, r1]
- str r2, [r0, #0xc]
- add r0, r4, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F49A8: .word 0x000008B8
-
- thumb_func_start MOD05_021F49AC
-MOD05_021F49AC: ; 0x021F49AC
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x110
- add r5, r0, #0
- ldr r0, _021F4B9C ; =0x000008B8
- mov r1, #0x2a
- ldr r7, [r5, r0]
- sub r0, #8
- ldr r2, [r7]
- add r0, r5, r0
- bl ReadWholeNarcMemberByIdPair
- mov r1, #0x8b
- lsl r1, r1, #4
- ldrh r1, [r5, r1]
- mov r0, #0x2b
- mov r2, #4
- bl AllocAndReadWholeNarcMemberByIdPair
- ldr r1, _021F4BA0 ; =0x000008BC
- str r0, [r5, r1]
- ldr r0, [r5, r1]
- ldrh r1, [r0]
- ldr r0, _021F4BA4 ; =0x00000226
- strh r1, [r7, #8]
- cmp r1, r0
- blo _021F49E4
- bl GF_AssertFail
-_021F49E4:
- ldr r1, _021F4BA8 ; =0x000008A4
- mov r0, #0
- str r0, [r5, r1]
- add r1, #0xe
- ldrh r1, [r5, r1]
- mov r0, #0x2c
- mov r2, #4
- bl AllocAndReadWholeNarcMemberByIdPair
- ldr r1, _021F4BAC ; =0x0000089C
- mov r2, #4
- str r0, [r5, r1]
- add r1, #0x14
- ldrh r1, [r5, r1]
- mov r0, #0x47
- bl AllocAndReadWholeNarcMemberByIdPair
- mov r1, #0x8a
- lsl r1, r1, #4
- str r0, [r5, r1]
- sub r0, r1, #4
- ldr r0, [r5, r0]
- bl NNS_G3dGetTex
- ldr r1, _021F4BA8 ; =0x000008A4
- str r0, [r5, r1]
- ldrh r0, [r7, #8]
- cmp r0, #0
- beq _021F4A2C
- sub r0, r1, #4
- ldr r0, [r5, r0]
- bl NNS_G3dGetTex
- ldr r1, _021F4BB0 ; =0x000008A8
- str r0, [r5, r1]
- b _021F4A32
-_021F4A2C:
- mov r2, #0
- add r0, r1, #4
- str r2, [r5, r0]
-_021F4A32:
- ldr r0, _021F4BA8 ; =0x000008A4
- ldr r0, [r5, r0]
- bl FUN_0201B3C4
- cmp r0, #0
- bne _021F4A42
- bl GF_AssertFail
-_021F4A42:
- ldr r1, _021F4BAC ; =0x0000089C
- ldr r0, [r5, r1]
- add r1, #8
- ldr r1, [r5, r1]
- bl MOD05_021F4968
- ldr r0, _021F4BB0 ; =0x000008A8
- ldr r0, [r5, r0]
- cmp r0, #0
- beq _021F4A70
- bl FUN_0201B3C4
- cmp r0, #0
- bne _021F4A62
- bl GF_AssertFail
-_021F4A62:
- mov r1, #0x8a
- lsl r1, r1, #4
- ldr r0, [r5, r1]
- add r1, #8
- ldr r1, [r5, r1]
- bl MOD05_021F4968
-_021F4A70:
- mov r2, #0
- ldr r0, _021F4BA4 ; =0x00000226
- add r3, r5, #0
- add r1, r2, #0
-_021F4A78:
- add r2, r2, #1
- str r1, [r3, #4]
- add r3, r3, #4
- cmp r2, r0
- blt _021F4A78
- ldr r0, _021F4BB4 ; =0x000008AC
- str r1, [r5, r0]
- mov r0, #0x28
- mov r1, #4
- bl NARC_ctor
- str r0, [sp, #0xc]
- ldr r0, [r7, #4]
- bl MOD05_021DA220
- str r0, [sp, #4]
- mov r0, #0
- str r0, [sp, #8]
- ldrh r0, [r7, #8]
- cmp r0, #0
- ble _021F4B10
- ldr r0, [sp, #8]
- str r0, [sp]
-_021F4AA6:
- ldr r0, _021F4BA0 ; =0x000008BC
- ldr r1, [r5, r0]
- ldr r0, [sp]
- add r0, r1, r0
- ldrh r6, [r0, #2]
- lsl r0, r6, #2
- add r4, r5, r0
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F4ABE
- bl GF_AssertFail
-_021F4ABE:
- ldr r0, [sp, #0xc]
- add r1, r6, #0
- mov r2, #4
- bl NARC_AllocAndReadWholeMember
- str r0, [r4, #4]
- ldr r0, [sp, #4]
- cmp r6, r0
- bge _021F4AEC
- ldr r0, [r4, #4]
- bl NNS_G3dGetMdlSet
- add r1, r0, #0
- ldrh r2, [r1, #0xe]
- ldr r3, [r7, #4]
- add r0, r6, #0
- add r2, r1, r2
- ldr r2, [r2, #0xc]
- add r1, r1, r2
- ldr r2, _021F4BB0 ; =0x000008A8
- ldr r2, [r5, r2]
- bl MOD05_021D9CEC
-_021F4AEC:
- ldr r1, _021F4BB0 ; =0x000008A8
- ldr r0, [r4, #4]
- ldr r1, [r5, r1]
- bl FUN_0201B3A8
- cmp r0, #0
- bne _021F4AFE
- bl GF_AssertFail
-_021F4AFE:
- ldr r0, [sp]
- ldrh r1, [r7, #8]
- add r0, r0, #2
- str r0, [sp]
- ldr r0, [sp, #8]
- add r0, r0, #1
- str r0, [sp, #8]
- cmp r0, r1
- blt _021F4AA6
-_021F4B10:
- ldr r0, [r5, #4]
- cmp r0, #0
- bne _021F4B46
- ldr r0, [sp, #0xc]
- mov r1, #0
- mov r2, #4
- bl NARC_AllocAndReadWholeMember
- str r0, [r5, #4]
- bl NNS_G3dGetTex
- add r4, r0, #0
- beq _021F4B46
- bl FUN_0201B3C4
- cmp r0, #0
- bne _021F4B36
- bl GF_AssertFail
-_021F4B36:
- ldr r0, [r5, #4]
- add r1, r4, #0
- bl FUN_0201B3A8
- cmp r0, #0
- bne _021F4B46
- bl GF_AssertFail
-_021F4B46:
- ldr r0, [sp, #0xc]
- bl NARC_dtor
- ldr r2, _021F4BB8 ; =0x04000060
- ldr r0, _021F4BBC ; =0xFFFFCFFF
- ldrh r1, [r2]
- and r1, r0
- mov r0, #0x20
- orr r0, r1
- strh r0, [r2]
- ldr r0, _021F4BC0 ; =0x000008B6
- ldrh r0, [r5, r0]
- cmp r0, #0
- bne _021F4B6A
- ldr r0, _021F4BC4 ; =UNK05_021FC624
- bl G3X_SetEdgeColorTable
- b _021F4B70
-_021F4B6A:
- ldr r0, _021F4BC8 ; =UNK05_021FC634
- bl G3X_SetEdgeColorTable
-_021F4B70:
- bl MOD05_021DB900
- ldr r1, _021F4BB4 ; =0x000008AC
- str r0, [r5, r1]
- ldr r1, _021F4BCC ; =UNK05_021FD648
- add r0, sp, #0x10
- bl sprintf
- ldr r1, _021F4BB4 ; =0x000008AC
- add r0, sp, #0x10
- ldr r1, [r5, r1]
- bl MOD05_021DB918
- ldr r0, _021F4B9C ; =0x000008B8
- ldr r0, [r5, r0]
- bl FreeToHeap
- ldr r0, _021F4B9C ; =0x000008B8
- mov r1, #0
- str r1, [r5, r0]
- add sp, #0x110
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021F4B9C: .word 0x000008B8
-_021F4BA0: .word 0x000008BC
-_021F4BA4: .word 0x00000226
-_021F4BA8: .word 0x000008A4
-_021F4BAC: .word 0x0000089C
-_021F4BB0: .word 0x000008A8
-_021F4BB4: .word 0x000008AC
-_021F4BB8: .word 0x04000060
-_021F4BBC: .word 0xFFFFCFFF
-_021F4BC0: .word 0x000008B6
-_021F4BC4: .word UNK05_021FC624
-_021F4BC8: .word UNK05_021FC634
-_021F4BCC: .word UNK05_021FD648
-
- thumb_func_start MOD05_021F4BD0
-MOD05_021F4BD0: ; 0x021F4BD0
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bne _021F4BDC
- bl GF_AssertFail
-_021F4BDC:
- add r2, r4, #4
- lsl r1, r5, #2
- ldr r0, [r2, r1]
- cmp r0, #0
- bne _021F4BF4
- ldr r0, [r4, #4]
- cmp r0, #0
- bne _021F4BF0
- bl GF_AssertFail
-_021F4BF0:
- add r0, r4, #4
- pop {r3, r4, r5, pc}
-_021F4BF4:
- add r0, r2, r1
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F4BF8
-MOD05_021F4BF8: ; 0x021F4BF8
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- ldr r1, [r5]
- ldr r0, _021F4C64 ; =0x000008AC
- ldr r0, [r1, r0]
- cmp r0, #0
- beq _021F4C0A
- bl MOD05_021DB9BC
-_021F4C0A:
- mov r6, #0
- ldr r7, _021F4C68 ; =0x00000226
- add r4, r6, #0
-_021F4C10:
- ldr r0, [r5]
- add r0, r0, r4
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021F4C1E
- bl FreeToHeap
-_021F4C1E:
- add r6, r6, #1
- add r4, r4, #4
- cmp r6, r7
- blt _021F4C10
- ldr r1, [r5]
- ldr r0, _021F4C6C ; =0x000008BC
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r1, [r5]
- ldr r0, _021F4C70 ; =0x0000089C
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r1, [r5]
- ldr r0, _021F4C70 ; =0x0000089C
- mov r2, #0
- str r2, [r1, r0]
- ldr r1, [r5]
- add r0, r0, #4
- ldr r0, [r1, r0]
- bl FreeToHeap
- mov r0, #0x8a
- ldr r1, [r5]
- mov r2, #0
- lsl r0, r0, #4
- str r2, [r1, r0]
- ldr r0, [r5]
- bl FreeToHeap
- mov r0, #0
- str r0, [r5]
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F4C64: .word 0x000008AC
-_021F4C68: .word 0x00000226
-_021F4C6C: .word 0x000008BC
-_021F4C70: .word 0x0000089C
-
- thumb_func_start MOD05_021F4C74
-MOD05_021F4C74: ; 0x021F4C74
- push {r4, lr}
- add r4, r0, #0
- bne _021F4C7E
- bl GF_AssertFail
-_021F4C7E:
- ldr r0, _021F4C84 ; =0x000008A4
- ldr r0, [r4, r0]
- pop {r4, pc}
- .balign 4, 0
-_021F4C84: .word 0x000008A4
-
- thumb_func_start MOD05_021F4C88
-MOD05_021F4C88: ; 0x021F4C88
- push {r4, lr}
- add r4, r0, #0
- bne _021F4C92
- bl GF_AssertFail
-_021F4C92:
- ldr r0, _021F4C98 ; =0x000008A8
- ldr r0, [r4, r0]
- pop {r4, pc}
- .balign 4, 0
-_021F4C98: .word 0x000008A8
-
- thumb_func_start MOD05_021F4C9C
-MOD05_021F4C9C: ; 0x021F4C9C
- ldr r1, _021F4CA4 ; =0x000008AC
- ldr r0, [r0, r1]
- bx lr
- nop
-_021F4CA4: .word 0x000008AC
-
- thumb_func_start MOD05_021F4CA8
-MOD05_021F4CA8: ; 0x021F4CA8
- ldr r1, _021F4CB8 ; =0x000008B6
- ldrh r0, [r0, r1]
- cmp r0, #0
- beq _021F4CB4
- mov r0, #1
- bx lr
-_021F4CB4:
- mov r0, #0
- bx lr
- .balign 4, 0
-_021F4CB8: .word 0x000008B6
-
- thumb_func_start MOD05_021F4CBC
-MOD05_021F4CBC: ; 0x021F4CBC
- ldr r1, _021F4CD0 ; =0x000008B6
- ldrh r0, [r0, r1]
- cmp r0, #0
- bne _021F4CC8
- mov r0, #1
- b _021F4CCA
-_021F4CC8:
- mov r0, #0
-_021F4CCA:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
- .balign 4, 0
-_021F4CD0: .word 0x000008B6
-
- thumb_func_start MOD05_021F4CD4
-MOD05_021F4CD4: ; 0x021F4CD4
- ldr r2, _021F4CE0 ; =0x000008BC
- ldr r2, [r0, r2]
- lsl r0, r1, #1
- ldrh r0, [r2, r0]
- bx lr
- nop
-_021F4CE0: .word 0x000008BC
-
- thumb_func_start MOD05_021F4CE4
-MOD05_021F4CE4: ; 0x021F4CE4
- lsl r1, r1, #2
- add r0, r0, r1
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021F4CF2
- mov r0, #1
- bx lr
-_021F4CF2:
- mov r0, #0
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F4CF8
-MOD05_021F4CF8: ; 0x021F4CF8
- push {r4, lr}
- mov r0, #4
- mov r1, #0xfc
- bl AllocFromHeap
- mov r4, #0
- add r2, r4, #0
-_021F4D06:
- lsl r1, r4, #3
- add r3, r0, r1
- strb r2, [r0, r1]
- add r1, r4, #1
- lsl r1, r1, #0x18
- lsr r4, r1, #0x18
- str r2, [r3, #4]
- cmp r4, #0x15
- blo _021F4D06
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4D1C
-MOD05_021F4D1C: ; 0x021F4D1C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4]
- bl FreeToHeap
- mov r0, #0
- str r0, [r4]
- pop {r4, pc}
-
- thumb_func_start MOD05_021F4D2C
-MOD05_021F4D2C: ; 0x021F4D2C
- push {r3, r4, r5, r6, lr}
- sub sp, #0x1c
- add r5, r0, #0
- ldr r0, _021F4D7C ; =0x000007D8
- str r0, [r1]
- ldr r0, [r5, #0x38]
- bl FUN_02055320
- add r4, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_0205532C
- add r6, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_020552F8
- cmp r0, #0
- bne _021F4D76
- mov r0, #1
- str r0, [sp]
- str r0, [sp, #4]
- add r0, sp, #0xc
- mov r2, #0
- str r0, [sp, #8]
- add r0, r4, #0
- add r1, r6, #0
- sub r3, r2, #1
- bl FUN_0204A840
- add r0, r5, #0
- mov r1, #0x1a
- add r2, sp, #0xc
- mov r3, #0
- bl FUN_0204A8C4
- add sp, #0x1c
- pop {r3, r4, r5, r6, pc}
-_021F4D76:
- mov r0, #0
- add sp, #0x1c
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-_021F4D7C: .word 0x000007D8
-
- thumb_func_start MOD05_021F4D80
-MOD05_021F4D80: ; 0x021F4D80
- push {r3, r4, r5, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x1c]
- ldr r0, [r0]
- bl MOD05_021F50FC
- add r5, r0, #0
- cmp r5, #0x15
- bne _021F4D96
- bl GF_AssertFail
-_021F4D96:
- ldr r0, [r4, #0xc]
- bl FUN_0202A9B0
- bl FUN_0202A9BC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0202A9C8
- add r4, r0, #0
- ldr r0, [r4]
- bl MOD05_021F5120
- cmp r0, #0
- beq _021F4DB8
- mov r0, #3
- pop {r3, r4, r5, pc}
-_021F4DB8:
- ldr r0, [r4]
- cmp r0, #0
- beq _021F4DC2
- mov r0, #2
- pop {r3, r4, r5, pc}
-_021F4DC2:
- mov r0, #1
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4DC8
-MOD05_021F4DC8: ; 0x021F4DC8
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- ldr r0, [r6, #0x1c]
- ldr r0, [r0]
- bl MOD05_021F50FC
- add r5, r0, #0
- cmp r5, #0x15
- bne _021F4DDE
- bl GF_AssertFail
-_021F4DDE:
- ldr r0, [r6, #0xc]
- bl FUN_0202A9B0
- bl FUN_0202A9BC
- str r0, [sp]
- ldr r1, [sp]
- add r0, r5, #0
- bl FUN_0202A9C8
- add r4, r0, #0
- mov r0, #0x5a
- lsl r0, r0, #4
- str r0, [r4]
- ldr r0, [r6, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- bl PlayerProfile_GetTrainerID
- add r1, r5, #0
- bl MOD05_021F5138
- add r7, r0, #0
- ldr r0, [sp]
- bl FUN_0202A9C0
- cmp r5, r0
- bne _021F4E42
- bl LCRandom
- mov r1, #0x29
- lsl r1, r1, #4
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- cmp r6, #0x64
- blo _021F4E2E
- bl GF_AssertFail
-_021F4E2E:
- cmp r6, #0x5a
- bhs _021F4E42
- add r0, r4, #4
- bl MOD05_021F4F44
- ldrb r0, [r4, #6]
- bl MOD05_021F4FAC
- strb r0, [r4, #7]
- pop {r3, r4, r5, r6, r7, pc}
-_021F4E42:
- add r0, r7, #0
- add r1, r4, #6
- bl MOD05_021F4EE4
- ldrb r0, [r4, #6]
- cmp r0, #0
- beq _021F4E60
- add r0, r4, #4
- bl MOD05_021F4F44
- ldrb r0, [r4, #6]
- bl MOD05_021F4F98
- strb r0, [r4, #5]
- b _021F4E68
-_021F4E60:
- mov r0, #0
- strb r0, [r4, #5]
- strb r0, [r4, #4]
- str r0, [r4]
-_021F4E68:
- ldrb r0, [r4, #6]
- bl MOD05_021F4FAC
- strb r0, [r4, #7]
- ldr r1, [sp]
- add r0, r5, #0
- bl FUN_0202A9C4
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F4E7C
-MOD05_021F4E7C: ; 0x021F4E7C
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r5, r0, #0
- ldr r0, [r5, #0x1c]
- ldr r0, [r0]
- bl MOD05_021F50FC
- add r4, r0, #0
- cmp r4, #0x15
- bne _021F4E94
- bl GF_AssertFail
-_021F4E94:
- add r0, r5, #0
- add r0, #0xa4
- ldr r0, [r0]
- lsl r4, r4, #3
- add r0, r0, r4
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021F4EE0
- ldr r0, [r5, #0x24]
- bl MOD05_021EF618
- ldr r1, [r5, #0x24]
- add r2, sp, #0
- bl MOD05_021EF604
- ldr r0, [sp]
- mov r1, #0x1a
- bl MOD05_021E7ED8
- add r6, r0, #0
- bl MOD05_021E7EC8
- add r1, r0, #0
- cmp r6, #0
- beq _021F4ED6
- add r3, r5, #0
- add r3, #0xa4
- ldr r3, [r3]
- ldr r0, [r5, #0x4c]
- ldrb r3, [r3, r4]
- mov r2, #0x1a
- bl MOD05_021D9FB4
-_021F4ED6:
- add r5, #0xa4
- ldr r0, [r5]
- mov r1, #0
- add r0, r0, r4
- str r1, [r0, #4]
-_021F4EE0:
- add sp, #4
- pop {r3, r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F4EE4
-MOD05_021F4EE4: ; 0x021F4EE4
- push {r4, r5, r6, lr}
- add r6, r0, #0
- add r5, r1, #0
- bl LCRandom
- mov r1, #0x29
- lsl r1, r1, #4
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, #0x64
- blo _021F4F02
- bl GF_AssertFail
-_021F4F02:
- cmp r6, #0
- beq _021F4F2A
- cmp r4, #1
- bge _021F4F10
- mov r0, #3
- strb r0, [r5]
- pop {r4, r5, r6, pc}
-_021F4F10:
- cmp r4, #0xa
- bge _021F4F1A
- mov r0, #0
- strb r0, [r5]
- pop {r4, r5, r6, pc}
-_021F4F1A:
- cmp r4, #0x1e
- bge _021F4F24
- mov r0, #1
- strb r0, [r5]
- pop {r4, r5, r6, pc}
-_021F4F24:
- mov r0, #2
- strb r0, [r5]
- pop {r4, r5, r6, pc}
-_021F4F2A:
- cmp r4, #0xa
- bge _021F4F34
- mov r0, #0
- strb r0, [r5]
- pop {r4, r5, r6, pc}
-_021F4F34:
- cmp r4, #0x1e
- bge _021F4F3E
- mov r0, #2
- strb r0, [r5]
- pop {r4, r5, r6, pc}
-_021F4F3E:
- mov r0, #1
- strb r0, [r5]
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F4F44
-MOD05_021F4F44: ; 0x021F4F44
- push {r3, r4, r5, lr}
- add r4, r0, #0
- bl LCRandom
- mov r1, #0x29
- lsl r1, r1, #4
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- cmp r5, #0x64
- blo _021F4F60
- bl GF_AssertFail
-_021F4F60:
- cmp r5, #5
- bge _021F4F6A
- mov r0, #5
- strb r0, [r4]
- pop {r3, r4, r5, pc}
-_021F4F6A:
- cmp r5, #0xa
- bge _021F4F74
- mov r0, #4
- strb r0, [r4]
- pop {r3, r4, r5, pc}
-_021F4F74:
- cmp r5, #0x14
- bge _021F4F7E
- mov r0, #3
- strb r0, [r4]
- pop {r3, r4, r5, pc}
-_021F4F7E:
- cmp r5, #0x28
- bge _021F4F88
- mov r0, #2
- strb r0, [r4]
- pop {r3, r4, r5, pc}
-_021F4F88:
- cmp r5, #0x3c
- bge _021F4F92
- mov r0, #1
- strb r0, [r4]
- pop {r3, r4, r5, pc}
-_021F4F92:
- mov r0, #0
- strb r0, [r4]
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F4F98
-MOD05_021F4F98: ; 0x021F4F98
- cmp r0, #3
- bne _021F4FA0
- mov r0, #2
- bx lr
-_021F4FA0:
- cmp r0, #2
- bne _021F4FA8
- mov r0, #1
- bx lr
-_021F4FA8:
- mov r0, #0
- bx lr
-
- thumb_func_start MOD05_021F4FAC
-MOD05_021F4FAC: ; 0x021F4FAC
- push {r3, r4, r5, lr}
- add r4, r0, #0
- bl LCRandom
- mov r1, #0x29
- lsl r1, r1, #4
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- cmp r5, #0x64
- blo _021F4FC8
- bl GF_AssertFail
-_021F4FC8:
- cmp r4, #3
- bne _021F4FE8
- cmp r5, #5
- bge _021F4FD4
- mov r0, #2
- pop {r3, r4, r5, pc}
-_021F4FD4:
- cmp r5, #6
- bge _021F4FDC
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F4FDC:
- cmp r5, #7
- bge _021F4FE4
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F4FE4:
- mov r0, #3
- pop {r3, r4, r5, pc}
-_021F4FE8:
- cmp r4, #2
- bne _021F5008
- cmp r5, #0x4b
- bge _021F4FF4
- mov r0, #2
- pop {r3, r4, r5, pc}
-_021F4FF4:
- cmp r5, #0x5f
- bge _021F4FFC
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F4FFC:
- cmp r5, #0x60
- bge _021F5004
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F5004:
- mov r0, #3
- pop {r3, r4, r5, pc}
-_021F5008:
- cmp r4, #1
- bne _021F5028
- cmp r5, #0x13
- bge _021F5014
- mov r0, #2
- pop {r3, r4, r5, pc}
-_021F5014:
- cmp r5, #0x4f
- bge _021F501C
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F501C:
- cmp r5, #0x63
- bge _021F5024
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F5024:
- mov r0, #3
- pop {r3, r4, r5, pc}
-_021F5028:
- cmp r5, #1
- bge _021F5030
- mov r0, #2
- pop {r3, r4, r5, pc}
-_021F5030:
- cmp r5, #0x13
- bge _021F5038
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F5038:
- cmp r5, #0x63
- bge _021F5040
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F5040:
- mov r0, #3
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F5044
-MOD05_021F5044: ; 0x021F5044
- mov r2, #1
- cmp r0, #3
- bne _021F5050
- mov r0, #2
- strb r0, [r1]
- b _021F5064
-_021F5050:
- cmp r0, #2
- bne _021F5058
- strb r2, [r1]
- b _021F5064
-_021F5058:
- cmp r0, #1
- bne _021F5062
- mov r0, #0
- strb r0, [r1]
- b _021F5064
-_021F5062:
- mov r2, #0
-_021F5064:
- add r0, r2, #0
- bx lr
-
- thumb_func_start MOD05_021F5068
-MOD05_021F5068: ; 0x021F5068
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r0, #0
- ldr r0, [r5, #0x28]
- add r7, r1, #0
- add r1, r2, #0
- bl MapMatrix_GetMapHeaderFromID
- bl MOD05_021F50FC
- add r4, r0, #0
- cmp r4, #0x15
- beq _021F50F8
- ldr r0, [r5, #0xc]
- bl FUN_0202A9B0
- bl FUN_0202A9BC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0202A9C8
- add r6, r0, #0
- ldr r0, [r6]
- bl MOD05_021F5120
- cmp r0, #0
- beq _021F50F8
- ldrb r0, [r6, #7]
- add r1, sp, #4
- bl MOD05_021F5044
- add r6, r0, #0
- beq _021F50F8
- add r0, r7, #0
- mov r1, #0x1a
- bl MOD05_021E7ED8
- cmp r0, #0
- beq _021F50F8
- bl MOD05_021E7EC8
- add r3, r5, #0
- add r7, r0, #0
- add r3, #0xa4
- ldr r3, [r3]
- lsl r4, r4, #3
- ldrb r3, [r3, r4]
- ldr r0, [r5, #0x4c]
- add r1, r7, #0
- mov r2, #0x1a
- bl MOD05_021D9FB4
- add r1, sp, #4
- add r2, r5, #0
- add r2, #0xa4
- ldrb r0, [r1]
- ldr r2, [r2]
- add r3, r7, #0
- strb r0, [r2, r4]
- add r0, r5, #0
- add r0, #0xa4
- ldr r0, [r0]
- mov r2, #1
- add r0, r0, r4
- str r6, [r0, #4]
- ldr r0, [r5, #0x4c]
- str r0, [sp]
- ldrb r1, [r1]
- mov r0, #0x1a
- bl MOD05_021D9DC0
-_021F50F8:
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F50FC
-MOD05_021F50FC: ; 0x021F50FC
- ldr r2, _021F511C ; =UNK05_021FC650
- mov r3, #0
-_021F5100:
- lsl r1, r3, #2
- ldr r1, [r2, r1]
- cmp r0, r1
- bne _021F510C
- add r0, r3, #0
- bx lr
-_021F510C:
- add r1, r3, #1
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- cmp r3, #0x15
- blo _021F5100
- add r0, r3, #0
- bx lr
- nop
-_021F511C: .word UNK05_021FC650
-
- thumb_func_start MOD05_021F5120
-MOD05_021F5120: ; 0x021F5120
- cmp r0, #0
- ble _021F512E
- ldr r1, _021F5134 ; =0x00000438
- cmp r0, r1
- bgt _021F512E
- mov r0, #1
- bx lr
-_021F512E:
- mov r0, #0
- bx lr
- nop
-_021F5134: .word 0x00000438
-
- thumb_func_start MOD05_021F5138
-MOD05_021F5138: ; 0x021F5138
- push {r3, r4, r5, r6, r7, lr}
- add r4, r1, #0
- lsr r2, r0, #0x18
- add r1, sp, #0
- strb r2, [r1]
- lsr r2, r0, #0x10
- strb r2, [r1, #1]
- lsr r2, r0, #8
- strb r2, [r1, #2]
- strb r0, [r1, #3]
- ldrb r0, [r1]
- mov r1, #0x15
- bl _s32_div_f
- add r0, sp, #0
- strb r1, [r0]
- ldrb r0, [r0, #1]
- mov r1, #0x15
- bl _s32_div_f
- add r0, sp, #0
- strb r1, [r0, #1]
- ldrb r0, [r0, #2]
- mov r1, #0x15
- bl _s32_div_f
- add r0, sp, #0
- strb r1, [r0, #2]
- ldrb r0, [r0, #3]
- mov r1, #0x15
- bl _s32_div_f
- add r0, sp, #0
- strb r1, [r0, #3]
- mov r0, #0
- mov r3, #1
- add r1, sp, #0
- add r2, r0, #0
-_021F5184:
- add r5, r2, #0
- cmp r3, #0
- bls _021F51A8
-_021F518A:
- ldrb r7, [r1, r5]
- ldrb r6, [r1, r3]
- cmp r7, r6
- bne _021F519E
- add r6, r6, #1
- strb r6, [r1, r3]
- ldrb r6, [r1, r3]
- cmp r6, #0x15
- blo _021F519E
- strb r0, [r1, r3]
-_021F519E:
- add r5, r5, #1
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- cmp r5, r3
- blo _021F518A
-_021F51A8:
- add r3, r3, #1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- cmp r3, #4
- blo _021F5184
- mov r2, #0
- add r1, sp, #0
-_021F51B6:
- ldrb r0, [r1, r2]
- cmp r4, r0
- bne _021F51C0
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F51C0:
- add r0, r2, #1
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
- cmp r2, #4
- blo _021F51B6
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F51D0
-MOD05_021F51D0: ; 0x021F51D0
- push {r3, r4, r5, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x1c]
- ldr r0, [r0]
- bl MOD05_021F50FC
- add r5, r0, #0
- cmp r5, #0x15
- bne _021F51E6
- bl GF_AssertFail
-_021F51E6:
- ldr r0, [r4, #0xc]
- bl FUN_0202A9B0
- bl FUN_0202A9BC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0202A9C8
- add r4, r0, #0
- ldrb r1, [r4, #5]
- mov r0, #0x6a
- lsl r2, r1, #2
- ldr r1, _021F5218 ; =UNK05_021FC644
- ldr r1, [r1, r2]
- mov r2, #4
- bl AllocAtEndAndReadWholeNarcMemberByIdPair
- ldrb r1, [r4, #4]
- lsl r1, r1, #2
- ldr r4, [r0, r1]
- bl FreeToHeap
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021F5218: .word UNK05_021FC644
-
- thumb_func_start MOD05_021F521C
-MOD05_021F521C: ; 0x021F521C
- push {r3, lr}
- add r3, r1, #0
- bmi _021F522A
- add r1, r2, #0
- add r2, r3, #0
- bl MOD05_021F5068
-_021F522A:
- pop {r3, pc}
-
- thumb_func_start MOD05_021F522C
-MOD05_021F522C: ; 0x021F522C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x1c]
- ldr r0, [r0]
- bl MOD05_021F50FC
- add r4, r0, #0
- cmp r4, #0x15
- bne _021F5242
- bl GF_AssertFail
-_021F5242:
- add r0, r5, #0
- add r0, #0xa4
- ldr r1, [r0]
- lsl r0, r4, #3
- mov r2, #0
- add r0, r1, r0
- str r2, [r0, #4]
- ldr r0, [r5, #0xc]
- bl FUN_0202A9B0
- bl FUN_0202A9BC
- add r1, r0, #0
- add r0, r4, #0
- bl FUN_0202A9C8
- mov r1, #0
- str r1, [r0]
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F5268
-MOD05_021F5268: ; 0x021F5268
- push {r3, r4, r5, lr}
- mov r5, #0
- add r4, r0, #0
- add r0, r1, #0
- add r1, r2, #0
- str r5, [sp]
- add r2, r5, #0
- bl GfGfxLoader_LoadFromNarc
- str r0, [r4]
- bl NNS_G3dGetMdlSet
- str r0, [r4, #4]
- ldrh r1, [r0, #0xe]
- add r1, r0, r1
- ldr r1, [r1, #0xc]
- add r0, r0, r1
- str r0, [r4, #8]
- ldr r0, [r4]
- bl NNS_G3dGetTex
- str r0, [r4, #0xc]
- cmp r0, #0
- beq _021F52A4
- mov r2, #1
- ldr r0, _021F52A8 ; =MOD05_021F52AC
- add r1, r4, #0
- lsl r2, r2, #0xa
- bl FUN_0200CA98
-_021F52A4:
- pop {r3, r4, r5, pc}
- nop
-_021F52A8: .word MOD05_021F52AC
-
- thumb_func_start MOD05_021F52AC
-MOD05_021F52AC: ; 0x021F52AC
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4, #0xc]
- bl FUN_0201B3C4
- ldr r0, [r4]
- ldr r1, [r4, #0xc]
- bl FUN_0201B3A8
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F52C8
-MOD05_021F52C8: ; 0x021F52C8
- push {r4, lr}
- sub sp, #8
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- cmp r0, #0
- beq _021F52F8
- add r1, sp, #4
- add r2, sp, #0
- bl NNS_G3dTexReleaseTexKey
- ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram
- ldr r0, [sp, #4]
- ldr r1, [r1]
- blx r1
- ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram
- ldr r0, [sp]
- ldr r1, [r1]
- blx r1
- ldr r0, [r4, #0xc]
- bl NNS_G3dPlttReleasePlttKey
- ldr r1, _021F5318 ; =NNS_GfdDefaultFuncFreePlttVram
- ldr r1, [r1]
- blx r1
-_021F52F8:
- ldr r0, [r4]
- cmp r0, #0
- beq _021F5302
- bl FreeToHeap
-_021F5302:
- mov r1, #0x10
- mov r0, #0
-_021F5306:
- strb r0, [r4]
- add r4, r4, #1
- sub r1, r1, #1
- bne _021F5306
- add sp, #8
- pop {r4, pc}
- nop
-_021F5314: .word NNS_GfdDefaultFuncFreeTexVram
-_021F5318: .word NNS_GfdDefaultFuncFreePlttVram
-
- thumb_func_start MOD05_021F531C
-MOD05_021F531C: ; 0x021F531C
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r4, r1, #0
- mov r6, #0
- add r1, r3, #0
- add r5, r0, #0
- add r0, r2, #0
- ldr r3, [sp, #0x18]
- add r2, r6, #0
- str r6, [sp]
- bl GfGfxLoader_LoadFromNarc
- add r2, r0, #0
- ldr r3, [sp, #0x1c]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021F54EC
- add r0, r6, #0
- str r0, [r5, #0x10]
- add sp, #4
- pop {r3, r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F5348
-MOD05_021F5348: ; 0x021F5348
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021F54EC
- mov r0, #1
- str r0, [r4, #0x10]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F5358
-MOD05_021F5358: ; 0x021F5358
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F5376
- add r0, r1, #0
- ldr r1, [r4, #8]
- bl NNS_G3dFreeAnmObj
- ldr r0, [r4, #0x10]
- cmp r0, #0
- bne _021F5376
- ldr r0, [r4]
- bl FreeToHeap
-_021F5376:
- mov r1, #0x14
- mov r0, #0
-_021F537A:
- strb r0, [r4]
- add r4, r4, #1
- sub r1, r1, #1
- bne _021F537A
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5384
-MOD05_021F5384: ; 0x021F5384
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #8]
- ldr r0, [r0, #8]
- ldrh r0, [r0, #4]
- lsl r2, r0, #0xc
- cmp r1, #0
- ble _021F53A2
- ldr r0, [r4, #0xc]
- add r0, r0, r1
- add r1, r2, #0
- bl _s32_div_f
- str r1, [r4, #0xc]
- b _021F53B4
-_021F53A2:
- ldr r0, [r4, #0xc]
- add r3, r4, #0
- add r3, #0xc
- add r0, r0, r1
- str r0, [r4, #0xc]
- bpl _021F53B4
- ldr r0, [r3]
- add r0, r0, r2
- str r0, [r3]
-_021F53B4:
- ldr r1, [r4, #0xc]
- ldr r0, [r4, #8]
- str r1, [r0]
- pop {r4, pc}
-
- thumb_func_start MOD05_021F53BC
-MOD05_021F53BC: ; 0x021F53BC
- push {r3, r4}
- ldr r2, [r0, #8]
- ldr r3, [r0, #0xc]
- ldr r2, [r2, #8]
- ldrh r2, [r2, #4]
- lsl r4, r2, #0xc
- mov r2, #0
- cmp r1, #0
- ble _021F53DE
- add r1, r3, r1
- cmp r1, r4
- bge _021F53D8
- str r1, [r0, #0xc]
- b _021F53EA
-_021F53D8:
- str r4, [r0, #0xc]
- mov r2, #1
- b _021F53EA
-_021F53DE:
- add r1, r3, r1
- bmi _021F53E6
- str r1, [r0, #0xc]
- b _021F53EA
-_021F53E6:
- str r2, [r0, #0xc]
- mov r2, #1
-_021F53EA:
- ldr r1, [r0, #0xc]
- ldr r0, [r0, #8]
- str r1, [r0]
- add r0, r2, #0
- pop {r3, r4}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F53F8
-MOD05_021F53F8: ; 0x021F53F8
- str r1, [r0, #0xc]
- ldr r0, [r0, #8]
- str r1, [r0]
- bx lr
-
- thumb_func_start MOD05_021F5400
-MOD05_021F5400: ; 0x021F5400
- push {r3, r4, r5, lr}
- add r5, r1, #0
- mov r1, #0
- mov r2, #0x78
- add r4, r0, #0
- bl memset
- ldr r1, [r5, #8]
- add r0, r4, #0
- bl NNS_G3dRenderObjInit
- mov r0, #1
- str r0, [r4, #0x6c]
- lsl r0, r0, #0xc
- str r0, [r4, #0x60]
- str r0, [r4, #0x64]
- str r0, [r4, #0x68]
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F5424
-MOD05_021F5424: ; 0x021F5424
- ldr r3, _021F542C ; =NNS_G3dRenderObjAddAnmObj
- ldr r1, [r1, #8]
- bx r3
- nop
-_021F542C: .word NNS_G3dRenderObjAddAnmObj
-
- thumb_func_start MOD05_021F5430
-MOD05_021F5430: ; 0x021F5430
- push {r4, lr}
- sub sp, #0x48
- add r4, r0, #0
- ldr r0, [r4, #0x6c]
- cmp r0, #0
- beq _021F54C4
- add r0, sp, #0x24
- bl MTX_Identity33_
- add r0, r4, #0
- add r0, #0x70
- ldrh r0, [r0]
- ldr r3, _021F54C8 ; =FX_SinCosTable_
- 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, #0x74
- ldrh r0, [r0]
- ldr r3, _021F54C8 ; =FX_SinCosTable_
- 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
- add r0, r4, #0
- add r0, #0x72
- ldrh r0, [r0]
- ldr r3, _021F54C8 ; =FX_SinCosTable_
- 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 r1, r4, #0
- add r0, r4, #0
- add r4, #0x60
- add r1, #0x54
- add r2, sp, #0x24
- add r3, r4, #0
- bl FUN_0201B26C
-_021F54C4:
- add sp, #0x48
- pop {r4, pc}
- .balign 4, 0
-_021F54C8: .word FX_SinCosTable_
-
- thumb_func_start MOD05_021F54CC
-MOD05_021F54CC: ; 0x021F54CC
- str r1, [r0, #0x6c]
- bx lr
-
- thumb_func_start MOD05_021F54D0
-MOD05_021F54D0: ; 0x021F54D0
- str r1, [r0, #0x54]
- str r2, [r0, #0x58]
- str r3, [r0, #0x5c]
- bx lr
-
- thumb_func_start MOD05_021F54D8
-MOD05_021F54D8: ; 0x021F54D8
- str r1, [r0, #0x60]
- str r2, [r0, #0x64]
- str r3, [r0, #0x68]
- bx lr
-
- thumb_func_start MOD05_021F54E0
-MOD05_021F54E0: ; 0x021F54E0
- lsl r2, r2, #1
- add r0, r0, r2
- add r0, #0x70
- strh r1, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F54EC
-MOD05_021F54EC: ; 0x021F54EC
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- str r2, [r5]
- add r0, r2, #0
- mov r1, #0
- add r6, r3, #0
- bl NNS_G3dGetAnmByIdx
- str r0, [r5, #4]
- ldr r1, [r5, #4]
- ldr r2, [r4, #8]
- add r0, r6, #0
- bl NNS_G3dAllocAnmObj
- str r0, [r5, #8]
- ldr r1, [r5, #4]
- ldr r2, [r4, #8]
- ldr r3, [r4, #0xc]
- bl NNS_G3dAnmObjInit
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F5518
-MOD05_021F5518: ; 0x021F5518
- push {r3, r4, lr}
- sub sp, #4
- ldr r0, [r1, #8]
- add r4, r2, #0
- bl MOD05_021F5608
- add r0, r4, #0
- mov r1, #0
- mov r2, #0xa
- mov r3, #0x13
- bl MOD05_021F5660
- mov r3, #0
- str r3, [r4, #0x14]
- mov r0, #0x10
- str r0, [sp]
- ldr r0, _021F555C ; =0x04000050
- mov r1, #4
- mov r2, #0x29
- bl G2x_SetBlendAlpha_
- mov r0, #2
- mov r1, #0
- bl SetBgPriority
- mov r0, #4
- mov r1, #1
- bl GX_EngineAToggleLayers
- ldr r0, _021F5560 ; =0x00000648
- bl PlaySE
- add sp, #4
- pop {r3, r4, pc}
- .balign 4, 0
-_021F555C: .word 0x04000050
-_021F5560: .word 0x00000648
-
- thumb_func_start MOD05_021F5564
-MOD05_021F5564: ; 0x021F5564
- push {r3, r4, lr}
- sub sp, #4
- ldr r0, [r1, #8]
- add r4, r2, #0
- bl MOD05_021F5608
- add r0, r4, #0
- mov r1, #0xa
- mov r2, #0
- mov r3, #0xf
- bl MOD05_021F5660
- mov r0, #0
- str r0, [r4, #0x14]
- mov r0, #6
- str r0, [sp]
- ldr r0, _021F5594 ; =0x04000050
- mov r1, #4
- mov r2, #0x21
- mov r3, #0xa
- bl G2x_SetBlendAlpha_
- add sp, #4
- pop {r3, r4, pc}
- .balign 4, 0
-_021F5594: .word 0x04000050
-
- thumb_func_start MOD05_021F5598
-MOD05_021F5598: ; 0x021F5598
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F559C
-MOD05_021F559C: ; 0x021F559C
- push {r4, lr}
- add r4, r2, #0
- ldr r0, [r4, #0x14]
- cmp r0, #1
- beq _021F55C2
- add r0, r4, #0
- bl MOD05_021F5670
- cmp r0, #0
- beq _021F55B4
- mov r0, #1
- str r0, [r4, #0x14]
-_021F55B4:
- ldr r1, [r4]
- mov r0, #0x10
- sub r0, r0, r1
- lsl r0, r0, #8
- orr r1, r0
- ldr r0, _021F55C4 ; =0x04000052
- strh r1, [r0]
-_021F55C2:
- pop {r4, pc}
- .balign 4, 0
-_021F55C4: .word 0x04000052
-
- thumb_func_start MOD05_021F55C8
-MOD05_021F55C8: ; 0x021F55C8
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F55CC
-MOD05_021F55CC: ; 0x021F55CC
- ldr r0, [r0, #4]
- ldr r3, _021F55D8 ; =MOD05_021D8024
- ldr r0, [r0, #4]
- ldr r1, _021F55DC ; =UNK05_021FC6C0
- bx r3
- nop
-_021F55D8: .word MOD05_021D8024
-_021F55DC: .word UNK05_021FC6C0
-
- thumb_func_start MOD05_021F55E0
-MOD05_021F55E0: ; 0x021F55E0
- ldr r3, _021F55E4 ; =MOD05_021D80A4
- bx r3
- .balign 4, 0
-_021F55E4: .word MOD05_021D80A4
-
- thumb_func_start MOD05_021F55E8
-MOD05_021F55E8: ; 0x021F55E8
- push {r3, lr}
- bl MOD05_021D80E4
- ldr r0, [r0, #0x14]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F55F4
-MOD05_021F55F4: ; 0x021F55F4
- ldr r0, [r0, #4]
- ldr r3, _021F5600 ; =MOD05_021D8024
- ldr r0, [r0, #4]
- ldr r1, _021F5604 ; =UNK05_021FC6A8
- bx r3
- nop
-_021F5600: .word MOD05_021D8024
-_021F5604: .word UNK05_021FC6A8
-
- thumb_func_start MOD05_021F5608
-MOD05_021F5608: ; 0x021F5608
- push {r3, r4, r5, lr}
- sub sp, #8
- ldr r1, _021F5658 ; =0x00005D5F
- add r5, r0, #0
- add r0, sp, #4
- strh r1, [r0]
- mov r0, #2
- add r1, sp, #4
- add r2, r0, #0
- mov r3, #0xc2
- bl BG_LoadPlttData
- mov r0, #4
- mov r1, #0x20
- bl AllocFromHeap
- mov r1, #0x11
- mov r2, #0x20
- add r4, r0, #0
- bl memset
- mov r0, #1
- str r0, [sp]
- add r0, r5, #0
- mov r1, #2
- add r2, r4, #0
- mov r3, #0x20
- bl BG_LoadCharTilesData
- add r0, r4, #0
- bl FreeToHeap
- ldr r2, _021F565C ; =0x00006001
- add r0, r5, #0
- mov r1, #2
- bl BgFillTilemapBufferAndCommit
- add sp, #8
- pop {r3, r4, r5, pc}
- nop
-_021F5658: .word 0x00005D5F
-_021F565C: .word 0x00006001
-
- thumb_func_start MOD05_021F5660
-MOD05_021F5660: ; 0x021F5660
- 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_start MOD05_021F5670
-MOD05_021F5670: ; 0x021F5670
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #8]
- ldr r0, [r4, #0xc]
- mul r0, r1
- ldr r1, [r4, #0x10]
- bl _s32_div_f
- 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 _021F5696
- str r0, [r4, #0xc]
- mov r0, #0
- pop {r4, pc}
-_021F5696:
- str r1, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
-
- thumb_func_start MOD05_021F569C
-MOD05_021F569C: ; 0x021F569C
- ldr r3, _021F56A4 ; =BG_SetMaskColor
- mov r0, #2
- mov r1, #0
- bx r3
- .balign 4, 0
-_021F56A4: .word BG_SetMaskColor
-
- thumb_func_start MOD05_021F56A8
-MOD05_021F56A8: ; 0x021F56A8
- ldr r3, _021F56B0 ; =BG_SetMaskColor
- mov r0, #2
- ldr r1, _021F56B4 ; =0x00007FFF
- bx r3
- .balign 4, 0
-_021F56B0: .word BG_SetMaskColor
-_021F56B4: .word 0x00007FFF
-
- thumb_func_start MOD05_021F56B8
-MOD05_021F56B8: ; 0x021F56B8
- push {r4, lr}
- sub sp, #8
- ldr r1, _021F5710 ; =0x00007FFF
- add r4, r0, #0
- add r0, sp, #4
- strh r1, [r0]
- mov r0, #4
- mov r1, #0
- bl GX_EngineAToggleLayers
- ldr r1, _021F5714 ; =0x0400000C
- mov r0, #3
- ldrh r2, [r1]
- mov r3, #0xc4
- bic r2, r0
- mov r0, #3
- orr r0, r2
- strh r0, [r1]
- mov r0, #2
- add r1, sp, #4
- add r2, r0, #0
- bl BG_LoadPlttData
- mov r1, #2
- str r1, [sp]
- ldr r0, [r4, #8]
- add r2, r1, #0
- mov r3, #1
- bl BG_FillCharDataRange
- ldr r0, [r4, #8]
- ldr r2, _021F5718 ; =0x00006002
- mov r1, #2
- bl BgFillTilemapBufferAndCommit
- mov r0, #4
- mov r1, #1
- bl GX_EngineAToggleLayers
- add r0, r4, #0
- bl MOD05_021F569C
- add sp, #8
- pop {r4, pc}
- .balign 4, 0
-_021F5710: .word 0x00007FFF
-_021F5714: .word 0x0400000C
-_021F5718: .word 0x00006002
-
- thumb_func_start MOD05_021F571C
-MOD05_021F571C: ; 0x021F571C
- push {r4, lr}
- sub sp, #8
- ldr r1, _021F5774 ; =0x00007FFF
- add r4, r0, #0
- add r0, sp, #4
- strh r1, [r0]
- mov r0, #8
- mov r1, #0
- bl GX_EngineAToggleLayers
- ldr r1, _021F5778 ; =0x0400000E
- mov r0, #3
- ldrh r2, [r1]
- mov r3, #0xc4
- bic r2, r0
- mov r0, #3
- orr r2, r0
- strh r2, [r1]
- add r1, sp, #4
- mov r2, #2
- bl BG_LoadPlttData
- mov r2, #2
- str r2, [sp]
- ldr r0, [r4, #8]
- mov r1, #3
- mov r3, #1
- bl BG_FillCharDataRange
- ldr r0, [r4, #8]
- ldr r2, _021F577C ; =0x00006002
- mov r1, #3
- bl BgFillTilemapBufferAndCommit
- mov r0, #8
- mov r1, #1
- bl GX_EngineAToggleLayers
- add r0, r4, #0
- bl MOD05_021F569C
- add sp, #8
- pop {r4, pc}
- nop
-_021F5774: .word 0x00007FFF
-_021F5778: .word 0x0400000E
-_021F577C: .word 0x00006002
-
- thumb_func_start MOD05_021F5780
-MOD05_021F5780: ; 0x021F5780
- push {r3, lr}
- ldr r0, [r0, #4]
- ldr r0, [r0, #0xc]
- bl MOD05_021DC1D0
- ldr r3, _021F57A4 ; =UNK05_021FC6A4
- mov r2, #0
-_021F578E:
- ldr r1, [r3]
- cmp r0, r1
- bne _021F5798
- mov r0, #1
- pop {r3, pc}
-_021F5798:
- add r2, r2, #1
- add r3, r3, #4
- cmp r2, #1
- blt _021F578E
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-_021F57A4: .word UNK05_021FC6A4
-
- thumb_func_start MOD05_021F57A8
-MOD05_021F57A8: ; 0x021F57A8
- push {r3, lr}
- ldr r0, [r0, #4]
- ldr r0, [r0, #0xc]
- bl MOD05_021DC1D0
- ldr r3, _021F57CC ; =UNK05_021FC6D8
- mov r2, #0
-_021F57B6:
- ldr r1, [r3]
- cmp r0, r1
- bne _021F57C0
- mov r0, #0
- pop {r3, pc}
-_021F57C0:
- add r2, r2, #1
- add r3, r3, #4
- cmp r2, #0x10
- blt _021F57B6
- mov r0, #1
- pop {r3, pc}
- .balign 4, 0
-_021F57CC: .word UNK05_021FC6D8
-
- thumb_func_start MOD05_021F57D0
-MOD05_021F57D0: ; 0x021F57D0
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021F57E2
- bl MOD05_021F55E0
- mov r0, #0
- str r0, [r4]
-_021F57E2:
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F57EC
-MOD05_021F57EC: ; 0x021F57EC
- mov r0, #0xc
- bx lr
-
- thumb_func_start MOD05_021F57F0
-MOD05_021F57F0: ; 0x021F57F0
- push {r4, r5, r6, lr}
- add r6, r0, #0
- bl FUN_02046528
- add r5, r0, #0
- add r0, r6, #0
- bl FUN_0204652C
- add r4, r0, #0
- ldrh r1, [r4, #8]
- cmp r1, #9
- bls _021F580A
- b _021F597C
-_021F580A:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021F5816: ; jump table
- .short _021F582A - _021F5816 - 2 ; case 0
- .short _021F5856 - _021F5816 - 2 ; case 1
- .short _021F5872 - _021F5816 - 2 ; case 2
- .short _021F5888 - _021F5816 - 2 ; case 3
- .short _021F58DA - _021F5816 - 2 ; case 4
- .short _021F58EE - _021F5816 - 2 ; case 5
- .short _021F5914 - _021F5816 - 2 ; case 6
- .short _021F5936 - _021F5816 - 2 ; case 7
- .short _021F5956 - _021F5816 - 2 ; case 8
- .short _021F5968 - _021F5816 - 2 ; case 9
-_021F582A:
- add r0, r5, #0
- bl MOD05_021F57A8
- cmp r0, #1
- bne _021F584C
- mov r0, #1
- strh r0, [r4, #8]
- add r0, r5, #0
- bl MOD05_021F5780
- str r0, [r4, #4]
- cmp r0, #0
- beq _021F587C
- add r0, r5, #0
- bl MOD05_021F56A8
- b _021F5980
-_021F584C:
- mov r0, #7
- strh r0, [r4, #8]
- mov r0, #0x14
- strh r0, [r4, #0xa]
- b _021F5980
-_021F5856:
- add r0, r5, #0
- bl MOD05_021F55CC
- str r0, [r4]
- mov r0, #2
- mov r1, #0
- strh r0, [r4, #8]
- bl SetBgPriority
- mov r0, #4
- mov r1, #1
- bl GX_EngineAToggleLayers
- b _021F5980
-_021F5872:
- ldr r0, [r4]
- bl MOD05_021F55E8
- cmp r0, #0
- bne _021F587E
-_021F587C:
- b _021F5980
-_021F587E:
- mov r0, #0x16
- strh r0, [r4, #0xa]
- mov r0, #3
- strh r0, [r4, #8]
- b _021F5980
-_021F5888:
- mov r0, #0xa
- ldrsh r0, [r4, r0]
- sub r0, r0, #1
- strh r0, [r4, #0xa]
- ldr r0, [r5, #0x1c]
- ldr r0, [r0]
- bl MapHeader_HasWildEncounters
- cmp r0, #0
- beq _021F58D4
- mov r0, #0xa
- ldrsh r0, [r4, r0]
- cmp r0, #0
- bge _021F5980
- ldr r0, [r5, #0x38]
- bl FUN_02055320
- add r6, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_0205532C
- add r2, r0, #0
- add r0, r5, #0
- add r1, r6, #0
- bl FUN_0204A6E0
- add r1, r0, #0
- add r0, r5, #0
- bl MOD06_0223CDB8
- cmp r0, #0
- beq _021F58CE
- mov r0, #6
- strh r0, [r4, #8]
- b _021F5980
-_021F58CE:
- mov r0, #4
- strh r0, [r4, #8]
- b _021F5980
-_021F58D4:
- mov r0, #4
- strh r0, [r4, #8]
- b _021F5980
-_021F58DA:
- ldr r0, [r4]
- bl MOD05_021F55E0
- add r0, r5, #0
- bl MOD05_021F55F4
- str r0, [r4]
- mov r0, #5
- strh r0, [r4, #8]
- b _021F5980
-_021F58EE:
- ldr r0, [r4]
- bl MOD05_021F55E8
- cmp r0, #0
- beq _021F5980
- mov r0, #4
- mov r1, #0
- bl GX_EngineAToggleLayers
- ldr r0, _021F5984 ; =0x04000050
- mov r1, #0
- strh r1, [r0]
- mov r0, #2
- mov r1, #3
- bl SetBgPriority
- mov r0, #8
- strh r0, [r4, #8]
- b _021F5980
-_021F5914:
- bl MOD05_021F57D0
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F5924
- add r0, r5, #0
- bl MOD05_021F571C
-_021F5924:
- add r0, r5, #0
- add r1, r6, #0
- bl MOD06_0223BE70
- cmp r0, #0
- bne _021F5980
- bl GF_AssertFail
- b _021F5980
-_021F5936:
- mov r0, #0xa
- ldrsh r1, [r4, r0]
- sub r1, r1, #1
- strh r1, [r4, #0xa]
- ldrsh r0, [r4, r0]
- cmp r0, #0
- bge _021F5980
- mov r2, #0
- ldr r1, _021F5988 ; =0x000007ED
- add r0, r6, #0
- add r3, r2, #0
- bl FUN_02038CD8
- mov r0, #9
- strh r0, [r4, #8]
- b _021F5980
-_021F5956:
- mov r2, #0
- ldr r1, _021F598C ; =0x000007EC
- add r0, r6, #0
- add r3, r2, #0
- bl FUN_02038CD8
- mov r0, #9
- strh r0, [r4, #8]
- b _021F5980
-_021F5968:
- bl MOD05_021F57D0
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021F5978
- add r0, r5, #0
- bl MOD05_021F56B8
-_021F5978:
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021F597C:
- bl GF_AssertFail
-_021F5980:
- mov r0, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021F5984: .word 0x04000050
-_021F5988: .word 0x000007ED
-_021F598C: .word 0x000007EC
-
- thumb_func_start MOD05_021F5990
-MOD05_021F5990: ; 0x021F5990
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r5, r2, #0
- lsl r2, r3, #3
- add r6, r5, r2
- add r6, #0x18
- str r2, [sp, #8]
- add r2, r6, #0
- str r0, [sp]
- add r7, r1, #0
- str r3, [sp, #4]
- bl CreateHeap
- cmp r0, #1
- beq _021F59B2
- bl GF_AssertFail
-_021F59B2:
- sub r5, r6, r5
- add r0, r7, #0
- add r1, r5, #0
- bl AllocFromHeap
- add r4, r0, #0
- bne _021F59C4
- bl GF_AssertFail
-_021F59C4:
- add r0, r4, #0
- mov r1, #0
- add r2, r5, #0
- bl memset
- ldr r0, [sp]
- str r0, [r4]
- ldr r0, [sp, #4]
- str r7, [r4, #4]
- str r0, [r4, #8]
- ldr r0, [sp, #8]
- str r6, [r4, #0xc]
- str r0, [r4, #0x10]
- add r0, r4, #0
- add r0, #0x18
- str r0, [r4, #0x14]
- add r0, r4, #0
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F59EC
-MOD05_021F59EC: ; 0x021F59EC
- push {r4, r5, r6, lr}
- add r6, r0, #0
- ldr r4, [r6, #8]
- ldr r5, [r6, #0x14]
- cmp r4, #0
- beq _021F5A0E
-_021F59F8:
- ldr r0, [r5]
- cmp r0, #0
- beq _021F5A06
- ldr r1, [r5, #4]
- add r0, r6, #0
- bl MOD05_021F5A74
-_021F5A06:
- sub r4, r4, #1
- add r5, #8
- cmp r4, #0
- bne _021F59F8
-_021F5A0E:
- ldr r4, [r6, #4]
- add r0, r6, #0
- bl FreeToHeap
- add r0, r4, #0
- bl DestroyHeap
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F5A20
-MOD05_021F5A20: ; 0x021F5A20
- ldr r3, _021F5A24 ; =MOD05_021F5B14
- bx r3
- .balign 4, 0
-_021F5A24: .word MOD05_021F5B14
-
- thumb_func_start MOD05_021F5A28
-MOD05_021F5A28: ; 0x021F5A28
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r4, r1, #0
- add r6, r2, #0
- add r7, r3, #0
- bl MOD05_021F5B5C
- str r0, [sp]
- cmp r0, #0
- bne _021F5A40
- bl GF_AssertFail
-_021F5A40:
- add r0, r5, #0
- add r1, r6, #0
- add r2, r7, #0
- bl MOD05_021F5B14
- add r5, r0, #0
- ldr r0, [sp]
- add r1, r4, #0
- add r2, r5, #0
- bl MOD05_021F5B8C
- add r0, r5, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F5A5C
-MOD05_021F5A5C: ; 0x021F5A5C
- push {r4, lr}
- add r4, r1, #0
- bl MOD05_021F5B74
- cmp r0, #0
- beq _021F5A6C
- bl MOD05_021F5B94
-_021F5A6C:
- add r0, r4, #0
- bl MOD05_021F5B34
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5A74
-MOD05_021F5A74: ; 0x021F5A74
- push {r4, lr}
- bl MOD05_021F5B3C
- add r4, r0, #0
- bne _021F5A82
- bl GF_AssertFail
-_021F5A82:
- ldr r0, [r4]
- bl MOD05_021F5B34
- add r0, r4, #0
- bl MOD05_021F5B94
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5A90
-MOD05_021F5A90: ; 0x021F5A90
- push {r4, lr}
- bl MOD05_021F5B3C
- add r4, r0, #0
- bne _021F5A9E
- bl GF_AssertFail
-_021F5A9E:
- ldr r0, [r4]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F5AA4
-MOD05_021F5AA4: ; 0x021F5AA4
- push {r3, lr}
- bl MOD05_021F5B3C
- cmp r0, #0
- beq _021F5AB2
- mov r0, #1
- pop {r3, pc}
-_021F5AB2:
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F5AB8
-MOD05_021F5AB8: ; 0x021F5AB8
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- add r4, r2, #0
- add r6, r0, #0
- add r7, r3, #0
- add r0, r5, #0
- add r1, r4, #0
- bl NARC_GetMemberSize
- add r1, r0, #0
- add r0, r6, #0
- add r2, r7, #0
- bl MOD05_021F5A20
- add r6, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl NARC_ReadWholeMember
- add r0, r6, #0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F5AE4
-MOD05_021F5AE4: ; 0x021F5AE4
- push {r3, r4, r5, r6, r7, lr}
- add r4, r2, #0
- add r5, r0, #0
- add r7, r3, #0
- add r6, r1, #0
- add r0, r4, #0
- add r1, r7, #0
- bl NARC_GetMemberSize
- add r2, r0, #0
- ldr r3, [sp, #0x18]
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021F5A28
- add r5, r0, #0
- add r0, r4, #0
- add r1, r7, #0
- add r2, r5, #0
- bl NARC_ReadWholeMember
- add r0, r5, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021F5B14
-MOD05_021F5B14: ; 0x021F5B14
- push {r4, lr}
- cmp r2, #0
- ldr r0, [r0, #4]
- bne _021F5B22
- bl AllocFromHeap
- b _021F5B26
-_021F5B22:
- bl AllocFromHeapAtEnd
-_021F5B26:
- add r4, r0, #0
- cmp r4, #0
- bne _021F5B30
- bl GF_AssertFail
-_021F5B30:
- add r0, r4, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5B34
-MOD05_021F5B34: ; 0x021F5B34
- ldr r3, _021F5B38 ; =FreeToHeap
- bx r3
- .balign 4, 0
-_021F5B38: .word FreeToHeap
-
- thumb_func_start MOD05_021F5B3C
-MOD05_021F5B3C: ; 0x021F5B3C
- ldr r3, [r0, #8]
- ldr r0, [r0, #0x14]
- cmp r3, #0
- beq _021F5B56
-_021F5B44:
- ldr r2, [r0]
- cmp r2, #0
- beq _021F5B50
- ldr r2, [r0, #4]
- cmp r2, r1
- beq _021F5B58
-_021F5B50:
- add r0, #8
- sub r3, r3, #1
- bne _021F5B44
-_021F5B56:
- mov r0, #0
-_021F5B58:
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F5B5C
-MOD05_021F5B5C: ; 0x021F5B5C
- ldr r2, [r0, #8]
- ldr r0, [r0, #0x14]
- cmp r2, #0
- beq _021F5B70
-_021F5B64:
- ldr r1, [r0]
- cmp r1, #0
- beq _021F5B72
- add r0, #8
- sub r2, r2, #1
- bne _021F5B64
-_021F5B70:
- mov r0, #0
-_021F5B72:
- bx lr
-
- thumb_func_start MOD05_021F5B74
-MOD05_021F5B74: ; 0x021F5B74
- ldr r3, [r0, #8]
- ldr r0, [r0, #0x14]
- cmp r3, #0
- beq _021F5B88
-_021F5B7C:
- ldr r2, [r0]
- cmp r2, r1
- beq _021F5B8A
- add r0, #8
- sub r3, r3, #1
- bne _021F5B7C
-_021F5B88:
- mov r0, #0
-_021F5B8A:
- bx lr
-
- thumb_func_start MOD05_021F5B8C
-MOD05_021F5B8C: ; 0x021F5B8C
- str r2, [r0]
- str r1, [r0, #4]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021F5B94
-MOD05_021F5B94: ; 0x021F5B94
- mov r1, #0
- str r1, [r0]
- str r1, [r0, #4]
- bx lr
-
- thumb_func_start MOD05_021F5B9C
-MOD05_021F5B9C: ; 0x021F5B9C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x28
- add r5, r0, #0
- ldr r0, [r5, #0xc]
- bl FUN_02050DF0
- add r7, r0, #0
- beq _021F5C40
- bl MOD18_0223E2C4
- add r6, r0, #0
- bl MOD18_0223E2DC
- lsl r1, r6, #0x15
- lsl r0, r0, #0x15
- mov r4, #0
- str r1, [sp, #0xc]
- str r0, [sp, #8]
-_021F5BC0:
- add r0, r7, #0
- add r1, r4, #0
- bl FUN_020267C4
- add r6, r0, #0
- bl FUN_0204CA80
- str r0, [sp, #0x10]
- add r0, r6, #0
- bl FUN_0204CA90
- str r0, [sp, #0x14]
- cmp r6, #0
- beq _021F5C3A
- add r0, r7, #0
- add r1, r4, #0
- bl FUN_02026810
- str r0, [sp, #0x18]
- add r0, r7, #0
- add r1, r4, #0
- bl FUN_02026840
- mov r2, #1
- ldr r1, [sp, #0x18]
- lsl r2, r2, #0xc
- str r2, [sp, #0x20]
- lsl r1, r1, #0x10
- lsl r0, r0, #0x10
- ldr r2, [sp, #0xc]
- str r1, [sp, #0x1c]
- add r1, r1, r2
- ldr r2, [sp, #8]
- str r0, [sp, #0x24]
- add r0, r0, r2
- ldr r2, [sp, #0x10]
- str r1, [sp, #0x1c]
- lsl r2, r2, #0xf
- add r1, r1, r2
- str r1, [sp, #0x1c]
- ldr r1, [sp, #0x14]
- str r0, [sp, #0x24]
- lsl r1, r1, #0xf
- add r0, r0, r1
- str r0, [sp, #0x24]
- ldr r0, [r5, #0x2c]
- add r1, r6, #0
- bl MOD05_021F4CD4
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- ldr r0, [r5, #0x4c]
- add r3, sp, #0x1c
- str r0, [sp, #4]
- add r0, r5, #0
- add r0, #0xa0
- ldr r0, [r0]
- ldr r1, [r5, #0x2c]
- bl MOD05_021E7FBC
-_021F5C3A:
- add r4, r4, #1
- cmp r4, #0x20
- blt _021F5BC0
-_021F5C40:
- add sp, #0x28
- pop {r3, r4, r5, r6, r7, pc}
-
-
- thumb_func_start MOD05_021F5C44
-MOD05_021F5C44: ; 0x021F5C44
- push {r3, r4, r5, lr}
- add r0, r1, #0
- mov r1, #0x18
- add r5, r2, #0
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- add r2, r4, #0
- mov r1, #0x18
- mov r0, #0
-_021F5C58:
- strb r0, [r2]
- add r2, r2, #1
- sub r1, r1, #1
- bne _021F5C58
- add r0, r5, #0
- str r5, [r4, #0xc]
- bl MOD05_021F61B0
- str r0, [r4, #4]
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5C70
-MOD05_021F5C70: ; 0x021F5C70
- push {r3, r4, r5, r6, r7, lr}
- 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, #0
- beq _021F5C8E
- cmp r0, #1
- beq _021F5CBA
- b _021F5D28
-_021F5C8E:
- ldr r0, [r4, #0x34]
- bl FUN_02058780
- mov r0, #0
- str r0, [r5, #0x10]
- add r2, r5, #0
- ldr r1, [r5, #0xc]
- add r0, r4, #0
- add r2, #0x10
- bl MOD06_0223BD14
- str r0, [r5, #8]
- ldr r1, [r5, #0xc]
- ldr r2, [r5, #8]
- add r0, r4, #0
- bl MOD05_021F5D2C
- str r0, [r5, #0x14]
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021F5D28
-_021F5CBA:
- ldr r0, [r5, #0x14]
- bl MOD05_021F5D50
- cmp r0, #1
- bne _021F5D28
- ldr r0, [r5, #0x14]
- bl MOD05_021F5D5C
- add r7, r0, #0
- ldr r0, [r5, #0x14]
- bl MOD05_021F5D68
- cmp r7, #1
- ldr r0, [r5, #0x10]
- bne _021F5D10
- ldr r0, [r0, #8]
- mov r1, #0
- bl GetPartyMonByIndex
- ldr r2, [r5, #4]
- add r3, r0, #0
- lsl r2, r2, #0x10
- add r0, r4, #0
- mov r1, #1
- lsr r2, r2, #0x10
- bl FUN_02061208
- ldr r0, [r4, #0xc]
- bl FUN_02029FC8
- mov r1, #0xa
- bl FUN_0202A0E8
- ldr r2, [r5, #0x10]
- add r0, r4, #0
- add r1, r6, #0
- bl FUN_02046A20
- add r0, r5, #0
- bl FreeToHeap
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021F5D10:
- cmp r0, #0
- beq _021F5D18
- bl FUN_02047964
-_021F5D18:
- ldr r0, [r4, #0x34]
- bl FUN_020587B0
- add r0, r5, #0
- bl FreeToHeap
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F5D28:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021F5D2C
-MOD05_021F5D2C: ; 0x021F5D2C
- push {r4, r5, r6, lr}
- add r5, r0, #0
- mov r0, #0x4c
- add r4, r1, #0
- add r6, r2, #0
- bl MOD05_021F6074
- add r1, r0, #0
- str r5, [r1, #0x20]
- str r4, [r1, #0x1c]
- ldr r0, _021F5D4C ; =MOD05_021F5D7C
- mov r2, #0x80
- str r6, [r1]
- bl FUN_0200CA44
- pop {r4, r5, r6, pc}
- .align 2, 0
-_021F5D4C: .word MOD05_021F5D7C
-
- thumb_func_start MOD05_021F5D50
-MOD05_021F5D50: ; 0x021F5D50
- push {r3, lr}
- bl FUN_0201B6C8
- ldr r0, [r0, #4]
- pop {r3, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5D5C
-MOD05_021F5D5C: ; 0x021F5D5C
- push {r3, lr}
- bl FUN_0201B6C8
- ldr r0, [r0, #8]
- pop {r3, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5D68
-MOD05_021F5D68: ; 0x021F5D68
- push {r4, lr}
- add r4, r0, #0
- bl FUN_0201B6C8
- bl FreeToHeap
- add r0, r4, #0
- bl FUN_0200CAB4
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5D7C
-MOD05_021F5D7C: ; 0x021F5D7C
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- ldr r0, [r5, #0x20]
- ldr r6, [r0, #0x38]
- add r0, r6, #0
- bl FUN_020553A0
- ldr r7, _021F5DA4 ; =UNK05_021FC9B8
- add r4, r0, #0
-_021F5D8E:
- ldr r3, [r5, #0xc]
- add r0, r5, #0
- lsl r3, r3, #2
- ldr r3, [r7, r3]
- add r1, r6, #0
- add r2, r4, #0
- blx r3
- cmp r0, #0
- bne _021F5D8E
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021F5DA4: .word UNK05_021FC9B8
-
- thumb_func_start MOD05_021F5DA8
-MOD05_021F5DA8: ; 0x021F5DA8
- push {r3, r4, r5, lr}
- add r4, r2, #0
- add r5, r0, #0
- bl MOD05_021F60C4
- add r0, r4, #0
- bl FUN_02058914
- mov r0, #1
- str r0, [r5, #0xc]
- pop {r3, r4, r5, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5DC0
-MOD05_021F5DC0: ; 0x021F5DC0
- push {r4, r5, r6, lr}
- add r6, r2, #0
- add r5, r0, #0
- add r0, r6, #0
- add r4, r1, #0
- bl FUN_0205AD98
- cmp r0, #1
- bne _021F5DF2
- add r0, r6, #0
- bl FUN_0205AE50
- add r0, r4, #0
- mov r1, #0x20
- bl MOD05_021E5FD8
- add r0, r4, #0
- bl MOD05_021E5FE0
- add r0, r6, #0
- mov r1, #1
- bl FUN_02058544
- mov r0, #2
- str r0, [r5, #0xc]
-_021F5DF2:
- mov r0, #0
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5DF8
-MOD05_021F5DF8: ; 0x021F5DF8
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x10]
- add r0, r0, #1
- str r0, [r4, #0x10]
- cmp r0, #0xa
- bne _021F5E0E
- mov r0, #0x65
- lsl r0, r0, #4
- bl PlaySE
-_021F5E0E:
- ldr r0, [r4, #0x10]
- cmp r0, #0x22
- bge _021F5E18
- mov r0, #0
- pop {r4, pc}
-_021F5E18:
- ldr r0, [r4]
- cmp r0, #1
- bne _021F5E22
- mov r0, #3
- b _021F5E24
-_021F5E22:
- mov r0, #0xc
-_021F5E24:
- str r0, [r4, #0xc]
- mov r0, #0
- str r0, [r4, #0x10]
- mov r0, #1
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5E30
-MOD05_021F5E30: ; 0x021F5E30
- push {r4, lr}
- add r4, r0, #0
- bl LCRandom
- lsr r1, r0, #0x1f
- lsl r0, r0, #0x1e
- sub r0, r0, r1
- mov r2, #0x1e
- ror r0, r2
- add r0, r1, r0
- add r0, r0, #1
- add r1, r0, #0
- mul r1, r2
- str r1, [r4, #0x14]
- ldr r0, [r4, #0x1c]
- lsl r1, r0, #2
- ldr r0, _021F5E60 ; =UNK05_021FC9AC
- ldr r0, [r0, r1]
- str r0, [r4, #0x18]
- mov r0, #4
- str r0, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
- nop
-_021F5E60: .word UNK05_021FC9AC
-
- thumb_func_start MOD05_021F5E64
-MOD05_021F5E64: ; 0x021F5E64
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x14]
- add r4, r2, #0
- sub r0, r0, #1
- str r0, [r5, #0x14]
- bl MOD05_021F6098
- cmp r0, #1
- bne _021F5E80
- mov r0, #0xa
- str r0, [r5, #0xc]
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F5E80:
- ldr r0, [r5, #0x14]
- cmp r0, #0
- ble _021F5E8A
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F5E8A:
- add r0, r4, #0
- mov r1, #2
- bl FUN_02058544
- add r0, r4, #0
- mov r1, #0
- mov r2, #1
- bl MOD05_021E7AC0
- str r0, [r5, #0x24]
- mov r0, #5
- str r0, [r5, #0xc]
- mov r0, #1
- pop {r3, r4, r5, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5EA8
-MOD05_021F5EA8: ; 0x021F5EA8
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x18]
- sub r0, r0, #1
- str r0, [r4, #0x18]
- bl MOD05_021F6098
- cmp r0, #1
- bne _021F5EC2
- mov r0, #6
- str r0, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
-_021F5EC2:
- ldr r0, [r4, #0x18]
- cmp r0, #0
- ble _021F5ECC
- mov r0, #0
- pop {r4, pc}
-_021F5ECC:
- mov r0, #0xb
- str r0, [r4, #0xc]
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5ED4
-MOD05_021F5ED4: ; 0x021F5ED4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x24]
- add r4, r2, #0
- bl FUN_02064520
- mov r0, #0
- str r0, [r5, #0x24]
- add r0, r4, #0
- mov r1, #3
- bl FUN_02058544
- mov r0, #0
- str r0, [r5, #0x10]
- mov r1, #7
- str r1, [r5, #0xc]
- pop {r3, r4, r5, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5EF8
-MOD05_021F5EF8: ; 0x021F5EF8
- push {r3, lr}
- ldr r1, [r0, #0x10]
- add r1, r1, #1
- str r1, [r0, #0x10]
- cmp r1, #0xf
- ble _021F5F12
- mov r1, #0
- str r1, [r0, #0x10]
- mov r1, #8
- str r1, [r0, #0xc]
- mov r1, #0x39
- bl MOD05_021F6140
-_021F5F12:
- mov r0, #0
- pop {r3, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5F18
-MOD05_021F5F18: ; 0x021F5F18
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021F617C
- cmp r0, #0
- bne _021F5F28
- mov r0, #0
- pop {r4, pc}
-_021F5F28:
- mov r0, #9
- str r0, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5F30
-MOD05_021F5F30: ; 0x021F5F30
- mov r2, #1
- str r2, [r0, #8]
- mov r1, #0xf
- str r1, [r0, #0xc]
- add r0, r2, #0
- bx lr
-
- thumb_func_start MOD05_021F5F3C
-MOD05_021F5F3C: ; 0x021F5F3C
- push {r4, lr}
- add r4, r0, #0
- add r0, r2, #0
- mov r1, #0
- bl FUN_02058544
- add r0, r4, #0
- mov r1, #0x38
- bl MOD05_021F6140
- mov r0, #0x10
- str r0, [r4, #0x10]
- mov r0, #0xe
- str r0, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5F5C
-MOD05_021F5F5C: ; 0x021F5F5C
- push {r4, lr}
- add r4, r0, #0
- add r0, r2, #0
- mov r1, #0
- bl FUN_02058544
- add r0, r4, #0
- mov r1, #0x37
- bl MOD05_021F6140
- mov r0, #0x10
- str r0, [r4, #0x10]
- mov r0, #0xe
- str r0, [r4, #0xc]
- ldr r0, [r4, #0x20]
- ldr r0, [r0, #0xc]
- bl FUN_02029FC8
- mov r1, #0x49
- bl FUN_0202A0E8
- ldr r0, [r4, #0x1c]
- bl MOD05_021F61B0
- add r2, r0, #0
- mov r1, #0
- ldr r0, [r4, #0x20]
- add r3, r1, #0
- bl FUN_02061208
- mov r0, #1
- pop {r4, pc}
-
- thumb_func_start MOD05_021F5F9C
-MOD05_021F5F9C: ; 0x021F5F9C
- mov r1, #0x78
- str r1, [r0, #0x10]
- mov r1, #0xd
- str r1, [r0, #0xc]
- mov r0, #1
- bx lr
-
- thumb_func_start MOD05_021F5FA8
-MOD05_021F5FA8: ; 0x021F5FA8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x10]
- add r4, r2, #0
- sub r0, r0, #1
- str r0, [r5, #0x10]
- bl MOD05_021F6098
- cmp r0, #1
- bne _021F5FC4
- mov r0, #0xa
- str r0, [r5, #0xc]
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021F5FC4:
- ldr r0, [r5, #0x10]
- cmp r0, #0
- beq _021F5FCE
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021F5FCE:
- add r0, r4, #0
- mov r1, #0
- bl FUN_02058544
- add r0, r5, #0
- mov r1, #0x36
- bl MOD05_021F6140
- mov r0, #0x10
- str r0, [r5, #0x10]
- mov r0, #0xe
- str r0, [r5, #0xc]
- mov r0, #0
- pop {r3, r4, r5, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F5FEC
-MOD05_021F5FEC: ; 0x021F5FEC
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #0x10]
- add r1, r1, #1
- str r1, [r4, #0x10]
- cmp r1, #0x10
- bge _021F5FFE
- mov r0, #0
- pop {r4, pc}
-_021F5FFE:
- mov r1, #0x10
- str r1, [r4, #0x10]
- bl MOD05_021F617C
- cmp r0, #0
- bne _021F600E
- mov r0, #0
- pop {r4, pc}
-_021F600E:
- mov r0, #0xf
- str r0, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F6018
-MOD05_021F6018: ; 0x021F6018
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x24]
- add r4, r1, #0
- cmp r0, #0
- beq _021F602C
- bl FUN_02064520
- mov r0, #0
- str r0, [r5, #0x24]
-_021F602C:
- add r0, r5, #0
- bl MOD05_021F60FC
- add r0, r4, #0
- bl FUN_020553C4
- bl FUN_02055648
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E5FD8
- add r0, r4, #0
- bl MOD05_021E5FE0
- mov r0, #0
- str r0, [r5, #0x10]
- mov r0, #0x10
- str r0, [r5, #0xc]
- mov r0, #1
- pop {r3, r4, r5, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F6058
-MOD05_021F6058: ; 0x021F6058
- ldr r1, [r0, #0x10]
- add r1, r1, #1
- str r1, [r0, #0x10]
- cmp r1, #2
- ble _021F6066
- mov r1, #0x11
- str r1, [r0, #0xc]
-_021F6066:
- mov r0, #0
- bx lr
- .align 2, 0
-
- thumb_func_start MOD05_021F606C
-MOD05_021F606C: ; 0x021F606C
- mov r1, #1
- str r1, [r0, #4]
- mov r0, #0
- bx lr
-
- thumb_func_start MOD05_021F6074
-MOD05_021F6074: ; 0x021F6074
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #4
- add r1, r5, #0
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- bne _021F6088
- bl GF_AssertFail
-_021F6088:
- add r0, r4, #0
- mov r1, #0
- add r2, r5, #0
- bl memset
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F6098
-MOD05_021F6098: ; 0x021F6098
- ldr r0, _021F60A8 ; =gMain
- ldr r1, [r0, #0x48]
- mov r0, #1
- tst r1, r0
- bne _021F60A4
- mov r0, #0
-_021F60A4:
- bx lr
- nop
-_021F60A8: .word gMain
-
- thumb_func_start MOD05_021F60AC
-MOD05_021F60AC: ; 0x021F60AC
- ldr r0, _021F60C0 ; =gMain
- ldr r1, [r0, #0x48]
- mov r0, #3
- tst r0, r1
- beq _021F60BA
- mov r0, #1
- bx lr
-_021F60BA:
- mov r0, #0
- bx lr
- nop
-_021F60C0: .word gMain
-
- thumb_func_start MOD05_021F60C4
-MOD05_021F60C4: ; 0x021F60C4
- push {r4, lr}
- add r4, r0, #0
- mov r0, #1
- mov r1, #0x1a
- mov r2, #0xc7
- mov r3, #4
- bl NewMsgDataFromNarc
- str r0, [r4, #0x48]
- mov r0, #1
- lsl r0, r0, #0xa
- mov r1, #4
- bl String_ctor
- str r0, [r4, #0x2c]
- mov r0, #1
- lsl r0, r0, #0xa
- mov r1, #4
- bl String_ctor
- str r0, [r4, #0x30]
- mov r0, #8
- mov r1, #0x40
- mov r2, #4
- bl ScrStrBufs_new_custom
- str r0, [r4, #0x34]
- pop {r4, pc}
-
- thumb_func_start MOD05_021F60FC
-MOD05_021F60FC: ; 0x021F60FC
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x34]
- bl ScrStrBufs_delete
- ldr r0, [r4, #0x2c]
- bl String_dtor
- ldr r0, [r4, #0x30]
- bl String_dtor
- ldr r0, [r4, #0x48]
- bl DestroyMsgData
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F611C
-MOD05_021F611C: ; 0x021F611C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r4, [r5, #0x20]
- add r1, r5, #0
- ldr r0, [r4, #8]
- add r1, #0x38
- mov r2, #3
- bl FUN_020545B8
- ldr r0, [r4, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- add r5, #0x38
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_02054608
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021F6140
-MOD05_021F6140: ; 0x021F6140
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r6, r1, #0
- bl MOD05_021F611C
- ldr r0, [r5, #0x48]
- ldr r2, [r5, #0x30]
- add r1, r6, #0
- ldr r4, [r5, #0x20]
- bl ReadMsgDataIntoString
- ldr r0, [r5, #0x34]
- ldr r1, [r5, #0x2c]
- ldr r2, [r5, #0x30]
- bl StringExpandPlaceholders
- ldr r0, [r4, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- add r2, r0, #0
- add r0, r5, #0
- ldr r1, [r5, #0x2c]
- add r0, #0x38
- mov r3, #1
- bl FUN_02054658
- add r5, #0x28
- strb r0, [r5]
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F617C
-MOD05_021F617C: ; 0x021F617C
- push {r4, lr}
- add r4, r0, #0
- add r0, #0x28
- ldrb r0, [r0]
- bl FUN_020546C8
- cmp r0, #1
- bne _021F61AA
- bl MOD05_021F60AC
- cmp r0, #1
- bne _021F61AA
- add r0, r4, #0
- add r0, #0x38
- mov r1, #0
- bl FUN_0200D0E0
- add r4, #0x38
- add r0, r4, #0
- bl RemoveWindow
- mov r0, #1
- pop {r4, pc}
-_021F61AA:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F61B0
-MOD05_021F61B0: ; 0x021F61B0
- push {r3, lr}
- cmp r0, #0
- beq _021F61C2
- cmp r0, #1
- beq _021F61C6
- cmp r0, #2
- beq _021F61CA
- bl GF_AssertFail
-_021F61C2:
- ldr r0, _021F61D0 ; =0x000001BD
- pop {r3, pc}
-_021F61C6:
- ldr r0, _021F61D4 ; =0x000001BE
- pop {r3, pc}
-_021F61CA:
- ldr r0, _021F61D8 ; =0x000001BF
- pop {r3, pc}
- nop
-_021F61D0: .word 0x000001BD
-_021F61D4: .word 0x000001BE
-_021F61D8: .word 0x000001BF
-
- thumb_func_start MOD05_021F61DC
-MOD05_021F61DC: ; 0x021F61DC
- lsl r1, r0, #2
- ldr r0, _021F61E4 ; =UNK05_021FCA00
- ldrh r0, [r0, r1]
- bx lr
- .align 2, 0
-_021F61E4: .word UNK05_021FCA00
-
- thumb_func_start MOD05_021F61E8
-MOD05_021F61E8: ; 0x021F61E8
- lsl r1, r0, #2
- ldr r0, _021F61F0 ; =UNK05_021FCA00 + 2
- ldrh r0, [r0, r1]
- bx lr
- .align 2, 0
-_021F61F0: .word UNK05_021FCA00 + 2
-
- thumb_func_start MOD05_021F61F4
-MOD05_021F61F4: ; 0x021F61F4
- push {r4, r5, r6, lr}
- add r6, r1, #0
- add r5, r0, #0
- add r0, r6, #0
- mov r1, #0x34
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- mov r1, #0
- mov r2, #0x34
- bl memset
- str r6, [r4]
- mov r0, #0
- str r0, [r4, #0xc]
- str r5, [r4, #0x2c]
- ldr r0, [r5, #0x20]
- str r0, [r4, #0x30]
- bl Camera_GetDistance
- str r0, [r4, #0x10]
- str r0, [r4, #0x20]
- ldr r0, _021F622C ; =MOD05_021F6270
- ldr r2, _021F6230 ; =0x0000FFFF
- add r1, r4, #0
- bl FUN_0200CA44
- pop {r4, r5, r6, pc}
- .align 2, 0
-_021F622C: .word MOD05_021F6270
-_021F6230: .word 0x0000FFFF
-
- thumb_func_start MOD05_021F6234
-MOD05_021F6234: ; 0x021F6234
- push {r3, lr}
- bl FUN_0201B6C8
- ldr r0, [r0, #8]
- pop {r3, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F6240
-MOD05_021F6240: ; 0x021F6240
- push {r4, lr}
- add r4, r0, #0
- bl FUN_0201B6C8
- bl FreeToHeap
- add r0, r4, #0
- bl FUN_0200CAB4
- pop {r4, pc}
-
- thumb_func_start MOD05_021F6254
-MOD05_021F6254: ; 0x021F6254
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r4, r2, #0
- add r6, r3, #0
- bl FUN_0201B6C8
- mov r1, #0
- str r1, [r0, #4]
- str r1, [r0, #8]
- str r5, [r0, #0xc]
- str r4, [r0, #0x14]
- str r6, [r0, #0x1c]
- str r1, [r0, #0x24]
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021F6270
-MOD05_021F6270: ; 0x021F6270
- push {r3, lr}
- add r0, r1, #0
- ldr r1, [r1, #0xc]
- lsl r2, r1, #2
- ldr r1, _021F6280 ; =UNK05_021FD1B8
- ldr r1, [r1, r2]
- blx r1
- pop {r3, pc}
- .align 2, 0
-_021F6280: .word UNK05_021FD1B8
-
- thumb_func_start MOD05_021F6284
-MOD05_021F6284: ; 0x021F6284
- mov r1, #1
- str r1, [r0, #8]
- bx lr
- .align 2, 0
-
- thumb_func_start MOD05_021F628C
-MOD05_021F628C: ; 0x021F628C
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _021F629C
- cmp r1, #1
- beq _021F62A6
- pop {r4, pc}
-_021F629C:
- bl MOD05_021F630C
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
-_021F62A6:
- add r0, r4, #0
- bl MOD05_021F633C
- cmp r0, #1
- bne _021F62BA
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
- mov r0, #1
- str r0, [r4, #8]
-_021F62BA:
- add r0, r4, #0
- bl MOD05_021F62FC
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F62C4
-MOD05_021F62C4: ; 0x021F62C4
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _021F62D4
- cmp r1, #1
- beq _021F62DE
- pop {r4, pc}
-_021F62D4:
- bl MOD05_021F6324
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
-_021F62DE:
- add r0, r4, #0
- bl MOD05_021F633C
- cmp r0, #1
- bne _021F62F2
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
- mov r0, #1
- str r0, [r4, #8]
-_021F62F2:
- add r0, r4, #0
- bl MOD05_021F62FC
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start MOD05_021F62FC
-MOD05_021F62FC: ; 0x021F62FC
- ldr r3, _021F6308 ; =FUN_0201EFE0
- add r1, r0, #0
- ldr r0, [r1, #0x20]
- ldr r1, [r1, #0x30]
- bx r3
- nop
-_021F6308: .word Camera_SetDistance
-
- thumb_func_start MOD05_021F630C
-MOD05_021F630C: ; 0x021F630C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x14]
- ldr r1, [r4, #0x1c]
- bl _s32_div_f
- str r0, [r4, #0x28]
- ldr r1, [r4, #0x20]
- ldr r0, [r4, #0x14]
- add r0, r1, r0
- str r0, [r4, #0x18]
- pop {r4, pc}
-
- thumb_func_start MOD05_021F6324
-MOD05_021F6324: ; 0x021F6324
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #0x10]
- ldr r0, [r4, #0x20]
- sub r0, r1, r0
- ldr r1, [r4, #0x1c]
- bl _s32_div_f
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x10]
- str r0, [r4, #0x18]
- pop {r4, pc}
-
- thumb_func_start MOD05_021F633C
-MOD05_021F633C: ; 0x021F633C
- ldr r2, [r0, #0x20]
- ldr r1, [r0, #0x28]
- add r1, r2, r1
- str r1, [r0, #0x20]
- ldr r1, [r0, #0x24]
- add r2, r1, #1
- str r2, [r0, #0x24]
- ldr r1, [r0, #0x1c]
- cmp r2, r1
- blo _021F635A
- str r1, [r0, #0x24]
- ldr r1, [r0, #0x18]
- str r1, [r0, #0x20]
- mov r0, #1
- bx lr
-_021F635A:
- mov r0, #0
- bx lr
- .align 2, 0
-
- thumb_func_start MOD05_021F6360
-MOD05_021F6360: ; 0x021F6360
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- bl FUN_02046528
- str r0, [sp]
- add r0, r7, #0
- bl FUN_0204652C
- add r6, r0, #0
- add r0, r7, #0
- bl FUN_02046530
- add r4, r0, #0
- ldr r0, [r4]
- ldr r5, [r6, #4]
- cmp r0, #5
- bhi _021F6424
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021F638E: ; jump table
- .short _021F639A - _021F638E - 2 ; case 0
- .short _021F63AC - _021F638E - 2 ; case 1
- .short _021F63CC - _021F638E - 2 ; case 2
- .short _021F63EA - _021F638E - 2 ; case 3
- .short _021F6402 - _021F638E - 2 ; case 4
- .short _021F6414 - _021F638E - 2 ; case 5
-_021F639A:
- mov r0, #0xb
- mov r1, #8
- bl AllocFromHeapAtEnd
- str r0, [r6, #4]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021F6424
-_021F63AC:
- bl MOD05_021F57EC
- add r6, r0, #0
- mov r0, #0xb
- add r1, r6, #0
- bl AllocFromHeapAtEnd
- str r0, [r5, #4]
- mov r1, #0
- add r2, r6, #0
- bl memset
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021F6424
-_021F63CC:
- ldr r0, [sp]
- ldr r0, [r0, #0x38]
- bl FUN_020553E8
- add r3, r0, #0
- ldr r0, [sp]
- ldr r2, [r6]
- mov r1, #0
- bl MOD06_0224666C
- str r0, [r5]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021F6424
-_021F63EA:
- ldr r0, [r5]
- bl MOD06_022466A0
- cmp r0, #0
- beq _021F6424
- ldr r0, [r5]
- bl MOD06_022466AC
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021F6424
-_021F6402:
- ldr r1, _021F6428 ; =MOD05_021F57F0
- ldr r2, [r5, #4]
- add r0, r7, #0
- bl FUN_0204640C
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021F6424
-_021F6414:
- add r0, r5, #0
- bl FreeToHeap
- add r0, r6, #0
- bl FreeToHeap
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021F6424:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .align 2, 0
-_021F6428: .word MOD05_021F57F0
-
- .section .rodata
-
- .global UNK05_021F78E4
-UNK05_021F78E4: ; 0x021F78E4
- .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00
-
- .global UNK05_021F7910
-UNK05_021F7910: ; 0x021F7910
- .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x41, 0x0E, 0x00
-
- .global UNK05_021F7918
-UNK05_021F7918: ; 0x021F7918
- .byte 0xDC, 0x05, 0x00, 0x00
- .byte 0x0F, 0x42, 0x12, 0x00
-
- .global UNK05_021F7920
-UNK05_021F7920: ; 0x021F7920
- .byte 0xDC, 0x05, 0x00, 0x00, 0x0F, 0x43, 0x13, 0x00
-
- .global UNK05_021F7928
-UNK05_021F7928: ; 0x021F7928
- .byte 0xDC, 0x05, 0x00, 0x00
- .byte 0x0F, 0x44, 0x14, 0x00
-
- .global UNK05_021F7930
-UNK05_021F7930: ; 0x021F7930
- .byte 0xB8, 0x0B, 0x00, 0x00, 0x1E, 0x45, 0x15, 0x00
-
- .global UNK05_021F7938
-UNK05_021F7938: ; 0x021F7938
- .byte 0x00, 0x00, 0x0B, 0x00
- .byte 0x3E, 0x00, 0x01, 0x00
-
- .global UNK05_021F7940
-UNK05_021F7940: ; 0x021F7940
- .byte 0x00, 0x00, 0x0B, 0x00, 0x4A, 0x00, 0x01, 0x00
-
- .global UNK05_021F7948
-UNK05_021F7948: ; 0x021F7948
- .byte 0x00, 0x00, 0x0C, 0x00
- .byte 0x4B, 0x00, 0x00, 0x00
-
- .global UNK05_021F7950
-UNK05_021F7950: ; 0x021F7950
- .byte 0x00, 0x00, 0x0B, 0x00, 0x4C, 0x00, 0x01, 0x00
-
- .global UNK05_021F7958
-UNK05_021F7958: ; 0x021F7958
- .byte 0x00, 0x00, 0x0C, 0x00
- .byte 0x4D, 0x00, 0x01, 0x00
-
- .global UNK05_021F7960
-UNK05_021F7960: ; 0x021F7960
- .byte 0x00, 0x00, 0x0B, 0x00, 0x4E, 0x00, 0x01, 0x00
-
- .global UNK05_021F7968
-UNK05_021F7968: ; 0x021F7968
- .byte 0x00, 0x00, 0x0B, 0x00
- .byte 0x40, 0x00, 0x01, 0x00
-
- .global UNK05_021F7970
-UNK05_021F7970: ; 0x021F7970
- .byte 0x00, 0x00, 0x0B, 0x00, 0x4F, 0x00, 0x01, 0x00
-
- .global UNK05_021F7978
-UNK05_021F7978: ; 0x021F7978
- .byte 0xC1, 0xAE, 0x29, 0x00
- .byte 0x02, 0xD6, 0x00, 0x00, 0xC1, 0x05
-
- .global UNK05_021F7982
-UNK05_021F7982: ; 0x021F7982
- .byte 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xCF, 0x00, 0xFF
- .byte 0x01, 0x06, 0x04, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE6, 0x00, 0x10, 0x91, 0x06, 0x04, 0x00
- .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x0A, 0x11, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00
- .byte 0x02, 0xE1, 0x00, 0xF0, 0x80, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xC6, 0x00, 0x00
- .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0x00, 0x08, 0x03, 0x00
- .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x02, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00
- .byte 0x02, 0xD0, 0x00, 0x10, 0x00, 0x08, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD9, 0x00, 0xF5
- .byte 0x51, 0x07, 0x03, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD0, 0x00, 0x0A, 0xC1, 0x04, 0x02, 0x00
- .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xF0, 0xC1, 0x03, 0x02, 0x00, 0xC1, 0xAE, 0x29, 0x00
- .byte 0x02, 0xD0, 0x00, 0xF0, 0x50, 0x06, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xE0, 0x00, 0xA0
- .byte 0x41, 0x02, 0x01, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0xA2, 0xE1, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00
- .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x41, 0x02, 0x01, 0x00
-
- .global UNK05_021F7A38
-UNK05_021F7A38: ; 0x021F7A38
- .byte 0x00, 0x40, 0x10, 0x00
-
- .global UNK05_021F7A3C
-UNK05_021F7A3C: ; 0x021F7A3C
- .byte 0x00, 0x00, 0x08, 0x00
-
- .global UNK05_021F7A40
-UNK05_021F7A40: ; 0x021F7A40
- .byte 0x00, 0x20, 0xFE, 0xFF
-
- .global UNK05_021F7A44
-UNK05_021F7A44: ; 0x021F7A44
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021F7A48
-UNK05_021F7A48: ; 0x021F7A48
- .byte 0x00, 0x40, 0x06, 0x00
-
- .global UNK05_021F7A4C
-UNK05_021F7A4C: ; 0x021F7A4C
- .byte 0x00, 0x40, 0x01, 0x00
-
- .global UNK05_021F7A50
-UNK05_021F7A50: ; 0x021F7A50
- .byte 0x04, 0x00, 0x00, 0x00
-
- .global UNK05_021F7A54
-UNK05_021F7A54: ; 0x021F7A54
- .byte 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF
- .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00
- .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x40, 0x06, 0x00
- .byte 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0xC0, 0x08, 0x00
- .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00
- .byte 0x00, 0xC0, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x40, 0x10, 0x00
- .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x40, 0x06, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x40, 0x06, 0x00
- .byte 0x00, 0xC0, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
-
- .global UNK05_021F7AF8
-UNK05_021F7AF8: ; 0x021F7AF8
- .byte 0x70, 0x00, 0xD6, 0x00
- .byte 0x2F, 0x01, 0x91, 0x01, 0xF5, 0x01, 0x63, 0x02, 0xC3, 0x02, 0x35, 0x03, 0xA0, 0x03, 0x07, 0x04
- .byte 0x61, 0x04, 0xC8, 0x04, 0xC9, 0x04
-
- .global UNK05_021F7B12
-UNK05_021F7B12: ; 0x021F7B12
- .byte 0x68, 0x01
-
- .global UNK05_021F7B14
-UNK05_021F7B14: ; 0x021F7B14
- .byte 0xFF, 0x00
-
- .global UNK05_021F7B16
-UNK05_021F7B16: ; 0x021F7B16
- .byte 0xCA, 0x00, 0x2A, 0x01, 0xFE, 0x00
- .byte 0xB7, 0x00, 0xB7, 0x01, 0x3A, 0x01, 0x7A, 0x00, 0xB6, 0x01, 0x3B, 0x01, 0xB9, 0x00, 0xBE, 0x01
- .byte 0x3C, 0x01, 0x8F, 0x00, 0xCA, 0x01, 0x3D, 0x01, 0xE2, 0x00, 0x96, 0x01, 0x3E, 0x01, 0x3B, 0x01
- .byte 0xB8, 0x01, 0x3F, 0x01, 0x71, 0x00, 0xB1, 0x01, 0x40, 0x01, 0x66, 0x01
-
- .global UNK05_021F7B48
-UNK05_021F7B48: ; 0x021F7B48
- .byte 0x21, 0x4E, 0x71, 0x00
- .byte 0x82, 0x00, 0xDB, 0x00, 0xCC, 0x00, 0x50, 0x00, 0x59, 0x01, 0x40, 0x01, 0xAE, 0x00, 0x13, 0x01
- .byte 0x0B, 0x01, 0x85, 0x00, 0xB5, 0x01, 0x24, 0x4E, 0xBB, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00
- .byte 0xC8, 0x00, 0xFB, 0x00, 0x0E, 0x00, 0x5D, 0x01, 0xF2, 0x00, 0x97, 0x01, 0xE8, 0x00, 0x8A, 0x01
- .byte 0x27, 0x4E, 0xF3, 0x00, 0x72, 0x00, 0x36, 0x00, 0xC1, 0x00, 0xAF, 0x00, 0x1F, 0x01, 0x2C, 0x01
- .byte 0x19, 0x01, 0x4A, 0x01, 0xFC, 0x00, 0x88, 0x01, 0xC5, 0x01, 0x30, 0x4E, 0xE4, 0x00, 0xB9, 0x00
- .byte 0xC1, 0x00, 0xD3, 0x00, 0x3A, 0x01, 0x93, 0x01, 0x9D, 0x01, 0xFD, 0x00, 0x33, 0x4E, 0x67, 0x00
- .byte 0xAC, 0x00, 0x9A, 0x00, 0x2C, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFD, 0x00, 0xCF, 0x00, 0x83, 0x01
- .byte 0x7E, 0x01, 0x35, 0x4E, 0xB9, 0x00, 0xCE, 0x00, 0xB8, 0x00, 0x62, 0x00, 0xA1, 0x00, 0x36, 0x01
- .byte 0x8F, 0x00, 0x12, 0x00, 0xFD, 0x00, 0x37, 0x4E, 0xE4, 0x00, 0x15, 0x00, 0xB4, 0x00, 0xFB, 0x00
- .byte 0x31, 0x01, 0xB8, 0x00, 0x56, 0x01, 0x32, 0x00, 0x3B, 0x4E, 0xAF, 0x00, 0xDB, 0x00, 0x44, 0x00
- .byte 0xE5, 0x00, 0x9D, 0x00, 0xE8, 0x00, 0x0E, 0x00, 0x32, 0x01, 0x90, 0x01, 0x3D, 0x4E, 0x30, 0x00
- .byte 0x32, 0x00, 0x24, 0x00, 0x74, 0x00, 0xCC, 0x00, 0x44, 0x00, 0xFB, 0x00, 0xE4, 0x00, 0x40, 0x4E
- .byte 0x44, 0x00, 0x32, 0x00, 0x30, 0x00, 0x24, 0x00, 0x85, 0x00, 0x5D, 0x00, 0xFB, 0x00, 0x85, 0x01
- .byte 0x45, 0x4E, 0xB9, 0x00, 0x5F, 0x00, 0xAF, 0x00, 0xB4, 0x00, 0x32, 0x00, 0x50, 0x01, 0xF4, 0x00
- .byte 0x01, 0x01, 0x8A, 0x01, 0x46, 0x01, 0x9C, 0x01, 0x49, 0x4E, 0x62, 0x00, 0xE4, 0x00, 0xB9, 0x00
- .byte 0x10, 0x00, 0x12, 0x00, 0xAE, 0x00, 0xA1, 0x01, 0x5F, 0x00, 0xAC, 0x01, 0x9D, 0x01, 0x4B, 0x4E
- .byte 0x0E, 0x00, 0x4B, 0x00, 0xAF, 0x00, 0xEB, 0x00, 0xCC, 0x00, 0x13, 0x01, 0x41, 0x01, 0x4E, 0x4E
- .byte 0xCE, 0x00, 0x67, 0x00, 0x44, 0x00, 0x3C, 0x00, 0xAF, 0x00, 0xE6, 0x00, 0x71, 0x00, 0xE4, 0x00
- .byte 0xE8, 0x00, 0xC2, 0x01, 0xB8, 0x01, 0x50, 0x4E, 0xE2, 0x00, 0x67, 0x00, 0xCA, 0x00, 0x44, 0x01
- .byte 0x61, 0x00, 0xEA, 0x00, 0x86, 0x01, 0xC2, 0x01, 0x52, 0x4E, 0xB9, 0x00, 0x67, 0x00, 0xF6, 0x00
- .byte 0xE4, 0x00, 0xFB, 0x00, 0xFD, 0x00, 0x9D, 0x00, 0xAA, 0x01, 0x36, 0x01, 0x54, 0x4E, 0xB4, 0x00
- .byte 0xCC, 0x00, 0x5F, 0x00, 0x85, 0x00, 0xF4, 0x00, 0x12, 0x01, 0x3C, 0x01, 0xAF, 0x00, 0x83, 0x01
- .byte 0x82, 0x01, 0x56, 0x4E, 0x5F, 0x00, 0x3C, 0x00, 0xC1, 0x00, 0x71, 0x00, 0xF8, 0x00, 0x5E, 0x00
- .byte 0xEE, 0x00, 0x1F, 0x01, 0x6D, 0x00, 0x19, 0x01, 0xAA, 0x01, 0x58, 0x4E, 0x9D, 0x00, 0xC1, 0x00
- .byte 0x60, 0x00, 0x44, 0x00, 0xB3, 0x00, 0xFB, 0x00, 0x17, 0x01, 0x09, 0x01, 0x72, 0x01, 0x5A, 0x4E
- .byte 0x22, 0x00, 0xDB, 0x00, 0xF2, 0x00, 0x25, 0x00, 0x53, 0x00, 0x50, 0x01, 0x01, 0x01, 0x26, 0x00
- .byte 0x8A, 0x01, 0x5C, 0x4E, 0x36, 0x00, 0x96, 0x00, 0x3D, 0x00, 0x72, 0x00, 0xAA, 0x00, 0x5A, 0x01
- .byte 0x2D, 0x01, 0x55, 0x01, 0x1F, 0x01, 0x1B, 0x01, 0x5F, 0x4E, 0xE3, 0x00, 0x70, 0x00, 0x1A, 0x01
- .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x7B, 0x01, 0x81, 0x01, 0x62, 0x4E, 0x71, 0x00, 0x60, 0x00
- .byte 0x1B, 0x00, 0xE3, 0x00, 0x09, 0x01, 0x44, 0x00, 0x9D, 0x00, 0x72, 0x01, 0x07, 0x00, 0x09, 0x00
- .byte 0x08, 0x00, 0xA2, 0x01, 0x65, 0x4E, 0x0E, 0x00, 0xE3, 0x00, 0x73, 0x00, 0xEB, 0x00, 0x8D, 0x00
- .byte 0x13, 0x01, 0x59, 0x01, 0x84, 0x01, 0x41, 0x01, 0x68, 0x4E, 0x3E, 0x00, 0xF3, 0x00, 0xE5, 0x00
- .byte 0x72, 0x00, 0xDB, 0x00, 0x6D, 0x00, 0x1A, 0x01, 0x6F, 0x01, 0x6A, 0x4E, 0x05, 0x00, 0x9D, 0x00
- .byte 0x4F, 0x01, 0x67, 0x01, 0xAF, 0x00, 0x6D, 0x4E, 0xAC, 0x00, 0x25, 0x00, 0x18, 0x00, 0x5F, 0x00
- .byte 0xCC, 0x00, 0x26, 0x00, 0x20, 0x00, 0x6F, 0x4E, 0xDB, 0x00, 0xBB, 0x00, 0xF8, 0x00, 0x17, 0x00
- .byte 0x2C, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0x7E, 0x01, 0x4F, 0x01, 0xAC, 0x01, 0x73, 0x4E, 0xD3, 0x00
- .byte 0xC1, 0x00, 0x77, 0x00, 0x10, 0x00, 0x62, 0x00, 0xAF, 0x00, 0x29, 0x01, 0xAE, 0x00, 0x57, 0x01
- .byte 0xBD, 0x00, 0x90, 0x01, 0x74, 0x4E, 0x62, 0x00, 0x30, 0x00, 0x72, 0x00, 0xB9, 0x00, 0xAF, 0x00
- .byte 0x1B, 0x01, 0x77, 0x00, 0x9D, 0x01, 0x76, 0x4E, 0x7A, 0x00, 0xC3, 0x00, 0x32, 0x00, 0x20, 0x00
- .byte 0x15, 0x00, 0xE3, 0x00, 0xFC, 0x00, 0x4D, 0x01, 0x44, 0x01, 0x78, 0x4E, 0x72, 0x00, 0xD4, 0x00
- .byte 0x7A, 0x00, 0x1E, 0x01, 0xAE, 0x00, 0x45, 0x01, 0x99, 0x00, 0xA9, 0x01, 0xFE, 0x00, 0x00, 0x01
- .byte 0xFF, 0x00, 0x7A, 0x4E, 0x3D, 0x00, 0x24, 0x00, 0x70, 0x00, 0xE5, 0x00, 0x67, 0x00, 0x4D, 0x01
- .byte 0x55, 0x01, 0x7C, 0x4E, 0x95, 0x00, 0xC3, 0x00, 0x72, 0x00, 0x36, 0x01, 0x05, 0x01, 0x20, 0x01
- .byte 0x99, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x7F, 0x4E, 0x9D, 0x00, 0xAF, 0x00, 0x99, 0x00
- .byte 0x4F, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x5E, 0x01, 0x80, 0x4E, 0x70, 0x00, 0x12, 0x01, 0x10, 0x01
- .byte 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xA1, 0x01, 0x04, 0x01, 0xAB, 0x01, 0x82, 0x4E, 0x5B, 0x00
- .byte 0x72, 0x00, 0x85, 0x00, 0xAF, 0x00, 0x15, 0x00, 0x1A, 0x01, 0x0E, 0x00, 0x41, 0x01, 0xF6, 0x00
- .byte 0x86, 0x4E, 0xEB, 0x00, 0xEC, 0x00, 0x73, 0x00, 0xF6, 0x00, 0xF4, 0x00, 0x13, 0x01, 0xAE, 0x00
- .byte 0x0B, 0x01, 0x7D, 0x01, 0xB5, 0x01, 0x88, 0x4E, 0x9D, 0x00, 0xF6, 0x00, 0xBB, 0x00, 0x67, 0x00
- .byte 0x82, 0x00, 0xC3, 0x00, 0x0E, 0x00, 0x18, 0x00, 0xBA, 0x01, 0x8C, 0x4E, 0xBB, 0x00, 0xDE, 0x00
- .byte 0x22, 0x00, 0xAE, 0x00, 0x09, 0x01, 0xD6, 0x00, 0xAD, 0x00, 0xA4, 0x00, 0x85, 0x00, 0x67, 0x01
- .byte 0x8D, 0x4E, 0x67, 0x00, 0x95, 0x00, 0x3C, 0x00, 0xC2, 0x00, 0xDC, 0x00, 0x05, 0x01, 0x20, 0x01
- .byte 0xB4, 0x00, 0xAE, 0x00, 0x8F, 0x4E, 0xF2, 0x00, 0xB3, 0x00, 0x9D, 0x00, 0x44, 0x00, 0xDE, 0x00
- .byte 0x0E, 0x00, 0xAE, 0x00, 0x32, 0x01, 0x97, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x91, 0x4E
- .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01
- .byte 0x92, 0x4E, 0xAF, 0x00, 0x5D, 0x00, 0x48, 0x00, 0x73, 0x00, 0x85, 0x00, 0x49, 0x00, 0x0B, 0x01
- .byte 0x1B, 0x01, 0xB5, 0x01, 0x93, 0x4E, 0x17, 0x00, 0xC1, 0x00, 0x74, 0x00, 0xDB, 0x00, 0x32, 0x00
- .byte 0x44, 0x00, 0x32, 0x01, 0xA4, 0x00, 0x26, 0x00, 0x1B, 0x01, 0x67, 0x01, 0x94, 0x4E, 0xAF, 0x00
- .byte 0x3E, 0x00, 0xBE, 0x00, 0x32, 0x00, 0x96, 0x00, 0x52, 0x00, 0xE1, 0x00, 0x44, 0x01, 0x96, 0x4E
- .byte 0x3C, 0x00, 0x72, 0x00, 0x38, 0x00, 0xD6, 0x00, 0x2C, 0x01, 0xBD, 0x00, 0x91, 0x01, 0x9A, 0x4E
- .byte 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01
- .byte 0x2A, 0x01, 0x9B, 0x4E, 0x44, 0x00, 0xDB, 0x00, 0xE2, 0x00, 0x0D, 0x00, 0xB3, 0x00, 0x71, 0x00
- .byte 0xCB, 0x00, 0x3E, 0x01, 0x95, 0x01, 0x90, 0x01, 0x9F, 0x4E, 0x1F, 0x00, 0xAF, 0x00, 0xCE, 0x00
- .byte 0xB9, 0x00, 0x62, 0x00, 0x72, 0x01, 0x6C, 0x01, 0xA3, 0x4E, 0xC1, 0x00, 0xA4, 0x00, 0x41, 0x01
- .byte 0x1F, 0x01, 0x5D, 0x01, 0xAE, 0x00, 0xD6, 0x00, 0x20, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x5A, 0x00
- .byte 0xA5, 0x4E, 0xCC, 0x00, 0xAF, 0x00, 0xCB, 0x00, 0xAE, 0x00, 0x41, 0x01, 0x11, 0x01, 0x19, 0x01
- .byte 0x39, 0x01, 0x57, 0x01, 0xAA, 0x4E, 0x3D, 0x00, 0x3E, 0x00, 0x15, 0x00, 0x30, 0x00, 0x72, 0x00
- .byte 0x9D, 0x00, 0xBF, 0x00, 0x1A, 0x01, 0x7A, 0x01, 0x86, 0x01, 0xAC, 0x4E, 0x3D, 0x00, 0x3E, 0x00
- .byte 0xE5, 0x00, 0x5B, 0x00, 0xAF, 0x00, 0x1A, 0x01, 0x6D, 0x00, 0x55, 0x01, 0xC4, 0x00, 0x67, 0x00
- .byte 0xAE, 0x4E, 0x12, 0x00, 0xE4, 0x00, 0xC1, 0x00, 0xD3, 0x00, 0xE1, 0x00, 0xAE, 0x00, 0x74, 0x01
- .byte 0xAF, 0x4E, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xA4, 0x00, 0x12, 0x00
- .byte 0xE4, 0x00, 0xB3, 0x4E, 0x71, 0x00, 0x36, 0x00, 0x72, 0x00, 0x30, 0x00, 0xE1, 0x00, 0x5D, 0x01
- .byte 0x97, 0x01, 0xB8, 0x4E, 0x16, 0x00, 0x49, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xAF, 0x00, 0x0B, 0x01
- .byte 0x13, 0x01, 0x40, 0x01, 0xB5, 0x01, 0x38, 0x01, 0x7A, 0x01, 0xBB, 0x4E, 0x9A, 0x00, 0x62, 0x00
- .byte 0xB3, 0x00, 0x25, 0x00, 0xC1, 0x00, 0x57, 0x01, 0x50, 0x01, 0x32, 0x01, 0x26, 0x00, 0x18, 0x00
- .byte 0x8A, 0x01, 0xBE, 0x4E, 0xF2, 0x00, 0x25, 0x00, 0x38, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x01
- .byte 0x5A, 0x01, 0x51, 0x01, 0x08, 0x00, 0xE8, 0x00, 0x5D, 0x01, 0xC1, 0x4E, 0x26, 0x00, 0xE4, 0x00
- .byte 0xA3, 0x00, 0x74, 0x00, 0xB3, 0x00, 0xA4, 0x00, 0x0F, 0x01, 0x12, 0x01, 0x83, 0x01, 0xCC, 0x00
- .byte 0x57, 0x01, 0xC3, 0x4E, 0x77, 0x00, 0x30, 0x00, 0xB9, 0x00, 0x11, 0x00, 0x12, 0x00, 0x8F, 0x00
- .byte 0x29, 0x01, 0x61, 0x00, 0x65, 0x00, 0xC5, 0x4E, 0x3C, 0x00, 0x75, 0x00, 0x3E, 0x01, 0x95, 0x01
- .byte 0x67, 0x00, 0xE3, 0x00, 0x1A, 0x01, 0xC2, 0x01, 0xC7, 0x4E, 0x3C, 0x00, 0x32, 0x00, 0x31, 0x00
- .byte 0xE2, 0x00, 0xE4, 0x00, 0x44, 0x01, 0x86, 0x01, 0x8E, 0x01, 0xCA, 0x4E, 0xAF, 0x00, 0x67, 0x00
- .byte 0x85, 0x00, 0x3C, 0x00, 0xFA, 0x00, 0x61, 0x00, 0x36, 0x00, 0xCC, 0x4E, 0xB3, 0x00, 0x75, 0x00
- .byte 0xD9, 0x00, 0xE3, 0x00, 0x03, 0x00, 0x11, 0x01, 0x0C, 0x01, 0xFC, 0x00, 0x09, 0x00, 0x41, 0x01
- .byte 0xCD, 0x4E, 0xD9, 0x00, 0x76, 0x00, 0x85, 0x00, 0xBB, 0x00, 0x96, 0x00, 0x66, 0x00, 0x11, 0x01
- .byte 0xA4, 0x00, 0x39, 0x01, 0x57, 0x01, 0xCE, 0x4E, 0xC3, 0x00, 0xD9, 0x00, 0xB9, 0x00, 0x11, 0x01
- .byte 0x39, 0x01, 0x83, 0x01, 0x57, 0x01, 0x64, 0x01, 0xCF, 0x4E, 0xD9, 0x00, 0x77, 0x00, 0x40, 0x00
- .byte 0xC1, 0x00, 0xF8, 0x00, 0xA4, 0x00, 0xF4, 0x00, 0xA1, 0x01, 0x77, 0x01, 0x7D, 0x01, 0xD1, 0x4E
- .byte 0x72, 0x00, 0x41, 0x00, 0x62, 0x00, 0xB9, 0x00, 0xD3, 0x00, 0xF4, 0x00, 0x29, 0x01, 0x1F, 0x01
- .byte 0xAC, 0x01, 0x85, 0x01, 0xD3, 0x4E, 0x24, 0x00, 0x22, 0x00, 0xDB, 0x00, 0x67, 0x00, 0x73, 0x00
- .byte 0x3C, 0x01, 0x0C, 0x01, 0x04, 0x01, 0x1C, 0x00, 0xD7, 0x4E, 0x71, 0x00, 0xD9, 0x00, 0x85, 0x00
- .byte 0xF8, 0x00, 0xBB, 0x00, 0xC3, 0x00, 0x30, 0x00, 0xA4, 0x00, 0xC5, 0x01, 0x14, 0x01, 0x1F, 0x01
- .byte 0xD9, 0x4E, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xDB, 0x4E
- .byte 0x5D, 0x00, 0xE3, 0x00, 0x26, 0x00, 0x73, 0x00, 0x85, 0x00, 0x0E, 0x01, 0xF4, 0x00, 0x38, 0x01
- .byte 0x84, 0x01, 0xDE, 0x4E, 0x44, 0x00, 0x67, 0x00, 0xE4, 0x00, 0x61, 0x00, 0xB4, 0x00, 0x15, 0x00
- .byte 0x03, 0x00, 0xFB, 0x00, 0xFC, 0x00, 0x57, 0x01, 0x54, 0x01, 0xDF, 0x4E, 0x40, 0x01, 0xE3, 0x00
- .byte 0x49, 0x00, 0x0B, 0x01, 0xAE, 0x00, 0x0E, 0x01, 0x13, 0x01, 0xE6, 0x00, 0xE1, 0x4E, 0x12, 0x00
- .byte 0xB3, 0x00, 0x8D, 0x00, 0x44, 0x01, 0x3E, 0x01, 0x6C, 0x01, 0xB9, 0x00, 0xE4, 0x00, 0xE2, 0x4E
- .byte 0x22, 0x00, 0xF6, 0x00, 0xDB, 0x00, 0xAE, 0x00, 0x2C, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00
- .byte 0x44, 0x00, 0xE3, 0x00, 0x18, 0x00, 0xE6, 0x4E, 0x12, 0x00, 0x41, 0x00, 0x77, 0x00, 0x11, 0x00
- .byte 0x8F, 0x00, 0x6D, 0x00, 0x29, 0x01, 0xC3, 0x00, 0x77, 0x01, 0x67, 0x00, 0xB9, 0x00, 0xE8, 0x4E
- .byte 0x67, 0x00, 0xC2, 0x00, 0xF4, 0x00, 0x1E, 0x01, 0x06, 0x01, 0x85, 0x01, 0xA9, 0x01, 0xAE, 0x00
- .byte 0xB4, 0x00, 0xD2, 0x01, 0xEB, 0x4E, 0x24, 0x00, 0x85, 0x00, 0xC1, 0x00, 0xF8, 0x00, 0xFB, 0x00
- .byte 0xF4, 0x00, 0x11, 0x01, 0x15, 0x01, 0x18, 0x00, 0xF3, 0x00, 0xEC, 0x4E, 0x73, 0x00, 0x2A, 0x00
- .byte 0xAF, 0x00, 0x81, 0x00, 0x44, 0x00, 0x48, 0x01, 0x17, 0x01, 0x26, 0x00, 0x86, 0x01, 0xEE, 0x4E
- .byte 0x75, 0x00, 0xF6, 0x00, 0x9D, 0x00, 0x2C, 0x00, 0x1D, 0x00, 0x36, 0x01, 0xAE, 0x00, 0x78, 0x01
- .byte 0x15, 0x01, 0xAD, 0x00, 0xEF, 0x4E, 0xE8, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x44, 0x00, 0x48, 0x01
- .byte 0x61, 0x00, 0xE2, 0x00, 0x26, 0x00, 0x6C, 0x01, 0x90, 0x01, 0xB8, 0x01, 0xF1, 0x4E, 0x76, 0x00
- .byte 0xB9, 0x00, 0x73, 0x00, 0xD9, 0x00, 0xF2, 0x00, 0xD7, 0x00, 0xAD, 0x00, 0x09, 0x01, 0x72, 0x01
- .byte 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xF3, 0x4E, 0xAF, 0x00, 0x72, 0x00, 0x3D, 0x00, 0x30, 0x00
- .byte 0x36, 0x01, 0x44, 0x01, 0x8E, 0x01, 0xF5, 0x4E, 0xE6, 0x00, 0x1A, 0x01, 0x0E, 0x01, 0x6F, 0x01
- .byte 0x48, 0x01, 0xBD, 0x00, 0xF6, 0x4E, 0x6A, 0x00, 0x75, 0x00, 0xAF, 0x00, 0xCE, 0x00, 0x17, 0x01
- .byte 0xE4, 0x00, 0x26, 0x00, 0xF7, 0x4E, 0x44, 0x00, 0xB4, 0x00, 0xC1, 0x00, 0x73, 0x00, 0x2C, 0x00
- .byte 0x32, 0x01, 0xFC, 0x00, 0xCA, 0x01, 0x82, 0x01, 0xE4, 0x00, 0xA4, 0x01, 0x08, 0x00, 0xF8, 0x4E
- .byte 0xF2, 0x00, 0x24, 0x00, 0x45, 0x00, 0x44, 0x00, 0xE8, 0x00, 0x39, 0x01, 0x19, 0x01, 0xD6, 0x00
- .byte 0xEE, 0x00, 0x26, 0x00, 0x72, 0x01, 0x90, 0x01, 0xFA, 0x4E, 0x97, 0x00, 0x01, 0x01, 0xAE, 0x00
- .byte 0x6C, 0x00, 0x06, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x4E, 0x24, 0x00, 0x2C, 0x00
- .byte 0x22, 0x00, 0x9D, 0x00, 0xF6, 0x00, 0x55, 0x01, 0x4D, 0x01, 0x26, 0x00, 0x5A, 0x00, 0xAE, 0x00
- .byte 0xFE, 0x4E, 0x9D, 0x00, 0x67, 0x00, 0x36, 0x00, 0x85, 0x00, 0x70, 0x00, 0x13, 0x01, 0x6D, 0x00
- .byte 0x4D, 0x01, 0x0B, 0x01, 0x88, 0x01, 0xFF, 0x4E, 0x3E, 0x00, 0xBE, 0x00, 0x30, 0x00, 0x72, 0x00
- .byte 0x67, 0x00, 0x56, 0x00, 0x5E, 0x01, 0xAD, 0x00, 0xAF, 0x00, 0x01, 0x4F, 0x3E, 0x00, 0x62, 0x00
- .byte 0xF8, 0x00, 0x96, 0x00, 0xE5, 0x00, 0x2D, 0x01, 0xA4, 0x01, 0x08, 0x00, 0x02, 0x4F, 0xEF, 0x00
- .byte 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00, 0x5A, 0x01, 0x96, 0x00
- .byte 0x03, 0x4F, 0x41, 0x00, 0xE4, 0x00, 0x12, 0x00, 0x8F, 0x00, 0xAE, 0x00, 0x9D, 0x01, 0x74, 0x01
- .byte 0x04, 0x4F, 0x53, 0x00, 0x63, 0x00, 0xE4, 0x00, 0x44, 0x00, 0xB4, 0x00, 0xB3, 0x00, 0xFB, 0x00
- .byte 0x05, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0xA1, 0x01, 0x82, 0x01, 0x07, 0x4F, 0x74, 0x00, 0x22, 0x00
- .byte 0xF6, 0x00, 0xAD, 0x00, 0x44, 0x00, 0x5A, 0x00, 0x1B, 0x01, 0xA4, 0x01, 0x0A, 0x4F, 0xB4, 0x00
- .byte 0x32, 0x00, 0x2C, 0x00, 0xCF, 0x00, 0xF4, 0x00, 0x46, 0x01, 0x25, 0x00, 0x18, 0x00, 0xAC, 0x01
- .byte 0x0C, 0x4F, 0xE5, 0x00, 0x88, 0x00, 0xB7, 0x00, 0xAA, 0x00, 0x0E, 0x01, 0x44, 0x00, 0x9A, 0x01
- .byte 0xA2, 0x01, 0x0E, 0x4F, 0x60, 0x00, 0xF4, 0x00, 0xFC, 0x00, 0x11, 0x01, 0x08, 0x00, 0x65, 0x01
- .byte 0x0F, 0x4F, 0x02, 0x00, 0x70, 0x00, 0x1B, 0x00, 0x60, 0x00, 0xEE, 0x00, 0x07, 0x00, 0x08, 0x00
- .byte 0xDF, 0x00, 0x10, 0x4F, 0x02, 0x00, 0x05, 0x00, 0x70, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x09, 0x00
- .byte 0xB7, 0x00, 0xDF, 0x00, 0x8A, 0x01, 0x11, 0x4F, 0xD9, 0x00, 0xB3, 0x00, 0x45, 0x00, 0xCB, 0x00
- .byte 0xF4, 0x00, 0xAE, 0x00, 0x0E, 0x01, 0xD6, 0x00, 0x92, 0x00, 0x67, 0x01, 0x26, 0x00, 0x82, 0x01
- .byte 0x16, 0x4F, 0xE4, 0x00, 0x17, 0x00, 0xC8, 0x00, 0x74, 0x00, 0xF6, 0x00, 0x5D, 0x01, 0xAE, 0x00
- .byte 0x4E, 0x01, 0x74, 0x01, 0xBA, 0x01, 0x1C, 0x4F, 0xF2, 0x00, 0x2C, 0x01, 0x1B, 0x01, 0x49, 0x00
- .byte 0xE1, 0x00, 0x32, 0x01, 0x84, 0x01, 0x18, 0x00, 0x40, 0x01, 0xEB, 0x00, 0x59, 0x01, 0xB5, 0x01
- .byte 0x1F, 0x4F, 0x44, 0x00, 0xB3, 0x00, 0xCB, 0x00, 0xCF, 0x00, 0x9D, 0x00, 0x09, 0x01, 0x32, 0x01
- .byte 0xE2, 0x00, 0x61, 0x00, 0x90, 0x01, 0x83, 0x01, 0x6C, 0x01, 0x22, 0x4F, 0x1F, 0x01, 0xFD, 0x00
- .byte 0xAE, 0x00, 0x17, 0x00, 0x2D, 0x01, 0xF3, 0x00, 0x44, 0x00, 0xF6, 0x00, 0xFA, 0x00, 0x2C, 0x00
- .byte 0x26, 0x00, 0xAA, 0x01, 0x25, 0x4F, 0x36, 0x01, 0x31, 0x01, 0x57, 0x01, 0x2B, 0x00, 0x19, 0x01
- .byte 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x7E, 0x01, 0x27, 0x4F, 0xCC, 0x00, 0xE4, 0x00
- .byte 0xA4, 0x00, 0x41, 0x01, 0x0F, 0x01, 0x0E, 0x01, 0xBD, 0x00, 0x2E, 0x4F, 0xEB, 0x00, 0x4B, 0x00
- .byte 0xE6, 0x00, 0x49, 0x00, 0xAF, 0x00, 0x37, 0x00, 0x41, 0x01, 0x31, 0x4F, 0x49, 0x00, 0x85, 0x00
- .byte 0x62, 0x00, 0x0D, 0x00, 0x24, 0x00, 0xCE, 0x00, 0x84, 0x01, 0xA1, 0x01, 0x34, 0x4F, 0xE4, 0x00
- .byte 0x30, 0x00, 0x1F, 0x01, 0x77, 0x00, 0x63, 0x00, 0x8F, 0x00, 0x12, 0x00, 0x9D, 0x01, 0x36, 0x4F
- .byte 0x36, 0x00, 0xEF, 0x00, 0x61, 0x00, 0x10, 0x00, 0x5A, 0x01, 0x88, 0x01, 0x1A, 0x01, 0x38, 0x4F
- .byte 0x32, 0x00, 0x05, 0x01, 0xD4, 0x00, 0x06, 0x01, 0xC2, 0x00, 0x20, 0x01, 0xA9, 0x01, 0x6D, 0x00
- .byte 0x3B, 0x4F, 0xC1, 0x00, 0x55, 0x01, 0x3C, 0x00, 0x38, 0x00, 0xAA, 0x00, 0x44, 0x01, 0xC2, 0x01
- .byte 0x3D, 0x4F, 0x39, 0x01, 0xCF, 0x00, 0xCC, 0x00, 0xCE, 0x00, 0x0E, 0x01, 0x84, 0x01, 0x66, 0x01
- .byte 0x92, 0x01, 0x3F, 0x4F, 0xE4, 0x00, 0xA3, 0x00, 0x22, 0x00, 0xAD, 0x00, 0x32, 0x01, 0xAE, 0x00
- .byte 0xD6, 0x00, 0x67, 0x01, 0x90, 0x01, 0x42, 0x4F, 0xCB, 0x00, 0xB9, 0x00, 0x10, 0x00, 0x3E, 0x01
- .byte 0x95, 0x01, 0x90, 0x01, 0xC2, 0x01, 0x45, 0x4F, 0x24, 0x00, 0xAD, 0x00, 0xCF, 0x00, 0x46, 0x01
- .byte 0x09, 0x01, 0x6C, 0x00, 0x1B, 0x01, 0x48, 0x4F, 0xB9, 0x00, 0xC5, 0x00, 0xC1, 0x00, 0x0E, 0x01
- .byte 0xEE, 0x00, 0x17, 0x01, 0xDF, 0x00, 0x44, 0x00, 0x66, 0x01, 0xA2, 0x01, 0x4A, 0x4F, 0xE3, 0x00
- .byte 0x2F, 0x00, 0x1F, 0x01, 0x15, 0x00, 0x41, 0x01, 0x39, 0x01, 0x4B, 0x4F, 0xDE, 0x00, 0xCD, 0x00
- .byte 0x99, 0x00, 0x26, 0x00, 0x4F, 0x01, 0x4C, 0x4F, 0x0E, 0x01, 0xF4, 0x00, 0xFD, 0x00, 0x39, 0x01
- .byte 0x11, 0x01, 0xE2, 0x00, 0xA4, 0x00, 0x41, 0x01, 0x83, 0x01, 0xFC, 0x00, 0xAC, 0x01, 0x85, 0x01
- .byte 0x4E, 0x4F, 0xF4, 0x00, 0x69, 0x00, 0xEC, 0x00, 0xA1, 0x01, 0x04, 0x01, 0x4F, 0x4F, 0x0E, 0x00
- .byte 0xCE, 0x00, 0x31, 0x01, 0xF4, 0x00, 0xF6, 0x00, 0x41, 0x01, 0x85, 0x01, 0xA7, 0x01, 0xA8, 0x01
- .byte 0xA6, 0x01, 0x82, 0x01, 0x50, 0x4F, 0x1B, 0x01, 0x22, 0x00, 0x17, 0x00, 0x09, 0x01, 0xAE, 0x00
- .byte 0x67, 0x00, 0xBA, 0x01, 0x97, 0x01, 0x53, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0xC1, 0x00
- .byte 0xFC, 0x00, 0xE2, 0x00, 0xDF, 0x00, 0x80, 0x01, 0x81, 0x01, 0xAB, 0x01, 0xA2, 0x01, 0x55, 0x4F
- .byte 0xF2, 0x00, 0x1D, 0x00, 0xFD, 0x00, 0xAE, 0x00, 0x81, 0x00, 0xB3, 0x01, 0xA7, 0x01, 0xA8, 0x01
- .byte 0xA6, 0x01, 0x57, 0x4F, 0xA4, 0x00, 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x58, 0x4F, 0xA4, 0x00
- .byte 0x11, 0x01, 0x2F, 0x00, 0xBA, 0x00, 0x59, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x0F, 0x01, 0xE3, 0x00
- .byte 0x95, 0x01, 0x5A, 0x4F, 0xE2, 0x00, 0x3E, 0x01, 0x4A, 0x00, 0xE3, 0x00, 0x95, 0x01, 0x5B, 0x4F
- .byte 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00, 0xB5, 0x01
- .byte 0x5C, 0x4F, 0x8A, 0x00, 0x97, 0x00, 0x7B, 0x00, 0xDC, 0x00, 0xAE, 0x00, 0xC2, 0x00, 0x5E, 0x4F
- .byte 0x38, 0x00, 0x26, 0x00, 0x25, 0x00, 0xF6, 0x00, 0x60, 0x4F, 0x26, 0x00, 0x25, 0x00, 0xCF, 0x00
- .byte 0xAD, 0x00, 0xD6, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x41, 0x01, 0x6F, 0x00, 0x22, 0x00, 0x62, 0x4F
- .byte 0x50, 0x01, 0xB8, 0x00, 0x22, 0x00, 0xCD, 0x00, 0x6F, 0x00, 0x17, 0x00, 0x19, 0x01, 0xF6, 0x00
- .byte 0xAA, 0x01, 0x01, 0x01, 0x64, 0x4F, 0x1C, 0x01, 0xCB, 0x00, 0xD6, 0x00, 0x19, 0x01, 0x59, 0x00
- .byte 0x5A, 0x00, 0x65, 0x4F, 0xF8, 0x00, 0x46, 0x01, 0xA4, 0x00, 0x0F, 0x01, 0xAC, 0x01, 0x85, 0x00
- .byte 0xF3, 0x00, 0x67, 0x4F, 0xE3, 0x00, 0x9D, 0x00, 0x12, 0x01, 0x32, 0x00, 0xE2, 0x00, 0x11, 0x01
- .byte 0x0F, 0x01, 0x09, 0x01, 0xFC, 0x00, 0x10, 0x01, 0xAB, 0x01, 0x68, 0x4F, 0x74, 0x00, 0x62, 0x00
- .byte 0x10, 0x00, 0xAF, 0x00, 0xD2, 0x00, 0x6B, 0x4F, 0x40, 0x01, 0x33, 0x00, 0x2A, 0x01, 0xDF, 0x00
- .byte 0x44, 0x00, 0x43, 0x00, 0x09, 0x01, 0x59, 0x01, 0x92, 0x01, 0x6D, 0x4F, 0x61, 0x00, 0x72, 0x00
- .byte 0xE4, 0x00, 0x63, 0x00, 0x29, 0x01, 0x97, 0x01, 0x6F, 0x4F, 0xAF, 0x00, 0x18, 0x00, 0x0D, 0x00
- .byte 0x44, 0x00, 0x2E, 0x00, 0xAE, 0x00, 0x9A, 0x00, 0x90, 0x01, 0xE8, 0x00, 0xCA, 0x01, 0x70, 0x4F
- .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x22, 0x00, 0xB8, 0x00, 0x74, 0x01, 0x90, 0x01, 0x73, 0x4F
- .byte 0x25, 0x00, 0xFA, 0x00, 0xD1, 0x00, 0x38, 0x00, 0xAF, 0x00, 0x24, 0x00, 0x75, 0x4F, 0x2C, 0x01
- .byte 0x1B, 0x01, 0x22, 0x00, 0xF6, 0x00, 0x1A, 0x01, 0x14, 0x01, 0xE8, 0x00, 0x79, 0x4F, 0x70, 0x00
- .byte 0x69, 0x00, 0xF3, 0x00, 0x9D, 0x00, 0x7A, 0x01, 0x41, 0x01, 0x7B, 0x4F, 0xE5, 0x00, 0x1A, 0x01
- .byte 0x0E, 0x00, 0x9D, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xB8, 0x01, 0x7D, 0x4F, 0xF3, 0x00, 0xE1, 0x00
- .byte 0x2C, 0x01, 0x5F, 0x00, 0x71, 0x00, 0x6D, 0x00, 0x36, 0x00, 0x72, 0x00, 0x41, 0x01, 0x7F, 0x4F
- .byte 0xF8, 0x00, 0xF4, 0x00, 0x7D, 0x01, 0x32, 0x00, 0x85, 0x00, 0xD2, 0x01, 0x80, 0x4F, 0x32, 0x00
- .byte 0x15, 0x01, 0x0F, 0x01, 0xFC, 0x00, 0xA1, 0x01, 0x92, 0x00, 0x81, 0x4F, 0x32, 0x00, 0xC2, 0x00
- .byte 0xC1, 0x00, 0x36, 0x01, 0x1E, 0x01, 0xE4, 0x00, 0xA9, 0x01, 0x73, 0x01, 0x6D, 0x00, 0x83, 0x4F
- .byte 0x1E, 0x01, 0xC2, 0x00, 0xDC, 0x00, 0x20, 0x01, 0x06, 0x01, 0xB9, 0x00, 0xD2, 0x01, 0x85, 0x4F
- .byte 0x1D, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x49, 0x00, 0x0B, 0x01, 0xB5, 0x01, 0xEB, 0x00, 0xAE, 0x00
- .byte 0x5C, 0x01, 0x86, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00, 0x11, 0x01, 0xF8, 0x00
- .byte 0x87, 0x4F, 0xE2, 0x00, 0xB9, 0x00, 0x26, 0x00, 0x15, 0x01, 0xAE, 0x00, 0xA4, 0x00, 0xD4, 0x00
- .byte 0xAC, 0x01, 0x82, 0x01, 0x85, 0x01, 0x74, 0x01, 0x7E, 0x01, 0x89, 0x4F, 0x4F, 0x01, 0xBF, 0x00
- .byte 0xCD, 0x00, 0x32, 0x00, 0x75, 0x00, 0x8B, 0x4F, 0x5A, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00
- .byte 0x19, 0x01, 0x9D, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0x44, 0x01, 0x8E, 0x4F, 0x1F, 0x01, 0x2C, 0x01
- .byte 0x22, 0x00, 0x30, 0x00, 0x70, 0x00, 0x6D, 0x00, 0x88, 0x01, 0x91, 0x4F, 0xDE, 0x00, 0x82, 0x00
- .byte 0x5A, 0x01, 0x85, 0x00, 0xD6, 0x00, 0x9D, 0x00, 0x91, 0x01, 0xAD, 0x00, 0xBD, 0x00, 0x92, 0x4F
- .byte 0x96, 0x00, 0x30, 0x00, 0x5A, 0x01, 0x2C, 0x01, 0xBD, 0x01, 0x88, 0x01, 0x93, 0x4F, 0x38, 0x00
- .byte 0x25, 0x00, 0x52, 0x00, 0xEF, 0x00, 0x5D, 0x01, 0xA8, 0x01, 0xA5, 0x01, 0x97, 0x01, 0xA3, 0x4F
- .byte 0x84, 0x01, 0x4A, 0x00, 0x41, 0x01, 0x22, 0x00, 0x26, 0x00, 0x48, 0x01, 0x92, 0x01, 0x25, 0x00
- .byte 0x85, 0x00, 0x14, 0x01, 0xA6, 0x4F, 0x07, 0x00, 0x09, 0x00, 0x18, 0x00, 0xE3, 0x00, 0x01, 0x01
- .byte 0x74, 0x00, 0x0E, 0x01, 0xFC, 0x00, 0x2B, 0x01, 0x44, 0x00, 0xA9, 0x4F, 0xCA, 0x01, 0x30, 0x00
- .byte 0x19, 0x01, 0x2C, 0x01, 0xBD, 0x00, 0xAD, 0x00, 0xAF, 0x00, 0x61, 0x00, 0x88, 0x01, 0x38, 0x00
- .byte 0xAC, 0x4F, 0x29, 0x01, 0x1F, 0x00, 0xE4, 0x00, 0x36, 0x01, 0x1C, 0x00, 0xC1, 0x00, 0x26, 0x00
- .byte 0xAF, 0x4F, 0x62, 0x00, 0x5A, 0x01, 0x26, 0x00, 0x9A, 0x00, 0x6F, 0x00, 0xCD, 0x00, 0x3C, 0x01
- .byte 0x91, 0x01, 0xB3, 0x4F, 0xA7, 0x01, 0xA8, 0x01, 0xA6, 0x01, 0x62, 0x00, 0x50, 0x01, 0x24, 0x00
- .byte 0xB6, 0x4F, 0xBF, 0x00, 0xEB, 0x00, 0x2A, 0x00, 0xB2, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0xAA, 0x00
- .byte 0xB5, 0x01, 0x46, 0x01, 0xB8, 0x4F, 0xF2, 0x00, 0x25, 0x00, 0x26, 0x00, 0x2B, 0x00, 0x15, 0x00
- .byte 0x17, 0x00, 0x12, 0x00, 0x67, 0x01, 0xBA, 0x4F, 0x1D, 0x00, 0xB8, 0x00, 0x74, 0x00, 0x26, 0x00
- .byte 0x5E, 0x01, 0x22, 0x00, 0x67, 0x00, 0xAE, 0x00, 0x5A, 0x00, 0xC1, 0x4F, 0x57, 0x01, 0x2C, 0x00
- .byte 0x39, 0x01, 0x6F, 0x00, 0xCD, 0x00, 0x04, 0x01, 0xAF, 0x00, 0xC2, 0x4F, 0xBD, 0x00, 0x1D, 0x00
- .byte 0x9A, 0x00, 0xA3, 0x00, 0x3C, 0x01, 0x03, 0x00, 0xD2, 0x00, 0xE2, 0x00, 0xC4, 0x4F, 0x4B, 0x00
- .byte 0xE6, 0x00, 0x41, 0x01, 0x0B, 0x01, 0x40, 0x01, 0x38, 0x01, 0xC6, 0x4F, 0x44, 0x00, 0xF3, 0x00
- .byte 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x19, 0x01, 0x06, 0x01, 0xAE, 0x00, 0x85, 0x00, 0x5A, 0x00
- .byte 0xC9, 0x4F, 0x06, 0x01, 0x22, 0x00, 0xC2, 0x00, 0x32, 0x00, 0x72, 0x00, 0x5F, 0x00, 0xCB, 0x4F
- .byte 0x39, 0x01, 0xFC, 0x00, 0xE3, 0x00, 0xBA, 0x00, 0xCA, 0x01, 0xD5, 0x00, 0x43, 0x00, 0x47, 0x01
- .byte 0x9F, 0x01, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0xCF, 0x4F, 0x2C, 0x00, 0x27, 0x00, 0x62, 0x00
- .byte 0x1C, 0x00, 0x39, 0x01, 0x74, 0x01, 0xD1, 0x4F, 0x32, 0x00, 0xAE, 0x00, 0x5F, 0x00, 0x8A, 0x00
- .byte 0x11, 0x01, 0xF8, 0x00, 0x69, 0x00, 0xD2, 0x4F, 0xE4, 0x00, 0x2B, 0x00, 0x7B, 0x00, 0x26, 0x00
- .byte 0xF2, 0x00, 0xB8, 0x00, 0x36, 0x01, 0x82, 0x01, 0xD6, 0x4F, 0x78, 0x00, 0x1D, 0x00, 0x6A, 0x00
- .byte 0x6F, 0x00, 0xCD, 0x00, 0x48, 0x01, 0xD7, 0x4F, 0xF8, 0x00, 0x5F, 0x00, 0x66, 0x00, 0xF4, 0x00
- .byte 0xFC, 0x00, 0x0F, 0x01, 0x6D, 0x00, 0x66, 0x01, 0x2A, 0x01, 0x69, 0x01, 0xCC, 0x00, 0xD8, 0x4F
- .byte 0xD9, 0x00, 0x76, 0x00, 0xD7, 0x00, 0x38, 0x01, 0xA4, 0x00, 0x44, 0x00, 0x0E, 0x01, 0x64, 0x01
- .byte 0x83, 0x01, 0xD9, 0x4F, 0xE3, 0x00, 0x65, 0x00, 0x61, 0x00, 0xA1, 0x01, 0x30, 0x00, 0xDA, 0x4F
- .byte 0xC2, 0x00, 0xDC, 0x00, 0x6C, 0x00, 0x1E, 0x01, 0x20, 0x01, 0xA9, 0x01, 0xDB, 0x4F, 0xE1, 0x00
- .byte 0xC8, 0x00, 0xEF, 0x00, 0xB8, 0x00, 0x26, 0x00, 0x25, 0x00, 0xE8, 0x00, 0x48, 0x01, 0x22, 0x00
- .byte 0xBA, 0x01, 0xDE, 0x4F, 0x7A, 0x00, 0xCC, 0x00, 0x26, 0x00, 0xAE, 0x00, 0xA4, 0x00, 0x12, 0x00
- .byte 0xE4, 0x00, 0xAC, 0x01, 0xDF, 0x4F, 0xEE, 0x00, 0xC5, 0x00, 0x2C, 0x00, 0xAA, 0x00, 0x47, 0x01
- .byte 0x88, 0x00, 0x61, 0x00, 0x9A, 0x01, 0xF2, 0x00, 0x43, 0x00, 0x4E, 0x01, 0x2B, 0x01, 0xA2, 0x01
- .byte 0xE1, 0x4F, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0xAE, 0x00, 0x2F, 0x01, 0x22, 0x00, 0x48, 0x01
- .byte 0xE3, 0x4F, 0xB9, 0x00, 0x67, 0x00, 0x1C, 0x00, 0xA3, 0x00, 0x6D, 0x00, 0x12, 0x00, 0x61, 0x00
- .byte 0xE4, 0x00, 0x90, 0x01, 0xE5, 0x4F, 0x7E, 0x01, 0x6C, 0x01, 0xDF, 0x00, 0x1D, 0x00, 0x9A, 0x01
- .byte 0x60, 0x00, 0xFC, 0x00, 0x66, 0x01, 0x09, 0x01, 0xEE, 0x00, 0xA2, 0x01, 0xE7, 0x4F, 0x4F, 0x00
- .byte 0x4E, 0x00, 0x4B, 0x00, 0x15, 0x00, 0xEB, 0x00, 0x59, 0x01, 0x49, 0x00, 0x84, 0x01, 0xE8, 0x4F
- .byte 0xBA, 0x00, 0xCC, 0x00, 0xAF, 0x00, 0x91, 0x01, 0x96, 0x00, 0x3C, 0x00, 0x41, 0x01, 0x61, 0x00
- .byte 0xEA, 0x4F, 0xEF, 0x00, 0x38, 0x00, 0x72, 0x00, 0x15, 0x00, 0x2C, 0x01, 0x9D, 0x00, 0xF3, 0x00
- .byte 0x5A, 0x01, 0x96, 0x00, 0x44, 0x01, 0xEB, 0x4F, 0x49, 0x00, 0x59, 0x01, 0x92, 0x01, 0x4A, 0x00
- .byte 0x26, 0x00, 0x36, 0x00, 0x17, 0x00, 0xFF, 0xFF
-
- .global UNK05_021F8A34
-UNK05_021F8A34: ; 0x021F8A34
- .word 0x00000024, MOD05_021EDA98, MOD05_021EDAE8, MOD05_021EDAF4
- .word MOD05_021EDB10
-
- .global UNK05_021F8A48
-UNK05_021F8A48: ; 0x021F8A48
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8A60
-UNK05_021F8A60: ; 0x021F8A60
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
-
- .global UNK05_021F8A6C
-UNK05_021F8A6C: ; 0x021F8A6C
- .word 0x00000030, MOD05_021EDC14, MOD05_021EDC4C, MOD05_021EDC50
- .word MOD05_021EDCFC
-
- .global UNK05_021F8A80
-UNK05_021F8A80: ; 0x021F8A80
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
-
- .global UNK05_021F8AA4
-UNK05_021F8AA4: ; 0x021F8AA4
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021F8B04
-UNK05_021F8B04: ; 0x021F8B04
- .word MOD05_021EF16C, MOD05_021EE114
-
- .global UNK05_021F8B0C
-UNK05_021F8B0C: ; 0x021F8B0C
- .word MOD05_021EF1FC, MOD05_021EE1E4
-
- .global UNK05_021F8B14
-UNK05_021F8B14: ; 0x021F8B14
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00
-
- .global UNK05_021F8B20
-UNK05_021F8B20: ; 0x021F8B20
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
-
- .global UNK05_021F8B44
-UNK05_021F8B44: ; 0x021F8B44
- .byte 0x03, 0x19, 0x0D, 0x06, 0x04, 0x0D, 0x15, 0x03
-
- .global UNK05_021F8B4C
-UNK05_021F8B4C: ; 0x021F8B4C
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x20, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x10, 0x2F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021F8B6C
-UNK05_021F8B6C: ; 0x021F8B6C
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF
-
- .global UNK05_021F8B78
-UNK05_021F8B78: ; 0x021F8B78
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021F8B84
-UNK05_021F8B84: ; 0x021F8B84
- .byte 0x07, 0x00, 0x00, 0x00
-
- .global UNK05_021F8B88
-UNK05_021F8B88: ; 0x021F8B88
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0xFF, 0xFF, 0x00, 0x00
-
- .global UNK05_021F8B90
-UNK05_021F8B90: ; 0x021F8B90
- .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0xFF, 0xFF, 0x00, 0x00
-
- .global UNK05_021F8BA0
-UNK05_021F8BA0: ; 0x021F8BA0
- .word MOD05_021F0CF0, MOD05_021F18A4, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8BB4
-UNK05_021F8BB4: ; 0x021F8BB4
- .word MOD05_021F0CF0, MOD05_021F17A0, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8BC8
-UNK05_021F8BC8: ; 0x021F8BC8
- .word MOD05_021F0CF0, MOD05_021F0DB4, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8BDC
-UNK05_021F8BDC: ; 0x021F8BDC
- .word MOD05_021F1B0C, MOD05_021F1B2C, MOD05_021F1B58, MOD05_021F1B60
- .word MOD05_021F1B8C
-
- .global UNK05_021F8BF0
-UNK05_021F8BF0: ; 0x021F8BF0
- .word MOD05_021F19FC, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
- .word MOD05_021F1A98
-
- .global UNK05_021F8C04
-UNK05_021F8C04: ; 0x021F8C04
- .word MOD05_021F0ADC, MOD05_021F0B9C, MOD05_021F0B18, MOD05_021F0B2C
- .word MOD05_021F0B58
-
- .global UNK05_021F8C18
-UNK05_021F8C18: ; 0x021F8C18
- .word MOD05_021F0CF0, MOD05_021F1234, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8C2C
-UNK05_021F8C2C: ; 0x021F8C2C
- .word MOD05_021F0CF0, MOD05_021F16D4, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8C40
-UNK05_021F8C40: ; 0x021F8C40
- .word MOD05_021F05C4, MOD05_021F071C, MOD05_021F05F0, MOD05_021F0604
- .word MOD05_021F0634
-
- .global UNK05_021F8C54
-UNK05_021F8C54: ; 0x021F8C54
- .word FUN_0205C3B0, FUN_0205C3D0, FUN_0205C490, FUN_0205C4A8
- .word FUN_0205C4D8
-
- .global UNK05_021F8C68
-UNK05_021F8C68: ; 0x021F8C68
- .word MOD05_021F05C4, MOD05_021F067C, MOD05_021F05F0, MOD05_021F0604
- .word MOD05_021F0634
-
- .global UNK05_021F8C7C
-UNK05_021F8C7C: ; 0x021F8C7C
- .word MOD05_021F1A14, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
- .word MOD05_021F1AB8
-
- .global UNK05_021F8C90
-UNK05_021F8C90: ; 0x021F8C90
- .word MOD05_021F19E4, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
- .word MOD05_021F1A78
-
- .global UNK05_021F8CA4
-UNK05_021F8CA4: ; 0x021F8CA4
- .word MOD05_021F0CF0, MOD05_021F1838, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8CB8
-UNK05_021F8CB8: ; 0x021F8CB8
- .word MOD05_021F05C4, MOD05_021F0A04, MOD05_021F05F0, MOD05_021F0604
- .word MOD05_021F0634
-
- .global UNK05_021F8CCC
-UNK05_021F8CCC: ; 0x021F8CCC
- .word MOD05_021F05C4, MOD05_021F06F0, MOD05_021F05F0, MOD05_021F0604
- .word MOD05_021F0634
-
- .global UNK05_021F8CE0
-UNK05_021F8CE0: ; 0x021F8CE0
- .word MOD05_021F05C4, MOD05_021F0C28, MOD05_021F05F0, MOD05_021F0604
- .word MOD05_021F0634
-
- .global UNK05_021F8CF4
-UNK05_021F8CF4: ; 0x021F8CF4
- .word MOD05_021F0CF0, MOD05_021F1440, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8D08
-UNK05_021F8D08: ; 0x021F8D08
- .word MOD05_021F1A2C, MOD05_021F1A44, MOD05_021F1A48, MOD05_021F1A60
- .word MOD05_021F1AD8
-
- .global UNK05_021F8D1C
-UNK05_021F8D1C: ; 0x021F8D1C
- .word MOD05_021F1BD0, MOD05_021F1BF4, MOD05_021F1C14, MOD05_021F1B60
- .word MOD05_021F1B8C
-
- .global UNK05_021F8D30
-UNK05_021F8D30: ; 0x021F8D30
- .word MOD05_021F0CF0, MOD05_021F1738, MOD05_021F0D18, MOD05_021F0D44
- .word MOD05_021F0D70
-
- .global UNK05_021F8D44
-UNK05_021F8D44: ; 0x021F8D44
- .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8D5C
-UNK05_021F8D5C: ; 0x021F8D5C
- .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8D74
-UNK05_021F8D74: ; 0x021F8D74
- .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8D8C
-UNK05_021F8D8C: ; 0x021F8D8C
- .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8DA4
-UNK05_021F8DA4: ; 0x021F8DA4
- .byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8DBC
-UNK05_021F8DBC: ; 0x021F8DBC
- .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8DD4
-UNK05_021F8DD4: ; 0x021F8DD4
- .byte 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8DEC
-UNK05_021F8DEC: ; 0x021F8DEC
- .byte 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8E10
-UNK05_021F8E10: ; 0x021F8E10
- .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8E34
-UNK05_021F8E34: ; 0x021F8E34
- .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8E58
-UNK05_021F8E58: ; 0x021F8E58
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8E94
-UNK05_021F8E94: ; 0x021F8E94
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
- .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8ED0
-UNK05_021F8ED0: ; 0x021F8ED0
- .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x0C, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00
- .byte 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8F0C
-UNK05_021F8F0C: ; 0x021F8F0C
- .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
- .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8F48
-UNK05_021F8F48: ; 0x021F8F48
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00
- .byte 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8F90
-UNK05_021F8F90: ; 0x021F8F90
- .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
- .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x50, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
- .byte 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F8FFC
-UNK05_021F8FFC: ; 0x021F8FFC
- .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
- .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00
- .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x58, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00
- .byte 0x5F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00
-
- .global UNK05_021F9080
-UNK05_021F9080: ; 0x021F9080
- .word MOD05_021F1EDC
- .word MOD05_021F1EF4
- .word MOD05_021F1EF8
- .word MOD05_021F1EFC
- .word MOD05_021F1F00
-
- .global UNK05_021F9094
-UNK05_021F9094: ; 0x021F9094
- .word 0x00000000
- .byte 0x78, 0x01, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7A, 0x01, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00
- .byte 0x05, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00
- .byte 0x07, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00
- .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021F90E4
-UNK05_021F90E4: ; 0x021F90E4
- .byte 0x00, 0x00, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00, 0x8C, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8D, 0x01, 0x00, 0x00
- .byte 0x05, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00
- .byte 0x07, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00
- .byte 0x09, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00
- .byte 0x0B, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00
- .byte 0x0D, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00
- .byte 0x0F, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00
- .byte 0x11, 0x00, 0x00, 0x00, 0x9A, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x9B, 0x01, 0x00, 0x00
- .byte 0x13, 0x00, 0x00, 0x00, 0x9C, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x9D, 0x01, 0x00, 0x00
- .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021F9194
-UNK05_021F9194: ; 0x021F9194
- .word 0x00001001
- .word 0x00001002
- .word 0x00001003
- .word 0x00001004
- .word 0x00001005
- .word 0x00001006
- .word 0x00001007
- .word 0x00001008
- .word 0x00001009
- .word 0x0000100A
- .word 0x0000100B
- .word 0x0000100C
- .word 0x0000100D
- .word 0x0000100E
- .word 0x0000100F
- .word 0x00001010
- .word 0x00001011
- .word 0x00001012
- .word 0x00001013
- .word 0x00001014
- .word 0x00001015
- .word 0x00001016
- .word 0x00001017
- .word 0x00001018
- .word 0x00001019
- .word 0x0000101A
- .word 0x0000101B
- .word 0x0000101C
- .word 0x0000101D
- .word 0x0000101E
- .word 0x0000101F
- .word 0x00001020
- .word 0x00001021
- .word 0x00001022
- .word 0x00001023
- .word 0x00001024
- .word 0x00001025
- .word 0x00001026
- .word 0x00001027
- .word 0x00001028
- .word 0x00001029
- .word 0x0000102A
- .word 0x0000102B
- .word 0x0000102C
- .word 0x0000102D
- .word 0x0000102E
- .word 0x0000102F
- .word 0x00001030
- .word 0x00001031
- .word 0x00001032
- .word 0x00001033
- .word 0x00001034
- .word 0x00001035
- .word 0x00001036
- .word 0x00001037
- .word 0x00001038
- .word 0x00001039
- .word 0x0000103A
- .word 0x0000103B
- .word 0x0000103C
- .word 0x0000103D
- .word 0x0000103E
- .word 0x0000103F
- .word 0x00001040
- .word 0x00001041
- .word 0x00001042
- .word 0x00001043
- .word 0x00001044
- .word 0x00001045
- .word 0x00001046
- .word 0x00001047
- .word 0x00001048
- .word 0x00001049
- .word 0x0000104A
- .word 0x0000104B
- .word 0x0000104C
- .word 0x0000104D
- .word 0x0000104E
- .word 0x0000104F
- .word 0x00001050
- .word 0x00001051
- .word 0x00001052
- .word 0x00001053
- .word 0x00001054
- .word 0x00001055
- .word 0x00001056
- .word 0x00001057
- .word 0x00001058
- .word 0x00001059
- .word 0x0000105A
- .word 0x0000105B
- .word 0x0000105C
- .word 0x0000105D
- .word 0x0000105E
- .word 0x0000105F
- .word 0x00001060
- .word 0x00001061
- .word 0x00001062
- .word 0x00001063
- .word 0x00001064
- .word 0x00001065
- .word 0x00001066
- .word 0x00001067
- .word 0x00001068
- .word 0x00001069
- .word 0x0000106A
- .word 0x0000106B
- .word 0x0000106C
- .word 0x0000106D
- .word 0x0000106E
- .word 0x0000106F
- .word 0x00001070
- .word 0x00001071
- .word 0x00001072
- .word 0x00001073
- .word 0x00001074
- .word 0x00001075
- .word 0x00001076
- .word 0x00001077
- .word 0x00001078
- .word 0x00001079
- .word 0x0000107A
- .word 0x0000107B
- .word 0x0000107C
- .word 0x0000107D
- .word 0x0000107E
- .word 0x0000107F
- .word 0x00001080
- .word 0x00001081
- .word 0x00001082
- .word 0x00001083
- .word 0x00001084
- .word 0x00001085
- .word 0x00001086
- .word 0x00001087
- .word 0x00001088
- .word 0x00001089
- .word 0x0000108A
- .word 0x0000108B
- .word 0x0000108C
- .word 0x0000108D
- .word 0x0000108E
- .word 0x0000108F
- .word 0x00001090
- .word 0x00001091
- .word 0x00001092
- .word 0x00001093
- .word 0x00001094
- .word 0x00001095
- .word 0x00001096
- .word 0x00001097
- .word 0x00001098
- .word 0x00001099
- .word 0x0000109A
- .word 0x0000109B
- .word 0x0000109C
- .word 0x0000109D
- .word 0x0000109E
- .word 0x0000109F
- .word 0x000010A0
- .word 0x000010A1
- .word 0x000010A2
- .word 0x000010A3
- .word 0x000010A4
- .word 0x000010A5
- .word 0x000010A6
- .word 0x000010A7
- .word 0x000010A8
- .word 0x000010A9
- .word 0x000010AA
- .word 0x000010AB
- .word 0x000010AC
- .word 0x000010AD
- .word 0x000010AE
- .word 0x000010AF
- .word 0x000010B0
- .word 0x000010B1
- .word 0x000010B2
- .word 0x000010B3
- .word 0x000010B4
- .word 0x000010B5
- .word 0x000010B6
- .word 0x000010B7
- .word 0x000010B8
- .word 0x000010B9
- .word 0x000010BA
- .word 0x000010BB
- .word 0x000010BC
- .word 0x000010BD
- .word 0x000010BE
- .word 0x000010BF
- .word 0x000010C0
-
- .global UNK05_021F9494
-UNK05_021F9494: ; 0x021F9494
- .word 0x00, UNK05_021F8BC8
- .word 0x01, UNK05_021F8C68
- .word 0x02, UNK05_021F8C68
- .word 0x03, UNK05_021F8C68
- .word 0x04, UNK05_021F8C68
- .word 0x05, UNK05_021F8C68
- .word 0x06, UNK05_021F8C68
- .word 0x07, UNK05_021F8C68
- .word 0x08, UNK05_021F8C68
- .word 0x09, UNK05_021F8C68
- .word 0x0A, UNK05_021F8C68
- .word 0x0B, UNK05_021F8C68
- .word 0x0C, UNK05_021F8C68
- .word 0x0D, UNK05_021F8C68
- .word 0x0E, UNK05_021F8C68
- .word 0x0F, UNK05_021F8C68
- .word 0x10, UNK05_021F8C68
- .word 0x11, UNK05_021F8C68
- .word 0x12, UNK05_021F8C68
- .word 0x13, UNK05_021F8C68
- .word 0x14, UNK05_021F8C68
- .word 0x15, UNK05_021F8C18
- .word 0x16, UNK05_021F8C68
- .word 0x17, UNK05_021F8C68
- .word 0x18, UNK05_021F8C68
- .word 0x19, UNK05_021F8C68
- .word 0x1A, UNK05_021F8CB8
- .word 0x1B, UNK05_021F8C68
- .word 0x1C, UNK05_021F8C68
- .word 0x1D, UNK05_021F8C68
- .word 0x1E, UNK05_021F8C68
- .word 0x1F, UNK05_021F8C68
- .word 0x20, UNK05_021F8C68
- .word 0x21, UNK05_021F8C68
- .word 0x22, UNK05_021F8C68
- .word 0x23, UNK05_021F8C68
- .word 0x24, UNK05_021F8C68
- .word 0x25, UNK05_021F8C68
- .word 0x26, UNK05_021F8C68
- .word 0x27, UNK05_021F8C68
- .word 0x28, UNK05_021F8C68
- .word 0x29, UNK05_021F8C68
- .word 0x2A, UNK05_021F8C68
- .word 0x2B, UNK05_021F8C68
- .word 0x2C, UNK05_021F8C68
- .word 0x2D, UNK05_021F8C68
- .word 0x2E, UNK05_021F8C68
- .word 0x2F, UNK05_021F8C68
- .word 0x30, UNK05_021F8C68
- .word 0x31, UNK05_021F8C68
- .word 0x32, UNK05_021F8C68
- .word 0x33, UNK05_021F8C68
- .word 0x34, UNK05_021F8C68
- .word 0x35, UNK05_021F8C68
- .word 0x36, UNK05_021F8C68
- .word 0x37, UNK05_021F8C68
- .word 0x38, UNK05_021F8C68
- .word 0x39, UNK05_021F8C68
- .word 0x3A, UNK05_021F8C68
- .word 0x3B, UNK05_021F8C68
- .word 0x3C, UNK05_021F8C68
- .word 0x3D, UNK05_021F8C68
- .word 0x3E, UNK05_021F8C68
- .word 0x3F, UNK05_021F8C68
- .word 0x40, UNK05_021F8C68
- .word 0x41, UNK05_021F8C68
- .word 0x42, UNK05_021F8C68
- .word 0x43, UNK05_021F8C68
- .word 0x44, UNK05_021F8C68
- .word 0x45, UNK05_021F8C68
- .word 0x46, UNK05_021F8C68
- .word 0x47, UNK05_021F8C68
- .word 0x48, UNK05_021F8C68
- .word 0x49, UNK05_021F8C68
- .word 0x4A, UNK05_021F8C68
- .word 0x4B, UNK05_021F8C68
- .word 0x4C, UNK05_021F8C68
- .word 0x4D, UNK05_021F8C68
- .word 0x4E, UNK05_021F8C68
- .word 0x4F, UNK05_021F8C68
- .word 0x50, UNK05_021F8C68
- .word 0x51, UNK05_021F8C68
- .word 0x52, UNK05_021F8C68
- .word 0x53, UNK05_021F8C68
- .word 0x54, UNK05_021F8CCC
- .word 0x55, UNK05_021F8CCC
- .word 0x56, UNK05_021F8CCC
- .word 0x57, UNK05_021F8CCC
- .word 0x58, UNK05_021F8C68
- .word 0x59, UNK05_021F8C68
- .word 0x5A, UNK05_021F8C68
- .word 0x5B, UNK05_021F8C90
- .word 0x5C, UNK05_021F8C90
- .word 0x5D, UNK05_021F8C90
- .word 0x5E, UNK05_021F8C90
- .word 0x5F, UNK05_021F8C90
- .word 0x60, UNK05_021F8C90
- .word 0x61, UNK05_021F8BC8
- .word 0x62, UNK05_021F8C18
- .word 0x63, UNK05_021F8C68
- .word 0x64, UNK05_021F8C54
- .word 0x76, UNK05_021F8BF0
- .word 0x78, UNK05_021F8C68
- .word 0x79, UNK05_021F8C68
- .word 0x7A, UNK05_021F8C68
- .word 0x7B, UNK05_021F8C68
- .word 0x7C, UNK05_021F8C68
- .word 0x7D, UNK05_021F8C68
- .word 0x7E, UNK05_021F8C68
- .word 0x7F, UNK05_021F8C68
- .word 0x80, UNK05_021F8C68
- .word 0x81, UNK05_021F8C68
- .word 0x82, UNK05_021F8C68
- .word 0x83, UNK05_021F8C68
- .word 0x84, UNK05_021F8C68
- .word 0x85, UNK05_021F8C68
- .word 0x86, UNK05_021F8C68
- .word 0x87, UNK05_021F8C68
- .word 0x88, UNK05_021F8C68
- .word 0x89, UNK05_021F8C68
- .word 0x8A, UNK05_021F8C68
- .word 0x8B, UNK05_021F8C68
- .word 0x8C, UNK05_021F8C68
- .word 0x8D, UNK05_021F8C68
- .word 0x8E, UNK05_021F8C68
- .word 0x8F, UNK05_021F8C68
- .word 0x90, UNK05_021F8C68
- .word 0x91, UNK05_021F8C68
- .word 0x92, UNK05_021F8C68
- .word 0x93, UNK05_021F8C68
- .word 0x94, UNK05_021F8C68
- .word 0x95, UNK05_021F8C68
- .word 0x96, UNK05_021F8C68
- .word 0x97, UNK05_021F8D1C
- .word 0x98, UNK05_021F8D1C
- .word 0x99, UNK05_021F8D1C
- .word 0x9A, UNK05_021F8BDC
- .word 0x9B, UNK05_021F8BDC
- .word 0x9C, UNK05_021F8C40
- .word 0x9D, UNK05_021F8C40
- .word 0x9E, UNK05_021F8C68
- .word 0x9F, UNK05_021F8C40
- .word 0xA0, UNK05_021F8C40
- .word 0xA1, UNK05_021F8C40
- .word 0xA2, UNK05_021F8C68
- .word 0xA3, UNK05_021F8C68
- .word 0xA4, UNK05_021F8C68
- .word 0xA5, UNK05_021F8C68
- .word 0xA6, UNK05_021F8C68
- .word 0xA7, UNK05_021F8C68
- .word 0xA8, UNK05_021F8C68
- .word 0xA9, UNK05_021F8C68
- .word 0xAA, UNK05_021F8C68
- .word 0xAB, UNK05_021F8C68
- .word 0xAC, UNK05_021F8C68
- .word 0xAD, UNK05_021F8CE0
- .word 0xAE, UNK05_021F8C68
- .word 0xAF, UNK05_021F8C68
- .word 0xB0, UNK05_021F8D30
- .word 0xB1, UNK05_021F8D30
- .word 0xB4, UNK05_021F8BB4
- .word 0xB5, UNK05_021F8BB4
- .word 0xB2, UNK05_021F8C2C
- .word 0xB3, UNK05_021F8C2C
- .word 0xB6, UNK05_021F8CCC
- .word 0xB7, UNK05_021F8C7C
- .word 0xB8, UNK05_021F8CCC
- .word 0xB9, UNK05_021F8C68
- .word 0xBA, UNK05_021F8BC8
- .word 0xBB, UNK05_021F8BC8
- .word 0xBC, UNK05_021F8CF4
- .word 0xBD, UNK05_021F8CF4
- .word 0xBE, UNK05_021F8C68
- .word 0xBF, UNK05_021F8C68
- .word 0xC0, UNK05_021F8C68
- .word 0xC1, UNK05_021F8C68
- .word 0xC2, UNK05_021F8C68
- .word 0xC3, UNK05_021F8C04
- .word 0xC4, UNK05_021F8CA4
- .word 0xC5, UNK05_021F8CA4
- .word 0xC6, UNK05_021F8D30
- .word 0xC7, UNK05_021F8D30
- .word 0xC8, UNK05_021F8BA0
- .word 0xC9, UNK05_021F8BA0
- .word 0xCA, UNK05_021F8CCC
- .word 0xCB, UNK05_021F8CCC
- .word 0xCC, UNK05_021F8C68
- .word 0xCD, UNK05_021F8C68
- .word 0xCE, UNK05_021F8C68
- .word 0xCF, UNK05_021F8C68
- .word 0xD0, UNK05_021F8C68
- .word 0xD1, UNK05_021F8D08
-
-; 0x021F9A94
- .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .global UNK05_021F9A9C
-UNK05_021F9A9C: ; 0x021F9A9C
- .byte 0x00, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x0A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x0C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x0E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x10, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x12, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x14, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
- .byte 0x16, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x18, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x1A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x1C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x1E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x20, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x22, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x24, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x26, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
- .byte 0x28, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x2A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x2C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x2E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x30, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x32, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x34, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x36, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x38, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x3A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x3C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x3E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x40, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x42, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x44, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x46, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x48, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x4A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x4C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x4E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x50, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x52, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x54, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x56, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x58, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x5A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x5C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x5E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x62, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x64, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
- .byte 0x78, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x7A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x7C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x7E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x80, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x82, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x84, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x86, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x88, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x8A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x8C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x8E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x90, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x92, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x94, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x96, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x98, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x9A, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x9C, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x9E, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xA0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xA2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xA4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xA6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xA8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xAA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xAC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xAE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xB0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xB2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xB4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xB6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
- .byte 0xB8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xBA, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xBC, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xBE, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xC0, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xC2, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xC5, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xC7, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00
- .byte 0xC9, 0x00, 0x00, 0x00, 0x51, 0x04, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0xCB, 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
- .byte 0xCD, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
- .byte 0xCF, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x91, 0x04, 0x00, 0x00
- .byte 0xD1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FA0AC
-UNK05_021FA0AC: ; 0x021FA0AC
- .byte 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .byte 0x0A, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
- .byte 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
- .byte 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
- .byte 0x10, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
- .byte 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
- .byte 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00
- .byte 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00
- .byte 0x18, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00
- .byte 0x1A, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00
- .byte 0x1C, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00
- .byte 0x1E, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00
- .byte 0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
- .byte 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00
- .byte 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00
- .byte 0x26, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00
- .byte 0x28, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00
- .byte 0x2A, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00
- .byte 0x2C, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00
- .byte 0x2E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00
- .byte 0x30, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00
- .byte 0x32, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00
- .byte 0x34, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00
- .byte 0x36, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00
- .byte 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00
- .byte 0x3A, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00
- .byte 0x3C, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00
- .byte 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00
- .byte 0x40, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00
- .byte 0x42, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00
- .byte 0x44, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00
- .byte 0x46, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00
- .byte 0x48, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00
- .byte 0x4A, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00
- .byte 0x4C, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00
- .byte 0x4E, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00
- .byte 0x50, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00
- .byte 0x52, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00
- .byte 0x54, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00
- .byte 0x56, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00
- .byte 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00
- .byte 0x5A, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00
- .byte 0x62, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
- .byte 0x02, 0x10, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00
- .byte 0x78, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00
- .byte 0x7A, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00
- .byte 0x7C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00
- .byte 0x7E, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00
- .byte 0x80, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00
- .byte 0x82, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00
- .byte 0x84, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00
- .byte 0x86, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00
- .byte 0x88, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00
- .byte 0x8A, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00
- .byte 0x8C, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00
- .byte 0x8E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00
- .byte 0x90, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00
- .byte 0x92, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00
- .byte 0x94, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
- .byte 0x96, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00
- .byte 0x98, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00
- .byte 0x9A, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00
- .byte 0x9C, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00
- .byte 0x9E, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00
- .byte 0xA0, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00
- .byte 0xA2, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00
- .byte 0xA4, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00
- .byte 0xA6, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00
- .byte 0xA8, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00
- .byte 0xAA, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00
- .byte 0xAC, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00
- .byte 0xAE, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00
- .byte 0xB0, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00
- .byte 0xB4, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00
- .byte 0xB2, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00
- .byte 0xB6, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00
- .byte 0xB9, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00
- .byte 0xBB, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00
- .byte 0xBD, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00
- .byte 0xBF, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00
- .byte 0x04, 0x10, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00
- .byte 0x06, 0x10, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00
- .byte 0x08, 0x10, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x09, 0x10, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00
- .byte 0x0A, 0x10, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x0B, 0x10, 0x00, 0x00, 0xB2, 0x00, 0x00, 0x00
- .byte 0x0C, 0x10, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x0D, 0x10, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00
- .byte 0x0E, 0x10, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00
- .byte 0x10, 0x10, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00
- .byte 0x12, 0x10, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x13, 0x10, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00
- .byte 0x14, 0x10, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00
- .byte 0x16, 0x10, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x17, 0x10, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00
- .byte 0x18, 0x10, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x19, 0x10, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
- .byte 0x1A, 0x10, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x1B, 0x10, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00
- .byte 0x1C, 0x10, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x1D, 0x10, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00
- .byte 0x1E, 0x10, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00
- .byte 0x20, 0x10, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x21, 0x10, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00
- .byte 0x22, 0x10, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00
- .byte 0x24, 0x10, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x25, 0x10, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00
- .byte 0x26, 0x10, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00
- .byte 0x28, 0x10, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00
- .byte 0x2A, 0x10, 0x00, 0x00, 0xD1, 0x00, 0x00, 0x00, 0x2B, 0x10, 0x00, 0x00, 0xD2, 0x00, 0x00, 0x00
- .byte 0x2C, 0x10, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0x2D, 0x10, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00
- .byte 0x2E, 0x10, 0x00, 0x00, 0xD5, 0x00, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00
- .byte 0x30, 0x10, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00
- .byte 0x32, 0x10, 0x00, 0x00, 0xD9, 0x00, 0x00, 0x00, 0x33, 0x10, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00
- .byte 0x34, 0x10, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x35, 0x10, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00
- .byte 0x36, 0x10, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x37, 0x10, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00
- .byte 0x38, 0x10, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x39, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00
- .byte 0x3A, 0x10, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x3B, 0x10, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x00
- .byte 0x3C, 0x10, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0x3D, 0x10, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00
- .byte 0x3E, 0x10, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x3F, 0x10, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00
- .byte 0x40, 0x10, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00
- .byte 0x42, 0x10, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x43, 0x10, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00
- .byte 0x44, 0x10, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00
- .byte 0x46, 0x10, 0x00, 0x00, 0xED, 0x00, 0x00, 0x00, 0x47, 0x10, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00
- .byte 0x48, 0x10, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x49, 0x10, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00
- .byte 0x4A, 0x10, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x4B, 0x10, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00
- .byte 0x4C, 0x10, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x4D, 0x10, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00
- .byte 0x4E, 0x10, 0x00, 0x00, 0xF5, 0x00, 0x00, 0x00, 0x4F, 0x10, 0x00, 0x00, 0xF6, 0x00, 0x00, 0x00
- .byte 0x50, 0x10, 0x00, 0x00, 0xF7, 0x00, 0x00, 0x00, 0x51, 0x10, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00
- .byte 0x52, 0x10, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x53, 0x10, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00
- .byte 0x54, 0x10, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x55, 0x10, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00
- .byte 0x56, 0x10, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x57, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00
- .byte 0x58, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x59, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
- .byte 0x5A, 0x10, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x5B, 0x10, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00
- .byte 0x5C, 0x10, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x5D, 0x10, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00
- .byte 0x5E, 0x10, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x5F, 0x10, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00
- .byte 0x60, 0x10, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x61, 0x10, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00
- .byte 0x62, 0x10, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x63, 0x10, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00
- .byte 0x64, 0x10, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x00, 0x65, 0x10, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x00
- .byte 0x66, 0x10, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00, 0x67, 0x10, 0x00, 0x00, 0x0E, 0x01, 0x00, 0x00
- .byte 0x68, 0x10, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x00, 0x69, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00
- .byte 0x6A, 0x10, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x6B, 0x10, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00
- .byte 0x6C, 0x10, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x6D, 0x10, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00
- .byte 0x6E, 0x10, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x6F, 0x10, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00
- .byte 0x70, 0x10, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x71, 0x10, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00
- .byte 0x72, 0x10, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x73, 0x10, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00
- .byte 0x74, 0x10, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x75, 0x10, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00
- .byte 0x76, 0x10, 0x00, 0x00, 0x1D, 0x01, 0x00, 0x00, 0x77, 0x10, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x00
- .byte 0x78, 0x10, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x79, 0x10, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00
- .byte 0x7A, 0x10, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x7B, 0x10, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00
- .byte 0x7C, 0x10, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x7D, 0x10, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00
- .byte 0x7E, 0x10, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x7F, 0x10, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00
- .byte 0x80, 0x10, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x81, 0x10, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00
- .byte 0x82, 0x10, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x83, 0x10, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00
- .byte 0x84, 0x10, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x00, 0x85, 0x10, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00
- .byte 0x86, 0x10, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x87, 0x10, 0x00, 0x00, 0x2E, 0x01, 0x00, 0x00
- .byte 0x88, 0x10, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x89, 0x10, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00
- .byte 0x8A, 0x10, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x8B, 0x10, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00
- .byte 0x8C, 0x10, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x8D, 0x10, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00
- .byte 0x8E, 0x10, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x8F, 0x10, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00
- .byte 0x90, 0x10, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0x91, 0x10, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00
- .byte 0x92, 0x10, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x93, 0x10, 0x00, 0x00, 0x3A, 0x01, 0x00, 0x00
- .byte 0x94, 0x10, 0x00, 0x00, 0x3B, 0x01, 0x00, 0x00, 0x95, 0x10, 0x00, 0x00, 0x3C, 0x01, 0x00, 0x00
- .byte 0x96, 0x10, 0x00, 0x00, 0x3D, 0x01, 0x00, 0x00, 0x97, 0x10, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x00
- .byte 0x98, 0x10, 0x00, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x99, 0x10, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00
- .byte 0x9A, 0x10, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x9B, 0x10, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00
- .byte 0x9C, 0x10, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x9D, 0x10, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00
- .byte 0x9E, 0x10, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x9F, 0x10, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00
- .byte 0xA0, 0x10, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0xA1, 0x10, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00
- .byte 0xA2, 0x10, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0xA3, 0x10, 0x00, 0x00, 0x4A, 0x01, 0x00, 0x00
- .byte 0xA4, 0x10, 0x00, 0x00, 0x4B, 0x01, 0x00, 0x00, 0xA5, 0x10, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00
- .byte 0xA6, 0x10, 0x00, 0x00, 0x4D, 0x01, 0x00, 0x00, 0xA7, 0x10, 0x00, 0x00, 0x4E, 0x01, 0x00, 0x00
- .byte 0xA8, 0x10, 0x00, 0x00, 0x4F, 0x01, 0x00, 0x00, 0xA9, 0x10, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00
- .byte 0xAA, 0x10, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0xAB, 0x10, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00
- .byte 0xAC, 0x10, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0xAD, 0x10, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00
- .byte 0xAE, 0x10, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0xAF, 0x10, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00
- .byte 0xB0, 0x10, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0xB1, 0x10, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00
- .byte 0xB2, 0x10, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0xB3, 0x10, 0x00, 0x00, 0x5A, 0x01, 0x00, 0x00
- .byte 0xB4, 0x10, 0x00, 0x00, 0x5B, 0x01, 0x00, 0x00, 0xB5, 0x10, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00
- .byte 0xB6, 0x10, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0xB7, 0x10, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00
- .byte 0xB8, 0x10, 0x00, 0x00, 0x5F, 0x01, 0x00, 0x00, 0xB9, 0x10, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00
- .byte 0xBA, 0x10, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00, 0xBB, 0x10, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00
- .byte 0xBC, 0x10, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0xBD, 0x10, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00
- .byte 0xBE, 0x10, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0xBF, 0x10, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00
- .byte 0xC0, 0x10, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00
- .byte 0xC2, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00
- .byte 0xC4, 0x00, 0x00, 0x00, 0x6B, 0x01, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x00, 0x00
- .byte 0xC6, 0x00, 0x00, 0x00, 0x6D, 0x01, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00
- .byte 0xC8, 0x00, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00
- .byte 0xCA, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00
- .byte 0xCC, 0x00, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0xCD, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00
- .byte 0xCE, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00
- .byte 0xD0, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FAC6C
-UNK05_021FAC6C: ; 0x021FAC6C
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .word UNK05_021F8F90
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
- .word UNK05_021F8FFC
- .byte 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00
- .word UNK05_021F8F48
- .byte 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x55, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .word UNK05_021F8F90
- .byte 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
- .word UNK05_021F8FFC
- .byte 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x01, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x02, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x03, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .word UNK05_021F8D74
- .byte 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .word UNK05_021F8D74
- .byte 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .word UNK05_021F8D74
- .byte 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .word UNK05_021F8D44
- .byte 0x9B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .word UNK05_021F8D44
- .byte 0x9C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
- .word UNK05_021F8D5C
- .byte 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00
- .word UNK05_021F8D5C
- .byte 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
- .word UNK05_021F8D5C
- .byte 0xA0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00
- .word UNK05_021F8D5C
- .byte 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
- .word UNK05_021F8D5C
- .byte 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
- .word UNK05_021F8DEC
- .byte 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
- .word UNK05_021F8DA4
- .byte 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
- .word UNK05_021F8DA4
- .byte 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
- .word UNK05_021F8E94
- .byte 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
- .word UNK05_021F8E94
- .byte 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
- .word UNK05_021F8E10
- .byte 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
- .word UNK05_021F8E10
- .byte 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xB8, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
- .word UNK05_021F8F90
- .byte 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
- .word UNK05_021F8F90
- .byte 0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
- .word UNK05_021F8E58
- .byte 0xBD, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
- .word UNK05_021F8E58
- .byte 0xBE, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xBF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0x04, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x05, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x06, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x07, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x08, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x09, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x0A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x0B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x0C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x0D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x0E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x0F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x10, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x11, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x12, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x13, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x14, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x15, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x16, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x17, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x18, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x19, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x1A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x1B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x1C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x1D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x1E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x1F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x20, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x21, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x22, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x23, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x24, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x25, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x26, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x27, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x28, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x29, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x2A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x2B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x2C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x2D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x2E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x2F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x30, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x31, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x32, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x33, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x34, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x35, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x36, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x37, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x38, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x39, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x3A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x3B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x3C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x3D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x3E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x3F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x40, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x41, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x42, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x43, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x44, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x45, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x46, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x47, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x48, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x49, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x4A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x4B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x4C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x4D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x4E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x4F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x50, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x51, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x52, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x53, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x54, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x55, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x56, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x57, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x58, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x59, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x5A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x5B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x5C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x5D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x5E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x5F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x60, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x61, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x62, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x63, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x64, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x65, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x66, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x67, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x68, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x69, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x6A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x6B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x6C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x6D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x6E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x6F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x70, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x71, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x72, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x73, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x74, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x75, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x76, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x77, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x78, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x79, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x7A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x7B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x7C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x7D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x7E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x7F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x80, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x81, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x82, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x83, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x84, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x85, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x86, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x87, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x88, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x89, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x8A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x8B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x8C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x8D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x8E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x8F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x90, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x91, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x92, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x93, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x94, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x95, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x96, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x97, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x98, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x99, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x9A, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x9B, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x9C, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x9D, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x9E, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0x9F, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xA9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xAA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xAB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xAC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xAD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xAE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xAF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB1, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB2, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB3, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB4, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB5, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB6, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB7, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB8, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xB9, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xBA, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xBB, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xBC, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xBD, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xBE, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xBF, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xC0, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .word UNK05_021F8DD4
- .byte 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
- .word UNK05_021F8D8C
- .byte 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00
- .word UNK05_021F8ED0
- .byte 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00
- .word UNK05_021F8ED0
- .byte 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
- .word UNK05_021F8DBC
- .byte 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
- .word UNK05_021F8DBC
- .byte 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
- .word UNK05_021F8E34
- .byte 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
- .word UNK05_021F8E34
- .byte 0xCA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xCB, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK05_021F8F0C
- .byte 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC3EC
-UNK05_021FC3EC: ; 0x021FC3EC
- .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC3FC
-UNK05_021FC3FC: ; 0x021FC3FC
- .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
-
- .global UNK05_021FC40C
-UNK05_021FC40C: ; 0x021FC40C
- .word MOD05_021F14BC, MOD05_021F150C, MOD05_021F1544, MOD05_021F1608
-
- .global UNK05_021FC41C
-UNK05_021FC41C: ; 0x021FC41C
- .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
-
- .global UNK05_021FC42C
-UNK05_021FC42C: ; 0x021FC42C
- .byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC43C
-UNK05_021FC43C: ; 0x021FC43C
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC458
-UNK05_021FC458: ; 0x021FC458
- .byte 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC474
-UNK05_021FC474: ; 0x021FC474
- .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC494
-UNK05_021FC494: ; 0x021FC494
- .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC4B4
-UNK05_021FC4B4: ; 0x021FC4B4
- .word MOD05_021F075C, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC
- .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904
- .word MOD05_021F0980
-
- .global UNK05_021FC4D8
-UNK05_021FC4D8: ; 0x021FC4D8
- .word MOD05_021F12C0, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C
- .word MOD05_021F0F60, MOD05_021F1008, MOD05_021F1008, MOD05_021F1008
- .word MOD05_021F134C, MOD05_021F13C8
-
- .global UNK05_021FC500
-UNK05_021FC500: ; 0x021FC500
- .word MOD05_021F0E28, MOD05_021F0E98, MOD05_021F0E98, MOD05_021F0F0C
- .word MOD05_021F0F60, MOD05_021F0FB4, MOD05_021F1008, MOD05_021F10A8
- .word MOD05_021F1140, MOD05_021F11E0
-
- .global UNK05_021FC528
-UNK05_021FC528: ; 0x021FC528
- .word MOD05_021F0A78, MOD05_021F0790, MOD05_021F0790, MOD05_021F07CC
- .word MOD05_021F0808, MOD05_021F0844, MOD05_021F0880, MOD05_021F0904
- .word MOD05_021F0980, MOD05_021F0AB4
-
- .global UNK05_021FC550
-UNK05_021FC550: ; 0x021FC550
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
-
- .global UNK05_021FC55C
-UNK05_021FC55C: ; 0x021FC55C
- .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
-
- .global UNK05_021FC56C
-UNK05_021FC56C: ; 0x021FC56C
- .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
-
- .global UNK05_021FC57C
-UNK05_021FC57C: ; 0x021FC57C
- .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
-
- .global UNK05_021FC58C
-UNK05_021FC58C: ; 0x021FC58C
- .word 0x00000002, 0x00000008, MOD05_021F3854, MOD05_021F385C
- .word MOD05_021F3860, 0x00000000
-
- .global UNK05_021FC5A4
-UNK05_021FC5A4: ; 0x021FC5A4
- .byte 0x22, 0x01
-
- .global UNK05_021FC5A6
-UNK05_021FC5A6: ; 0x021FC5A6
- .byte 0x01, 0x00
-
- .global UNK05_021FC5A8
-UNK05_021FC5A8: ; 0x021FC5A8
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x2C, 0x01, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x90, 0x01, 0x02, 0x00, 0x6E, 0x00, 0x00, 0x00
- .byte 0xF4, 0x01, 0x04, 0x00, 0x36, 0x01, 0x00, 0x00, 0x58, 0x02, 0x14, 0x00, 0xC6, 0x02, 0x00, 0x00
- .byte 0xBC, 0x02, 0x32, 0x00, 0x96, 0x0A, 0x00, 0x00, 0x20, 0x03, 0x64, 0x00, 0x1E, 0x1E, 0x00, 0x00
- .byte 0x84, 0x03, 0x96, 0x00, 0x2E, 0x45, 0x00, 0x00, 0xE8, 0x03, 0x96, 0x00, 0xC6, 0x7F, 0x00, 0x00
- .byte 0x4C, 0x04, 0x64, 0x00, 0x5E, 0xBA, 0x00, 0x00, 0xB0, 0x04, 0x32, 0x00, 0x6E, 0xE1, 0x00, 0x00
- .byte 0x14, 0x05, 0x14, 0x00, 0xF6, 0xF4, 0x00, 0x00, 0x78, 0x05, 0x05, 0x00, 0xC6, 0xFC, 0x00, 0x00
- .byte 0xDC, 0x05, 0x02, 0x00, 0xBA, 0xFE, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, 0x82, 0xFF, 0x00, 0x00
- .byte 0xA4, 0x06, 0x01, 0x00, 0xE6, 0xFF, 0x00, 0x00
-
- .global UNK05_021FC624
-UNK05_021FC624: ; 0x021FC624
- .byte 0x00, 0x00, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
- .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
-
- .global UNK05_021FC634
-UNK05_021FC634: ; 0x021FC634
- .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
- .byte 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10
-
- .global UNK05_021FC644
-UNK05_021FC644: ; 0x021FC644
-.ifdef DIAMOND
- .word 2, 3, 4
-.else
- .word 5, 6, 7
-.endif
-
- .global UNK05_021FC650
-UNK05_021FC650: ; 0x021FC650
- .byte 0x5B, 0x01, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00
- .byte 0x61, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00
- .byte 0x6B, 0x01, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00
- .byte 0x75, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00
- .byte 0x88, 0x01, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00
- .byte 0xCC, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
-
- .global UNK05_021FC6A4
-UNK05_021FC6A4: ; 0x021FC6A4
- .byte 0x08, 0x00, 0x00, 0x00
-
- .global UNK05_021FC6A8
-UNK05_021FC6A8: ; 0x021FC6A8
- .word 0x00000400, 0x00000018, MOD05_021F5564, MOD05_021F5598
- .word MOD05_021F559C, MOD05_021F55C8
-
- .global UNK05_021FC6C0
-UNK05_021FC6C0: ; 0x021FC6C0
- .word 0x00000400, 0x00000018, MOD05_021F5518, MOD05_021F5598
- .word MOD05_021F559C, MOD05_021F55C8
-
- .global UNK05_021FC6D8
-UNK05_021FC6D8: ; 0x021FC6D8
- .byte 0x02, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
- .byte 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00
- .byte 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00
-
- .global UNK05_021FC718
-UNK05_021FC718: ; 0x021FC718
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
- .byte 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00
- .byte 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
- .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00
- .byte 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC79C
-UNK05_021FC79C: ; 0x021FC79C
- .byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021FC820
-UNK05_021FC820: ; 0x021FC820
- .word 0x00, MOD06_022492B0, MOD06_022492D4
- .word 0x01, MOD06_022497A0, MOD06_022497BC
- .word 0x02, MOD05_021E52A8, MOD05_021E52C4
- .word 0x03, MOD05_021E5300, MOD05_021E531C
- .word 0x04, MOD05_021E5564, MOD05_021E5580
- .word 0x05, MOD05_021E55BC, MOD05_021E55D8
- .word 0x06, MOD05_021E577C, MOD05_021E5798
- .word 0x07, MOD05_021E5918, MOD05_021E5934
- .word 0x08, MOD05_021E5AB4, MOD05_021E5AD0
- .word 0x09, MOD05_021E5C8C, MOD05_021E5CA8
- .word 0x0A, MOD05_021E5E10, MOD05_021E5E2C
- .word 0x0B, MOD06_02249C98, MOD06_02249CB8
- .word 0x0C, MOD06_0224A040, MOD06_0224A05C
- .word 0x0D, MOD06_0224A280, MOD06_0224A29C
- .word 0x0E, MOD06_0224A63C, MOD06_0224A658
- .word 0x0F, MOD06_0224A87C, MOD06_0224A898
- .word 0x10, MOD05_021EDB70, MOD05_021EDB8C
- .word 0x11, MOD06_0224AB54, MOD06_0224AB70
- .word 0x12, MOD06_0224AE10, MOD06_0224AE24
- .word 0x13, MOD06_0224B0A8, MOD06_0224B0C4
- .word 0x14, MOD06_0224B248, MOD06_0224B264
- .word 0x15, MOD06_0224B3E4, MOD06_0224B400
- .word 0x16, MOD05_021E779C, MOD05_021E77B0
- .word 0x17, MOD06_0224B948, MOD06_0224B964
- .word 0x18, MOD05_021ED9C0, MOD05_021ED9DC
- .word 0x19, MOD06_0224BB50, MOD06_0224BB6C
- .word 0x1A, MOD06_0224BCF4, MOD06_0224BD10
- .word 0x1B, MOD06_0224BF9C, MOD06_0224BFB8
- .word 0x1C, MOD06_0224CE30, MOD06_0224CE4C
- .word 0x1D, MOD06_0224D244, MOD06_0224D260
- .word 0x1E, MOD06_0224A44C, MOD06_0224A460
- .word 0x1F, MOD06_0224A9E8, MOD06_0224AA04
- .word 0x20, 0x00000000, 0x00000000
-
- .global UNK05_021FC9AC
-UNK05_021FC9AC: ; 0x021FC9AC
- .word 45, 30, 15
-
- .global UNK05_021FC9B8
-UNK05_021FC9B8: ; 0x021FC9B8
- .word MOD05_021F5DA8, MOD05_021F5DC0, MOD05_021F5DF8, MOD05_021F5E30
- .word MOD05_021F5E64, MOD05_021F5EA8, MOD05_021F5ED4, MOD05_021F5EF8
- .word MOD05_021F5F18, MOD05_021F5F30, MOD05_021F5F3C, MOD05_021F5F5C
- .word MOD05_021F5F9C, MOD05_021F5FA8, MOD05_021F5FEC, MOD05_021F6018
- .word MOD05_021F6058, MOD05_021F606C
-
- .global UNK05_021FCA00
-UNK05_021FCA00: ; 0x021FCA00
- .short 0x0000, 0x0000 ; SPECIES_NONE
- .short 0x0001, 0x0001 ; SPECIES_BULBASAUR
- .short 0x0001, 0x0001 ; SPECIES_IVYSAUR
- .short 0x0002, 0x0001 ; SPECIES_VENUSAUR
- .short 0x0001, 0x0001 ; SPECIES_CHARMANDER
- .short 0x0002, 0x0001 ; SPECIES_CHARMELEON
- .short 0x0002, 0x0001 ; SPECIES_CHARIZARD
- .short 0x0001, 0x0001 ; SPECIES_SQUIRTLE
- .short 0x0001, 0x0001 ; SPECIES_WARTORTLE
- .short 0x0002, 0x0001 ; SPECIES_BLASTOISE
- .short 0x0001, 0x0001 ; SPECIES_CATERPIE
- .short 0x0005, 0x0000 ; SPECIES_METAPOD
- .short 0x0001, 0x0001 ; SPECIES_BUTTERFREE
- .short 0x0001, 0x0001 ; SPECIES_WEEDLE
- .short 0x0005, 0x0000 ; SPECIES_KAKUNA
- .short 0x0002, 0x0001 ; SPECIES_BEEDRILL
- .short 0x0001, 0x0001 ; SPECIES_PIDGEY
- .short 0x0001, 0x0001 ; SPECIES_PIDGEOTTO
- .short 0x0002, 0x0001 ; SPECIES_PIDGEOT
- .short 0x0001, 0x0001 ; SPECIES_RATTATA
- .short 0x0002, 0x0001 ; SPECIES_RATICATE
- .short 0x0002, 0x0001 ; SPECIES_SPEAROW
- .short 0x0002, 0x0001 ; SPECIES_FEAROW
- .short 0x0003, 0x0000 ; SPECIES_EKANS
- .short 0x0003, 0x0000 ; SPECIES_ARBOK
- .short 0x0001, 0x0001 ; SPECIES_PIKACHU
- .short 0x0001, 0x0001 ; SPECIES_RAICHU
- .short 0x0001, 0x0001 ; SPECIES_SANDSHREW
- .short 0x0001, 0x0001 ; SPECIES_SANDSLASH
- .short 0x0001, 0x0001 ; SPECIES_NIDORAN_F
- .short 0x0001, 0x0001 ; SPECIES_NIDORINA
- .short 0x0002, 0x0001 ; SPECIES_NIDOQUEEN
- .short 0x0001, 0x0001 ; SPECIES_NIDORAN_M
- .short 0x0002, 0x0001 ; SPECIES_NIDORINO
- .short 0x0002, 0x0001 ; SPECIES_NIDOKING
- .short 0x0001, 0x0001 ; SPECIES_CLEFAIRY
- .short 0x0001, 0x0001 ; SPECIES_CLEFABLE
- .short 0x0001, 0x0001 ; SPECIES_VULPIX
- .short 0x0002, 0x0001 ; SPECIES_NINETALES
- .short 0x0001, 0x0001 ; SPECIES_JIGGLYPUFF
- .short 0x0001, 0x0001 ; SPECIES_WIGGLYTUFF
- .short 0x0003, 0x0000 ; SPECIES_ZUBAT
- .short 0x0003, 0x0001 ; SPECIES_GOLBAT
- .short 0x0001, 0x0001 ; SPECIES_ODDISH
- .short 0x0001, 0x0001 ; SPECIES_GLOOM
- .short 0x0001, 0x0001 ; SPECIES_VILEPLUME
- .short 0x0005, 0x0001 ; SPECIES_PARAS
- .short 0x0005, 0x0001 ; SPECIES_PARASECT
- .short 0x0001, 0x0001 ; SPECIES_VENONAT
- .short 0x0005, 0x0001 ; SPECIES_VENOMOTH
- .short 0x0001, 0x0000 ; SPECIES_DIGLETT
- .short 0x0001, 0x0000 ; SPECIES_DUGTRIO
- .short 0x0001, 0x0001 ; SPECIES_MEOWTH
- .short 0x0002, 0x0001 ; SPECIES_PERSIAN
- .short 0x0004, 0x0001 ; SPECIES_PSYDUCK
- .short 0x0002, 0x0001 ; SPECIES_GOLDUCK
- .short 0x0002, 0x0001 ; SPECIES_MANKEY
- .short 0x0002, 0x0001 ; SPECIES_PRIMEAPE
- .short 0x0001, 0x0001 ; SPECIES_GROWLITHE
- .short 0x0002, 0x0001 ; SPECIES_ARCANINE
- .short 0x0001, 0x0001 ; SPECIES_POLIWAG
- .short 0x0001, 0x0001 ; SPECIES_POLIWHIRL
- .short 0x0002, 0x0001 ; SPECIES_POLIWRATH
- .short 0x0001, 0x0001 ; SPECIES_ABRA
- .short 0x0002, 0x0001 ; SPECIES_KADABRA
- .short 0x0002, 0x0001 ; SPECIES_ALAKAZAM
- .short 0x0001, 0x0001 ; SPECIES_MACHOP
- .short 0x0002, 0x0001 ; SPECIES_MACHOKE
- .short 0x0002, 0x0001 ; SPECIES_MACHAMP
- .short 0x0001, 0x0001 ; SPECIES_BELLSPROUT
- .short 0x0004, 0x0000 ; SPECIES_WEEPINBELL
- .short 0x0004, 0x0000 ; SPECIES_VICTREEBEL
- .short 0x0002, 0x0000 ; SPECIES_TENTACOOL
- .short 0x0002, 0x0000 ; SPECIES_TENTACRUEL
- .short 0x0001, 0x0000 ; SPECIES_GEODUDE
- .short 0x0002, 0x0001 ; SPECIES_GRAVELER
- .short 0x0002, 0x0001 ; SPECIES_GOLEM
- .short 0x0001, 0x0001 ; SPECIES_PONYTA
- .short 0x0002, 0x0001 ; SPECIES_RAPIDASH
- .short 0x0004, 0x0001 ; SPECIES_SLOWPOKE
- .short 0x0004, 0x0001 ; SPECIES_SLOWBRO
- .short 0x0005, 0x0001 ; SPECIES_MAGNEMITE
- .short 0x0005, 0x0001 ; SPECIES_MAGNETON
- .short 0x0002, 0x0001 ; SPECIES_FARFETCHD
- .short 0x0001, 0x0001 ; SPECIES_DODUO
- .short 0x0002, 0x0001 ; SPECIES_DODRIO
- .short 0x0004, 0x0000 ; SPECIES_SEEL
- .short 0x0004, 0x0000 ; SPECIES_DEWGONG
- .short 0x0003, 0x0000 ; SPECIES_GRIMER
- .short 0x0003, 0x0000 ; SPECIES_MUK
- .short 0x0004, 0x0000 ; SPECIES_SHELLDER
- .short 0x0002, 0x0000 ; SPECIES_CLOYSTER
- .short 0x0003, 0x0000 ; SPECIES_GASTLY
- .short 0x0003, 0x0000 ; SPECIES_HAUNTER
- .short 0x0003, 0x0001 ; SPECIES_GENGAR
- .short 0x0002, 0x0000 ; SPECIES_ONIX
- .short 0x0003, 0x0001 ; SPECIES_DROWZEE
- .short 0x0003, 0x0001 ; SPECIES_HYPNO
- .short 0x0001, 0x0001 ; SPECIES_KRABBY
- .short 0x0002, 0x0001 ; SPECIES_KINGLER
- .short 0x0002, 0x0000 ; SPECIES_VOLTORB
- .short 0x0002, 0x0000 ; SPECIES_ELECTRODE
- .short 0x0001, 0x0000 ; SPECIES_EXEGGCUTE
- .short 0x0004, 0x0001 ; SPECIES_EXEGGUTOR
- .short 0x0001, 0x0001 ; SPECIES_CUBONE
- .short 0x0002, 0x0001 ; SPECIES_MAROWAK
- .short 0x0002, 0x0001 ; SPECIES_HITMONLEE
- .short 0x0002, 0x0001 ; SPECIES_HITMONCHAN
- .short 0x0004, 0x0001 ; SPECIES_LICKITUNG
- .short 0x0003, 0x0000 ; SPECIES_KOFFING
- .short 0x0003, 0x0000 ; SPECIES_WEEZING
- .short 0x0002, 0x0001 ; SPECIES_RHYHORN
- .short 0x0002, 0x0001 ; SPECIES_RHYDON
- .short 0x0001, 0x0001 ; SPECIES_CHANSEY
- .short 0x0001, 0x0001 ; SPECIES_TANGELA
- .short 0x0002, 0x0001 ; SPECIES_KANGASKHAN
- .short 0x0001, 0x0000 ; SPECIES_HORSEA
- .short 0x0002, 0x0000 ; SPECIES_SEADRA
- .short 0x0001, 0x0000 ; SPECIES_GOLDEEN
- .short 0x0002, 0x0000 ; SPECIES_SEAKING
- .short 0x0005, 0x0001 ; SPECIES_STARYU
- .short 0x0005, 0x0001 ; SPECIES_STARMIE
- .short 0x0001, 0x0001 ; SPECIES_MR_MIME
- .short 0x0002, 0x0001 ; SPECIES_SCYTHER
- .short 0x0001, 0x0000 ; SPECIES_JYNX
- .short 0x0002, 0x0001 ; SPECIES_ELECTABUZZ
- .short 0x0002, 0x0001 ; SPECIES_MAGMAR
- .short 0x0002, 0x0001 ; SPECIES_PINSIR
- .short 0x0002, 0x0001 ; SPECIES_TAUROS
- .short 0x0004, 0x0000 ; SPECIES_MAGIKARP
- .short 0x0003, 0x0000 ; SPECIES_GYARADOS
- .short 0x0001, 0x0000 ; SPECIES_LAPRAS
- .short 0x0004, 0x0000 ; SPECIES_DITTO
- .short 0x0001, 0x0001 ; SPECIES_EEVEE
- .short 0x0002, 0x0001 ; SPECIES_VAPOREON
- .short 0x0002, 0x0001 ; SPECIES_JOLTEON
- .short 0x0002, 0x0001 ; SPECIES_FLAREON
- .short 0x0005, 0x0001 ; SPECIES_PORYGON
- .short 0x0001, 0x0001 ; SPECIES_OMANYTE
- .short 0x0002, 0x0001 ; SPECIES_OMASTAR
- .short 0x0005, 0x0001 ; SPECIES_KABUTO
- .short 0x0002, 0x0001 ; SPECIES_KABUTOPS
- .short 0x0002, 0x0001 ; SPECIES_AERODACTYL
- .short 0x0004, 0x0001 ; SPECIES_SNORLAX
- .short 0x0002, 0x0001 ; SPECIES_ARTICUNO
- .short 0x0002, 0x0001 ; SPECIES_ZAPDOS
- .short 0x0002, 0x0001 ; SPECIES_MOLTRES
- .short 0x0001, 0x0000 ; SPECIES_DRATINI
- .short 0x0002, 0x0000 ; SPECIES_DRAGONAIR
- .short 0x0002, 0x0001 ; SPECIES_DRAGONITE
- .short 0x0002, 0x0001 ; SPECIES_MEWTWO
- .short 0x0001, 0x0001 ; SPECIES_MEW
- .short 0x0001, 0x0001 ; SPECIES_CHIKORITA
- .short 0x0001, 0x0001 ; SPECIES_BAYLEEF
- .short 0x0002, 0x0001 ; SPECIES_MEGANIUM
- .short 0x0001, 0x0001 ; SPECIES_CYNDAQUIL
- .short 0x0002, 0x0001 ; SPECIES_QUILAVA
- .short 0x0002, 0x0001 ; SPECIES_TYPHLOSION
- .short 0x0001, 0x0001 ; SPECIES_TOTODILE
- .short 0x0002, 0x0001 ; SPECIES_CROCONAW
- .short 0x0002, 0x0001 ; SPECIES_FERALIGATR
- .short 0x0001, 0x0001 ; SPECIES_SENTRET
- .short 0x0001, 0x0001 ; SPECIES_FURRET
- .short 0x0001, 0x0001 ; SPECIES_HOOTHOOT
- .short 0x0002, 0x0001 ; SPECIES_NOCTOWL
- .short 0x0001, 0x0001 ; SPECIES_LEDYBA
- .short 0x0002, 0x0001 ; SPECIES_LEDIAN
- .short 0x0003, 0x0001 ; SPECIES_SPINARAK
- .short 0x0003, 0x0001 ; SPECIES_ARIADOS
- .short 0x0003, 0x0000 ; SPECIES_CROBAT
- .short 0x0004, 0x0000 ; SPECIES_CHINCHOU
- .short 0x0002, 0x0000 ; SPECIES_LANTURN
- .short 0x0001, 0x0001 ; SPECIES_PICHU
- .short 0x0001, 0x0001 ; SPECIES_CLEFFA
- .short 0x0001, 0x0001 ; SPECIES_IGGLYBUFF
- .short 0x0001, 0x0001 ; SPECIES_TOGEPI
- .short 0x0001, 0x0001 ; SPECIES_TOGETIC
- .short 0x0001, 0x0001 ; SPECIES_NATU
- .short 0x0005, 0x0001 ; SPECIES_XATU
- .short 0x0001, 0x0001 ; SPECIES_MAREEP
- .short 0x0001, 0x0001 ; SPECIES_FLAAFFY
- .short 0x0001, 0x0001 ; SPECIES_AMPHAROS
- .short 0x0001, 0x0000 ; SPECIES_BELLOSSOM
- .short 0x0001, 0x0001 ; SPECIES_MARILL
- .short 0x0001, 0x0001 ; SPECIES_AZUMARILL
- .short 0x0004, 0x0001 ; SPECIES_SUDOWOODO
- .short 0x0001, 0x0001 ; SPECIES_POLITOED
- .short 0x0001, 0x0001 ; SPECIES_HOPPIP
- .short 0x0001, 0x0001 ; SPECIES_SKIPLOOM
- .short 0x0001, 0x0001 ; SPECIES_JUMPLUFF
- .short 0x0001, 0x0001 ; SPECIES_AIPOM
- .short 0x0001, 0x0000 ; SPECIES_SUNKERN
- .short 0x0001, 0x0001 ; SPECIES_SUNFLORA
- .short 0x0001, 0x0001 ; SPECIES_YANMA
- .short 0x0001, 0x0001 ; SPECIES_WOOPER
- .short 0x0004, 0x0001 ; SPECIES_QUAGSIRE
- .short 0x0002, 0x0001 ; SPECIES_ESPEON
- .short 0x0002, 0x0001 ; SPECIES_UMBREON
- .short 0x0003, 0x0001 ; SPECIES_MURKROW
- .short 0x0004, 0x0001 ; SPECIES_SLOWKING
- .short 0x0003, 0x0000 ; SPECIES_MISDREAVUS
- .short 0x0005, 0x0000 ; SPECIES_UNOWN
- .short 0x0004, 0x0001 ; SPECIES_WOBBUFFET
- .short 0x0001, 0x0001 ; SPECIES_GIRAFARIG
- .short 0x0005, 0x0000 ; SPECIES_PINECO
- .short 0x0005, 0x0000 ; SPECIES_FORRETRESS
- .short 0x0004, 0x0000 ; SPECIES_DUNSPARCE
- .short 0x0004, 0x0001 ; SPECIES_GLIGAR
- .short 0x0002, 0x0000 ; SPECIES_STEELIX
- .short 0x0001, 0x0001 ; SPECIES_SNUBBULL
- .short 0x0001, 0x0001 ; SPECIES_GRANBULL
- .short 0x0002, 0x0000 ; SPECIES_QWILFISH
- .short 0x0002, 0x0001 ; SPECIES_SCIZOR
- .short 0x0001, 0x0001 ; SPECIES_SHUCKLE
- .short 0x0002, 0x0001 ; SPECIES_HERACROSS
- .short 0x0002, 0x0001 ; SPECIES_SNEASEL
- .short 0x0001, 0x0001 ; SPECIES_TEDDIURSA
- .short 0x0002, 0x0001 ; SPECIES_URSARING
- .short 0x0004, 0x0000 ; SPECIES_SLUGMA
- .short 0x0004, 0x0000 ; SPECIES_MAGCARGO
- .short 0x0001, 0x0001 ; SPECIES_SWINUB
- .short 0x0004, 0x0001 ; SPECIES_PILOSWINE
- .short 0x0001, 0x0001 ; SPECIES_CORSOLA
- .short 0x0005, 0x0000 ; SPECIES_REMORAID
- .short 0x0004, 0x0001 ; SPECIES_OCTILLERY
- .short 0x0001, 0x0001 ; SPECIES_DELIBIRD
- .short 0x0002, 0x0000 ; SPECIES_MANTINE
- .short 0x0002, 0x0001 ; SPECIES_SKARMORY
- .short 0x0003, 0x0001 ; SPECIES_HOUNDOUR
- .short 0x0003, 0x0001 ; SPECIES_HOUNDOOM
- .short 0x0002, 0x0000 ; SPECIES_KINGDRA
- .short 0x0001, 0x0001 ; SPECIES_PHANPY
- .short 0x0002, 0x0001 ; SPECIES_DONPHAN
- .short 0x0005, 0x0001 ; SPECIES_PORYGON2
- .short 0x0002, 0x0001 ; SPECIES_STANTLER
- .short 0x0004, 0x0001 ; SPECIES_SMEARGLE
- .short 0x0001, 0x0001 ; SPECIES_TYROGUE
- .short 0x0002, 0x0001 ; SPECIES_HITMONTOP
- .short 0x0001, 0x0001 ; SPECIES_SMOOCHUM
- .short 0x0001, 0x0001 ; SPECIES_ELEKID
- .short 0x0001, 0x0001 ; SPECIES_MAGBY
- .short 0x0001, 0x0001 ; SPECIES_MILTANK
- .short 0x0001, 0x0001 ; SPECIES_BLISSEY
- .short 0x0002, 0x0001 ; SPECIES_RAIKOU
- .short 0x0002, 0x0001 ; SPECIES_ENTEI
- .short 0x0002, 0x0001 ; SPECIES_SUICUNE
- .short 0x0001, 0x0001 ; SPECIES_LARVITAR
- .short 0x0005, 0x0000 ; SPECIES_PUPITAR
- .short 0x0003, 0x0001 ; SPECIES_TYRANITAR
- .short 0x0002, 0x0001 ; SPECIES_LUGIA
- .short 0x0002, 0x0001 ; SPECIES_HO_OH
- .short 0x0001, 0x0001 ; SPECIES_CELEBI
- .short 0x0001, 0x0001 ; SPECIES_TREECKO
- .short 0x0002, 0x0001 ; SPECIES_GROVYLE
- .short 0x0002, 0x0001 ; SPECIES_SCEPTILE
- .short 0x0001, 0x0001 ; SPECIES_TORCHIC
- .short 0x0002, 0x0001 ; SPECIES_COMBUSKEN
- .short 0x0002, 0x0001 ; SPECIES_BLAZIKEN
- .short 0x0001, 0x0001 ; SPECIES_MUDKIP
- .short 0x0001, 0x0001 ; SPECIES_MARSHTOMP
- .short 0x0002, 0x0001 ; SPECIES_SWAMPERT
- .short 0x0001, 0x0001 ; SPECIES_POOCHYENA
- .short 0x0002, 0x0001 ; SPECIES_MIGHTYENA
- .short 0x0004, 0x0001 ; SPECIES_ZIGZAGOON
- .short 0x0004, 0x0001 ; SPECIES_LINOONE
- .short 0x0001, 0x0001 ; SPECIES_WURMPLE
- .short 0x0005, 0x0000 ; SPECIES_SILCOON
- .short 0x0001, 0x0001 ; SPECIES_BEAUTIFLY
- .short 0x0005, 0x0000 ; SPECIES_CASCOON
- .short 0x0002, 0x0001 ; SPECIES_DUSTOX
- .short 0x0001, 0x0001 ; SPECIES_LOTAD
- .short 0x0004, 0x0001 ; SPECIES_LOMBRE
- .short 0x0004, 0x0001 ; SPECIES_LUDICOLO
- .short 0x0005, 0x0001 ; SPECIES_SEEDOT
- .short 0x0002, 0x0001 ; SPECIES_NUZLEAF
- .short 0x0003, 0x0001 ; SPECIES_SHIFTRY
- .short 0x0001, 0x0001 ; SPECIES_TAILLOW
- .short 0x0002, 0x0001 ; SPECIES_SWELLOW
- .short 0x0001, 0x0001 ; SPECIES_WINGULL
- .short 0x0001, 0x0001 ; SPECIES_PELIPPER
- .short 0x0001, 0x0001 ; SPECIES_RALTS
- .short 0x0001, 0x0001 ; SPECIES_KIRLIA
- .short 0x0001, 0x0001 ; SPECIES_GARDEVOIR
- .short 0x0001, 0x0001 ; SPECIES_SURSKIT
- .short 0x0002, 0x0000 ; SPECIES_MASQUERAIN
- .short 0x0001, 0x0001 ; SPECIES_SHROOMISH
- .short 0x0002, 0x0001 ; SPECIES_BRELOOM
- .short 0x0004, 0x0001 ; SPECIES_SLAKOTH
- .short 0x0002, 0x0001 ; SPECIES_VIGOROTH
- .short 0x0004, 0x0001 ; SPECIES_SLAKING
- .short 0x0005, 0x0001 ; SPECIES_NINCADA
- .short 0x0002, 0x0001 ; SPECIES_NINJASK
- .short 0x0004, 0x0001 ; SPECIES_SHEDINJA
- .short 0x0004, 0x0001 ; SPECIES_WHISMUR
- .short 0x0004, 0x0001 ; SPECIES_LOUDRED
- .short 0x0002, 0x0001 ; SPECIES_EXPLOUD
- .short 0x0001, 0x0001 ; SPECIES_MAKUHITA
- .short 0x0002, 0x0001 ; SPECIES_HARIYAMA
- .short 0x0001, 0x0001 ; SPECIES_AZURILL
- .short 0x0005, 0x0001 ; SPECIES_NOSEPASS
- .short 0x0001, 0x0001 ; SPECIES_SKITTY
- .short 0x0001, 0x0001 ; SPECIES_DELCATTY
- .short 0x0003, 0x0001 ; SPECIES_SABLEYE
- .short 0x0001, 0x0001 ; SPECIES_MAWILE
- .short 0x0001, 0x0001 ; SPECIES_ARON
- .short 0x0002, 0x0001 ; SPECIES_LAIRON
- .short 0x0002, 0x0001 ; SPECIES_AGGRON
- .short 0x0001, 0x0001 ; SPECIES_MEDITITE
- .short 0x0002, 0x0001 ; SPECIES_MEDICHAM
- .short 0x0001, 0x0001 ; SPECIES_ELECTRIKE
- .short 0x0002, 0x0001 ; SPECIES_MANECTRIC
- .short 0x0001, 0x0001 ; SPECIES_PLUSLE
- .short 0x0001, 0x0001 ; SPECIES_MINUN
- .short 0x0002, 0x0001 ; SPECIES_VOLBEAT
- .short 0x0001, 0x0001 ; SPECIES_ILLUMISE
- .short 0x0001, 0x0001 ; SPECIES_ROSELIA
- .short 0x0004, 0x0000 ; SPECIES_GULPIN
- .short 0x0004, 0x0000 ; SPECIES_SWALOT
- .short 0x0003, 0x0000 ; SPECIES_CARVANHA
- .short 0x0003, 0x0000 ; SPECIES_SHARPEDO
- .short 0x0001, 0x0000 ; SPECIES_WAILMER
- .short 0x0002, 0x0000 ; SPECIES_WAILORD
- .short 0x0004, 0x0001 ; SPECIES_NUMEL
- .short 0x0004, 0x0001 ; SPECIES_CAMERUPT
- .short 0x0004, 0x0001 ; SPECIES_TORKOAL
- .short 0x0001, 0x0000 ; SPECIES_SPOINK
- .short 0x0002, 0x0001 ; SPECIES_GRUMPIG
- .short 0x0004, 0x0001 ; SPECIES_SPINDA
- .short 0x0004, 0x0001 ; SPECIES_TRAPINCH
- .short 0x0002, 0x0001 ; SPECIES_VIBRAVA
- .short 0x0002, 0x0001 ; SPECIES_FLYGON
- .short 0x0001, 0x0001 ; SPECIES_CACNEA
- .short 0x0003, 0x0001 ; SPECIES_CACTURNE
- .short 0x0001, 0x0001 ; SPECIES_SWABLU
- .short 0x0001, 0x0001 ; SPECIES_ALTARIA
- .short 0x0002, 0x0001 ; SPECIES_ZANGOOSE
- .short 0x0003, 0x0000 ; SPECIES_SEVIPER
- .short 0x0005, 0x0000 ; SPECIES_LUNATONE
- .short 0x0005, 0x0000 ; SPECIES_SOLROCK
- .short 0x0001, 0x0000 ; SPECIES_BARBOACH
- .short 0x0004, 0x0000 ; SPECIES_WHISCASH
- .short 0x0002, 0x0001 ; SPECIES_CORPHISH
- .short 0x0003, 0x0001 ; SPECIES_CRAWDAUNT
- .short 0x0005, 0x0001 ; SPECIES_BALTOY
- .short 0x0005, 0x0001 ; SPECIES_CLAYDOL
- .short 0x0005, 0x0001 ; SPECIES_LILEEP
- .short 0x0005, 0x0001 ; SPECIES_CRADILY
- .short 0x0005, 0x0000 ; SPECIES_ANORITH
- .short 0x0002, 0x0001 ; SPECIES_ARMALDO
- .short 0x0004, 0x0000 ; SPECIES_FEEBAS
- .short 0x0002, 0x0000 ; SPECIES_MILOTIC
- .short 0x0001, 0x0000 ; SPECIES_CASTFORM
- .short 0x0001, 0x0001 ; SPECIES_KECLEON
- .short 0x0003, 0x0000 ; SPECIES_SHUPPET
- .short 0x0003, 0x0001 ; SPECIES_BANETTE
- .short 0x0003, 0x0000 ; SPECIES_DUSKULL
- .short 0x0003, 0x0001 ; SPECIES_DUSCLOPS
- .short 0x0002, 0x0001 ; SPECIES_TROPIUS
- .short 0x0001, 0x0000 ; SPECIES_CHIMECHO
- .short 0x0003, 0x0001 ; SPECIES_ABSOL
- .short 0x0004, 0x0001 ; SPECIES_WYNAUT
- .short 0x0001, 0x0001 ; SPECIES_SNORUNT
- .short 0x0002, 0x0000 ; SPECIES_GLALIE
- .short 0x0001, 0x0000 ; SPECIES_SPHEAL
- .short 0x0002, 0x0000 ; SPECIES_SEALEO
- .short 0x0002, 0x0000 ; SPECIES_WALREIN
- .short 0x0001, 0x0000 ; SPECIES_CLAMPERL
- .short 0x0002, 0x0000 ; SPECIES_HUNTAIL
- .short 0x0001, 0x0000 ; SPECIES_GOREBYSS
- .short 0x0004, 0x0000 ; SPECIES_RELICANTH
- .short 0x0001, 0x0000 ; SPECIES_LUVDISC
- .short 0x0001, 0x0001 ; SPECIES_BAGON
- .short 0x0005, 0x0001 ; SPECIES_SHELGON
- .short 0x0002, 0x0001 ; SPECIES_SALAMENCE
- .short 0x0005, 0x0001 ; SPECIES_BELDUM
- .short 0x0005, 0x0001 ; SPECIES_METANG
- .short 0x0002, 0x0001 ; SPECIES_METAGROSS
- .short 0x0005, 0x0001 ; SPECIES_REGIROCK
- .short 0x0005, 0x0001 ; SPECIES_REGICE
- .short 0x0005, 0x0001 ; SPECIES_REGISTEEL
- .short 0x0001, 0x0001 ; SPECIES_LATIAS
- .short 0x0002, 0x0001 ; SPECIES_LATIOS
- .short 0x0002, 0x0001 ; SPECIES_KYOGRE
- .short 0x0002, 0x0001 ; SPECIES_GROUDON
- .short 0x0002, 0x0000 ; SPECIES_RAYQUAZA
- .short 0x0001, 0x0001 ; SPECIES_JIRACHI
- .short 0x0002, 0x0001 ; SPECIES_DEOXYS
- .short 0x0001, 0x0001 ; SPECIES_TURTWIG
- .short 0x0001, 0x0001 ; SPECIES_GROTLE
- .short 0x0002, 0x0001 ; SPECIES_TORTERRA
- .short 0x0001, 0x0001 ; SPECIES_CHIMCHAR
- .short 0x0002, 0x0001 ; SPECIES_MONFERNO
- .short 0x0002, 0x0001 ; SPECIES_INFERNAPE
- .short 0x0001, 0x0001 ; SPECIES_PIPLUP
- .short 0x0002, 0x0001 ; SPECIES_PRINPLUP
- .short 0x0002, 0x0001 ; SPECIES_EMPOLEON
- .short 0x0001, 0x0001 ; SPECIES_STARLY
- .short 0x0001, 0x0001 ; SPECIES_STARAVIA
- .short 0x0002, 0x0001 ; SPECIES_STARAPTOR
- .short 0x0004, 0x0001 ; SPECIES_BIDOOF
- .short 0x0004, 0x0001 ; SPECIES_BIBAREL
- .short 0x0001, 0x0001 ; SPECIES_KRICKETOT
- .short 0x0002, 0x0001 ; SPECIES_KRICKETUNE
- .short 0x0001, 0x0001 ; SPECIES_SHINX
- .short 0x0001, 0x0001 ; SPECIES_LUXIO
- .short 0x0002, 0x0001 ; SPECIES_LUXRAY
- .short 0x0001, 0x0001 ; SPECIES_BUDEW
- .short 0x0002, 0x0001 ; SPECIES_ROSERADE
- .short 0x0002, 0x0001 ; SPECIES_CRANIDOS
- .short 0x0002, 0x0001 ; SPECIES_RAMPARDOS
- .short 0x0002, 0x0001 ; SPECIES_SHIELDON
- .short 0x0002, 0x0001 ; SPECIES_BASTIODON
- .short 0x0001, 0x0000 ; SPECIES_BURMY
- .short 0x0001, 0x0000 ; SPECIES_WORMADAM
- .short 0x0002, 0x0001 ; SPECIES_MOTHIM
- .short 0x0001, 0x0000 ; SPECIES_COMBEE
- .short 0x0001, 0x0000 ; SPECIES_VESPIQUEN
- .short 0x0001, 0x0001 ; SPECIES_PACHIRISU
- .short 0x0001, 0x0001 ; SPECIES_BUIZEL
- .short 0x0002, 0x0001 ; SPECIES_FLOATZEL
- .short 0x0001, 0x0001 ; SPECIES_CHERUBI
- .short 0x0001, 0x0001 ; SPECIES_CHERRIM
- .short 0x0001, 0x0001 ; SPECIES_SHELLOS
- .short 0x0003, 0x0001 ; SPECIES_GASTRODON
- .short 0x0001, 0x0001 ; SPECIES_AMBIPOM
- .short 0x0003, 0x0000 ; SPECIES_DRIFLOON
- .short 0x0003, 0x0000 ; SPECIES_DRIFBLIM
- .short 0x0001, 0x0001 ; SPECIES_BUNEARY
- .short 0x0001, 0x0001 ; SPECIES_LOPUNNY
- .short 0x0003, 0x0000 ; SPECIES_MISMAGIUS
- .short 0x0003, 0x0001 ; SPECIES_HONCHKROW
- .short 0x0001, 0x0001 ; SPECIES_GLAMEOW
- .short 0x0001, 0x0001 ; SPECIES_PURUGLY
- .short 0x0001, 0x0001 ; SPECIES_CHINGLING
- .short 0x0003, 0x0001 ; SPECIES_STUNKY
- .short 0x0003, 0x0001 ; SPECIES_SKUNTANK
- .short 0x0005, 0x0000 ; SPECIES_BRONZOR
- .short 0x0005, 0x0000 ; SPECIES_BRONZONG
- .short 0x0004, 0x0001 ; SPECIES_BONSLY
- .short 0x0001, 0x0001 ; SPECIES_MIME_JR
- .short 0x0001, 0x0001 ; SPECIES_HAPPINY
- .short 0x0004, 0x0001 ; SPECIES_CHATOT
- .short 0x0003, 0x0001 ; SPECIES_SPIRITOMB
- .short 0x0001, 0x0001 ; SPECIES_GIBLE
- .short 0x0002, 0x0001 ; SPECIES_GABITE
- .short 0x0002, 0x0001 ; SPECIES_GARCHOMP
- .short 0x0004, 0x0001 ; SPECIES_MUNCHLAX
- .short 0x0001, 0x0001 ; SPECIES_RIOLU
- .short 0x0002, 0x0001 ; SPECIES_LUCARIO
- .short 0x0004, 0x0001 ; SPECIES_HIPPOPOTAS
- .short 0x0002, 0x0001 ; SPECIES_HIPPOWDON
- .short 0x0003, 0x0001 ; SPECIES_SKORUPI
- .short 0x0003, 0x0001 ; SPECIES_DRAPION
- .short 0x0003, 0x0001 ; SPECIES_CROAGUNK
- .short 0x0003, 0x0001 ; SPECIES_TOXICROAK
- .short 0x0004, 0x0000 ; SPECIES_CARNIVINE
- .short 0x0001, 0x0000 ; SPECIES_FINNEON
- .short 0x0002, 0x0000 ; SPECIES_LUMINEON
- .short 0x0001, 0x0000 ; SPECIES_MANTYKE
- .short 0x0001, 0x0001 ; SPECIES_SNOVER
- .short 0x0002, 0x0001 ; SPECIES_ABOMASNOW
- .short 0x0002, 0x0001 ; SPECIES_WEAVILE
- .short 0x0005, 0x0000 ; SPECIES_MAGNEZONE
- .short 0x0004, 0x0001 ; SPECIES_LICKILICKY
- .short 0x0002, 0x0001 ; SPECIES_RHYPERIOR
- .short 0x0004, 0x0001 ; SPECIES_TANGROWTH
- .short 0x0002, 0x0001 ; SPECIES_ELECTIVIRE
- .short 0x0002, 0x0001 ; SPECIES_MAGMORTAR
- .short 0x0002, 0x0001 ; SPECIES_TOGEKISS
- .short 0x0002, 0x0001 ; SPECIES_YANMEGA
- .short 0x0002, 0x0001 ; SPECIES_LEAFEON
- .short 0x0002, 0x0001 ; SPECIES_GLACEON
- .short 0x0002, 0x0001 ; SPECIES_GLISCOR
- .short 0x0004, 0x0001 ; SPECIES_MAMOSWINE
- .short 0x0005, 0x0001 ; SPECIES_PORYGON_Z
- .short 0x0002, 0x0001 ; SPECIES_GALLADE
- .short 0x0005, 0x0001 ; SPECIES_PROBOPASS
- .short 0x0003, 0x0000 ; SPECIES_DUSKNOIR
- .short 0x0001, 0x0000 ; SPECIES_FROSLASS
- .short 0x0002, 0x0000 ; SPECIES_ROTOM
- .short 0x0001, 0x0001 ; SPECIES_UXIE
- .short 0x0001, 0x0001 ; SPECIES_MESPRIT
- .short 0x0001, 0x0001 ; SPECIES_AZELF
- .short 0x0002, 0x0001 ; SPECIES_DIALGA
- .short 0x0002, 0x0001 ; SPECIES_PALKIA
- .short 0x0002, 0x0001 ; SPECIES_HEATRAN
- .short 0x0005, 0x0001 ; SPECIES_REGIGIGAS
- .short 0x0002, 0x0001 ; SPECIES_GIRATINA
- .short 0x0002, 0x0000 ; SPECIES_CRESSELIA
- .short 0x0001, 0x0000 ; SPECIES_PHIONE
- .short 0x0001, 0x0000 ; SPECIES_MANAPHY
- .short 0x0003, 0x0001 ; SPECIES_DARKRAI
- .short 0x0001, 0x0001 ; SPECIES_SHAYMIN
- .short 0x0002, 0x0001 ; SPECIES_ARCEUS
-
- .global UNK05_021FD1B8
-UNK05_021FD1B8: ; 0x021FD1B8
- .word MOD05_021F6284, MOD05_021F628C, MOD05_021F62C4, 0x00000000
-
- .section .data
-
- .balign 4
- .global UNK05_021FD648
-UNK05_021FD648: ; 0x021FD648
- .asciz "fielddata/build_model/build_model_matshp.dat"
-
- .section .bss
-
- .global UNK05_021FD680
-UNK05_021FD680: ; 0x021FD680
- .space 0x4
-
- .global UNK05_021FD684
-UNK05_021FD684: ; 0x021FD684
- .space 0x3C01C
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index 13b58921..68ab4fbd 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -8553,7 +8553,7 @@ _0223D710:
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0xb
str r0, [sp]
mov r0, #2
@@ -8606,7 +8606,7 @@ MOD06_0223D7B8: ; 0x0223D7B8
add r4, r0, #0
add r0, #8
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #8
bl ClearWindowTilemapAndCopyToVram
@@ -8646,7 +8646,7 @@ _0223D804:
add r0, r4, #0
add r0, #0x18
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x18
bl RemoveWindow
@@ -8850,7 +8850,7 @@ MOD06_0223D9C0: ; 0x0223D9C0
add r5, r0, #0
add r0, #0x28
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r4, #0
add r5, #8
_0223D9D0:
@@ -9462,7 +9462,7 @@ MOD06_0223DED0: ; 0x0223DED0
mov r1, #1
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r0, #0x88
ldr r0, [r0]
@@ -9646,7 +9646,7 @@ _0223E034:
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r1, _0223E190 ; =0x00000242
mov r2, #1
strh r4, [r5, r1]
@@ -9838,7 +9838,7 @@ _0223E214:
mov r1, #1
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x18
mov r1, #0xb
bl String_ctor
@@ -9926,11 +9926,11 @@ _0223E2C4:
add r0, r4, #0
add r0, #0x48
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x38
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x58
mov r1, #0xf
@@ -9946,15 +9946,15 @@ _0223E314:
beq _0223E374
add r0, r4, #0
add r0, #0x48
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x38
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x58
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
mov r1, #0
bl MOD06_0223EBF8
@@ -10175,7 +10175,7 @@ MOD06_0223E4E8: ; 0x0223E4E8
mov r1, #1
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
_0223E50A:
mov r0, #0x18
mov r1, #0xb
@@ -10450,7 +10450,7 @@ _0223E74A:
add r0, r5, #0
add r0, #0x58
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
mov r1, #0
bl MOD06_0223EBF8
@@ -10663,7 +10663,7 @@ _0223E902:
add r0, r5, #0
add r0, #0x58
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
mov r1, #0
bl MOD06_0223EBF8
@@ -10715,7 +10715,7 @@ _0223E966:
add r0, r4, #0
add r0, #0x58
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
mov r1, #0
bl MOD06_0223EBF8
@@ -11366,7 +11366,7 @@ _0223EEB8:
mov r1, #1
add r0, #0x20
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r4, sp, #0x40
add r3, sp, #0x14
add r2, r3, #0
@@ -11848,7 +11848,7 @@ _0223F2AA:
mov r1, #1
add r0, #0x30
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, _0223F330 ; =0x02252420
mov r1, #0xf
ldr r0, [r0]
@@ -12606,7 +12606,7 @@ _0223F910:
mov r1, #1
add r0, #0x30
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, _0223F950 ; =0x02252420
mov r1, #0xf
ldr r0, [r0]
@@ -13847,7 +13847,7 @@ MOD06_02240364: ; 0x02240364
add r0, r4, #0
add r0, #0x20
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, [r4, #0x64]
bl ListMenuItems_dtor
mov r1, #0
@@ -13869,7 +13869,7 @@ MOD06_02240364: ; 0x02240364
mov r1, #0
ldr r0, [r0]
add r0, #0x30
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _022403DC ; =0x02252420
ldr r0, [r0]
add r0, #0x30
@@ -14521,7 +14521,7 @@ MOD06_022408D4: ; 0x022408D4
beq _022408EC
add r0, #0x54
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x54
bl ClearWindowTilemapAndCopyToVram
@@ -14600,7 +14600,7 @@ _02240940:
add r0, #0x34
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [r5, #8]
ldr r1, [r5, #0x68]
mov r2, #0x7b
@@ -14690,7 +14690,7 @@ MOD06_02240A28: ; 0x02240A28
add r0, r4, #0
add r0, #0x34
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r1, r4, #0
add r1, #0x38
ldrb r1, [r1]
@@ -14816,7 +14816,7 @@ MOD06_02240B04: ; 0x02240B04
add r0, #0x44
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r6, #0
_02240B4A:
ldr r0, [r5, #0xc]
@@ -14925,7 +14925,7 @@ _02240C1A:
add r0, r5, #0
add r0, #0x44
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r1, r5, #0
add r1, #0x48
ldrb r1, [r1]
@@ -14989,7 +14989,7 @@ MOD06_02240C58: ; 0x02240C58
ldr r2, _02240F00 ; =0x000003D9
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [sp, #0x24]
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -15281,7 +15281,7 @@ MOD06_02240F1C: ; 0x02240F1C
add r4, r0, #0
add r0, #0x24
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r1, r4, #0
add r1, #0x28
ldrb r1, [r1]
@@ -19020,7 +19020,7 @@ MOD06_02242CDC: ; 0x02242CDC
add r0, r4, #4
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0
bl MOD06_02242DA8
add r0, r4, #0
@@ -19430,7 +19430,7 @@ MOD06_02243024: ; 0x02243024
add r0, r6, #0
add r0, #0x14
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r6, #0
add r0, #0x14
bl RemoveWindow
@@ -19442,7 +19442,7 @@ MOD06_02243024: ; 0x02243024
bl DestroyListMenu
ldr r0, [r6, #0x74]
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r6, #4
bl RemoveWindow
mov r4, #0
@@ -40889,7 +40889,7 @@ MOD06_0224D46C: ; 0x0224D46C
add r0, r4, #0
add r2, r1, #0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -41091,7 +41091,7 @@ MOD06_0224D6A4: ; 0x0224D6A4
push {r4, lr}
add r4, r0, #0
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
@@ -41818,7 +41818,7 @@ MOD06_0224DC5C: ; 0x0224DC5C
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #1
str r0, [r5]
_0224DCAE:
@@ -42178,7 +42178,7 @@ _0224DF64:
mov r1, #0
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -42338,7 +42338,7 @@ _0224E084:
mov r1, #0
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r7, #0x4e
mov r4, #0
add r6, r5, #0
@@ -42526,7 +42526,7 @@ MOD06_0224E24C: ; 0x0224E24C
mov r1, #0
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0
bl MOD06_0224E39C
pop {r4, pc}
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index acd698d5..93dd97ef 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -37368,7 +37368,7 @@ _022244E4:
mov r1, #0x10
mov r2, #0
mov r3, #0xd
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #0
mvn r0, r0
str r0, [r4, #0x10]
@@ -37384,7 +37384,7 @@ _02224508:
cmp r1, r0
bne _02224532
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _02224532
mov r0, #1
@@ -37393,7 +37393,7 @@ _02224508:
mov r1, #0
mov r2, #0x10
mov r3, #0xd
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #1
mvn r0, r0
str r0, [r4, #0x10]
@@ -37408,7 +37408,7 @@ _02224532:
b _022245A8
_02224544:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _022245A8
ldr r0, [r4, #0xc]
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index c5b40b5e..a84812be 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -1518,7 +1518,7 @@ MOD09_02212A74: ; 0x02212A74
ldr r1, _02212A84 ; =0x00002060
add r0, r0, r1
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #2
pop {r3, pc}
.align 2, 0
@@ -4714,7 +4714,7 @@ MOD09_022143F8: ; 0x022143F8
add r0, r4, r0
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, _02214450 ; =0x00002050
mov r1, #0xf
add r0, r4, r0
@@ -8271,7 +8271,7 @@ MOD09_02216314: ; 0x02216314
add r0, r4, r0
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, _02216338 ; =0x00002060
mov r1, #0xf
add r0, r4, r0
@@ -13561,7 +13561,7 @@ MOD09_02218E68: ; 0x02218E68
push {r3, lr}
add r0, #0x1c
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #3
pop {r3, pc}
.align 2, 0
@@ -15226,7 +15226,7 @@ MOD09_02219BE0: ; 0x02219BE0
add r0, #0x1c
mov r1, #1
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
add r0, #0x1c
mov r1, #0xf
diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s
index 1040df95..72e5cdbb 100644
--- a/arm9/modules/11/asm/module_11_thumb1.s
+++ b/arm9/modules/11/asm/module_11_thumb1.s
@@ -638,7 +638,7 @@ _0222D99A:
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0
bl MOD11_0222FE94
add sp, #0x68
@@ -800,7 +800,7 @@ _0222DC42:
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #5
bl FUN_0200BB14
add r1, r4, #0
diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s
index 1905bce4..0d0c4341 100644
--- a/arm9/modules/11/asm/module_11_thumb2.s
+++ b/arm9/modules/11/asm/module_11_thumb2.s
@@ -191,7 +191,7 @@ _0222F30E:
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r2, #0x51
mov r0, #1
mov r1, #0x1a
@@ -23867,7 +23867,7 @@ _0223AC50:
mov r1, #0
mov r2, #1
mov r3, #8
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0xa
add sp, #0xd4
str r0, [r4, #0x28]
@@ -24053,7 +24053,7 @@ _0223AE5E:
bl MOD11_0222FF6C
add r6, r0, #0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r6, #0
bl RemoveWindow
ldr r1, _0223AF50 ; =0x04000008
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index c035be6d..dd36a17b 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -8253,7 +8253,7 @@ _022318EA:
MOD12_022318F8: ; 0x022318F8
push {r3, lr}
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _02231908
mov r0, #1
@@ -8268,7 +8268,7 @@ MOD12_0223190C: ; 0x0223190C
sub sp, #4
mov r0, #1
add r4, r1, #0
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _02231972
ldr r0, [r4, #8]
@@ -8286,7 +8286,7 @@ MOD12_0223190C: ; 0x0223190C
mov r1, #0
mov r2, #4
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _02231978 ; =0x000005F8
bl PlaySE
mov r0, #0
@@ -28090,7 +28090,7 @@ _0223AED6:
add r0, #0x34
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
@@ -28136,7 +28136,7 @@ _0223AF34:
ldr r0, [r4]
mov r1, #1
add r0, #0x34
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
@@ -28281,7 +28281,7 @@ _0223B04E:
ldrsb r1, [r4, r1]
ldrsb r2, [r4, r2]
mov r3, #0x3d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldrb r0, [r4, #0x10]
add sp, #8
add r0, r0, #1
@@ -28289,7 +28289,7 @@ _0223B04E:
pop {r3, r4, r5, pc}
_0223B06C:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _0223B0C0
mov r1, #0
@@ -35076,7 +35076,7 @@ _0223E49A:
add r0, #0x88
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r5, #0x74]
mov r1, #1
bl ScheduleBgTilemapBufferTransfer
@@ -35135,7 +35135,7 @@ MOD12_0223E528: ; 0x0223E528
add r4, r0, #0
add r0, #0x88
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, [r4, #0x74]
mov r1, #1
bl ScheduleBgTilemapBufferTransfer
@@ -39309,7 +39309,7 @@ _02240522:
add r0, #0x78
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x74]
@@ -39355,7 +39355,7 @@ _02240580:
ldr r0, [r4]
mov r1, #1
add r0, #0x78
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x74]
@@ -46795,7 +46795,7 @@ _02243F56:
add r0, #0x34
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
@@ -46842,7 +46842,7 @@ _02243FBA:
ldr r0, [r4]
mov r1, #1
add r0, #0x34
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
@@ -47010,7 +47010,7 @@ _022440EE:
add r0, #0x34
mov r2, #1
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r4]
mov r1, #0xff
add r0, #0x34
@@ -47725,7 +47725,7 @@ _0224467E:
mov r1, #0x10
mov r2, #0
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _02244704 ; =0x0000049E
mov r1, #0x5a
bl FUN_02005350
@@ -47735,7 +47735,7 @@ _0224467E:
pop {r3, r4, r5, pc}
_0224469E:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _02244700
bl FUN_02005404
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index e1acb188..67f55456 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -10857,7 +10857,7 @@ MOD14_021DCA38: ; 0x021DCA38
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
- bl FUN_02009FA0
+ bl DeinitOamData
pop {r4, pc}
.align 2, 0
_021DCB08: .word 0x0000B3AC
@@ -10994,7 +10994,7 @@ MOD14_021DCBFC: ; 0x021DCBFC
bl MOD14_021E0EE4
ldr r0, [r4, #0x18]
bl FUN_0201FDEC
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _021DCC24 ; =0x027E0000
ldr r1, _021DCC28 ; =0x00003FF8
mov r0, #1
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
index 173d4fd6..3b404a7b 100644
--- a/arm9/modules/15/asm/module_15.s
+++ b/arm9/modules/15/asm/module_15.s
@@ -2664,7 +2664,7 @@ _021D88A4:
bl FUN_0200CAB4
ldr r0, [r6, #4]
bl FUN_0200CAB4
- bl FUN_02009FA0
+ bl DeinitOamData
ldr r0, [r6, #0x24]
bl FUN_0201FD58
ldr r0, [r6, #0x20]
@@ -2691,7 +2691,7 @@ MOD15_021D88DC: ; 0x021D88DC
push {r3, lr}
ldr r0, [r1, #0x24]
bl FUN_0201FDEC
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _021D88F8 ; =0x027E0000
ldr r1, _021D88FC ; =0x00003FF8
mov r0, #1
@@ -4529,7 +4529,7 @@ MOD15_021D9694: ; 0x021D9694
add r0, #0x1c
add r1, r4, #0
mov r2, #0xf
- bl FUN_0200D06C
+ bl DrawWindowFrame2
add r0, r5, #0
add r0, #0xc
bl PutWindowTilemap
@@ -5503,7 +5503,7 @@ MOD15_021D9ECC: ; 0x021D9ECC
mov r1, #0
lsr r2, r2, #0x10
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r1, r5, #0
ldr r0, [r5, #0x50]
add r1, #0x2c
@@ -5549,7 +5549,7 @@ MOD15_021D9F88: ; 0x021D9F88
add r4, r0, #0
add r0, #0x2c
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r4, #0x2c
add r0, r4, #0
bl ClearWindowTilemapAndCopyToVram
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 16b3c00d..3365be5a 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -105,7 +105,7 @@ _021D75AC:
mvn r0, r0
mov r1, #0x3f
mov r2, #3
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -614,7 +614,7 @@ MOD16_021D79FC: ; 0x021D79FC
thumb_func_start MOD16_021D7A10
MOD16_021D7A10: ; 0x021D7A10
push {r3, lr}
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
bl MOD16_021D8514
@@ -627,7 +627,7 @@ MOD16_021D7A24: ; 0x021D7A24
ldr r1, _021D7A34 ; =0x0000177C
add r0, r0, r1
bl MOD16_021D86DC
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
pop {r3, pc}
.align 2, 0
_021D7A34: .word 0x0000177C
@@ -13301,7 +13301,7 @@ MOD16_021DD724: ; 0x021DD724
mov r0, #4
sub r2, #0x10
mov r3, #0x39
- bl FUN_0200A208
+ bl StartBrightnessTransition
pop {r3, r4, r5, pc}
_021DD74C:
mov r0, #1
@@ -13311,7 +13311,7 @@ _021DD74C:
sub r1, #0x14
mov r2, #0
mov r3, #0x39
- bl FUN_0200A208
+ bl StartBrightnessTransition
_021DD75E:
pop {r3, r4, r5, pc}
thumb_func_end MOD16_021DD724
@@ -13328,7 +13328,7 @@ MOD16_021DD760: ; 0x021DD760
cmp r0, #1
beq _021DD77C
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
b _021DD77E
_021DD77C:
mov r0, #1
@@ -13346,7 +13346,7 @@ _021DD77E:
mvn r0, r0
mov r1, #0x3f
mov r2, #1
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
@@ -14292,14 +14292,14 @@ _021DDE94:
mov r0, #4
sub r2, #0x10
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021DDEC8
_021DDEAE:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DDEC8
ldr r0, [r4]
@@ -14415,14 +14415,14 @@ _021DDF86:
sub r1, #0x14
mov r2, #0
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021DDFD8
_021DDFA0:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DDFD8
ldr r0, [r4]
@@ -16501,14 +16501,14 @@ _021DEEF6:
str r0, [sp]
sub r2, #0x10
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021DEF2E
_021DEF18:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DEF2E
ldr r0, [r4]
@@ -16592,7 +16592,7 @@ _021DEF96:
sub r1, #0x16
mov r2, #0
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -16603,7 +16603,7 @@ _021DEFB6:
b _021DEFF2
_021DEFBC:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DEFF2
ldr r0, [r4]
@@ -18398,7 +18398,7 @@ _021DFD50:
mov r0, #1
sub r2, #0x10
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
add r0, r6, #0
add r1, r5, #0
add r2, r7, #0
@@ -18409,7 +18409,7 @@ _021DFD50:
b _021DFD96
_021DFD80:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DFD96
ldr r0, [r4]
@@ -18617,14 +18617,14 @@ _021DFF02:
sub r1, #0x16
mov r2, #0
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021DFF6E
_021DFF1C:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DFF6E
ldr r0, [r4]
@@ -25278,7 +25278,7 @@ MOD16_021E2E74: ; 0x021E2E74
mov r0, #4
sub r2, #0x10
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
add sp, #4
pop {r3, r4, pc}
_021E2EA4:
@@ -25293,7 +25293,7 @@ _021E2EA4:
sub r1, #0x14
mov r2, #0
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
_021E2EC0:
add sp, #4
pop {r3, r4, pc}
@@ -28340,7 +28340,7 @@ MOD16_021E45BC: ; 0x021E45BC
b _021E45E2
_021E45DC:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
_021E45E2:
cmp r0, #0
beq _021E45F4
@@ -37267,7 +37267,7 @@ MOD16_021E8878: ; 0x021E8878
b _021E889E
_021E8898:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
_021E889E:
cmp r0, #0
beq _021E88B0
@@ -39308,7 +39308,7 @@ _021E979E:
mov r0, #4
sub r2, #0x10
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
@@ -39319,7 +39319,7 @@ _021E979E:
b _021E97D8
_021E97C2:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021E97D8
ldr r0, [r4]
@@ -39392,14 +39392,14 @@ _021E9834:
sub r1, #0x14
mov r2, #0
mov r3, #0x3f
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021E9890
_021E984E:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021E9890
ldr r0, [r4]
@@ -42999,7 +42999,7 @@ MOD16_021EB2E0: ; 0x021EB2E0
b _021EB306
_021EB300:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
_021EB306:
cmp r0, #0
beq _021EB318
@@ -46749,7 +46749,7 @@ MOD16_021ECF04: ; 0x021ECF04
b _021ECF2A
_021ECF24:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
_021ECF2A:
cmp r0, #0
beq _021ECF3C
@@ -50300,7 +50300,7 @@ MOD16_021EEA00: ; 0x021EEA00
b _021EEA26
_021EEA20:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
_021EEA26:
cmp r0, #0
beq _021EEA38
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 7e32e1c9..485836b0 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -863,7 +863,7 @@ MOD17_021D7AE4: ; 0x021D7AE4
bl DoScheduledBgGpuUpdates
ldr r0, [r4, #0x20]
bl FUN_020081C4
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7AE4
@@ -1137,7 +1137,7 @@ MOD17_021D7CF0: ; 0x021D7CF0
push {r3, lr}
ldr r0, [r0, #0x38]
bl DoScheduledBgGpuUpdates
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021D7CF0
@@ -1724,7 +1724,7 @@ _021D8178:
blt _021D8178
bl FUN_0201D12C
bl FUN_0201E08C
- bl FUN_02009FA0
+ bl DeinitOamData
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021D816C
@@ -3933,7 +3933,7 @@ _021D934E:
sub r1, #0x18
mov r2, #0
mov r3, #0xa
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
@@ -3941,7 +3941,7 @@ _021D934E:
pop {r3, r4, pc}
_021D936A:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D9424
ldr r0, [r4, #0xc]
@@ -4009,7 +4009,7 @@ _021D93EA:
mov r0, #8
sub r2, #0x10
mov r3, #0xa
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
@@ -4017,7 +4017,7 @@ _021D93EA:
pop {r3, r4, pc}
_021D9406:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D9424
ldr r0, [r4, #0xc]
@@ -4093,7 +4093,7 @@ _021D9482:
sub r1, #0x18
mov r2, #0
mov r3, #0xa
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
@@ -4101,7 +4101,7 @@ _021D9482:
pop {r3, r4, pc}
_021D949E:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D95A4
ldr r0, [r4, #0xc]
@@ -4175,7 +4175,7 @@ _021D952E:
mov r0, #8
sub r2, #0x10
mov r3, #0xa
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
@@ -4183,7 +4183,7 @@ _021D952E:
pop {r3, r4, pc}
_021D954A:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D95A4
ldr r0, [r4, #0xc]
@@ -4707,7 +4707,7 @@ MOD17_021D9918: ; 0x021D9918
ldr r0, [r5, r0]
mov r2, #0x74
mov r3, #8
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r2, _021D99D8 ; =0x00000151
mov r0, #0
mov r1, #0x1a
@@ -11470,7 +11470,7 @@ _021DC9CC:
ldr r0, [r5, r0]
mov r1, #0
add r3, r2, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_021DCA42:
ldr r0, [r4, #4]
str r0, [r5, #0x30]
@@ -11825,7 +11825,7 @@ MOD17_021DCC68: ; 0x021DCC68
ldr r0, [r5]
mov r1, #0
add r3, r2, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_021DCCCC:
ldr r0, [r5]
bl CopyWindowToVram
@@ -11879,7 +11879,7 @@ MOD17_021DCCEC: ; 0x021DCCEC
add r0, r5, #0
mov r1, #0
add r3, r2, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
@@ -11917,7 +11917,7 @@ MOD17_021DCD34: ; 0x021DCD34
add r0, r5, #0
mov r1, #0
add r3, r2, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index f30d7e23..abced62a 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -1969,7 +1969,7 @@ _0223A5F8:
ldr r0, [r0]
ldr r0, [r0, #0x20]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
mov r0, #0
@@ -2628,7 +2628,7 @@ _0223AB94:
add r2, r1, #0
mov r3, #7
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #0x1a
add sp, #0xc
str r0, [r4]
@@ -6175,7 +6175,7 @@ MOD18_0223C6CC: ; 0x0223C6CC
add r0, r4, #0
bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
pop {r4, pc}
thumb_func_end MOD18_0223C6CC
@@ -13940,7 +13940,7 @@ _0224013A:
mov r1, #0xa
mov r2, #0
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add sp, #8
add r0, r0, #1
@@ -13957,7 +13957,7 @@ _0224015A:
mov r1, #0
mov r2, #0xa
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add sp, #8
add r0, r0, #1
@@ -13989,7 +13989,7 @@ _02240190:
sub r1, r0, #5
mov r2, #0
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
bl MOD18_0223D638
bl MOD18_0224DD94
ldr r0, [r4, #0xc]
@@ -14011,7 +14011,7 @@ _022401D2:
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
@@ -14123,7 +14123,7 @@ MOD18_022402A0: ; 0x022402A0
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
add r0, r4, #0
bl FreeToHeap
ldr r0, _022402EC ; =0x022513A0
@@ -14372,7 +14372,7 @@ _02240480:
strh r0, [r1]
mov r1, #1
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _022404EC ; =0x022513A0
mov r1, #2
ldr r0, [r0, #4]
@@ -14666,7 +14666,7 @@ _022406A4:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r1, #0
mov r0, #0x12
str r1, [sp]
@@ -14706,7 +14706,7 @@ _022406F6:
mov r2, #0xa
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _02240884 ; =0x022513A0
ldr r1, [r0, #4]
ldr r0, _02240888 ; =0x00000B3B
@@ -14790,7 +14790,7 @@ _0224079E:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #4
mov r1, #1
bl GX_EngineAToggleLayers
@@ -15358,7 +15358,7 @@ MOD18_02240C14: ; 0x02240C14
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _02240C70 ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -15593,7 +15593,7 @@ MOD18_02240DC8: ; 0x02240DC8
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _02240E28 ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -15658,7 +15658,7 @@ _02240E54:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
b _02240E7A
_02240E68:
cmp r0, #4
@@ -15668,7 +15668,7 @@ _02240E68:
mov r2, #0xa
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
_02240E7A:
ldr r0, [r4, #0x10]
cmp r0, #0x1e
@@ -15692,7 +15692,7 @@ _02240EA4:
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _02240EE0 ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -15826,7 +15826,7 @@ _02240FB4:
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _02241004 ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -15944,7 +15944,7 @@ _02241096:
mov r1, #0xa
mov r2, #0
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add sp, #0x14
add r0, r0, #1
@@ -15961,7 +15961,7 @@ _022410B6:
mov r1, #0
mov r2, #0xa
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add sp, #0x14
add r0, r0, #1
@@ -16441,7 +16441,7 @@ _02241472:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _022416A0 ; =0x022513A0
ldr r1, _022416A4 ; =0x00000B3B
ldr r0, [r0, #4]
@@ -16515,7 +16515,7 @@ _02241500:
mov r2, #0xa
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _022416A0 ; =0x022513A0
ldr r1, _022416A4 ; =0x00000B3B
ldr r0, [r0, #4]
@@ -16618,7 +16618,7 @@ _022415C0:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
bl MOD18_0223D638
mov r2, #0
mov r1, #0x4c
@@ -16742,13 +16742,13 @@ _022416D6:
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
mov r0, #1
mov r1, #0
sub r2, r1, #4
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #0x45
lsl r0, r0, #2
ldrb r0, [r4, r0]
@@ -17873,7 +17873,7 @@ _02241F60:
mov r1, #0xa
mov r2, #0
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add sp, #0x10
add r0, r0, #1
@@ -17911,7 +17911,7 @@ _02241FD4:
mov r2, #0xa
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r3, #0
str r3, [sp]
mov r0, #2
@@ -18683,7 +18683,7 @@ _02242604:
strh r0, [r1]
mov r1, #1
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _02242664 ; =0x0400006C
mov r1, #0
bl GXx_SetMasterBrightness_
@@ -19893,7 +19893,7 @@ _02242F98:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r3, #0
str r3, [sp]
mov r0, #1
@@ -19956,7 +19956,7 @@ _02243018:
mov r2, #0xa
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r3, #0
str r3, [sp]
mov r0, #2
@@ -20251,7 +20251,7 @@ _02243268:
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
mov r0, #0x10
bl FUN_0204F774
ldr r0, _022432AC ; =0x022513A0
@@ -20644,7 +20644,7 @@ _0224358C:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _02243784 ; =0x022513A0
ldr r1, _02243788 ; =0x00000B3B
ldr r0, [r0, #4]
@@ -20710,7 +20710,7 @@ _0224360E:
mov r2, #0xa
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _02243784 ; =0x022513A0
ldr r1, _02243788 ; =0x00000B3B
ldr r0, [r0, #4]
@@ -20991,7 +20991,7 @@ _02243840:
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _02243890 ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -21069,7 +21069,7 @@ _022438DA:
mov r1, #0xa
mov r2, #0
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add sp, #4
add r0, r0, #1
@@ -21086,7 +21086,7 @@ _022438FA:
mov r1, #0
mov r2, #0xa
add r3, r0, #0
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add sp, #4
add r0, r0, #1
@@ -21257,7 +21257,7 @@ _02243A44:
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
ldr r0, _02243A8C ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -22707,7 +22707,7 @@ _02244588:
lsl r0, r0, #4
add r0, r4, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x39
lsl r0, r0, #4
add r0, r4, r0
@@ -25590,7 +25590,7 @@ MOD18_02245B1C: ; 0x02245B1C
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
mov r1, #1
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [sp, #0x30]
mov r2, #0
lsl r0, r0, #0x18
@@ -29555,7 +29555,7 @@ MOD18_02247AA8: ; 0x02247AA8
add r0, #0xc
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r2, _02247B58 ; =0x0000023F
mov r0, #0
mov r1, #0x1a
@@ -29681,7 +29681,7 @@ MOD18_02247BB8: ; 0x02247BB8
add r0, #0xc
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r2, _02247C90 ; =0x0000023E
mov r0, #0
mov r1, #0x1a
@@ -29854,7 +29854,7 @@ MOD18_02247D1C: ; 0x02247D1C
add r0, #0xc
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r2, _02247DD0 ; =0x0000023D
mov r0, #0
mov r1, #0x1a
@@ -30155,7 +30155,7 @@ MOD18_02247FC0: ; 0x02247FC0
add r0, r4, #0
add r0, #0xc
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r1, #0
ldr r0, [r4, #0x20]
add r2, r1, #0
@@ -31131,7 +31131,7 @@ MOD18_02248784: ; 0x02248784
add r0, r4, #0
add r0, #8
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r1, #0
ldr r0, [r4, #0x1c]
add r2, r1, #0
@@ -31225,7 +31225,7 @@ MOD18_02248820: ; 0x02248820
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r2, _022488E8 ; =0x0000023D
mov r0, #0
mov r1, #0x1a
@@ -32967,7 +32967,7 @@ MOD18_02249564: ; 0x02249564
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
bl MOD18_0223D638
bl MOD18_0224DBB4
ldr r4, _0224967C ; =0x022505B8
@@ -33405,7 +33405,7 @@ _02249936:
add r0, r4, #0
add r0, #0x10
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldrb r1, [r4, #0x14]
ldr r0, [r4, #0x10]
bl ScheduleBgTilemapBufferTransfer
@@ -33486,7 +33486,7 @@ _022499A2:
add r0, #0x20
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
bl MOD18_0223D638
bl MOD18_0224DBB4
mov r7, #0
@@ -33571,7 +33571,7 @@ _02249A8C:
add r0, r4, #0
add r0, #0x20
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r4, #0x20
add r0, r4, #0
bl RemoveWindow
@@ -33752,7 +33752,7 @@ MOD18_02249BA8: ; 0x02249BA8
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
bl MOD18_0223D678
bl MOD18_0224DBB4
mov r4, #0
@@ -34219,7 +34219,7 @@ MOD18_02249F8C: ; 0x02249F8C
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
bl MOD18_0223D678
bl MOD18_0224DBB4
mov r4, #0
@@ -34668,7 +34668,7 @@ MOD18_0224A360: ; 0x0224A360
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
bl MOD18_0223D678
bl MOD18_0224DBB4
mov r4, #0
@@ -35606,7 +35606,7 @@ MOD18_0224AB08: ; 0x0224AB08
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
bl MOD18_0223D678
bl MOD18_0224DBB4
mov r4, #0
@@ -36157,7 +36157,7 @@ MOD18_0224AFE8: ; 0x0224AFE8
mov r1, #1
mov r0, #0
add r2, r1, #0
- bl FUN_0200A274
+ bl SetBrightness
mov r1, #1
add r0, r4, #0
mvn r1, r1
@@ -36652,7 +36652,7 @@ _0224B374:
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r2, #0x91
mov r0, #0
mov r1, #0x1a
@@ -36775,7 +36775,7 @@ MOD18_0224B464: ; 0x0224B464
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r2, #0x91
mov r0, #0
mov r1, #0x1a
@@ -37566,7 +37566,7 @@ _0224BB22:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
bl MOD18_0223D658
mov r2, #0
mov r1, #0x30
@@ -37598,7 +37598,7 @@ _0224BB6E:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
bl MOD18_0223D658
mov r2, #0
mov r1, #0x31
@@ -37630,7 +37630,7 @@ _0224BBBA:
mov r2, #0
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
bl MOD18_0223D658
mov r2, #0
mov r1, #0x32
@@ -37670,7 +37670,7 @@ _0224BC1E:
sub r2, r1, #6
add r3, r0, #0
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
bl MOD18_0223D658
bl MOD18_0224DD94
bl FUN_0202EDD8
@@ -38486,7 +38486,7 @@ _0224C288:
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r1, #0x92
lsl r1, r1, #2
ldrb r0, [r5, r1]
@@ -39108,7 +39108,7 @@ MOD18_0224C7D4: ; 0x0224C7D4
add r0, #0x10
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r2, #0x92
lsl r2, r2, #2
ldrb r0, [r5, r2]
@@ -39256,7 +39256,7 @@ MOD18_0224C94C: ; 0x0224C94C
add r0, r4, #0
add r0, #0x20
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x20
bl RemoveWindow
@@ -39485,7 +39485,7 @@ MOD18_0224CADC: ; 0x0224CADC
add r0, #0x20
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
_0224CB1A:
add r0, r4, #0
add r0, #0x20
@@ -39527,7 +39527,7 @@ MOD18_0224CB34: ; 0x0224CB34
add r0, #0x30
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r0, #0x30
mov r1, #0xf
@@ -39566,7 +39566,7 @@ MOD18_0224CBAC: ; 0x0224CBAC
add r0, r4, #0
add r0, #0x30
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r4, #0x30
add r0, r4, #0
bl RemoveWindow
@@ -40736,7 +40736,7 @@ MOD18_0224D56C: ; 0x0224D56C
add r0, r4, #0
add r0, #8
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #8
bl ClearWindowTilemapAndCopyToVram
@@ -40817,7 +40817,7 @@ MOD18_0224D5CC: ; 0x0224D5CC
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r2, _0224D688 ; =0x00000245
mov r0, #0
mov r1, #0x1a
@@ -41321,7 +41321,7 @@ MOD18_0224DA00: ; 0x0224DA00
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r2, #0x91
mov r0, #0
mov r1, #0x1a
@@ -41364,7 +41364,7 @@ MOD18_0224DAA8: ; 0x0224DAA8
add r4, r0, #0
add r0, #8
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #8
bl ClearWindowTilemapAndCopyToVram
@@ -41597,7 +41597,7 @@ _0224DC4C:
add r0, #8
mov r1, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
cmp r4, #0
beq _0224DC74
ldr r0, _0224DCB4 ; =MOD18_0224DBB8
@@ -41729,7 +41729,7 @@ _0224DD4C:
add r0, r5, #0
add r0, #8
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
add r0, #8
bl ClearWindowTilemapAndCopyToVram
@@ -41741,7 +41741,7 @@ _0224DD6C:
add r0, r5, #0
add r0, #8
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
_0224DD76:
mov r0, #8
str r0, [r5, #0x30]
@@ -42324,13 +42324,13 @@ MOD18_0224E0CC: ; 0x0224E0CC
add r0, r5, #4
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
ldr r2, _0224E1FC ; =0x000003D9
add r0, #0x14
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r3, _0224E200 ; =0x022507C0
add r2, sp, #0x14
ldmia r3!, {r0, r1}
@@ -42480,14 +42480,14 @@ MOD18_0224E26C: ; 0x0224E26C
add r0, r4, #0
add r0, #0x14
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x30]
ldr r2, [r4, #0x34]
bl DestroyListMenu
add r0, r4, #4
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldrb r1, [r4, #8]
ldr r0, [r4, #4]
bl ScheduleBgTilemapBufferTransfer
@@ -42783,13 +42783,13 @@ _0224E454:
add r0, #8
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
ldr r2, _0224E688 ; =0x000003D9
add r0, #0x18
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r2, _0224E68C ; =0x00000237
mov r0, #0
mov r1, #0x1a
@@ -43007,7 +43007,7 @@ MOD18_0224E6A8: ; 0x0224E6A8
add r0, r4, #0
add r0, #0x18
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, [r4, #0x2c]
ldr r1, [r4, #0x38]
ldr r2, [r4, #0x3c]
@@ -43015,7 +43015,7 @@ MOD18_0224E6A8: ; 0x0224E6A8
add r0, r4, #0
add r0, #8
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldrb r1, [r4, #0xc]
ldr r0, [r4, #8]
bl ScheduleBgTilemapBufferTransfer
diff --git a/arm9/modules/20/asm/mod20_02252440.s b/arm9/modules/20/asm/mod20_02252440.s
new file mode 100644
index 00000000..1af1ac98
--- /dev/null
+++ b/arm9/modules/20/asm/mod20_02252440.s
@@ -0,0 +1,1245 @@
+ .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 CreateHeap
+ mov r0, #3
+ mov r1, #8
+ lsl r2, r0, #0xe
+ bl CreateHeap
+ mov r0, #7
+ mov r1, #0x60
+ bl AllocFromHeap
+ add r4, r0, #0
+ beq _022524B2
+ str r4, [r5]
+ ldr r0, [sp]
+ str r6, [r4, #0x5c]
+ str r0, [r4, #0x54]
+ bl Sav2_Poketch_get
+ 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 Sav2_Poketch_GetStepCounter
+ add r1, r0, #1
+ ldr r0, _02252530 ; =0x0001869F
+ cmp r1, r0
+ bls _02252512
+ mov r1, #0
+_02252512:
+ ldr r0, [r4, #0x58]
+ bl Sav2_Poketch_SetStepCounter
+ 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 ClosePoketchApp
+ 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 ; =MOD20_022544CC
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, r4, r5, pc}
+_022525C0:
+ beq _022525C6
+ bl GF_AssertFail
+_022525C6:
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r4, #0
+ bl MOD20_0225257C
+ add r0, r4, #0
+ bl FreeToHeap
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #7
+ bl DestroyHeap
+ mov r0, #8
+ bl DestroyHeap
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022525EC: .word MOD20_022544CC
+ 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 Sav2_Poketch_GetSelectedApp
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl LoadPoketchApp
+ 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 Sav2_Poketch_CycleNextApp
+ 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 ClosePoketchApp
+ 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 Sav2_Poketch_CycleNextApp
+ 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 Sav2_Poketch_GetSelectedApp
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl LoadPoketchApp
+ 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 ClosePoketchApp
+ 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 LoadPoketchApp
+LoadPoketchApp: ; 0x022528B0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bmi _022528BC
+ cmp r4, #0x19
+ blo _022528C0
+_022528BC:
+ bl GF_AssertFail
+_022528C0:
+ mov r0, #0
+ ldr r1, [r5, #0x14]
+ mvn r0, r0
+ cmp r1, r0
+ bne _022528F0
+ ldr r2, _022528F4 ; =sPoketchAppOverlayMapping
+ mov r1, #0
+_022528CE:
+ ldr r0, [r2]
+ cmp r4, r0
+ bne _022528E8
+ ldr r0, _022528F8 ; =sPoketchAppOverlayMapping + 4
+ 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 sPoketchAppOverlayMapping
+_022528F8: .word sPoketchAppOverlayMapping + 4
+ thumb_func_end LoadPoketchApp
+
+ thumb_func_start ClosePoketchApp
+ClosePoketchApp: ; 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 ClosePoketchApp
+
+ 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 GF_AssertFail
+_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 GF_AssertFail
+_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 Poketch_InitApp
+Poketch_InitApp: ; 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 Poketch_InitApp
+
+ 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 GF_AssertFail
+_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 GF_AssertFail
+_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 ; =MOD20_022544C4
+ 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 MOD20_022544C4
+_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 PlaySE
+ 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 PlaySE
+_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 Sav2_PlayerData_GetProfileAddr
+ bl PlayerProfile_GetTrainerGender
+ cmp r0, #1
+ beq _02252C58
+ mov r0, #1
+ pop {r3, pc}
+_02252C58:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD20_02252C44
+
+ .section .rodata
+
+ .global MOD20_022544C4
+MOD20_022544C4: ; 0x022544C4
+ .byte 0x60, 0xAC, 0xDC, 0xF4, 0x10, 0xAF, 0x10, 0xCF
+
+ .global MOD20_022544CC
+MOD20_022544CC: ; 0x022544CC
+ .word MOD20_02252600, MOD20_02252688, MOD20_022527AC, MOD20_02252818
+
+ .global sPoketchAppOverlayMapping
+sPoketchAppOverlayMapping: ; 0x022544DC
+ .word 0, SDK_OVERLAY_MODULE_21_ID
+ .word 23, SDK_OVERLAY_MODULE_22_ID
+ .word 1, SDK_OVERLAY_MODULE_23_ID
+ .word 2, SDK_OVERLAY_MODULE_24_ID
+ .word 11, SDK_OVERLAY_MODULE_25_ID
+ .word 17, SDK_OVERLAY_MODULE_26_ID
+ .word 4, SDK_OVERLAY_MODULE_27_ID
+ .word 5, SDK_OVERLAY_MODULE_28_ID
+ .word 6, SDK_OVERLAY_MODULE_29_ID
+ .word 10, SDK_OVERLAY_MODULE_30_ID
+ .word 3, SDK_OVERLAY_MODULE_31_ID
+ .word 8, SDK_OVERLAY_MODULE_35_ID
+ .word 18, SDK_OVERLAY_MODULE_36_ID
+ .word 14, SDK_OVERLAY_MODULE_37_ID
+ .word 15, SDK_OVERLAY_MODULE_38_ID
+ .word 22, SDK_OVERLAY_MODULE_39_ID
+ .word 24, SDK_OVERLAY_MODULE_40_ID
+ .word 20, SDK_OVERLAY_MODULE_41_ID
+ .word 12, SDK_OVERLAY_MODULE_42_ID
+ .word 7, SDK_OVERLAY_MODULE_43_ID
+ .word 21, SDK_OVERLAY_MODULE_44_ID
+ .word 16, SDK_OVERLAY_MODULE_45_ID
+ .word 13, SDK_OVERLAY_MODULE_47_ID
+ .word 19, SDK_OVERLAY_MODULE_48_ID
+ .word 9, SDK_OVERLAY_MODULE_49_ID
+
diff --git a/arm9/modules/20/asm/mod20_02252C5C.s b/arm9/modules/20/asm/mod20_02252C5C.s
new file mode 100644
index 00000000..6cd2ee2e
--- /dev/null
+++ b/arm9/modules/20/asm/mod20_02252C5C.s
@@ -0,0 +1,1400 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 2, 0
+
+ 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 AllocFromHeap
+ 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 NNS_G2dResetOamManagerBuffer
+ 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 FreeToHeap
+ mov r0, #0
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_02252CA6:
+ mov r0, #7
+ str r6, [r4]
+ bl BgConfig_Alloc
+ 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 GfGfxLoader_GetPlttData
+ 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 FreeToHeap
+_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 Sav2_Poketch_GetScreenTint
+ 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 Sav2_Poketch_GetScreenTint
+ 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 Sav2_Poketch_GetScreenTint
+ 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 FreeToHeap
+_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 FreeToHeap
+_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 ; =MOD20_022545EC
+ 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 MOD20_022545EC
+ 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 ; =MOD20_02254644
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02252EA0: .word MOD20_02254644
+ 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 GX_DisableEngineBLayers
+ mov r0, #0x10
+ mov r1, #1
+ bl GX_EngineBToggleLayers
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r2, _02252FE0 ; =MOD20_022545B4
+ mov r1, #4
+ mov r3, #0
+ bl InitBgFromTemplate
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r2, _02252FE4 ; =MOD20_022545D0
+ mov r1, #5
+ mov r3, #0
+ bl InitBgFromTemplate
+ 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 GfGfxLoader_LoadCharData
+ 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 GfGfxLoader_LoadScrnData
+ 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 GfGfxLoader_GXLoadPalWithSrcOffset
+ 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 FillBgTilemapRect
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl BgCommitTilemapBufferToVram
+ 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 MOD20_022545B4
+_02252FE4: .word MOD20_022545D0
+_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 FillBgTilemapRect
+ 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 FillBgTilemapRect
+ 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 FillBgTilemapRect
+_022530DA:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #5
+ bl BgCommitTilemapBufferToVram
+ 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 FillBgTilemapRect
+ 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 FillBgTilemapRect
+ 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 FillBgTilemapRect
+ 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 FillBgTilemapRect
+_02253202:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #5
+ bl BgCommitTilemapBufferToVram
+ 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 FillBgTilemapRect
+ add r0, r6, #0
+ add r0, #0xa9
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl BgCommitTilemapBufferToVram
+ 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 FillBgTilemapRect
+ add r0, r6, #0
+ add r0, #0xa5
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl BgCommitTilemapBufferToVram
+ 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 LoadRectToBgTilemapRect
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl BgCommitTilemapBufferToVram
+ ldr r0, _02253334 ; =0x00000671
+ bl PlaySE
+ 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 LoadRectToBgTilemapRect
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl BgCommitTilemapBufferToVram
+ 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 LoadRectToBgTilemapRect
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl BgCommitTilemapBufferToVram
+ ldr r0, _022533BC ; =0x0000066F
+ bl PlaySE
+ 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 GfGfxLoader_LoadWholePalette
+ 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 GfGfxLoader_GXLoadPal
+ add r0, r5, #0
+ mov r1, #0xf
+ bl MOD20_022534D4
+ add r2, r4, #0
+ ldr r0, [r4, #4]
+ ldr r1, _022534D0 ; =MOD20_022545A4
+ 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 ; =MOD20_022545A4
+ 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 MOD20_022545A4
+ 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 Sav2_Poketch_GetScreenTint
+ 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 BgCommitTilemapBufferToVram
+_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 FillBgTilemapRect
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl BgCommitTilemapBufferToVram
+ 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 FillBgTilemapRect
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl BgCommitTilemapBufferToVram
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl BgCommitTilemapBufferToVram
+ 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 FreeBgTilemapBuffer
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FreeBgTilemapBuffer
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_022536C8
+
+ .section .rodata
+
+ .global MOD20_022545A4
+MOD20_022545A4: ; 0x022545A4
+ .byte 0x00, 0x00, 0x0B, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD20_022545B4
+MOD20_022545B4: ; 0x022545B4
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD20_022545D0
+MOD20_022545D0: ; 0x022545D0
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x0D, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD20_022545EC
+MOD20_022545EC: ; 0x022545EC
+ .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0015, 0x0016, 0x0017, 0x0018
+ .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D
+ .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D
+ .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D
+ .short 0x002A, 0x002B, 0x002C, 0x002D, 0x003F, 0x0040, 0x0041, 0x0042
+ .short 0x0054, 0x0055, 0x0056, 0x0057
+
+ .global MOD20_02254644
+MOD20_02254644: ; 0x02254644
+ .word 0x00000000, MOD20_02252ED0, 0x00000000
+ .word 0x00000001, MOD20_02252FF0, 0x00000004
+ .word 0x00000002, MOD20_02252FF0, 0x00000004
+ .word 0x00000003, MOD20_02253228, 0x00000004
+ .word 0x00000004, MOD20_02253100, 0x00000004
+ .word 0x00000005, MOD20_0225328C, 0x00000004
+ .word 0x00000006, MOD20_022532F0, 0x00000000
+ .word 0x00000008, MOD20_02253338, 0x00000000
+ .word 0x00000007, MOD20_02253378, 0x00000000
+ .word 0x00000009, MOD20_022533C0, 0x00000000
+ .word 0x0000000A, MOD20_022533EC, 0x00000000
+ .word 0x0000000B, MOD20_0225340C, 0x00000000
+ .word 0x0000000C, MOD20_022535CC, 0x00000000
+ .word 0x0000000D, MOD20_02253668, 0x00000000
+ .word 0x0000000E, MOD20_022536C8, 0x00000000
+ .word 0xFFFFFFFF, 0x00000000, 0x00000000
diff --git a/arm9/modules/20/asm/mod20_022536F4.s b/arm9/modules/20/asm/mod20_022536F4.s
new file mode 100644
index 00000000..1bd58d2b
--- /dev/null
+++ b/arm9/modules/20/asm/mod20_022536F4.s
@@ -0,0 +1,682 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 2, 0
+
+ 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 GF_AssertFail
+_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 GF_AssertFail
+_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 GF_AssertFail
+ 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 AllocFromHeap
+ 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 FreeToHeap
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_02253870:
+ bl GF_AssertFail
+ b _02253880
+_02253876:
+ add r3, #0xc
+ ldr r2, [r3]
+ add r0, r0, #1
+ cmp r2, r1
+ bne _022537FA
+_02253880:
+ bl GF_AssertFail
+_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 FreeToHeap
+ 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 AllocFromHeap
+ 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 ; =MOD20_0225470C
+ 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 FreeToHeap
+_02253960:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02253964: .word 0x0000024B
+_02253968: .word MOD20_0225470C
+ 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 AllocFromHeap
+ add r4, r0, #0
+ beq _022539C2
+ mov r0, #8
+ mov r1, #0x20
+ bl AllocFromHeap
+ 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 FreeToHeap
+_022539BC:
+ add r0, r4, #0
+ bl FreeToHeap
+_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 GfGfxLoader_GetPlttData
+ 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 FreeToHeap
+_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 ; =MOD20_02254708
+ ldr r1, [sp, #0xc]
+ mov r0, #8
+ ldrh r1, [r2, r1]
+ bl AllocFromHeap
+ add r7, r0, #0
+ beq _02253A98
+ mov r0, #0x13
+ mov r1, #8
+ bl NARC_ctor
+ 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 ; =MOD20_02254704
+ ldr r0, [sp, #0xc]
+ ldr r4, [sp, #0x18]
+ ldrh r5, [r1, r0]
+ ldr r1, _02253A9C ; =MOD20_02254708
+ 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 NARC_ReadFromMember
+ add r0, r7, #0
+ add r1, sp, #0x20
+ bl NNS_G2dGetUnpackedCharacterData
+ 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 NARC_dtor
+_02253A92:
+ add r0, r7, #0
+ bl FreeToHeap
+_02253A98:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02253A9C: .word MOD20_02254708
+_02253AA0: .word MOD20_02254704
+ 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 LoadRectToBgTilemapRect
+ 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 LoadRectToBgTilemapRect
+ 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 LoadRectToBgTilemapRect
+ 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 LoadRectToBgTilemapRect
+ 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 LoadRectToBgTilemapRect
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02253AA4
+
+ .section .rodata
+
+ .global MOD20_02254704
+MOD20_02254704: ; 0x02254704
+ .byte 0x00, 0x02, 0x00, 0x04
+
+ .global MOD20_02254708
+MOD20_02254708: ; 0x02254708
+ .byte 0x80, 0x02, 0x80, 0x04
+
+ .global MOD20_0225470C
+MOD20_0225470C: ; 0x0225470C
+ .byte 0x01, 0x08, 0x0F, 0x04
diff --git a/arm9/modules/20/asm/mod20_02253BA4.s b/arm9/modules/20/asm/mod20_02253BA4.s
new file mode 100644
index 00000000..0c9468d0
--- /dev/null
+++ b/arm9/modules/20/asm/mod20_02253BA4.s
@@ -0,0 +1,808 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 2, 0
+
+ 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 AllocFromHeap
+ 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 NNS_G2dGetOamManagerOamCapacity
+ strh r0, [r4, #0x10]
+ ldrh r1, [r4, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #3
+ bl AllocFromHeap
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02253C0E
+ ldrh r2, [r4, #0x10]
+ mov r1, #0x90
+ add r0, r5, #0
+ mul r1, r2
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02253C0E
+ ldrh r1, [r4, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ 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 FreeToHeapExplicit
+_02253C22:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ beq _02253C2E
+ add r0, r5, #0
+ bl FreeToHeapExplicit
+_02253C2E:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _02253C3A
+ add r0, r5, #0
+ bl FreeToHeapExplicit
+_02253C3A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FreeToHeapExplicit
+_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 FreeToHeap
+_02253C5C:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02253C66
+ bl FreeToHeap
+_02253C66:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02253C70
+ bl FreeToHeap
+_02253C70:
+ add r0, r4, #0
+ bl FreeToHeap
+_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 NNS_G2dTickCellAnimation
+ 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 NNS_G2dMakeCellToOams
+ 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 ; =FX_SinCosTable_
+ 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 ; =FX_SinCosTable_
+ 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 NNS_G2dEntryOamManagerAffine
+ 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 NNS_G2dMakeCellToOams
+_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 NNS_G2dEntryOamManagerOam
+_02253E52:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02253E58: .word FX_SinCosTable_
+_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 NNS_G2dGetAnimSequenceByIdx
+ add r1, r0, #0
+ add r0, r4, #0
+ ldr r2, [r4]
+ add r0, #8
+ bl NNS_G2dInitCellAnimation
+ 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 NNS_G2dGetAnimSequenceByIdx
+ add r1, r0, #0
+ add r0, r4, #0
+ ldr r2, [r4]
+ add r0, #8
+ bl NNS_G2dInitCellAnimation
+ 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 GfGfxLoader_UncompressFromNarc
+ str r0, [r5]
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl GfGfxLoader_UncompressFromNarc
+ 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 NNS_G2dGetUnpackedCellBank
+ 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 NNS_G2dGetUnpackedMCAnimBank
+ 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 FreeToHeapExplicit
+ mov r0, #0
+ str r0, [r4]
+_02254028:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _02254038
+ ldr r0, [r4, #0x10]
+ bl FreeToHeapExplicit
+ 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
diff --git a/arm9/modules/20/asm/mod20_02254130.s b/arm9/modules/20/asm/mod20_02254130.s
new file mode 100644
index 00000000..49c753c7
--- /dev/null
+++ b/arm9/modules/20/asm/mod20_02254130.s
@@ -0,0 +1,458 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 2, 0
+
+ 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 GF_AssertFail
+_02254144:
+ add r0, r5, #0
+ mov r1, #0x18
+ bl AllocFromHeap
+ 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 AllocFromHeap
+ 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 FreeToHeapExplicit
+ 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 GF_AssertFail
+_022541A2:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x14]
+ bl FreeToHeapExplicit
+ ldr r0, [r4, #8]
+ add r1, r4, #0
+ bl FreeToHeapExplicit
+ 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 ; =MOD20_02254710
+ 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 ; =MOD20_02254710
+ 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 MOD20_02254710
+ 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
+
+ .section .rodata
+
+ .global MOD20_02254710
+MOD20_02254710: ; 0x02254710
+ .word MOD20_02254340, MOD20_0225435C, MOD20_022543BC, MOD20_022543F4
+ .word MOD20_0225440C
diff --git a/arm9/modules/20/asm/mod20_02254420.s b/arm9/modules/20/asm/mod20_02254420.s
new file mode 100644
index 00000000..4ac3686f
--- /dev/null
+++ b/arm9/modules/20/asm/mod20_02254420.s
@@ -0,0 +1,185 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 2, 0
+
+ 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 GF_AssertFail
+_02254432:
+ cmp r4, #0x21
+ blo _0225443A
+ bl GF_AssertFail
+_0225443A:
+ cmp r5, #0x1e
+ blo _02254440
+ mov r5, #0
+_02254440:
+ cmp r4, #0x21
+ blo _02254446
+ mov r4, #0
+_02254446:
+ ldr r0, _02254458 ; =MOD20_02254744
+ lsl r1, r5, #1
+ ldrh r0, [r0, r1]
+ lsl r1, r4, #1
+ str r0, [r6]
+ ldr r0, _0225445C ; =MOD20_02254780
+ ldrh r0, [r0, r1]
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254458: .word MOD20_02254744
+_0225445C: .word MOD20_02254780
+ 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 GF_AssertFail
+_02254470:
+ ldr r0, _02254480 ; =MOD20_02254724
+ lsl r1, r5, #3
+ ldr r0, [r0, r1]
+ str r0, [r4]
+ ldr r0, _02254484 ; =MOD20_02254724 + 4
+ ldr r0, [r0, r1]
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254480: .word MOD20_02254724
+_02254484: .word MOD20_02254724 + 4
+ thumb_func_end MOD20_02254460
+
+ thumb_func_start MOD20_02254488
+MOD20_02254488: ; 0x02254488
+ push {r4, r5}
+ ldr r5, _022544B8 ; =MOD20_022547C2
+ mov r4, #0
+_0225448E:
+ ldrh r3, [r5]
+ cmp r0, r3
+ bne _022544A8
+ ldr r0, _022544BC ; =MOD20_022547C2 + 2
+ lsl r3, r4, #2
+ ldrb r0, [r0, r3]
+ str r0, [r1]
+ ldr r0, _022544C0 ; =MOD20_022547C2 + 3
+ 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 MOD20_022547C2
+_022544BC: .word MOD20_022547C2 + 2
+_022544C0: .word MOD20_022547C2 + 3
+ thumb_func_end MOD20_02254488
+
+ .section .rodata
+
+ .global MOD20_02254724
+MOD20_02254724: ; 0x02254724
+ .word 0x00000020, 0x0000002A
+ .word 0x00000032, 0x0000002A
+ .word 0x000000A8, 0x0000007A
+ .word 0x000000C2, 0x0000003A
+
+ .global MOD20_02254744
+MOD20_02254744: ; 0x02254744
+ .short 0x001A, 0x0020, 0x0026, 0x002C, 0x0032, 0x0038, 0x003E, 0x0044
+ .short 0x004A, 0x0050, 0x0056, 0x005C, 0x0062, 0x0068, 0x006E, 0x0074
+ .short 0x007A, 0x0080, 0x0086, 0x008C, 0x0092, 0x0098, 0x009E, 0x00A4
+ .short 0x00AA, 0x00B0, 0x00B6, 0x00BC, 0x00C2, 0x00C8
+
+ .global MOD20_02254780
+MOD20_02254780: ; 0x02254780
+ .short 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x001E, 0x0024
+ .short 0x002A, 0x0030, 0x0036, 0x003C, 0x0042, 0x0048, 0x004E, 0x0054
+ .short 0x005A, 0x0060, 0x0066, 0x006C, 0x0072, 0x0078, 0x007E, 0x0084
+ .short 0x008A, 0x0090, 0x0096, 0x009C, 0x00A2, 0x00A8, 0x00AE, 0x00B4
+ .short 0x00BA
+
+ .global MOD20_022547C2
+MOD20_022547C2: ; 0x022547C2
+ .short 0x0156
+ .byte 0x2F, 0x96
+ .short 0x0157
+ .byte 0x38, 0x90
+ .short 0x0158
+ .byte 0x41, 0x84
+ .short 0x0159
+ .byte 0x32, 0x7E
+ .short 0x015A
+ .byte 0x32, 0x78
+ .short 0x015B
+ .byte 0x3E, 0x6C
+ .short 0x015D
+ .byte 0x4A, 0x5A
+ .short 0x015E
+ .byte 0x50, 0x6F
+ .short 0x0161
+ .byte 0x53, 0x7E
+ .short 0x0162
+ .byte 0x65, 0x7E
+ .short 0x0164
+ .byte 0x7D, 0x7E
+ .short 0x016A
+ .byte 0x80, 0x66
+ .short 0x016B
+ .byte 0x7A, 0x5A
+ .short 0x016D
+ .byte 0x5C, 0x5A
+ .short 0x016E
+ .byte 0x68, 0x5A
+ .short 0x016F
+ .byte 0x6E, 0x8A
+ .short 0x0173
+ .byte 0x77, 0x96
+ .short 0x0175
+ .byte 0x98, 0x93
+ .short 0x017C
+ .byte 0x98, 0x78
+ .short 0x017E
+ .byte 0x8C, 0x66
+ .short 0x017F
+ .byte 0x56, 0x42
+ .short 0x0181
+ .byte 0x50, 0x33
+ .short 0x0184
+ .byte 0x29, 0x84
+ .short 0x0187
+ .byte 0x38, 0x9C
+ .short 0x01D3
+ .byte 0x3B, 0xA2
+ .short 0x0188
+ .byte 0x4A, 0xA2
+ .short 0x018B
+ .byte 0xAA, 0x8A
+ .short 0x00C8
+ .byte 0x44, 0x72
+ .short 0x00CC
+ .byte 0x38, 0x66
+
+ .data
+ .bss
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
deleted file mode 100644
index c957045f..00000000
--- a/arm9/modules/20/asm/module_20.s
+++ /dev/null
@@ -1,4748 +0,0 @@
- .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 CreateHeap
- mov r0, #3
- mov r1, #8
- lsl r2, r0, #0xe
- bl CreateHeap
- mov r0, #7
- mov r1, #0x60
- bl AllocFromHeap
- add r4, r0, #0
- beq _022524B2
- str r4, [r5]
- ldr r0, [sp]
- str r6, [r4, #0x5c]
- str r0, [r4, #0x54]
- bl Sav2_Poketch_get
- 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 Sav2_Poketch_GetStepCounter
- add r1, r0, #1
- ldr r0, _02252530 ; =0x0001869F
- cmp r1, r0
- bls _02252512
- mov r1, #0
-_02252512:
- ldr r0, [r4, #0x58]
- bl Sav2_Poketch_SetStepCounter
- 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 ClosePoketchApp
- 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 ; =MOD20_022544CC
- ldr r1, [r1, r2]
- blx r1
- pop {r3, r4, r5, pc}
-_022525C0:
- beq _022525C6
- bl GF_AssertFail
-_022525C6:
- ldr r0, [r4, #0x34]
- mov r1, #0
- str r1, [r0]
- add r0, r4, #0
- bl MOD20_0225257C
- add r0, r4, #0
- bl FreeToHeap
- add r0, r5, #0
- bl FUN_0200CAB4
- mov r0, #7
- bl DestroyHeap
- mov r0, #8
- bl DestroyHeap
- pop {r3, r4, r5, pc}
- .align 2, 0
-_022525EC: .word MOD20_022544CC
- 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 Sav2_Poketch_GetSelectedApp
- add r5, r0, #0
- add r0, r4, #0
- add r1, r5, #0
- bl LoadPoketchApp
- 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 Sav2_Poketch_CycleNextApp
- 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 ClosePoketchApp
- 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 Sav2_Poketch_CycleNextApp
- 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 Sav2_Poketch_GetSelectedApp
- add r5, r0, #0
- add r0, r4, #0
- add r1, r5, #0
- bl LoadPoketchApp
- 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 ClosePoketchApp
- 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 LoadPoketchApp
-LoadPoketchApp: ; 0x022528B0
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r4, r1, #0
- bmi _022528BC
- cmp r4, #0x19
- blo _022528C0
-_022528BC:
- bl GF_AssertFail
-_022528C0:
- mov r0, #0
- ldr r1, [r5, #0x14]
- mvn r0, r0
- cmp r1, r0
- bne _022528F0
- ldr r2, _022528F4 ; =sPoketchAppOverlayMapping
- mov r1, #0
-_022528CE:
- ldr r0, [r2]
- cmp r4, r0
- bne _022528E8
- ldr r0, _022528F8 ; =sPoketchAppOverlayMapping + 4
- 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 sPoketchAppOverlayMapping
-_022528F8: .word sPoketchAppOverlayMapping + 4
- thumb_func_end LoadPoketchApp
-
- thumb_func_start ClosePoketchApp
-ClosePoketchApp: ; 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 ClosePoketchApp
-
- 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 GF_AssertFail
-_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 GF_AssertFail
-_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 Poketch_InitApp
-Poketch_InitApp: ; 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 Poketch_InitApp
-
- 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 GF_AssertFail
-_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 GF_AssertFail
-_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 ; =MOD20_022544C4
- 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 MOD20_022544C4
-_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 PlaySE
- 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 PlaySE
-_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 Sav2_PlayerData_GetProfileAddr
- bl PlayerProfile_GetTrainerGender
- 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 AllocFromHeap
- 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 NNS_G2dResetOamManagerBuffer
- 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 FreeToHeap
- mov r0, #0
- str r0, [r5]
- pop {r3, r4, r5, r6, r7, pc}
-_02252CA6:
- mov r0, #7
- str r6, [r4]
- bl BgConfig_Alloc
- 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 GfGfxLoader_GetPlttData
- 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 FreeToHeap
-_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 Sav2_Poketch_GetScreenTint
- 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 Sav2_Poketch_GetScreenTint
- 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 Sav2_Poketch_GetScreenTint
- 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 FreeToHeap
-_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 FreeToHeap
-_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 ; =MOD20_022545EC
- 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 MOD20_022545EC
- 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 ; =MOD20_02254644
- ldr r3, [r2]
- bl MOD20_022537E0
- add sp, #0xc
- pop {pc}
- nop
-_02252EA0: .word MOD20_02254644
- 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 GX_DisableEngineBLayers
- mov r0, #0x10
- mov r1, #1
- bl GX_EngineBToggleLayers
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- ldr r2, _02252FE0 ; =MOD20_022545B4
- mov r1, #4
- mov r3, #0
- bl InitBgFromTemplate
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- ldr r2, _02252FE4 ; =MOD20_022545D0
- mov r1, #5
- mov r3, #0
- bl InitBgFromTemplate
- 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 GfGfxLoader_LoadCharData
- 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 GfGfxLoader_LoadScrnData
- 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 GfGfxLoader_GXLoadPalWithSrcOffset
- 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 FillBgTilemapRect
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #5
- bl BgCommitTilemapBufferToVram
- 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 MOD20_022545B4
-_02252FE4: .word MOD20_022545D0
-_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 FillBgTilemapRect
- 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 FillBgTilemapRect
- 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 FillBgTilemapRect
-_022530DA:
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- mov r1, #5
- bl BgCommitTilemapBufferToVram
- 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 FillBgTilemapRect
- 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 FillBgTilemapRect
- 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 FillBgTilemapRect
- 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 FillBgTilemapRect
-_02253202:
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r5, r0]
- mov r1, #5
- bl BgCommitTilemapBufferToVram
- 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 FillBgTilemapRect
- add r0, r6, #0
- add r0, #0xa9
- ldr r0, [r4, r0]
- mov r1, #5
- bl BgCommitTilemapBufferToVram
- 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 FillBgTilemapRect
- add r0, r6, #0
- add r0, #0xa5
- ldr r0, [r4, r0]
- mov r1, #5
- bl BgCommitTilemapBufferToVram
- 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 LoadRectToBgTilemapRect
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #4
- bl BgCommitTilemapBufferToVram
- ldr r0, _02253334 ; =0x00000671
- bl PlaySE
- 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 LoadRectToBgTilemapRect
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #4
- bl BgCommitTilemapBufferToVram
- 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 LoadRectToBgTilemapRect
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #4
- bl BgCommitTilemapBufferToVram
- ldr r0, _022533BC ; =0x0000066F
- bl PlaySE
- 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 GfGfxLoader_LoadWholePalette
- 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 GfGfxLoader_GXLoadPal
- add r0, r5, #0
- mov r1, #0xf
- bl MOD20_022534D4
- add r2, r4, #0
- ldr r0, [r4, #4]
- ldr r1, _022534D0 ; =MOD20_022545A4
- 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 ; =MOD20_022545A4
- 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 MOD20_022545A4
- 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 Sav2_Poketch_GetScreenTint
- 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 BgCommitTilemapBufferToVram
-_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 FillBgTilemapRect
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #5
- bl BgCommitTilemapBufferToVram
- 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 FillBgTilemapRect
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #4
- bl BgCommitTilemapBufferToVram
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #5
- bl BgCommitTilemapBufferToVram
- 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 FreeBgTilemapBuffer
- mov r0, #6
- lsl r0, r0, #6
- ldr r0, [r4, r0]
- mov r1, #5
- bl FreeBgTilemapBuffer
- 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 GF_AssertFail
-_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 GF_AssertFail
-_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 GF_AssertFail
- 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 AllocFromHeap
- 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 FreeToHeap
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
-_02253870:
- bl GF_AssertFail
- b _02253880
-_02253876:
- add r3, #0xc
- ldr r2, [r3]
- add r0, r0, #1
- cmp r2, r1
- bne _022537FA
-_02253880:
- bl GF_AssertFail
-_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 FreeToHeap
- 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 AllocFromHeap
- 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 ; =MOD20_0225470C
- 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 FreeToHeap
-_02253960:
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_02253964: .word 0x0000024B
-_02253968: .word MOD20_0225470C
- 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 AllocFromHeap
- add r4, r0, #0
- beq _022539C2
- mov r0, #8
- mov r1, #0x20
- bl AllocFromHeap
- 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 FreeToHeap
-_022539BC:
- add r0, r4, #0
- bl FreeToHeap
-_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 GfGfxLoader_GetPlttData
- 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 FreeToHeap
-_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 ; =MOD20_02254708
- ldr r1, [sp, #0xc]
- mov r0, #8
- ldrh r1, [r2, r1]
- bl AllocFromHeap
- add r7, r0, #0
- beq _02253A98
- mov r0, #0x13
- mov r1, #8
- bl NARC_ctor
- 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 ; =MOD20_02254704
- ldr r0, [sp, #0xc]
- ldr r4, [sp, #0x18]
- ldrh r5, [r1, r0]
- ldr r1, _02253A9C ; =MOD20_02254708
- 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 NARC_ReadFromMember
- add r0, r7, #0
- add r1, sp, #0x20
- bl NNS_G2dGetUnpackedCharacterData
- 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 NARC_dtor
-_02253A92:
- add r0, r7, #0
- bl FreeToHeap
-_02253A98:
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_02253A9C: .word MOD20_02254708
-_02253AA0: .word MOD20_02254704
- 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 LoadRectToBgTilemapRect
- 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 LoadRectToBgTilemapRect
- 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 LoadRectToBgTilemapRect
- 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 LoadRectToBgTilemapRect
- 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 LoadRectToBgTilemapRect
- 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 AllocFromHeap
- 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 NNS_G2dGetOamManagerOamCapacity
- strh r0, [r4, #0x10]
- ldrh r1, [r4, #0x10]
- add r0, r5, #0
- lsl r1, r1, #3
- bl AllocFromHeap
- str r0, [r4, #0x14]
- cmp r0, #0
- beq _02253C0E
- ldrh r2, [r4, #0x10]
- mov r1, #0x90
- add r0, r5, #0
- mul r1, r2
- bl AllocFromHeap
- str r0, [r4, #0xc]
- cmp r0, #0
- beq _02253C0E
- ldrh r1, [r4, #0x10]
- add r0, r5, #0
- lsl r1, r1, #2
- bl AllocFromHeap
- 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 FreeToHeapExplicit
-_02253C22:
- ldr r1, [r4, #0xc]
- cmp r1, #0
- beq _02253C2E
- add r0, r5, #0
- bl FreeToHeapExplicit
-_02253C2E:
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _02253C3A
- add r0, r5, #0
- bl FreeToHeapExplicit
-_02253C3A:
- add r0, r5, #0
- add r1, r4, #0
- bl FreeToHeapExplicit
-_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 FreeToHeap
-_02253C5C:
- ldr r0, [r4, #0xc]
- cmp r0, #0
- beq _02253C66
- bl FreeToHeap
-_02253C66:
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _02253C70
- bl FreeToHeap
-_02253C70:
- add r0, r4, #0
- bl FreeToHeap
-_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 NNS_G2dTickCellAnimation
- 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 NNS_G2dMakeCellToOams
- 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 ; =FX_SinCosTable_
- 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 ; =FX_SinCosTable_
- 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 NNS_G2dEntryOamManagerAffine
- 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 NNS_G2dMakeCellToOams
-_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 NNS_G2dEntryOamManagerOam
-_02253E52:
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_02253E58: .word FX_SinCosTable_
-_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 NNS_G2dGetAnimSequenceByIdx
- add r1, r0, #0
- add r0, r4, #0
- ldr r2, [r4]
- add r0, #8
- bl NNS_G2dInitCellAnimation
- 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 NNS_G2dGetAnimSequenceByIdx
- add r1, r0, #0
- add r0, r4, #0
- ldr r2, [r4]
- add r0, #8
- bl NNS_G2dInitCellAnimation
- 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 GfGfxLoader_UncompressFromNarc
- str r0, [r5]
- add r0, r6, #0
- add r1, r7, #0
- add r2, r4, #0
- bl GfGfxLoader_UncompressFromNarc
- 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 NNS_G2dGetUnpackedCellBank
- 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 NNS_G2dGetUnpackedMCAnimBank
- 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 FreeToHeapExplicit
- mov r0, #0
- str r0, [r4]
-_02254028:
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _02254038
- ldr r0, [r4, #0x10]
- bl FreeToHeapExplicit
- 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 GF_AssertFail
-_02254144:
- add r0, r5, #0
- mov r1, #0x18
- bl AllocFromHeap
- 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 AllocFromHeap
- 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 FreeToHeapExplicit
- 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 GF_AssertFail
-_022541A2:
- ldr r0, [r4, #8]
- ldr r1, [r4, #0x14]
- bl FreeToHeapExplicit
- ldr r0, [r4, #8]
- add r1, r4, #0
- bl FreeToHeapExplicit
- 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 ; =MOD20_02254710
- 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 ; =MOD20_02254710
- 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 MOD20_02254710
- 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 GF_AssertFail
-_02254432:
- cmp r4, #0x21
- blo _0225443A
- bl GF_AssertFail
-_0225443A:
- cmp r5, #0x1e
- blo _02254440
- mov r5, #0
-_02254440:
- cmp r4, #0x21
- blo _02254446
- mov r4, #0
-_02254446:
- ldr r0, _02254458 ; =MOD20_02254744
- lsl r1, r5, #1
- ldrh r0, [r0, r1]
- lsl r1, r4, #1
- str r0, [r6]
- ldr r0, _0225445C ; =MOD20_02254780
- ldrh r0, [r0, r1]
- str r0, [r7]
- pop {r3, r4, r5, r6, r7, pc}
- .align 2, 0
-_02254458: .word MOD20_02254744
-_0225445C: .word MOD20_02254780
- 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 GF_AssertFail
-_02254470:
- ldr r0, _02254480 ; =MOD20_02254724
- lsl r1, r5, #3
- ldr r0, [r0, r1]
- str r0, [r4]
- ldr r0, _02254484 ; =MOD20_02254724 + 4
- ldr r0, [r0, r1]
- str r0, [r6]
- pop {r4, r5, r6, pc}
- .align 2, 0
-_02254480: .word MOD20_02254724
-_02254484: .word MOD20_02254724 + 4
- thumb_func_end MOD20_02254460
-
- thumb_func_start MOD20_02254488
-MOD20_02254488: ; 0x02254488
- push {r4, r5}
- ldr r5, _022544B8 ; =MOD20_022547C2
- mov r4, #0
-_0225448E:
- ldrh r3, [r5]
- cmp r0, r3
- bne _022544A8
- ldr r0, _022544BC ; =MOD20_022547C2 + 2
- lsl r3, r4, #2
- ldrb r0, [r0, r3]
- str r0, [r1]
- ldr r0, _022544C0 ; =MOD20_022547C2 + 3
- 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 MOD20_022547C2
-_022544BC: .word MOD20_022547C2 + 2
-_022544C0: .word MOD20_022547C2 + 3
- thumb_func_end MOD20_02254488
-
- .rodata
- .global MOD20_022544C4
-MOD20_022544C4: ; 0x022544C4
- .byte 0x60, 0xAC, 0xDC, 0xF4, 0x10, 0xAF, 0x10, 0xCF
-
- .global MOD20_022544CC
-MOD20_022544CC: ; 0x022544CC
- .word MOD20_02252600, MOD20_02252688, MOD20_022527AC, MOD20_02252818
-
- .global sPoketchAppOverlayMapping
-sPoketchAppOverlayMapping: ; 0x022544DC
- .word 0, SDK_OVERLAY_MODULE_21_ID
- .word 23, SDK_OVERLAY_MODULE_22_ID
- .word 1, SDK_OVERLAY_MODULE_23_ID
- .word 2, SDK_OVERLAY_MODULE_24_ID
- .word 11, SDK_OVERLAY_MODULE_25_ID
- .word 17, SDK_OVERLAY_MODULE_26_ID
- .word 4, SDK_OVERLAY_MODULE_27_ID
- .word 5, SDK_OVERLAY_MODULE_28_ID
- .word 6, SDK_OVERLAY_MODULE_29_ID
- .word 10, SDK_OVERLAY_MODULE_30_ID
- .word 3, SDK_OVERLAY_MODULE_31_ID
- .word 8, SDK_OVERLAY_MODULE_35_ID
- .word 18, SDK_OVERLAY_MODULE_36_ID
- .word 14, SDK_OVERLAY_MODULE_37_ID
- .word 15, SDK_OVERLAY_MODULE_38_ID
- .word 22, SDK_OVERLAY_MODULE_39_ID
- .word 24, SDK_OVERLAY_MODULE_40_ID
- .word 20, SDK_OVERLAY_MODULE_41_ID
- .word 12, SDK_OVERLAY_MODULE_42_ID
- .word 7, SDK_OVERLAY_MODULE_43_ID
- .word 21, SDK_OVERLAY_MODULE_44_ID
- .word 16, SDK_OVERLAY_MODULE_45_ID
- .word 13, SDK_OVERLAY_MODULE_47_ID
- .word 19, SDK_OVERLAY_MODULE_48_ID
- .word 9, SDK_OVERLAY_MODULE_49_ID
-
- .global MOD20_022545A4
-MOD20_022545A4: ; 0x022545A4
- .byte 0x00, 0x00, 0x0B, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD20_022545B4
-MOD20_022545B4: ; 0x022545B4
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD20_022545D0
-MOD20_022545D0: ; 0x022545D0
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x0D, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD20_022545EC
-MOD20_022545EC: ; 0x022545EC
- .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0015, 0x0016, 0x0017, 0x0018
- .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D
- .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D
- .short 0x002A, 0x002B, 0x002C, 0x002D, 0x002A, 0x002B, 0x002C, 0x002D
- .short 0x002A, 0x002B, 0x002C, 0x002D, 0x003F, 0x0040, 0x0041, 0x0042
- .short 0x0054, 0x0055, 0x0056, 0x0057
-
- .global MOD20_02254644
-MOD20_02254644: ; 0x02254644
- .word 0x00000000, MOD20_02252ED0, 0x00000000
- .word 0x00000001, MOD20_02252FF0, 0x00000004
- .word 0x00000002, MOD20_02252FF0, 0x00000004
- .word 0x00000003, MOD20_02253228, 0x00000004
- .word 0x00000004, MOD20_02253100, 0x00000004
- .word 0x00000005, MOD20_0225328C, 0x00000004
- .word 0x00000006, MOD20_022532F0, 0x00000000
- .word 0x00000008, MOD20_02253338, 0x00000000
- .word 0x00000007, MOD20_02253378, 0x00000000
- .word 0x00000009, MOD20_022533C0, 0x00000000
- .word 0x0000000A, MOD20_022533EC, 0x00000000
- .word 0x0000000B, MOD20_0225340C, 0x00000000
- .word 0x0000000C, MOD20_022535CC, 0x00000000
- .word 0x0000000D, MOD20_02253668, 0x00000000
- .word 0x0000000E, MOD20_022536C8, 0x00000000
- .word 0xFFFFFFFF, 0x00000000, 0x00000000
-
- .global MOD20_02254704
-MOD20_02254704: ; 0x02254704
- .byte 0x00, 0x02, 0x00, 0x04
-
- .global MOD20_02254708
-MOD20_02254708: ; 0x02254708
- .byte 0x80, 0x02, 0x80, 0x04
-
- .global MOD20_0225470C
-MOD20_0225470C: ; 0x0225470C
- .byte 0x01, 0x08, 0x0F, 0x04
-
- .global MOD20_02254710
-MOD20_02254710: ; 0x02254710
- .word MOD20_02254340, MOD20_0225435C, MOD20_022543BC, MOD20_022543F4
- .word MOD20_0225440C
-
- .global MOD20_02254724
-MOD20_02254724: ; 0x02254724
- .word 0x00000020, 0x0000002A
- .word 0x00000032, 0x0000002A
- .word 0x000000A8, 0x0000007A
- .word 0x000000C2, 0x0000003A
-
- .global MOD20_02254744
-MOD20_02254744: ; 0x02254744
- .short 0x001A, 0x0020, 0x0026, 0x002C, 0x0032, 0x0038, 0x003E, 0x0044
- .short 0x004A, 0x0050, 0x0056, 0x005C, 0x0062, 0x0068, 0x006E, 0x0074
- .short 0x007A, 0x0080, 0x0086, 0x008C, 0x0092, 0x0098, 0x009E, 0x00A4
- .short 0x00AA, 0x00B0, 0x00B6, 0x00BC, 0x00C2, 0x00C8
-
- .global MOD20_02254780
-MOD20_02254780: ; 0x02254780
- .short 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x001E, 0x0024
- .short 0x002A, 0x0030, 0x0036, 0x003C, 0x0042, 0x0048, 0x004E, 0x0054
- .short 0x005A, 0x0060, 0x0066, 0x006C, 0x0072, 0x0078, 0x007E, 0x0084
- .short 0x008A, 0x0090, 0x0096, 0x009C, 0x00A2, 0x00A8, 0x00AE, 0x00B4
- .short 0x00BA
-
- .global MOD20_022547C2
-MOD20_022547C2: ; 0x022547C2
- .short 0x0156
- .byte 0x2F, 0x96
- .short 0x0157
- .byte 0x38, 0x90
- .short 0x0158
- .byte 0x41, 0x84
- .short 0x0159
- .byte 0x32, 0x7E
- .short 0x015A
- .byte 0x32, 0x78
- .short 0x015B
- .byte 0x3E, 0x6C
- .short 0x015D
- .byte 0x4A, 0x5A
- .short 0x015E
- .byte 0x50, 0x6F
- .short 0x0161
- .byte 0x53, 0x7E
- .short 0x0162
- .byte 0x65, 0x7E
- .short 0x0164
- .byte 0x7D, 0x7E
- .short 0x016A
- .byte 0x80, 0x66
- .short 0x016B
- .byte 0x7A, 0x5A
- .short 0x016D
- .byte 0x5C, 0x5A
- .short 0x016E
- .byte 0x68, 0x5A
- .short 0x016F
- .byte 0x6E, 0x8A
- .short 0x0173
- .byte 0x77, 0x96
- .short 0x0175
- .byte 0x98, 0x93
- .short 0x017C
- .byte 0x98, 0x78
- .short 0x017E
- .byte 0x8C, 0x66
- .short 0x017F
- .byte 0x56, 0x42
- .short 0x0181
- .byte 0x50, 0x33
- .short 0x0184
- .byte 0x29, 0x84
- .short 0x0187
- .byte 0x38, 0x9C
- .short 0x01D3
- .byte 0x3B, 0xA2
- .short 0x0188
- .byte 0x4A, 0xA2
- .short 0x018B
- .byte 0xAA, 0x8A
- .short 0x00C8
- .byte 0x44, 0x72
- .short 0x00CC
- .byte 0x38, 0x66
-
- .data
- .bss
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
index 0bff7b6e..08da06f3 100644
--- a/arm9/modules/53/asm/module_53.s
+++ b/arm9/modules/53/asm/module_53.s
@@ -352,7 +352,7 @@ _021D77D8:
blt _021D77D8
ldr r0, [r6, #0x34]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
add r0, r6, #0
@@ -434,7 +434,7 @@ MOD53_021D78A8: ; 0x021D78A8
push {r4, lr}
add r4, r0, #0
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
add r0, r4, #0
bl DoScheduledBgGpuUpdates
ldr r3, _021D78C8 ; =0x027E0000
@@ -2097,7 +2097,7 @@ _021D861E:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
_021D8660:
add r0, r5, #0
bl MOD53_021D9440
@@ -2119,7 +2119,7 @@ _021D8672:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
bl MOD53_021D9440
mov r0, #0xb2
@@ -2446,7 +2446,7 @@ _021D8916:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
bl MOD53_021D9440
bl FUN_02031190
@@ -3640,7 +3640,7 @@ MOD53_021D91C8: ; 0x021D91C8
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
cmp r4, #0
bne _021D9218
mov r4, #0
@@ -3691,11 +3691,11 @@ MOD53_021D925C: ; 0x021D925C
mov r1, #0xb6
lsl r1, r1, #2
add r0, r0, r1
- ldr r3, _021D9268 ; =FUN_0200D0E0
+ ldr r3, _021D9268 ; =ClearFrameAndWindow2
mov r1, #0
bx r3
.align 2, 0
-_021D9268: .word FUN_0200D0E0
+_021D9268: .word ClearFrameAndWindow2
thumb_func_end MOD53_021D925C
thumb_func_start MOD53_021D926C
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index 8795cd7f..c91a960a 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -301,7 +301,7 @@ _021D776C:
blt _021D776C
ldr r0, [r6, #0x50]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
add r0, r6, #0
@@ -400,7 +400,7 @@ MOD54_021D784C: ; 0x021D784C
push {r4, lr}
add r4, r0, #0
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
add r0, r4, #0
bl DoScheduledBgGpuUpdates
ldr r3, _021D786C ; =0x027E0000
@@ -3020,7 +3020,7 @@ MOD54_021D8C90: ; 0x021D8C90
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
cmp r6, #0
bne _021D8D00
add r0, r5, #0
@@ -3082,11 +3082,11 @@ MOD54_021D8D40: ; 0x021D8D40
mov r1, #0xba
lsl r1, r1, #2
add r0, r0, r1
- ldr r3, _021D8D4C ; =FUN_0200D0E0
+ ldr r3, _021D8D4C ; =ClearFrameAndWindow2
mov r1, #0
bx r3
.align 2, 0
-_021D8D4C: .word FUN_0200D0E0
+_021D8D4C: .word ClearFrameAndWindow2
thumb_func_end MOD54_021D8D40
thumb_func_start MOD54_021D8D50
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
index ce354a55..9c3b42a6 100644
--- a/arm9/modules/55/asm/module_55.s
+++ b/arm9/modules/55/asm/module_55.s
@@ -311,7 +311,7 @@ _021D7754:
mov r1, #0
add r0, #0xec
str r1, [r0]
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
mov r0, #0xeb
@@ -370,7 +370,7 @@ _021D77E6:
ldr r0, [r4, #4]
bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _021D7804 ; =0x027E0000
ldr r1, _021D7808 ; =0x00003FF8
mov r0, #1
@@ -2203,7 +2203,7 @@ MOD55_021D868C: ; 0x021D868C
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
@@ -3295,7 +3295,7 @@ _021D8F1A:
add r0, r5, r0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [r5, #0x14]
mov r1, #0
str r0, [sp, #0x1c]
@@ -3448,7 +3448,7 @@ _021D9098:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe2
lsl r0, r0, #2
add r0, r5, r0
@@ -5404,7 +5404,7 @@ _021DA0D0:
add r0, r5, r0
mov r1, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -5485,7 +5485,7 @@ _021DA17C:
add r0, r5, r0
mov r1, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
add r2, r5, #0
str r3, [sp]
@@ -5518,11 +5518,11 @@ MOD55_021DA214: ; 0x021DA214
mov r1, #0xce
lsl r1, r1, #2
add r0, r0, r1
- ldr r3, _021DA220 ; =FUN_0200D0E0
+ ldr r3, _021DA220 ; =ClearFrameAndWindow2
mov r1, #0
bx r3
.align 2, 0
-_021DA220: .word FUN_0200D0E0
+_021DA220: .word ClearFrameAndWindow2
thumb_func_end MOD55_021DA214
thumb_func_start MOD55_021DA224
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index 61f44b88..76c24a3f 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -509,7 +509,7 @@ _022121EC:
lsl r0, r0, #2
ldr r0, [r6, r0]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
add r0, r6, #0
@@ -577,7 +577,7 @@ MOD56_0221228C: ; 0x0221228C
ldr r0, [r0]
bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _022122AC ; =0x027E0000
ldr r1, _022122B0 ; =0x00003FF8
mov r0, #1
@@ -1313,7 +1313,7 @@ MOD56_022128A4: ; 0x022128A4
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
@@ -1768,7 +1768,7 @@ _02212C74:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -1828,7 +1828,7 @@ _02212CEC:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -1896,7 +1896,7 @@ _02212D74:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -2279,7 +2279,7 @@ MOD56_02213048: ; 0x02213048
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -2336,7 +2336,7 @@ MOD56_022130A4: ; 0x022130A4
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -2747,7 +2747,7 @@ _022133DA:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -3515,7 +3515,7 @@ MOD56_02213990: ; 0x02213990
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdf
lsl r0, r0, #2
add r0, r5, r0
@@ -3591,7 +3591,7 @@ MOD56_02213A40: ; 0x02213A40
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xd3
lsl r0, r0, #2
add r0, r4, r0
@@ -3655,7 +3655,7 @@ MOD56_02213A94: ; 0x02213A94
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
@@ -5089,7 +5089,7 @@ _02214602:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
@@ -5120,7 +5120,7 @@ _02214642:
add r0, r5, r0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
@@ -5245,7 +5245,7 @@ _0221476E:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
@@ -5286,7 +5286,7 @@ _022147CE:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
@@ -5370,7 +5370,7 @@ _02214868:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
@@ -5406,7 +5406,7 @@ _0221488C:
add r0, r5, r0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
@@ -5506,7 +5506,7 @@ _02214994:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
@@ -5704,7 +5704,7 @@ _02214ADC:
add r0, r5, r0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
@@ -6064,7 +6064,7 @@ _02214DEC:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe3
lsl r0, r0, #2
add r0, r4, r0
@@ -6990,7 +6990,7 @@ MOD56_022154BC: ; 0x022154BC
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
@@ -7536,7 +7536,7 @@ MOD56_022159B0: ; 0x022159B0
add r4, r1, #0
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
@@ -8176,7 +8176,7 @@ MOD56_02215EA4: ; 0x02215EA4
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -8192,7 +8192,7 @@ _02215EE0:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xcf
lsl r0, r0, #2
add r0, r5, r0
@@ -8279,7 +8279,7 @@ _02215F82:
add r0, r5, r0
mov r1, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #1
bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
@@ -8327,7 +8327,7 @@ MOD56_02215FF4: ; 0x02215FF4
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
@@ -8343,7 +8343,7 @@ _02216024:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xcf
lsl r0, r0, #2
add r0, r5, r0
@@ -8395,7 +8395,7 @@ _02216048:
add r0, r5, r0
mov r1, #1
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r3, #0
mov r0, #0xdb
lsl r0, r0, #2
@@ -8487,7 +8487,7 @@ _02216154:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
@@ -8670,7 +8670,7 @@ _022162B8:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
index bbf164b2..ec406679 100644
--- a/arm9/modules/57/asm/module_57.s
+++ b/arm9/modules/57/asm/module_57.s
@@ -1941,7 +1941,7 @@ _021D8470:
MOD57_021D848C: ; 0x021D848C
push {r3, lr}
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _021D84A4 ; =0x027E0000
ldr r1, _021D84A8 ; =0x00003FF8
mov r0, #1
@@ -3996,7 +3996,7 @@ _021D94F4:
blo _021D94F4
ldr r0, [r5]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
pop {r4, r5, r6, pc}
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
index 1cdd6b43..88628998 100644
--- a/arm9/modules/58/asm/module_58.s
+++ b/arm9/modules/58/asm/module_58.s
@@ -247,7 +247,7 @@ _021D9C40:
blt _021D9C40
ldr r0, [r6, #0x3c]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
add r0, r6, #0
@@ -287,7 +287,7 @@ MOD58_021D9CB4: ; 0x021D9CB4
push {r4, lr}
add r4, r0, #0
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
add r0, r4, #0
bl DoScheduledBgGpuUpdates
ldr r3, _021D9CD4 ; =0x027E0000
@@ -1567,7 +1567,7 @@ _021DA70E:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _021DA784 ; =0x00005C9C
ldr r0, [r5, r0]
bl FUN_020146C4
@@ -1598,7 +1598,7 @@ _021DA748:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _021DA784 ; =0x00005C9C
ldr r0, [r5, r0]
bl FUN_020146C4
@@ -1638,7 +1638,7 @@ _021DA7A4:
str r1, [r5, r0]
sub r0, #0x38
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _021DA7F0 ; =0x00005C9C
ldr r0, [r5, r0]
bl FUN_020146C4
@@ -1659,7 +1659,7 @@ _021DA7D4:
str r1, [r5, r0]
sub r0, #0x38
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _021DA7F0 ; =0x00005C9C
ldr r0, [r5, r0]
bl FUN_020146C4
@@ -2224,7 +2224,7 @@ MOD58_021DAB94: ; 0x021DAB94
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r5, #0xc]
bl Options_GetTextFrameDelay
mov r3, #0
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s
index 27c05dd6..7cb6272f 100644
--- a/arm9/modules/59/asm/mod59_021D74E0_asm.s
+++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s
@@ -630,7 +630,7 @@ _021D7C5E:
add r0, #0x1c
add r1, r4, #0
mov r3, #4
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #1
bl TextFlags_SetCanABSpeedUpPrint
add r0, r4, #0
@@ -843,7 +843,7 @@ _021D7DF2:
ldr r2, _021D7EC4 ; =0x000003D9
mov r1, #1
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
add r0, #0x30
bl CopyWindowToVram
@@ -867,7 +867,7 @@ _021D7E66:
add r0, r5, #0
add r0, #0x30
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r5, #0
add r0, #0x30
bl RemoveWindow
@@ -3145,24 +3145,24 @@ _021D90E2:
add r2, r5, #0
mov r3, #0xb
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #2
str r0, [sp]
mov r0, #1
mov r1, #0x10
add r2, r5, #0
mov r3, #0xd
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #0x33
str r0, [r4, #0xc]
b _021D985C
_021D9106:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D91F6
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D91F6
mov r0, #1
@@ -3170,24 +3170,24 @@ _021D9106:
mov r2, #0x10
mov r3, #0xb
str r0, [sp]
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #2
str r0, [sp]
mov r0, #1
add r1, r5, #0
mov r2, #0x10
mov r3, #0xd
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #0x34
str r0, [r4, #0xc]
b _021D985C
_021D913E:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D91F6
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D91F6
mov r0, #1
@@ -3196,24 +3196,24 @@ _021D913E:
mov r1, #0x10
add r2, r5, #0
mov r3, #0xb
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #2
str r0, [sp]
mov r0, #4
mov r1, #0x10
add r2, r5, #0
mov r3, #0xd
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #0x35
str r0, [r4, #0xc]
b _021D985C
_021D9178:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D91F6
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D91F6
mov r0, #0x36
@@ -3244,14 +3244,14 @@ _021D9192:
add r1, r5, #0
add r2, r0, #0
mov r3, #0xb
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #2
str r0, [sp]
mov r0, #0x10
add r1, r5, #0
add r2, r0, #0
mov r3, #0xd
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #0x37
str r0, [r4, #0xc]
b _021D985C
@@ -3260,14 +3260,14 @@ _021D91E4:
add r1, #0x94
bl MOD59_021D86BC
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
beq _021D91F8
_021D91F6:
b _021D985C
_021D91F8:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D92FA
mov r0, #0x38
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
index 6d3eade4..f2a76930 100644
--- a/arm9/modules/60/asm/module_60.s
+++ b/arm9/modules/60/asm/module_60.s
@@ -945,13 +945,13 @@ MOD60_021D7BA4: ; 0x021D7BA4
add r0, #0x3c
mov r1, #1
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r4, #0x4c
ldr r2, _021D7CD0 ; =0x0000023B
add r0, r4, #0
mov r1, #1
mov r3, #0xf
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add sp, #0x14
pop {r3, r4, pc}
nop
@@ -966,11 +966,11 @@ MOD60_021D7CD4: ; 0x021D7CD4
add r5, r0, #0
add r0, #0x3c
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r5, #0
add r0, #0x4c
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r6, #0
add r5, #0x2c
add r7, r6, #0
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
index d58310fa..4c119173 100644
--- a/arm9/modules/61/asm/module_61.s
+++ b/arm9/modules/61/asm/module_61.s
@@ -301,7 +301,7 @@ _021D7702:
mov r1, #1
mov r2, #0xa
mov r3, #6
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0
add r0, #0x94
mov r1, #0xff
@@ -341,7 +341,7 @@ _021D775E:
add r0, r5, #0
add r0, #0x94
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
add r0, #0x94
bl ClearWindowTilemapAndCopyToVram
@@ -428,7 +428,7 @@ _021D77F2:
mov r2, #0xa
mov r3, #6
strb r1, [r5, #0x13]
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0
add r0, #0x94
mov r1, #0xff
@@ -496,7 +496,7 @@ _021D788A:
add r0, r5, #0
add r0, #0x94
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
add r0, #0x94
bl ClearWindowTilemapAndCopyToVram
diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s
index 35c6e17d..722bfcff 100644
--- a/arm9/modules/62/asm/module_62.s
+++ b/arm9/modules/62/asm/module_62.s
@@ -2030,7 +2030,7 @@ _0222E4D0:
ldr r0, [sp, #0x18]
mov r2, #0x1f
mov r3, #0xd
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x35
str r0, [sp]
mov r0, #2
@@ -3328,7 +3328,7 @@ MOD62_0222EEE0: ; 0x0222EEE0
add r0, r5, #0
add r2, r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -4600,7 +4600,7 @@ MOD62_0222F904: ; 0x0222F904
add r4, r0, #0
add r0, #0xfc
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0xfc
bl ClearWindowTilemapAndCopyToVram
@@ -6693,7 +6693,7 @@ _022309DC:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x43
lsl r0, r0, #2
add r0, r4, r0
diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s
index 0dded682..77ecf51d 100644
--- a/arm9/modules/63/asm/mod63_021D74E0.s
+++ b/arm9/modules/63/asm/mod63_021D74E0.s
@@ -1136,11 +1136,11 @@ _021D7E18:
b _021D824E
_021D7E24:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D7E38
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
beq _021D7E3A
_021D7E38:
@@ -1157,14 +1157,14 @@ _021D7E3A:
mov r1, #0x10
add r2, r6, #0
mov r3, #6
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #2
str r0, [sp]
mov r0, #0xa
mov r1, #0x10
add r2, r6, #0
mov r3, #7
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _021D80F0 ; =0x00000116
mov r1, #2
strh r1, [r4, r0]
@@ -1188,11 +1188,11 @@ _021D7E7E:
b _021D824E
_021D7E8C:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D7F94
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #1
bne _021D7F94
mov r0, #1
@@ -1201,14 +1201,14 @@ _021D7E8C:
add r1, r6, #0
mov r2, #0x10
mov r3, #6
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #2
str r0, [sp]
mov r0, #0xa
add r1, r6, #0
mov r2, #0x10
mov r3, #7
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, _021D80F0 ; =0x00000116
mov r1, #3
strh r1, [r4, r0]
@@ -1759,11 +1759,11 @@ _021D8272:
add r0, r4, #0
mov r1, #6
mov r2, #1
- bl FUN_0200A274
+ bl SetBrightness
add r0, r4, #0
mov r1, #7
mov r2, #2
- bl FUN_0200A274
+ bl SetBrightness
add r0, r5, #0
mov r1, #2
add r0, #0xa4
diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s
index 0fd84316..18a7c3b2 100644
--- a/arm9/modules/63/asm/mod63_021D8890.s
+++ b/arm9/modules/63/asm/mod63_021D8890.s
@@ -502,17 +502,17 @@ _021D8CA4: .word 0x04000580
thumb_func_start MOD63_021D8CA8
MOD63_021D8CA8: ; 0x021D8CA8
- ldr r3, _021D8CAC ; =FUN_02009F80
+ ldr r3, _021D8CAC ; =ApplyAndResetOamManagerBuffer
bx r3
.align 2, 0
-_021D8CAC: .word FUN_02009F80
+_021D8CAC: .word ApplyAndResetOamManagerBuffer
thumb_func_end MOD63_021D8CA8
thumb_func_start MOD63_021D8CB0
MOD63_021D8CB0: ; 0x021D8CB0
push {r4, lr}
add r4, r0, #0
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r0, [r4, #0x4c]
bl MOD63_021DB598
pop {r4, pc}
@@ -565,7 +565,7 @@ _021D8D0C: .word 0x0000209F
MOD63_021D8D10: ; 0x021D8D10
push {r4, lr}
add r4, r0, #0
- bl FUN_0200A2AC
+ bl InitAllScreenBrightnessData
ldr r1, _021D8D90 ; =0x00007FFF
mov r0, #0
bl FUN_0200E3A0
@@ -1599,7 +1599,7 @@ _021D950C:
mov r0, #0x10
mov r1, #1
mov r2, #2
- bl FUN_0200A274
+ bl SetBrightness
mov r0, #1
add r5, #0x36
strb r0, [r5]
@@ -2178,7 +2178,7 @@ _021D9A42:
mov r1, #0
mov r2, #0x10
mov r3, #1
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldrb r0, [r4, #1]
add r0, r0, #1
strb r0, [r4, #1]
diff --git a/arm9/modules/63/asm/mod63_021DA640.s b/arm9/modules/63/asm/mod63_021DA640.s
index 5bcdfbd2..698fc468 100644
--- a/arm9/modules/63/asm/mod63_021DA640.s
+++ b/arm9/modules/63/asm/mod63_021DA640.s
@@ -504,7 +504,7 @@ _021DAA32:
blo _021DAA32
ldr r0, [r5]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
pop {r3, r4, r5, r6, r7, pc}
diff --git a/arm9/modules/63/asm/mod63_021DAE5C.s b/arm9/modules/63/asm/mod63_021DAE5C.s
index efa1a033..fe1e0252 100644
--- a/arm9/modules/63/asm/mod63_021DAE5C.s
+++ b/arm9/modules/63/asm/mod63_021DAE5C.s
@@ -377,7 +377,7 @@ _021DB126:
blo _021DB126
ldr r0, [r5]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
pop {r4, r5, r6, pc}
diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s
index ce6e5e5e..aaf61da1 100644
--- a/arm9/modules/64/asm/module_64.s
+++ b/arm9/modules/64/asm/module_64.s
@@ -308,7 +308,7 @@ _021D7726:
MOD64_021D77A4: ; 0x021D77A4
push {r4, lr}
add r4, r0, #0
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
@@ -384,7 +384,7 @@ MOD64_021D7810: ; 0x021D7810
thumb_func_start MOD64_021D7828
MOD64_021D7828: ; 0x021D7828
push {r3, lr}
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
bl MOD64_021D7964
@@ -711,7 +711,7 @@ MOD64_021D7A54: ; 0x021D7A54
ldr r0, [r5]
lsl r2, r2, #8
add r3, r1, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -2336,7 +2336,7 @@ _021D86F8:
add r0, r5, #0
lsl r2, r2, #8
add r3, r1, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r6, #0
bl String_dtor
add r0, r4, #0
@@ -2393,7 +2393,7 @@ _021D8770:
add r0, r5, #0
lsl r2, r2, #8
add r3, r1, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r6, #0
bl DestroyMsgData
add r0, r4, #0
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index 0e8bbfba..932f17df 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -542,7 +542,7 @@ _021D78FC:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #1
strh r0, [r4, #0x18]
mov r0, #0
@@ -577,7 +577,7 @@ _021D7940:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0x42
lsl r0, r0, #2
add r0, r4, r0
@@ -1393,7 +1393,7 @@ MOD65_021D7FAC: ; 0x021D7FAC
add r0, r5, r0
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_021D7FCA:
mov r0, #0xd8
str r0, [sp]
@@ -2268,7 +2268,7 @@ _021D8648:
mov r1, #1
mov r2, #0x1f
mov r3, #0xf
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r3, [r5]
add r0, r5, #0
mov r1, #0
@@ -2293,7 +2293,7 @@ MOD65_021D86BC: ; 0x021D86BC
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0x46
lsl r0, r0, #2
add r0, r4, r0
@@ -3838,7 +3838,7 @@ MOD65_021D92C4: ; 0x021D92C4
add r0, #0x6c
add r2, r1, #0
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
add r0, #0x6c
mov r1, #0xff
@@ -3914,7 +3914,7 @@ _021D9366:
add r0, r4, #0
add r0, #0x6c
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r4, #0x6c
add r0, r4, #0
bl ClearWindowTilemapAndCopyToVram
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
index ca8faeb0..ec275cac 100644
--- a/arm9/modules/66/asm/module_66.s
+++ b/arm9/modules/66/asm/module_66.s
@@ -1347,7 +1347,7 @@ _021D7F44:
lsr r0, r0, #0x18
str r0, [sp]
add r0, r7, #0
- bl FUN_0200D6F8
+ bl DrawFrameAndWindow3
add r0, r7, #0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -2052,7 +2052,7 @@ MOD66_021D8494: ; 0x021D8494
mov r2, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x1c
- bl FUN_0200D7A0
+ bl ClearFrameAndWindow3
ldr r0, [r6, #0x28]
mov r1, #4
bl ScheduleBgTilemapBufferTransfer
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
index 1667a6f0..78dbeb0f 100644
--- a/arm9/modules/69/asm/module_69.s
+++ b/arm9/modules/69/asm/module_69.s
@@ -712,7 +712,7 @@ MOD69_0222DB2C: ; 0x0222DB2C
str r1, [r0]
ldr r0, [r4, #0x24]
bl FUN_0201FDEC
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
_0222DB8E:
add sp, #8
pop {r4, pc}
@@ -1451,7 +1451,7 @@ _0222E1C2:
bl FreeToHeap
ldr r0, [r6, #0x24]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -4231,4 +4231,3 @@ MOD69_0222F940: ; 0x0222F940
.global MOD69_0222F960
MOD69_0222F960: ; 0x0222F960
.space 0x20
-
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s
index 8dc21247..e2ede862 100644
--- a/arm9/modules/70/asm/module_70.s
+++ b/arm9/modules/70/asm/module_70.s
@@ -524,7 +524,7 @@ MOD70_021D78A0: ; 0x021D78A0
bl DestroyMsgData
ldr r0, [r4, #0x34]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
ldr r0, [r4, #0x10]
bl FreeToHeap
add r0, r4, #0
@@ -538,7 +538,7 @@ MOD70_021D790C: ; 0x021D790C
push {r3, lr}
ldr r0, [r0, #0x34]
bl FUN_0201FDEC
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _021D7928 ; =0x027E0000
ldr r1, _021D792C ; =0x00003FF8
mov r0, #1
@@ -890,14 +890,14 @@ MOD70_021D7AF4: ; 0x021D7AF4
mov r1, #0
lsr r2, r2, #0x10
mov r3, #2
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
lsl r2, r4, #0x10
add r0, #0x24
mov r1, #0
lsr r2, r2, #0x10
mov r3, #2
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [r5, #0x10]
mov r1, #1
bl BgCommitTilemapBufferToVram
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index 5ece5081..9499d99e 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -1208,7 +1208,7 @@ _0222DFD6:
mov r0, #8
sub r2, #0x10
mov r3, #0x1e
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #1
add r1, r0, #0
bl ToggleBgLayer
@@ -1227,7 +1227,7 @@ _0222DFD6:
b _0222E0E8
_0222E010:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _0222E0E8
ldr r0, _0222E0F8 ; =0x00002218
@@ -1264,7 +1264,7 @@ _0222E054:
mov r0, #8
sub r2, #0x10
mov r3, #0x17
- bl FUN_0200A208
+ bl StartBrightnessTransition
mov r0, #4
mov r1, #1
bl ToggleBgLayer
@@ -1285,13 +1285,13 @@ _0222E054:
b _0222E0E8
_0222E094:
mov r0, #2
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _0222E0E8
ldr r0, _0222E110 ; =0x000005A8
mov r1, #0
add r0, r4, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r1, #0
str r1, [sp]
mov r0, #0x20
@@ -1661,7 +1661,7 @@ _0222E3AC:
lsl r0, r0, #2
ldr r0, [r6, r0]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
pop {r3, r4, r5, r6, r7, pc}
@@ -1827,7 +1827,7 @@ MOD71_0222E4DC: ; 0x0222E4DC
str r1, [r5, r0]
_0222E52E:
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _0222E550 ; =0x027E0000
ldr r1, _0222E554 ; =0x00003FF8
mov r0, #1
@@ -4374,7 +4374,7 @@ _0222F9E4:
ldr r0, _0222FA30 ; =0x00003684
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _0222FA30 ; =0x00003684
add r0, r5, r0
bl RemoveWindow
@@ -6984,14 +6984,14 @@ MOD71_02230F40: ; 0x02230F40
add r0, r5, #0
mov r1, #0
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
b _02230F76
_02230F6A:
ldr r2, _02230FA8 ; =0x000001F7
add r0, r5, #0
mov r1, #0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
_02230F76:
add r0, r5, #0
mov r1, #0xf
@@ -7070,7 +7070,7 @@ MOD71_02231004: ; 0x02231004
ldr r2, _02231014 ; =0x000001F7
mov r1, #0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
pop {r3, pc}
nop
_02231014: .word 0x000001F7
@@ -7102,7 +7102,7 @@ MOD71_02231018: ; 0x02231018
add r0, r4, #0
mov r1, #0
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r3, _02231090 ; =0x022313D4
add r2, sp, #0x14
add r7, r2, #0
diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s
index 28b61540..4fe0dba7 100644
--- a/arm9/modules/73/asm/module_73.s
+++ b/arm9/modules/73/asm/module_73.s
@@ -2403,7 +2403,7 @@ _021D88AA:
MOD73_021D88B0: ; 0x021D88B0
push {r4, lr}
add r4, r0, #0
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r0, [r4, #0x20]
cmp r0, #0
beq _021D88C2
@@ -2635,7 +2635,7 @@ _021D8A70: .word 0x00200010
thumb_func_start MOD73_021D8A74
MOD73_021D8A74: ; 0x021D8A74
push {r3, lr}
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
pop {r3, pc}
@@ -4816,7 +4816,7 @@ MOD73_021D9AC8: ; 0x021D9AC8
ldr r0, [r4, #8]
mov r2, #1
add r3, r1, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
pop {r4, pc}
thumb_func_end MOD73_021D9AC8
@@ -5006,7 +5006,7 @@ MOD73_021D9BE0: ; 0x021D9BE0
ldr r0, [r5, #8]
add r2, r1, #0
mov r3, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -6189,7 +6189,7 @@ MOD73_021DA4D4: ; 0x021DA4D4
mov r1, #0
mov r2, #0x1f
mov r3, #1
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [r4, #0x10]
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -6208,7 +6208,7 @@ MOD73_021DA4D4: ; 0x021DA4D4
mov r1, #0
mov r2, #0x1f
mov r3, #1
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [r4, #0xc]
bl ScheduleWindowCopyToVram
ldr r0, [r4, #0x10]
@@ -6570,7 +6570,7 @@ _021DA7EC:
ldr r0, [r4, #0x14]
mov r2, #1
add r3, r1, #0
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r4, #0x14]
bl ScheduleWindowCopyToVram
add sp, #0x10
diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s
index 23d75c48..3726aeb3 100644
--- a/arm9/modules/75/asm/module_75.s
+++ b/arm9/modules/75/asm/module_75.s
@@ -4461,7 +4461,7 @@ MOD75_021E8E1C: ; 0x021E8E1C
add r0, #0x64
mov r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
bl MOD75_021EB660
ldr r1, _021E8EAC ; =0x00000426
@@ -4501,7 +4501,7 @@ _021E8ED2:
add r0, r4, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -4573,7 +4573,7 @@ _021E8F3A:
add r0, #0x64
mov r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
bl MOD75_021EB660
ldr r1, _021E8FBC ; =0x00000426
@@ -4692,7 +4692,7 @@ _021E9046:
add r0, #0x64
mov r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
bl MOD75_021EB660
ldr r1, _021E91AC ; =0x00000426
@@ -4831,7 +4831,7 @@ _021E917A:
add r0, r4, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -5108,7 +5108,7 @@ _021E93AA:
add r0, #0x64
mov r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
bl MOD75_021EB660
ldr r1, _021E9430 ; =0x00000426
@@ -5136,7 +5136,7 @@ _021E93F0:
add r0, r4, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _021E9428 ; =0x00000483
mov r1, #2
strb r1, [r4, r0]
@@ -5504,7 +5504,7 @@ _021E96EC:
add r0, r5, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -5574,7 +5574,7 @@ _021E9772:
strb r1, [r4, r0]
add r0, r4, #0
add r0, #0x64
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -5717,7 +5717,7 @@ _021E9872:
add r0, #0x64
mov r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r2, r5, #0
add r2, #0xc4
ldr r2, [r2]
@@ -5804,7 +5804,7 @@ _021E9952:
add r0, r4, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -5870,7 +5870,7 @@ _021E99C6:
add r0, #0x64
mov r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r2, r5, #0
add r2, #0xc4
ldr r2, [r2]
@@ -6096,7 +6096,7 @@ _021E9BAC:
add r0, r4, #0
add r0, #0x74
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
@@ -6191,7 +6191,7 @@ _021E9C80:
add r0, r4, #0
add r0, #0x74
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
@@ -6247,15 +6247,15 @@ _021E9D00:
add r0, r4, #0
add r0, #0x84
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x74
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -6439,11 +6439,11 @@ _021E9EA2:
add r0, r5, #0
add r0, #0x84
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r5, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -6560,11 +6560,11 @@ _021E9F96:
add r0, r4, #0
add r0, #0x84
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x64
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x14
bl ScheduleWindowCopyToVram
@@ -6660,7 +6660,7 @@ _021EA016:
add r0, #0x64
mov r1, #0
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
bl MOD75_021EB660
ldr r1, _021EA0C8 ; =0x00000426
@@ -8998,7 +8998,7 @@ _021EB298:
ldr r2, _021EB33C ; =0x000003D9
add r0, r4, r6
mov r1, #1
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, r6
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -9055,7 +9055,7 @@ _021EB31E:
add r0, #0xb4
mov r1, #1
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r5, #0xb4
add r0, r5, #0
bl ScheduleWindowCopyToVram
@@ -9093,14 +9093,14 @@ _021EB364:
add r4, r5, #4
add r0, r4, r6
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, r6
bl ClearWindowTilemapAndScheduleTransfer
_021EB37A:
add r0, r5, #0
add r0, #0xb4
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r5, #0
add r0, #0xb4
bl ClearWindowTilemapAndScheduleTransfer
@@ -9202,7 +9202,7 @@ MOD75_021EB454: ; 0x021EB454
add r0, #0x94
mov r1, #1
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
bl MOD75_021EB504
add r0, r5, #0
@@ -9210,7 +9210,7 @@ MOD75_021EB454: ; 0x021EB454
add r0, #0x34
mov r1, #1
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0
add r0, #0x34
mov r1, #0xf
@@ -9335,11 +9335,11 @@ MOD75_021EB580: ; 0x021EB580
add r4, r0, #0
add r0, #0x34
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x94
mov r1, #1
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r0, r4, #0
add r0, #0x34
bl ClearWindowTilemapAndScheduleTransfer
@@ -9361,7 +9361,7 @@ MOD75_021EB5B0: ; 0x021EB5B0
add r0, #0x64
mov r1, #1
mov r3, #0xc
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r5, #0
add r0, #0x64
mov r1, #0xf
@@ -9539,7 +9539,7 @@ MOD75_021EB708: ; 0x021EB708
add r0, r4, #0
mov r1, #1
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
_021EB722:
add r0, r4, #0
mov r1, #0xf
@@ -9659,7 +9659,7 @@ MOD75_021EB808: ; 0x021EB808
add r0, r4, #0
mov r1, #1
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9760,7 +9760,7 @@ MOD75_021EB8E8: ; 0x021EB8E8
add r0, r4, #0
mov r1, #1
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index ae83c7a7..8c70dc91 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -484,7 +484,7 @@ _021D78A8:
mov r1, #0
mov r2, #0xa
mov r3, #0xd
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021D78E4: .word MOD76_021D8FC4
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
index 4b8e4702..25e3330a 100644
--- a/arm9/modules/77/asm/module_77.s
+++ b/arm9/modules/77/asm/module_77.s
@@ -607,7 +607,7 @@ _021D79D0:
add r0, r4, r0
mov r1, #0
mov r3, #7
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, _021D7B84 ; =0x0000C314
ldr r0, [r4, r0]
cmp r0, #0
@@ -644,7 +644,7 @@ _021D7A4E:
ldr r0, _021D7B7C ; =0x0000C034
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _021D7B98 ; =0x000005DD
bl PlaySE
mov r0, #0xd8
@@ -1438,7 +1438,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
add r0, r5, r0
mov r1, #0
mov r3, #6
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, _021D8228 ; =0x0000C064
mov r3, #0
str r3, [r5, r0]
@@ -1819,7 +1819,7 @@ _021D83B2:
ldr r0, [sp, #0x10]
mov r1, #1
mov r3, #7
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [sp]
bl CopyWindowToVram
add sp, #0x24
@@ -1909,7 +1909,7 @@ _021D8462:
ldr r0, [sp, #0x18]
mov r1, #1
mov r3, #7
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [sp]
bl CopyWindowToVram
add sp, #0x2c
@@ -1929,7 +1929,7 @@ MOD77_021D84D8: ; 0x021D84D8
ldr r0, _021D8504 ; =0x0000C024
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _021D8504 ; =0x0000C024
add r0, r4, r0
bl RemoveWindow
@@ -1984,7 +1984,7 @@ MOD77_021D8510: ; 0x021D8510
add r0, r5, r0
mov r1, #0
mov r3, #7
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, _021D85D4 ; =0x0000C070
ldr r2, _021D85D8 ; =0x0000C314
ldr r0, [r5, r0]
@@ -2073,7 +2073,7 @@ MOD77_021D85E0: ; 0x021D85E0
add r0, r5, r0
mov r1, #0
mov r3, #7
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [r5]
add r1, r4, #0
str r0, [sp]
@@ -2127,7 +2127,7 @@ MOD77_021D8698: ; 0x021D8698
ldr r0, _021D86B0 ; =0x0000C044
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _021D86B0 ; =0x0000C044
add r0, r4, r0
bl RemoveWindow
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index fae0c264..5ffe3380 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -1712,7 +1712,7 @@ MOD80_0222E2E0: ; 0x0222E2E0
str r1, [r4, r0]
_0222E2F4:
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _0222E310 ; =0x027E0000
ldr r1, _0222E314 ; =0x00003FF8
mov r0, #1
@@ -2389,7 +2389,7 @@ _0222E824:
ldr r0, _0222E858 ; =0x00000B84
mov r1, #0
str r1, [r6, r0]
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
pop {r3, r4, r5, r6, r7, pc}
@@ -3547,7 +3547,7 @@ MOD80_0222F14C: ; 0x0222F14C
bne _0222F18A
add r0, r4, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _0222F1B0 ; =0x00000FB8
add r0, r4, r0
bl ClearWindowTilemapAndCopyToVram
@@ -3561,7 +3561,7 @@ MOD80_0222F14C: ; 0x0222F14C
_0222F18A:
add r0, r4, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _0222F1B0 ; =0x00000FB8
add r0, r4, r0
bl ClearWindowTilemapAndCopyToVram
@@ -3684,7 +3684,7 @@ MOD80_0222F250: ; 0x0222F250
add r0, r5, r0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -3726,7 +3726,7 @@ MOD80_0222F2A8: ; 0x0222F2A8
add r0, r5, r0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -4524,7 +4524,7 @@ MOD80_0222F918: ; 0x0222F918
mov r1, #0
add r0, r4, r0
str r1, [r4, #0x2c]
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
b _0222F956
_0222F942:
mov r0, #2
@@ -4598,7 +4598,7 @@ MOD80_0222F96C: ; 0x0222F96C
mov r1, #0
mov r3, #0xb
str r0, [sp, #0xc]
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x3e
str r0, [sp]
mov r0, #2
@@ -4651,7 +4651,7 @@ _0222FA26:
ldr r0, _0222FAE0 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r4, r5, #0
add r4, #0xd4
add r0, r4, #0
@@ -4706,7 +4706,7 @@ _0222FAA4:
ldr r0, _0222FAE0 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #2
str r0, [r5, #0x2c]
add r0, r5, #0
@@ -4811,7 +4811,7 @@ MOD80_0222FB3C: ; 0x0222FB3C
add r0, r5, r0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -5989,7 +5989,7 @@ MOD80_022304F8: ; 0x022304F8
add r0, r5, r0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -7650,11 +7650,11 @@ _02231266:
ldr r0, _022312C0 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _022312C4 ; =0x00000E98
mov r1, #0
add r0, r4, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _022312C0 ; =0x00000ED8
add r0, r4, r0
bl RemoveWindow
@@ -7754,7 +7754,7 @@ _02231342:
ldr r0, _0223146C ; =0x00000EE8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02231470 ; =0x000005DC
bl PlaySE
mov r0, #4
@@ -7787,11 +7787,11 @@ _0223138C:
ldr r0, _02231474 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _0223146C ; =0x00000EE8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02231474 ; =0x00000ED8
add r0, r4, r0
bl RemoveWindow
@@ -7987,11 +7987,11 @@ _0223154A:
ldr r0, _022315F8 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _022315FC ; =0x00000E98
mov r1, #0
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _022315F8 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -8012,7 +8012,7 @@ _0223158E:
ldr r0, _022315F8 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _022315F8 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -8160,11 +8160,11 @@ _022316D0:
ldr r0, _02231774 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02231778 ; =0x00000E98
mov r1, #0
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _02231774 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -8185,7 +8185,7 @@ _0223170C:
ldr r0, _02231774 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02231774 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -8383,7 +8383,7 @@ MOD80_0223187C: ; 0x0223187C
add r0, r5, r0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -9855,7 +9855,7 @@ MOD80_02232470: ; 0x02232470
mov r1, #1
mov r3, #0xb
str r0, [sp, #0xc]
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x3e
str r0, [sp]
mov r0, #2
@@ -9916,7 +9916,7 @@ _02232546:
ldr r0, _02232664 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #2
str r0, [r5, #0x2c]
add r0, r5, #0
@@ -9936,7 +9936,7 @@ _02232574:
ldr r0, _02232664 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r2, r5, #0
add r3, r5, #0
ldr r1, [r5]
@@ -10020,11 +10020,11 @@ _0223262E:
ldr r0, _02232664 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _0223266C ; =0x00000E98
mov r1, #0
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #1
str r0, [r5, #0x2c]
_0223265A:
@@ -10095,7 +10095,7 @@ MOD80_02232670: ; 0x02232670
mov r1, #0
mov r3, #0xb
str r0, [sp, #0xc]
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x3e
str r0, [sp]
mov r0, #2
@@ -10156,7 +10156,7 @@ _02232746:
ldr r0, _02232840 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #2
str r0, [r5, #0x2c]
add r0, r5, #0
@@ -10176,7 +10176,7 @@ _02232774:
ldr r0, _02232840 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r2, r5, #0
add r3, r5, #0
ldr r1, [r5]
@@ -10243,11 +10243,11 @@ _0223280A:
ldr r0, _02232840 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02232848 ; =0x00000E98
mov r1, #0
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #1
str r0, [r5, #0x2c]
_02232836:
@@ -10420,7 +10420,7 @@ MOD80_02232950: ; 0x02232950
ldr r0, _0223298C ; =0x00000FB8
mov r1, #0
add r0, r4, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #1
str r0, [r4, #0x2c]
b _02232982
@@ -10574,7 +10574,7 @@ MOD80_02232A84: ; 0x02232A84
ldr r0, _02232AE4 ; =0x00000FB8
mov r1, #0
add r0, r4, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #1
str r0, [r4, #0x2c]
b _02232ADA
@@ -10641,7 +10641,7 @@ MOD80_02232B08: ; 0x02232B08
ldr r0, _02232B30 ; =0x00000FB8
mov r1, #0
add r0, r4, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, [r4, #0x30]
str r0, [r4, #0x2c]
_02232B2C:
@@ -10684,7 +10684,7 @@ _02232B62:
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r6, [sp, #4]
@@ -11663,7 +11663,7 @@ MOD80_022332EC: ; 0x022332EC
add r0, r5, r0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -12284,11 +12284,11 @@ _02233820:
ldr r0, _02233884 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233888 ; =0x00000E98
mov r1, #0
add r0, r4, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _02233884 ; =0x00000ED8
add r0, r4, r0
bl RemoveWindow
@@ -12422,7 +12422,7 @@ _02233932:
ldr r0, _02233A54 ; =0x00000EE8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233A58 ; =0x00000ED8
add r0, r4, r0
bl RemoveWindow
@@ -12461,11 +12461,11 @@ _0223398C:
ldr r0, _02233A58 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233A54 ; =0x00000EE8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233A58 ; =0x00000ED8
add r0, r4, r0
bl RemoveWindow
@@ -12651,11 +12651,11 @@ _02233B26:
ldr r0, _02233BD4 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233BD8 ; =0x00000E98
mov r1, #0
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _02233BD4 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -12676,7 +12676,7 @@ _02233B6A:
ldr r0, _02233BD4 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233BD4 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -12823,11 +12823,11 @@ _02233CA4:
ldr r0, _02233D74 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233D78 ; =0x00000E98
mov r1, #0
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
ldr r0, _02233D74 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -12863,7 +12863,7 @@ _02233CFA:
ldr r0, _02233D74 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
ldr r0, _02233D74 ; =0x00000ED8
add r0, r5, r0
bl RemoveWindow
@@ -13710,7 +13710,7 @@ _02234388:
mov r2, #0x1f
mov r3, #0xb
str r0, [sp, #0x10]
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0xfe
lsl r0, r0, #4
ldr r2, [r7, r0]
@@ -13903,7 +13903,7 @@ MOD80_022344DC: ; 0x022344DC
mov r2, #0x1f
mov r3, #0xb
str r0, [sp, #0x24]
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
lsl r1, r4, #1
ldr r2, _0223455C ; =0x0000101C
add r3, r7, r1
@@ -13963,7 +13963,7 @@ _02234578:
mov r2, #0x1f
mov r3, #0xb
str r0, [sp, #0x10]
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r1, #0
add r0, sp, #4
add r2, r1, #0
@@ -14019,7 +14019,7 @@ _022345E8:
mov r2, #0x1f
mov r3, #0xb
str r0, [sp, #0x10]
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r1, #0
add r0, sp, #4
add r2, r1, #0
@@ -18794,7 +18794,7 @@ _02236AC0:
ldr r0, _02236AD8 ; =0x00000EC8
mov r1, #0
add r0, r4, r0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0
str r0, [r4, #0x2c]
_02236ACE:
@@ -19057,7 +19057,7 @@ MOD80_02236C70: ; 0x02236C70
add r0, r5, r0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -19212,7 +19212,7 @@ MOD80_02236D8C: ; 0x02236D8C
add r0, r5, r0
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -19260,7 +19260,7 @@ _02236E16:
ldr r0, _02236E44 ; =0x00000E98
mov r1, #1
add r0, r5, r0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
add r1, r4, #0
bl MOD80_02236D8C
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
index df849b5e..ee333134 100644
--- a/arm9/modules/81/asm/module_81.s
+++ b/arm9/modules/81/asm/module_81.s
@@ -233,7 +233,7 @@ MOD81_02238004: ; 0x02238004
bl FreeToHeap
ldr r0, [r4, #0x18]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x39
@@ -327,7 +327,7 @@ MOD81_022380F4: ; 0x022380F4
push {r3, lr}
ldr r0, [r1, #0x18]
bl FUN_0201FDEC
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _02238110 ; =0x027E0000
ldr r1, _02238114 ; =0x00003FF8
mov r0, #1
@@ -2482,7 +2482,7 @@ _022390F4:
add r0, #0x44
mov r1, #0x6d
mov r2, #2
- bl FUN_0200D06C
+ bl DrawWindowFrame2
add r0, r4, #0
add r0, #0x44
bl CopyWindowToVram
@@ -2556,7 +2556,7 @@ _022391BE:
add r0, r4, #0
add r0, #0x44
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0
str r0, [r4, #8]
ldr r0, [r5]
@@ -9606,7 +9606,7 @@ _0223C982:
add r0, #0x48
mov r1, #0x6d
mov r2, #2
- bl FUN_0200D06C
+ bl DrawWindowFrame2
add r0, r4, #0
add r0, #0x48
bl CopyWindowToVram
@@ -9668,7 +9668,7 @@ _0223CA32:
add r0, r4, #0
add r0, #0x48
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
mov r0, #0
str r0, [r4, #8]
ldr r0, [r5]
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s
index 01d50253..a799ebaa 100644
--- a/arm9/modules/82/asm/module_82.s
+++ b/arm9/modules/82/asm/module_82.s
@@ -900,7 +900,7 @@ _0222DCC0: .word 0x00000B78
MOD82_0222DCC4: ; 0x0222DCC4
push {r3, lr}
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _0222DCDC ; =0x027E0000
ldr r1, _0222DCE0 ; =0x00003FF8
mov r0, #1
@@ -1349,7 +1349,7 @@ _0222E018:
mov r1, #0
lsl r0, r0, #4
str r1, [r6, r0]
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
pop {r3, r4, r5, r6, r7, pc}
@@ -2533,7 +2533,7 @@ MOD82_0222E988: ; 0x0222E988
mov r1, #0
mov r2, #0x1f
mov r3, #0xa
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r1, #0xb9
mov r0, #0xda
lsl r1, r1, #4
@@ -3125,7 +3125,7 @@ MOD82_0222EE28: ; 0x0222EE28
mov r1, #0
mov r2, #0x1f
mov r3, #0xa
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r1, _0222EE70 ; =0x00000B94
mov r0, #0xd9
lsl r0, r0, #4
@@ -3272,7 +3272,7 @@ MOD82_0222EF54: ; 0x0222EF54
mov r1, #0
mov r2, #0x1f
mov r3, #0xa
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r1, #0xb9
mov r0, #0xda
lsl r1, r1, #4
@@ -4044,7 +4044,7 @@ MOD82_0222F4D8: ; 0x0222F4D8
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -4107,7 +4107,7 @@ _0222F584:
lsl r0, r0, #6
add r0, r4, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #0
str r0, [r4, #0x1c]
_0222F594:
@@ -4139,7 +4139,7 @@ MOD82_0222F59C: ; 0x0222F59C
mov r1, #0
mov r2, #1
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -4382,7 +4382,7 @@ MOD82_0222F740: ; 0x0222F740
mov r1, #1
mov r2, #0x1f
mov r3, #0xb
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -4432,7 +4432,7 @@ _0222F7D2:
lsl r0, r0, #6
add r0, r5, r0
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, #0
add r1, r4, #0
bl MOD82_0222F740
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 06fa49b6..0c993cd6 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -82,7 +82,7 @@ _0222D63C:
lsl r0, r0, #6
add r0, r5, r0
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
mov r0, #5
lsl r0, r0, #6
add r0, r5, r0
@@ -1127,7 +1127,7 @@ _0222DE76:
mov r1, #0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r1, _0222DEC8 ; =MOD83_0223A854
ldr r0, [sp, #0x20]
ldr r2, [r1, r0]
@@ -1490,7 +1490,7 @@ _0222E104:
mov r1, #0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [sp, #0x18]
add r0, #0xe8
ldr r3, [r0]
@@ -1593,7 +1593,7 @@ _0222E206:
mov r1, #1
mov r2, #0xa
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
bl GetWindowX
str r0, [sp, #0x10]
@@ -1620,7 +1620,7 @@ _0222E256:
add r0, r5, #0
add r2, r1, #0
mov r3, #2
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r5, #0
bl GetWindowX
str r0, [sp, #0x18]
@@ -1893,7 +1893,7 @@ MOD83_0222E464: ; 0x0222E464
push {r4, lr}
add r4, r0, #0
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
add r0, r4, #0
bl DoScheduledBgGpuUpdates
ldr r3, _0222E484 ; =MOD83_027E0000
@@ -2149,7 +2149,7 @@ _0222E656:
bl FUN_02032D80
_0222E692:
mov r0, #0x51
- bl FUN_02089F24
+ bl ShowGBACartRemovedError
b _0222E6A8
_0222E69A:
bl PlaySE
@@ -2736,7 +2736,7 @@ _0222EB4E:
add r0, r4, #0
add r0, #0x18
mov r1, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
add r4, #0x18
add r0, r4, #0
bl RemoveWindow
@@ -4731,7 +4731,7 @@ MOD83_0222FB44: ; 0x0222FB44
bne _0222FB5A
add r0, r5, #0
add r1, r4, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
_0222FB5A:
pop {r3, r4, r5, pc}
thumb_func_end MOD83_0222FB44
@@ -5050,7 +5050,7 @@ _0222FDC6:
mov r1, #1
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r1, _0222FDE4 ; =MOD83_0223ADD8
add r0, r6, #0
mov r2, #2
@@ -5138,7 +5138,7 @@ _0222FE76:
mov r1, #1
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r2, #2
ldr r1, _0222FE9C ; =MOD83_0223ADC8
add r0, r6, #0
@@ -5192,7 +5192,7 @@ _0222FEE6:
mov r1, #1
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x4e
str r0, [sp]
ldr r1, _0222FF0C ; =MOD83_0223AD98
@@ -5247,7 +5247,7 @@ _0222FF56:
mov r1, #1
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x4d
str r0, [sp]
ldr r1, _0222FF7C ; =MOD83_0223ADA8
@@ -5294,7 +5294,7 @@ _0222FFB4:
mov r1, #1
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #4
str r0, [sp]
ldr r1, _0222FFD4 ; =MOD83_0223ADB8
@@ -5518,7 +5518,7 @@ _02230172:
mov r1, #1
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #1
str r0, [sp]
ldr r1, _02230198 ; =MOD83_0223AE20
@@ -5957,7 +5957,7 @@ _022304E6:
mov r1, #1
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
ldr r0, [sp, #0x18]
add r1, sp, #0x20
str r0, [sp]
@@ -6026,7 +6026,7 @@ _0223057A:
mov r1, #0
mov r2, #1
mov r3, #2
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
ldr r0, [r4, #0x10]
bl DestroyMsgData
ldr r0, [r4, #0xc]
@@ -6075,7 +6075,7 @@ MOD83_022305A4: ; 0x022305A4
mov r1, #0
mov r2, #0x1f
mov r3, #3
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
add r0, r4, #0
bl String_dtor
add sp, #0x10
@@ -8110,7 +8110,7 @@ MOD83_022316C0: ; 0x022316C0
bne _022316D6
add r0, r5, #0
add r1, r4, #0
- bl FUN_0200CCF8
+ bl ClearFrameAndWindow1
_022316D6:
pop {r3, r4, r5, pc}
thumb_func_end MOD83_022316C0
@@ -8125,7 +8125,7 @@ MOD83_022316D8: ; 0x022316D8
bne _022316EE
add r0, r5, #0
add r1, r4, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
_022316EE:
pop {r3, r4, r5, pc}
thumb_func_end MOD83_022316D8
@@ -9312,14 +9312,14 @@ _02232054:
mov r1, #0
mov r2, #0x13
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
b _02232076
_0223206A:
add r0, r6, #0
mov r1, #0
mov r2, #0xa
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
_02232076:
ldr r1, [r4, #0xc]
ldr r0, [r4, #0x10]
@@ -10560,14 +10560,14 @@ _02232A56:
add r0, r4, r0
mov r2, #0x13
mov r3, #0xa
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
mov r0, #0xae
lsl r0, r0, #6
add r0, r4, r0
mov r1, #0
mov r2, #0xa
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -15638,7 +15638,7 @@ _02235086:
ldr r2, _022350B8 ; =0x000003D2
mov r1, #0
mov r3, #0xd
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
_022350A2:
@@ -15646,7 +15646,7 @@ _022350A2:
mov r1, #0
lsl r2, r2, #4
mov r3, #0xe
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
_022350AE:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
@@ -17094,7 +17094,7 @@ _02235B7C:
add r0, r4, r0
add r0, r1, r0
add r1, sp, #0
- bl FUN_02015D88
+ bl ConvertRSStringToDPStringInternational
add r0, sp, #0
str r0, [sp, #0x4c]
add r0, r5, #0
@@ -17237,7 +17237,7 @@ _02235CCA:
add r0, #2
add r1, sp, #8
mov r2, #0xb
- bl FUN_02015D88
+ bl ConvertRSStringToDPStringInternational
add r0, sp, #8
str r0, [sp, #0x64]
mov r0, #0
@@ -17919,7 +17919,7 @@ MOD83_02236298: ; 0x02236298
cmp r1, #0
beq _022362B4
mov r1, #0
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r4, #0
bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
@@ -18085,7 +18085,7 @@ _022363E2:
bl FUN_0201FD58
mov r0, #0
str r0, [r6, #0x28]
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
ldr r0, _02236448 ; =0x0000E88C
@@ -18156,7 +18156,7 @@ MOD83_02236484: ; 0x02236484
add r0, r4, #0
add r1, sp, #8
mov r2, #8
- bl FUN_02015D88
+ bl ConvertRSStringToDPStringInternational
mov r0, #0x4e
bl ScrStrBufs_new
add r4, r0, #0
@@ -18217,7 +18217,7 @@ MOD83_0223650C: ; 0x0223650C
str r1, [r4, r0]
_02236520:
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r0, [r4, #0x20]
bl DoScheduledBgGpuUpdates
ldr r3, _02236540 ; =MOD83_027E0000
@@ -18582,7 +18582,7 @@ MOD83_02236804: ; 0x02236804
beq _02236828
_02236822:
mov r0, #0x4e
- bl FUN_02089F24
+ bl ShowGBACartRemovedError
_02236828:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -22504,7 +22504,7 @@ _022384FE:
add r0, sp, #0x24
add r1, sp, #0xc
mov r2, #0xc
- bl FUN_02015D88
+ bl ConvertRSStringToDPStringInternational
add r0, r4, #0
mov r1, #0x75
add r2, sp, #0xc
@@ -22541,7 +22541,7 @@ _0223853E:
add r0, sp, #0x24
add r1, sp, #0xc
mov r2, #8
- bl FUN_02015D88
+ bl ConvertRSStringToDPStringInternational
add r0, r4, #0
mov r1, #0x8f
add r2, sp, #0xc
@@ -23258,7 +23258,7 @@ _02238AB8:
mov r1, #0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_0200CCA4
+ bl DrawFrameAndWindow1
b _02238AEC
_02238ADA:
ldr r2, [r4, #0x38]
@@ -23268,7 +23268,7 @@ _02238ADA:
mov r1, #0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
_02238AEC:
add r0, r5, #0
add sp, #0x14
@@ -23784,7 +23784,7 @@ _02238EB0:
ldr r0, _02238EF0 ; =MOD83_0223BC60
mov r1, #0
str r1, [r0]
- bl FUN_02009FA0
+ bl DeinitOamData
bl FUN_0201D12C
bl FUN_0201E08C
mov r0, #0
@@ -23826,7 +23826,7 @@ MOD83_02238F00: ; 0x02238F00
str r1, [r4, r0]
_02238F1E:
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r3, _02238F3C ; =MOD83_027E0000
ldr r1, _02238F40 ; =0x00003FF8
mov r0, #1
diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s
index c9bff482..8c7c35e8 100644
--- a/arm9/modules/84/asm/module_84_thumb1.s
+++ b/arm9/modules/84/asm/module_84_thumb1.s
@@ -260,7 +260,7 @@ _021D771A:
add r5, #0xdc
ldr r0, [r5]
bl FUN_0201FD58
- bl FUN_02009FA0
+ bl DeinitOamData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -552,7 +552,7 @@ MOD84_021D7958: ; 0x021D7958
add r1, #0xdc
ldr r0, [r1]
bl FUN_0201FDEC
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
pop {r3, pc}
thumb_func_end MOD84_021D7958
diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s
index d97e5a59..cb5660e4 100644
--- a/arm9/modules/84/asm/module_84_thumb2.s
+++ b/arm9/modules/84/asm/module_84_thumb2.s
@@ -1067,14 +1067,14 @@ _021D8914:
sub r1, #0x30
mov r2, #0
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8950
_021D893A:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D8950
ldr r0, [r5, #8]
@@ -1322,14 +1322,14 @@ _021D8AF4:
mov r0, #0x20
sub r2, #0x10
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8B66
_021D8B16:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D8B66
ldr r0, [r4]
@@ -1350,14 +1350,14 @@ _021D8B28:
sub r1, #0x30
mov r2, #0
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8B66
_021D8B4E:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D8B66
mov r0, #1
@@ -1622,14 +1622,14 @@ _021D8D2C:
mov r0, #0x20
sub r2, #0x10
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D8DE6
_021D8D56:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D8DE6
ldr r0, _021D8DEC ; =0x00000DF4
@@ -1680,14 +1680,14 @@ _021D8D9E:
sub r1, #0x30
mov r2, #0
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D8DE6
_021D8DC8:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D8DE6
mov r0, #1
@@ -2481,14 +2481,14 @@ _021D93FC:
mov r0, #0x20
sub r2, #0x10
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D946E
_021D941E:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D946E
ldr r0, [r4]
@@ -2509,14 +2509,14 @@ _021D9430:
sub r1, #0x30
mov r2, #0
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D946E
_021D9456:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D946E
mov r0, #1
@@ -2790,14 +2790,14 @@ _021D9654:
mov r0, #0x10
sub r2, #0x10
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D97F0
_021D966E:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D96D2
mov r1, #0
@@ -2960,14 +2960,14 @@ _021D97B0:
sub r1, #0x30
mov r2, #0
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D97F0
_021D97D8:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D97F0
ldr r0, [r4, #0x4c]
@@ -3354,14 +3354,14 @@ _021D9ABC:
mov r0, #0x20
sub r2, #0x10
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D9B2E
_021D9ADE:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D9B2E
ldr r0, [r4]
@@ -3382,14 +3382,14 @@ _021D9AF0:
sub r1, #0x30
mov r2, #0
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D9B2E
_021D9B16:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D9B2E
mov r0, #1
@@ -3661,14 +3661,14 @@ _021D9D0E:
mov r0, #0x20
sub r2, #0x10
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021DA068
_021D9D28:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021D9E16
mov r1, #0
@@ -3977,14 +3977,14 @@ _021D9F90:
sub r1, #0x30
mov r2, #0
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021DA068
_021D9FBE:
mov r0, #3
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DA068
mov r0, #1
@@ -4049,14 +4049,14 @@ _021DA02A:
mov r0, #0x10
sub r2, #0x10
mov r3, #0x1d
- bl FUN_0200A208
+ bl StartBrightnessTransition
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021DA068
_021DA058:
mov r0, #1
- bl FUN_0200A344
+ bl IsBrightnessTransitionActive
cmp r0, #0
beq _021DA068
add sp, #0x10
diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s
index 042746c2..2733fd96 100644
--- a/arm9/modules/85/asm/module_85.s
+++ b/arm9/modules/85/asm/module_85.s
@@ -843,7 +843,7 @@ MOD85_021D7BEC: ; 0x021D7BEC
mov r1, #1
mov r2, #0x1f
mov r3, #0xe
- bl FUN_0200D0BC
+ bl DrawFrameAndWindow2
add r0, r4, #0
add r0, #8
mov r1, #0xf
@@ -880,7 +880,7 @@ MOD85_021D7C44: ; 0x021D7C44
add r0, r5, r4
add r0, #8
mov r1, #1
- bl FUN_0200D0E0
+ bl ClearFrameAndWindow2
add r0, r5, r4
add r0, #8
mov r1, #0
@@ -979,7 +979,7 @@ MOD85_021D7D04: ; 0x021D7D04
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD85_021DE710
- bl FUN_02009FA0
+ bl DeinitOamData
pop {r4, pc}
thumb_func_end MOD85_021D7D04
@@ -1459,7 +1459,7 @@ MOD85_021D80DC: ; 0x021D80DC
push {r4, lr}
add r4, r0, #0
bl FUN_0201C30C
- bl FUN_02009F80
+ bl ApplyAndResetOamManagerBuffer
ldr r0, _021D80F4 ; =0x0000043C
ldr r0, [r4, r0]
bl DoScheduledBgGpuUpdates
diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c
index 28147dbd..348a398a 100644
--- a/arm9/src/GX_layers.c
+++ b/arm9/src/GX_layers.c
@@ -96,7 +96,7 @@ THUMB_FUNC void GX_BothDispOn()
THUMB_FUNC void GX_SwapDisplay()
{
- if (gMain.unk65 == 0)
+ if (gMain.screensFlipped == 0)
{
GX_SetDispSelect(GX_DISP_SELECT_MAIN_SUB);
}
diff --git a/arm9/src/bg_window.c b/arm9/src/bg_window.c
index 2986645f..f1a5e525 100644
--- a/arm9/src/bg_window.c
+++ b/arm9/src/bg_window.c
@@ -1366,7 +1366,7 @@ THUMB_FUNC void CopyBgTilemapRectAffine(struct Bg *bg,
}
THUMB_FUNC void FillBgTilemapRect(struct BgConfig *bgConfig,
- u32 bgId,
+ u8 bgId,
u16 fillValue,
u8 x,
u8 y,
diff --git a/arm9/src/brightness.c b/arm9/src/brightness.c
new file mode 100644
index 00000000..59e96fd3
--- /dev/null
+++ b/arm9/src/brightness.c
@@ -0,0 +1,198 @@
+#include "global.h"
+#include "brightness.h"
+#include "GX_g2.h"
+#include "MI_memory.h"
+
+struct BrightnessData mainScreenBrightnessData;
+
+struct BrightnessData subScreenBrightnessData;
+
+THUMB_FUNC void DoBrightnessTransitionStep(struct BrightnessData *brightness)
+{
+ BOOL transitionFinished = FALSE;
+
+ if (brightness->target_brightness !=
+ brightness->current_brightness +
+ brightness->transition_direction * brightness->step_size_integer &&
+ brightness->current_brightness != brightness->target_brightness)
+ {
+ brightness->current_brightness +=
+ brightness->transition_direction * brightness->step_size_integer;
+ brightness->fractional_count += brightness->step_size_fractional;
+
+ if (brightness->fractional_count >= brightness->step_count)
+ {
+ brightness->current_brightness += brightness->transition_direction;
+ if (brightness->current_brightness != brightness->target_brightness)
+ {
+ brightness->fractional_count -= brightness->step_count;
+ }
+ else
+ {
+ transitionFinished = TRUE;
+ }
+ }
+ }
+ else
+ {
+ brightness->current_brightness = brightness->target_brightness;
+ transitionFinished = TRUE;
+ }
+
+ if ((brightness->screenMask & 1) != 0)
+ {
+ G2x_SetBlendBrightness_(
+ &reg_G2_BLDCNT, brightness->surfaceMask, brightness->current_brightness);
+ }
+ else if ((brightness->screenMask & 2) != 0)
+ {
+ G2x_SetBlendBrightness_(
+ &reg_G2S_DB_BLDCNT, brightness->surfaceMask, brightness->current_brightness);
+ }
+
+ if (transitionFinished == TRUE)
+ {
+ brightness->transitionActive = FALSE;
+ }
+}
+
+THUMB_FUNC void InitBrightnessTransition(struct BrightnessData *brightnessData,
+ u16 step_count,
+ s16 target_brightness,
+ s16 start_brightness,
+ fx32 surfaceMask,
+ u32 screenMask)
+{
+ GF_ASSERT(!brightnessData->transitionActive);
+
+ brightnessData->transitionActive = TRUE;
+ brightnessData->surfaceMask = (u8)surfaceMask;
+ brightnessData->screenMask = (u8)screenMask;
+ brightnessData->step_count = step_count;
+ brightnessData->target_brightness = target_brightness;
+ brightnessData->current_brightness = start_brightness;
+ brightnessData->brightness_diff = (s16)(start_brightness - target_brightness);
+
+ if (brightnessData->brightness_diff > 0)
+ {
+ brightnessData->transition_direction = -1;
+ }
+ else
+ {
+ brightnessData->transition_direction = 1;
+ brightnessData->brightness_diff *= -1;
+ }
+
+ brightnessData->step_size_integer = (s16)(brightnessData->brightness_diff / step_count);
+ brightnessData->step_size_fractional = (u16)(brightnessData->brightness_diff % step_count);
+ brightnessData->fractional_count = 0;
+}
+
+THUMB_FUNC void StartBrightnessTransition(
+ u16 step_count, s16 target_brightness, s16 start_brightness, fx32 surfaceMask, u32 screenMask)
+{
+ if (step_count != 0)
+ {
+ if ((screenMask & 1) != 0)
+ {
+ G2x_SetBlendBrightness_(&reg_G2_BLDCNT, surfaceMask, start_brightness);
+ InitBrightnessTransition(&mainScreenBrightnessData,
+ step_count,
+ target_brightness,
+ start_brightness,
+ surfaceMask,
+ 1);
+ }
+
+ if ((screenMask & 2) != 0)
+ {
+ G2x_SetBlendBrightness_(&reg_G2S_DB_BLDCNT, surfaceMask, start_brightness);
+ InitBrightnessTransition(&subScreenBrightnessData,
+ step_count,
+ target_brightness,
+ start_brightness,
+ surfaceMask,
+ 2);
+ }
+ }
+}
+
+THUMB_FUNC void SetBrightness(fx32 brightness, fx32 surfaceMask, u32 screenMask)
+{
+
+ if ((screenMask & 1) != 0)
+ {
+ G2x_SetBlendBrightness_(&reg_G2_BLDCNT, surfaceMask, brightness);
+ }
+
+ if ((screenMask & 2) != 0)
+ {
+ G2x_SetBlendBrightness_(&reg_G2S_DB_BLDCNT, surfaceMask, brightness);
+ }
+
+ InitScreenBrightnessData(screenMask);
+}
+
+THUMB_FUNC void InitAllScreenBrightnessData(void)
+{
+ MI_CpuFill8(&mainScreenBrightnessData, 0, sizeof(struct BrightnessData));
+ MI_CpuFill8(&subScreenBrightnessData, 0, sizeof(struct BrightnessData));
+
+ mainScreenBrightnessData.transitionActive = FALSE;
+ subScreenBrightnessData.transitionActive = FALSE;
+}
+
+THUMB_FUNC void InitScreenBrightnessData(u32 screenMask)
+{
+ if (screenMask & 1)
+ {
+ MI_CpuFill8(&mainScreenBrightnessData, 0, sizeof(struct BrightnessData));
+ mainScreenBrightnessData.transitionActive = FALSE;
+ }
+
+ if (screenMask & 2)
+ {
+ MI_CpuFill8(&subScreenBrightnessData, 0, sizeof(struct BrightnessData));
+ subScreenBrightnessData.transitionActive = FALSE;
+ }
+}
+
+THUMB_FUNC void DoAllScreenBrightnessTransitionStep(void)
+{
+ if (mainScreenBrightnessData.transitionActive)
+ {
+ DoBrightnessTransitionStep(&mainScreenBrightnessData);
+ }
+
+ if (subScreenBrightnessData.transitionActive)
+ {
+ DoBrightnessTransitionStep(&subScreenBrightnessData);
+ }
+}
+
+THUMB_FUNC BOOL IsBrightnessTransitionActive(u32 screenMask)
+{
+ if (screenMask == 3)
+ {
+ if (!mainScreenBrightnessData.transitionActive && !subScreenBrightnessData.transitionActive)
+ {
+ return TRUE;
+ }
+ }
+ else if (screenMask == 1)
+ {
+ if (!mainScreenBrightnessData.transitionActive)
+ {
+ return TRUE;
+ }
+ }
+ else if (screenMask == 2)
+ {
+ if (!subScreenBrightnessData.transitionActive)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c
index 0ea26458..848e3d0a 100644
--- a/arm9/src/communication_error.c
+++ b/arm9/src/communication_error.c
@@ -6,11 +6,9 @@
#include "msgdata.h"
#include "msgdata/msg.naix"
#include "text.h"
+#include "brightness.h"
+#include "render_window.h"
-extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id);
-extern void FUN_0200A274(fx32 brightness, fx32, u32);
-extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id);
-extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_value, u32 palette_num);
extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen);
extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32);
@@ -108,7 +106,7 @@ THUMB_FUNC void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code)
SetKeyRepeatTimers(4, 8);
- gMain.unk65 = 0;
+ gMain.screensFlipped = 0;
GX_SwapDisplay();
reg_G2_BLDCNT = 0;
@@ -137,7 +135,7 @@ THUMB_FUNC void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code)
AddWindow(bg_config, &window, &sCommunicationErrorWindowTemplate);
FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
- FUN_0200CCA4(&window, FALSE, 0x01F7, 2);
+ DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2);
BufferIntegerAsString(mgr, 0, (s32)error_code, 5, 2, 1);
ReadMsgDataIntoString(error_message_data, error_message_no, tmp_str);
@@ -150,7 +148,7 @@ THUMB_FUNC void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code)
GX_BothDispOn();
FUN_0200E394(PM_LCD_TOP);
FUN_0200E394(PM_LCD_BOTTOM);
- FUN_0200A274(0, 0x3F, 3);
+ SetBrightness(0, 0x3F, 3);
RemoveWindow(&window);
DestroyMsgData(error_message_data);
diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c
index d49e8e51..12af3c6f 100644
--- a/arm9/src/error_message_reset.c
+++ b/arm9/src/error_message_reset.c
@@ -6,6 +6,8 @@
#include "bg_window.h"
#include "PAD_pad.h"
#include "font.h"
+#include "brightness.h"
+#include "render_window.h"
const struct WindowTemplate UNK_020FF49C = {
@@ -43,10 +45,7 @@ const struct GraphicsBanks UNK_020FF4D8 = { .bg = 3 };
u32 sErrorMessagePrinterLock;
extern void FUN_0200E3A0(PMLCDTarget, int);
-extern void FUN_0200CB00(struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
-extern void FUN_0200CCA4(struct Window *param0, u32 param1, u32 param2, u32 param3);
extern void FUN_0200E394(u32 param0);
-extern void FUN_0200A274(u32 param0, u32 param1, u32 param2);
THUMB_FUNC void VBlankHandler()
{
@@ -85,7 +84,7 @@ THUMB_FUNC void PrintErrorMessageAndReset()
SetKeyRepeatTimers(4, 8);
- gMain.unk65 = 0;
+ gMain.screensFlipped = 0;
GX_SwapDisplay();
G2_BlendNone();
@@ -114,7 +113,7 @@ THUMB_FUNC void PrintErrorMessageAndReset()
FUN_0201BD5C();
AddWindow(ptr, &buf, &UNK_020FF49C);
FillWindowPixelRect(&buf, 15, 0, 0, 0xd0, 0x90);
- FUN_0200CCA4(&buf, 0, 0x1f7, 2);
+ DrawFrameAndWindow1(&buf, 0, 0x1f7, 2);
ReadMsgDataIntoString(msg_data, 3, str);
@@ -124,7 +123,7 @@ THUMB_FUNC void PrintErrorMessageAndReset()
GX_BothDispOn();
FUN_0200E394(0);
FUN_0200E394(1);
- FUN_0200A274(0, 0x3f, 3);
+ SetBrightness(0, 0x3f, 3);
FUN_02032DAC();
while (1)
diff --git a/arm9/src/font.c b/arm9/src/font.c
index 6c838892..5e46b237 100644
--- a/arm9/src/font.c
+++ b/arm9/src/font.c
@@ -4,6 +4,7 @@
#include "graphic/font.naix"
#include "render_text.h"
#include "string16.h"
+#include "unk_02021590.h"
#include "text.h"
#include "unk_0201B8B8.h"
@@ -11,7 +12,12 @@ struct UnkStruct_02002C14 *UNK_02106FC8;
struct UnkStruct_02002C14 UNK_02106FCC;
-const u16 UNK_020ECB54[4][2] = { { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 } };
+const u16 UNK_020ECB54[4][2] = {
+ { NARC_font_narc_0000_bin, FALSE },
+ { NARC_font_narc_0001_bin, FALSE },
+ { NARC_font_narc_0002_bin, FALSE },
+ { NARC_font_narc_0003_bin, FALSE }
+};
const struct FontInfo gFontInfos[5] = {
{ 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02 },
@@ -21,12 +27,6 @@ const struct FontInfo gFontInfos[5] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
};
-extern struct UnkStruct_0202199C *FUN_02021590(u32, u16, u32, u16, u32);
-extern void FUN_020215E0(struct UnkStruct_0202199C *, u32, u32);
-extern void FUN_020215C8(struct UnkStruct_0202199C *param0);
-extern void FUN_02021750(struct UnkStruct_0202199C *, u32);
-extern u32 FUN_020218D8(struct UnkStruct_0202199C *, u16 *str, u32);
-
THUMB_FUNC void FUN_02002C14()
{
UNK_02106FC8 = &UNK_02106FCC;
@@ -40,10 +40,10 @@ THUMB_FUNC void FUN_02002C14()
SetFontsPointer(&gFontInfos[0]);
}
-THUMB_FUNC void FUN_02002C50(u32 param0, u32 param1)
+THUMB_FUNC void FUN_02002C50(u32 font_id, u32 heap_id)
{
- UNK_02106FC8->unk94[param0] =
- FUN_02021590(14, UNK_020ECB54[param0][0], 1, UNK_020ECB54[param0][1], param1);
+ UNK_02106FC8->unk94[font_id] =
+ FontData_new(NARC_GRAPHIC_FONT, UNK_020ECB54[font_id][0], 1, UNK_020ECB54[font_id][1], heap_id);
}
THUMB_FUNC void FUN_02002C84(s32 param0, u32 param1)
@@ -51,7 +51,7 @@ THUMB_FUNC void FUN_02002C84(s32 param0, u32 param1)
GF_ASSERT(param0 < 4);
GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
- FUN_020215E0(UNK_02106FC8->unk94[param0], 0, param1);
+ FontData_ModeSwitch(UNK_02106FC8->unk94[param0], 0, param1);
}
THUMB_FUNC void FUN_02002CC0(s32 param0)
@@ -59,7 +59,7 @@ THUMB_FUNC void FUN_02002CC0(s32 param0)
GF_ASSERT(param0 < 4);
GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
- FUN_020215E0(UNK_02106FC8->unk94[param0], 1, 0);
+ FontData_ModeSwitch(UNK_02106FC8->unk94[param0], 1, 0);
}
THUMB_FUNC void FUN_02002CF8(int param0)
@@ -89,16 +89,16 @@ THUMB_FUNC void FUN_02002CF8(int param0)
if (UNK_02106FC8->unk94[param0] != NULL)
{
- FUN_020215C8(UNK_02106FC8->unk94[param0]);
+ FontData_delete(UNK_02106FC8->unk94[param0]);
UNK_02106FC8->unk94[param0] = NULL;
}
}
-THUMB_FUNC struct UnkStruct_02002C14 *FUN_02002D94(u32 param0, u32 param1)
+THUMB_FUNC struct UnkStruct_02002C14_sub *FUN_02002D94(u32 param0, u32 param1)
{
- FUN_02021750(UNK_02106FC8->unk94[param0], param1);
+ TryLoadGlyph(UNK_02106FC8->unk94[param0], param1, &UNK_02106FC8->unk00);
- return UNK_02106FC8;
+ return &UNK_02106FC8->unk00;
}
THUMB_FUNC u32 FontFunc(u32 fontId, struct TextPrinter *printer)
@@ -119,14 +119,14 @@ THUMB_FUNC u32 FUN_02002DE0(u32 param0, u16 *str, u32 param2)
{
GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
- FUN_020218D8(UNK_02106FC8->unk94[param0], str, param2);
+ return GetStringWidth(UNK_02106FC8->unk94[param0], str, param2);
}
THUMB_FUNC u32 FUN_02002E14(u32 param0, struct String *str, u32 param2)
{
GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
- FUN_020218D8(UNK_02106FC8->unk94[param0], String_c_str(str), param2);
+ return GetStringWidth(UNK_02106FC8->unk94[param0], String_c_str(str), param2);
}
THUMB_FUNC s32 GetFontAttribute(u8 fontId, s32 attr)
@@ -163,7 +163,7 @@ THUMB_FUNC s32 GetFontAttribute(u8 fontId, s32 attr)
return ret;
}
-THUMB_FUNC void FUN_02002ED0(u32 layer, u32 baseAddr, u32 heap_id)
+THUMB_FUNC void FUN_02002ED0(enum GFBgLayer layer, u32 baseAddr, u32 heap_id)
{
GfGfxLoader_GXLoadPal(
NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, layer, baseAddr, 0x20, heap_id);
diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c
index 44dcc111..705ffbc9 100644
--- a/arm9/src/game_init.c
+++ b/arm9/src/game_init.c
@@ -163,7 +163,7 @@ void InitSystemForTheGame(void)
gMain.unk10 = 0;
gMain.unk14 = 0;
gMain.unk2C = 0;
- gMain.unk65 = 0;
+ gMain.screensFlipped = 0;
}
void InitGraphicMemory(void)
diff --git a/arm9/src/main.c b/arm9/src/main.c
index fb4f8707..3b3b0dd6 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -11,6 +11,7 @@
#include "game_init.h"
#include "poke_overlay.h"
#include "player_data.h"
+#include "save_data_read_error.h"
#include "sound.h"
#include "timer3.h"
#include "unk_02031734.h"
@@ -18,6 +19,7 @@
#include "wfc_user_info_warning.h"
#include "module_52.h"
#include "font.h"
+#include "brightness.h"
FS_EXTERN_OVERLAY(MODULE_52);
FS_EXTERN_OVERLAY(MODULE_63);
@@ -31,14 +33,11 @@ struct UnkStruct_02016FA8 UNK_02016FA8;
extern void FUN_02022294(void);
extern void GF_InitRTCWork(void);
extern int FUN_020337E8(int);
-extern void FUN_02089D90(int);
-extern void FUN_0200A2AC(void);
extern void FUN_02015E30(void);
extern void FUN_0201B5CC(void *);
extern void GF_RTC_UpdateOnFrame(void);
extern void FUN_02015E60(void);
extern void FUN_020222C4(void);
-extern void FUN_0200A318(void);
extern void FUN_0200E2D8(void);
extern struct Unk21DBE18 MOD63_021DBE18;
@@ -73,7 +72,7 @@ THUMB_FUNC void NitroMain(void)
ShowWFCUserInfoWarning(3, 0);
if (FUN_020227FC(UNK_02016FA8.unk18) == 0)
{
- FUN_02089D90(0);
+ ShowSaveDataReadError(0);
}
else
{
@@ -97,7 +96,7 @@ THUMB_FUNC void NitroMain(void)
gMain.unk6C = 1;
gMain.unk30 = 0;
InitializeMainRNG();
- FUN_0200A2AC();
+ InitAllScreenBrightnessData();
FUN_02015E30();
UNK_02016FA4 = 0;
for (;;)
@@ -127,7 +126,7 @@ THUMB_FUNC void NitroMain(void)
OS_WaitIrq(1, 1);
gMain.unk2C++;
gMain.unk30 = 0;
- FUN_0200A318();
+ DoAllScreenBrightnessTransitionStep();
FUN_0200E2D8();
if (gMain.vBlankIntr)
gMain.vBlankIntr(gMain.vBlankIntrArg);
diff --git a/arm9/src/oam.c b/arm9/src/oam.c
new file mode 100644
index 00000000..ff3405d4
--- /dev/null
+++ b/arm9/src/oam.c
@@ -0,0 +1,169 @@
+#include "global.h"
+#include "oam.h"
+#include "GX_g2.h"
+#include "MI_memory.h"
+#include "heap.h"
+
+extern void FUN_020213A0(void);
+extern void FUN_0202135C(void *param0,
+ u32 *param1,
+ u32 (*param2)(u32, u32),
+ u32 (*param3)(u32),
+ void (*param4)(void),
+ u32 param5,
+ u32 param6);
+extern void FUN_020203CC(u32 heap_id);
+extern void FUN_02020404(u32 heap_id);
+
+struct OamData *oamData;
+
+THUMB_FUNC void FUN_02009EAC(s32 param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8)
+{
+ s32 r0;
+ if (param0 < 4)
+ {
+ r0 = 4;
+ if (param1 > 0x7c)
+ {
+ param1 = param1 - (4 - param0);
+ }
+ }
+ else
+ {
+ r0 = param0;
+ }
+
+ s32 r2;
+ if (param2 < 1)
+ {
+ r2 = 1;
+ if (param3 > 0x1e)
+ {
+ param3 = param3 - (1 - param2);
+ }
+ }
+ else
+ {
+ r2 = param2;
+ }
+
+ InitOamData(r0, param1, r2, param3, param4, param5, param6, param7, param8);
+}
+
+THUMB_FUNC void InitOamData(s32 param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 heap_id)
+{
+ GF_ASSERT(oamData == NULL);
+ oamData = AllocFromHeap(heap_id, sizeof(struct OamData));
+ GF_ASSERT(oamData);
+
+ oamData->heap_id = heap_id;
+
+ GF_ASSERT(NNS_G2dGetNewOamManagerInstance(
+ &oamData->oamManagers[0], (u16)param0, (u16)param1, (u16)param2, (u16)param3, 0));
+ GF_ASSERT(NNS_G2dGetNewOamManagerInstance(
+ &oamData->oamManagers[1], (u16)param4, (u16)param5, (u16)param6, (u16)param7, 1));
+}
+
+THUMB_FUNC void ApplyAndResetOamManagerBuffer(void)
+{
+ if (oamData != NULL)
+ {
+ NNS_G2dApplyAndResetOamManagerBuffer(&oamData->oamManagers[0]);
+ NNS_G2dApplyAndResetOamManagerBuffer(&oamData->oamManagers[1]);
+ }
+}
+
+THUMB_FUNC void DeinitOamData(void)
+{
+ GF_ASSERT(oamData);
+
+ FUN_0200A064(oamData->heap_id);
+ FUN_0200A06C(oamData->heap_id);
+
+ FreeToHeap(oamData);
+ oamData = NULL;
+}
+
+THUMB_FUNC void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3)
+{
+ GF_ASSERT(oamData);
+
+ if (param2 == 1)
+ {
+ FUN_0202135C(param0, param1, EntryOamManagerOamWithAffineIdxMainScreen, EntryOamManagerAffineMainScreen, FUN_020213A0, param2, param3);
+ return;
+ }
+
+ FUN_0202135C(param0, param1, EntryOamManagerOamWithAffineIdxSubScreen, EntryOamManagerAffineSubScreen, FUN_020213A0, param2, param3);
+}
+
+THUMB_FUNC NNSG2dOamManager *GetOamManager(u32 screen)
+{
+ GF_ASSERT(oamData);
+ if (screen == 0)
+ {
+ return &oamData->oamManagers[0];
+ }
+ else
+ {
+ return &oamData->oamManagers[1];
+ }
+}
+
+THUMB_FUNC void FUN_0200A064(u32 heap_id)
+{
+ FUN_020203CC(heap_id);
+}
+
+THUMB_FUNC void FUN_0200A06C(u32 heap_id)
+{
+ FUN_02020404(heap_id);
+}
+
+THUMB_FUNC u32 EntryOamManagerOamWithAffineIdxMainScreen(u32 param0, u32 param1)
+{
+ u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&oamData->oamManagers[0], param0, param1);
+ GF_ASSERT(res);
+
+ return res;
+}
+
+THUMB_FUNC u32 EntryOamManagerOamWithAffineIdxSubScreen(u32 param0, u32 param1)
+{
+ u32 res = NNS_G2dEntryOamManagerOamWithAffineIdx(&oamData->oamManagers[1], param0, param1);
+ GF_ASSERT(res);
+
+ return res;
+}
+
+THUMB_FUNC u32 EntryOamManagerAffineMainScreen(u32 param0)
+{
+ u32 res = NNS_G2dEntryOamManagerAffine(&oamData->oamManagers[0], param0);
+ GF_ASSERT(res != 0xFFFE);
+
+ return res;
+}
+
+THUMB_FUNC u32 EntryOamManagerAffineSubScreen(u32 param0)
+{
+ u32 res = NNS_G2dEntryOamManagerAffine(&oamData->oamManagers[1], param0);
+ GF_ASSERT(res != 0xFFFE);
+
+ return res;
+}
diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c
index 29075833..6139a21f 100644
--- a/arm9/src/pokemon.c
+++ b/arm9/src/pokemon.c
@@ -18,6 +18,9 @@
#include "constants/moves.h"
#include "constants/sinnoh_dex.h"
#include "constants/trainer_classes.h"
+#include "unk_020051F4.h"
+#include "sound_chatot.h"
+
#pragma thumb on
@@ -3303,25 +3306,25 @@ void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl)
ReadWholeNarcMemberByIdPair(wotbl, NARC_POKETOOL_PERSONAL_WOTBL, ResolveMonForme(species, forme));
}
-void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20)
+void FUN_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp18, u32 sp1C, u32 sp20)
{
if (r4 == SPECIES_CHATOT)
{
if (!FUN_02005F14((int)r5))
{
FUN_02005E80(1);
- FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20);
+ FUN_020056AC(r5, r4, r6, sp18, sp20);
}
else
{
if (sp1C)
FUN_02005E80(1);
- FUN_02005E90((int)r7, 0, (int)sp18, (int)r6);
+ FUN_02005E90(r7, 0, sp18, r6);
}
}
else
{
- FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20);
+ FUN_020056AC(r5, r4, r6, sp18, sp20);
}
}
diff --git a/arm9/src/render_text.c b/arm9/src/render_text.c
index 34777739..aa29e82d 100644
--- a/arm9/src/render_text.c
+++ b/arm9/src/render_text.c
@@ -207,7 +207,7 @@ THUMB_FUNC u32 RenderText(struct TextPrinter *printer)
return 3;
}
- struct UnkStruct_02002C14 *r5 = FUN_02002D94(subStruct->glyphId, currentChar);
+ struct UnkStruct_02002C14_sub *r5 = FUN_02002D94(subStruct->glyphId, currentChar);
CopyGlyphToWindow(printer->printerTemplate.window,
r5->buf,
r5->width,
diff --git a/arm9/src/render_window.c b/arm9/src/render_window.c
new file mode 100644
index 00000000..7a682eb6
--- /dev/null
+++ b/arm9/src/render_window.c
@@ -0,0 +1,1027 @@
+#include "global.h"
+#include "render_window.h"
+#include "filesystem.h"
+#include "gf_gfx_loader.h"
+#include "graphic/field_board.naix"
+#include "graphic/winframe.naix"
+#include "pokemon.h"
+#include "render_text.h"
+#include "unk_020061E8.h"
+#include "unk_0200BB14.h"
+#include "unk_0200CA44.h"
+
+const struct UnkStruct_0200CABC_3 UNK_020ECE88 = {
+ 10,
+ 0,
+ 10,
+ 10,
+};
+
+const struct UnkStruct_0200CABC_3 UNK_020ECE98 = {
+ 0,
+ 0,
+ 10,
+ 10,
+};
+
+extern void FUN_02020130(u32 param0, u32 param1);
+extern u32 FUN_0202022C(u32 param0);
+extern void FUN_020201E4(u32 param0, u32 param1);
+extern void FUN_0201FDEC(u32 param0);
+extern void MOD05_021D99F8(struct UnkStruct_0200CABC_2 *param0);
+extern void *FUN_0201B6C8(BOOL);
+extern void MOD05_021D959C(
+ struct UnkStruct_0200CABC_2 *param0, void *param1, u32 param2, u32 param3);
+extern void MOD05_021D967C(struct UnkStruct_0200CABC_2 *param0,
+ NarcId narcId,
+ s32 memberId,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6);
+extern void MOD05_021D96F4(
+ struct UnkStruct_0200CABC_2 *param0, NarcId narcId, s32 memberId, u32 param3, u32 param4);
+extern void MOD05_021D9708(
+ struct UnkStruct_0200CABC_2 *param0, NarcId narcId, s32 memberId, u32 param3, u32 param4);
+extern void MOD05_021D971C(struct UnkStruct_0200CABC_2 *param0,
+ NarcId narcId,
+ s32 memberId,
+ u32 param3,
+ u32 param4,
+ u32 param5);
+extern u32 *MOD05_021D9820(struct UnkStruct_0200CABC_2 *param0, void *);
+extern struct UnkStruct63_021DB450 *FUN_02006D98(u32);
+extern void FUN_020072E8(struct UnkStruct63_021DB450 *param0);
+extern void FUN_02012400(u16, u16, u16, void *, void *);
+extern u32 NNS_G2dGetImageLocation(u32, u32);
+extern void *FUN_02012470(u16, u16, u16);
+extern u32 NNS_G2dGetImagePaletteLocation(u32, u32);
+
+THUMB_FUNC u32 FUN_0200CABC(
+ struct BgConfig *bgConfig, u32 layer, u32 numTiles, u32 param3, u32 heap_id)
+{
+ if (param3 == 0)
+ {
+ return GfGfxLoader_LoadCharData(NARC_GRAPHIC_WINFRAME,
+ NARC_winframe_narc_0000_NCGR,
+ bgConfig,
+ layer,
+ numTiles,
+ 0,
+ FALSE,
+ heap_id);
+ }
+
+ return GfGfxLoader_LoadCharData(NARC_GRAPHIC_WINFRAME,
+ NARC_winframe_narc_0001_NCGR,
+ bgConfig,
+ layer,
+ numTiles,
+ 0,
+ FALSE,
+ heap_id);
+}
+
+THUMB_FUNC s32 FUN_0200CAFC(void)
+{
+ return NARC_winframe_narc_0024_NCLR;
+}
+
+THUMB_FUNC void FUN_0200CB00(
+ struct BgConfig *bg_config, u32 layer, u32 num_tiles, u32 param3, u8 param4, u32 heap_id)
+{
+ s32 r1;
+ if (param4 != 0)
+ {
+ r1 = NARC_winframe_narc_0001_NCGR;
+ }
+ else
+ {
+ r1 = NARC_winframe_narc_0000_NCGR;
+ }
+
+ GfGfxLoader_LoadCharData(
+ NARC_GRAPHIC_WINFRAME, r1, bg_config, layer, num_tiles, 0, FALSE, heap_id);
+
+ if (param4 == 2)
+ {
+ r1 = NARC_winframe_narc_0045_NCLR;
+ }
+ else
+ {
+ r1 = NARC_winframe_narc_0024_NCLR;
+ }
+
+ if (layer < 4)
+ {
+ GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, r1, 0, param3 << 5, 32, heap_id);
+ return;
+ }
+
+ GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, r1, 4, param3 << 5, 32, heap_id);
+}
+
+THUMB_FUNC void DrawFrame1(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 fillValue)
+{
+ FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 1), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 1), x, (u8)(y - 1), width, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 2), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 3), (u8)(x - 1), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 5), (u8)(x + width), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 1), (u8)(y + height), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 7), x, (u8)(y + height), width, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 8), (u8)(x + width), (u8)(y + height), 1, 1, paletteNum);
+}
+
+THUMB_FUNC void DrawFrameAndWindow1(
+ struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num)
+{
+ DrawFrame1(window->bgConfig,
+ GetWindowBgId(window),
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ palette_num,
+ fill_value);
+
+ if (!copy_to_vram)
+ {
+ CopyWindowToVram(window);
+ }
+}
+
+THUMB_FUNC void ClearFrameAndWindow1(struct Window *window, BOOL copy_to_vram)
+{
+
+ FillBgTilemapRect(window->bgConfig,
+ GetWindowBgId(window),
+ 0,
+ (u8)(GetWindowX(window) - 1),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 2),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+
+ if (!copy_to_vram)
+ {
+ ClearWindowTilemapAndCopyToVram(window);
+ }
+}
+
+THUMB_FUNC s32 FUN_0200CD60(s32 param0)
+{
+ return param0 + 2;
+}
+
+THUMB_FUNC s32 FUN_0200CD64(s32 param0)
+{
+ return param0 + 25;
+}
+
+THUMB_FUNC void FUN_0200CD68(
+ struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5)
+{
+
+ GfGfxLoader_LoadCharData(
+ NARC_GRAPHIC_WINFRAME, FUN_0200CD60(param4), param0, param1, param2, 0, FALSE, param5);
+
+ if (param1 < 4)
+ {
+ GfGfxLoader_GXLoadPal(
+ NARC_GRAPHIC_WINFRAME, FUN_0200CD64(param4), 0, param3 << 5, 32, param5);
+ return;
+ }
+
+ GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, FUN_0200CD64(param4), 4, param3 << 5, 32, param5);
+}
+
+THUMB_FUNC void DrawFrame2(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 fillValue)
+{
+ FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 2), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 1), (u8)(x - 1), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 2), x, (u8)(y - 1), width, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 3), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 4), (u8)(x + width + 1), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 5), (u8)(x + width + 2), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 2), y, 1, height, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 7), (u8)(x - 1), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 9), (u8)(x + width), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 10), (u8)(x + width + 1), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 11), (u8)(x + width + 2), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 12), (u8)(x - 2), (u8)(y + height), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 13), (u8)(x - 1), (u8)(y + height), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 14), x, (u8)(y + height), width, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 15), (u8)(x + width), (u8)(y + height), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(fillValue + 16),
+ (u8)(x + width + 1),
+ (u8)(y + height),
+ 1,
+ 1,
+ paletteNum);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(fillValue + 17),
+ (u8)(x + width + 2),
+ (u8)(y + height),
+ 1,
+ 1,
+ paletteNum);
+}
+
+THUMB_FUNC void DrawWindowFrame2(struct Window *window, u32 fill_value, u32 palette_num)
+{
+ DrawFrame2(window->bgConfig,
+ GetWindowBgId(window),
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ (u8)palette_num,
+ (u16)fill_value);
+}
+
+THUMB_FUNC void DrawFrameAndWindow2(
+ struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num)
+{
+ DrawWindowFrame2(window, fill_value, palette_num);
+ if (!copy_to_vram)
+ {
+ CopyWindowToVram(window);
+ }
+
+ FUN_0200D18C(window, fill_value);
+}
+
+THUMB_FUNC void ClearFrameAndWindow2(struct Window *window, BOOL param1)
+{
+ FillBgTilemapRect(window->bgConfig,
+ GetWindowBgId(window),
+ 0,
+ (u8)(GetWindowX(window) - 2),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 5),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+
+ if (!param1)
+ {
+ ClearWindowTilemapAndCopyToVram(window);
+ }
+}
+
+THUMB_FUNC void BlitRect4Bit(u8 *srcPixels,
+ u16 srcX,
+ u16 srcY,
+ u16 srcWidth,
+ u16 srcHeight,
+ u8 *dstPixels,
+ u16 dstWidth,
+ u16 dstHeight,
+ u16 dstX,
+ u16 dstY,
+ u16 width,
+ u16 height)
+{
+ struct Bitmap src;
+ src.pixels = srcPixels;
+ src.width = srcWidth;
+ src.height = srcHeight;
+
+ struct Bitmap dst;
+ dst.pixels = dstPixels;
+ dst.width = dstWidth;
+ dst.height = dstHeight;
+
+ BlitBitmapRect4Bit(&src, &dst, srcX, srcY, dstX, dstY, width, height, 0);
+}
+
+THUMB_FUNC void FUN_0200D18C(struct Window *window, u16 fill_value)
+{
+ u32 heap_id = BgConfig_GetHeapId(window->bgConfig);
+ u8 bg_id = GetWindowBgId(window);
+
+ void *ptr = AllocFromHeap(heap_id, 0x180);
+ void *charptr = BgGetCharPtr(bg_id);
+
+ NNSG2dCharacterData *pCharData;
+ void *st30;
+ void *st2c;
+ st2c = GfGfxLoader_GetCharData(
+ NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0022_NCGR, FALSE, &pCharData, heap_id);
+ st30 = pCharData->pRawData;
+
+ for (u8 i = 0; i < 3; i++)
+ {
+ memcpy(ptr + (i << 7), charptr + ((fill_value + 10) << 5), 0x20);
+ memcpy(ptr + ((i << 7) + 0x20), charptr + ((fill_value + 11) << 5), 0x20);
+ memcpy(ptr + ((i << 7) + 0x40), charptr + ((fill_value + 10) << 5), 0x20);
+ memcpy(ptr + ((i << 7) + 0x60), charptr + ((fill_value + 11) << 5), 0x20);
+ }
+
+ BlitRect4Bit(st30, 4, 0, 12, 0x30, ptr, 12, 0x30, 1, 0, 12, 0x30);
+ BG_LoadCharTilesData(window->bgConfig, bg_id, ptr, 0x180, (u32)(fill_value + 18));
+ FUN_02002840(fill_value);
+ FreeToHeap(st2c);
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FUN_0200D274(
+ struct BgConfig *bg_config, u8 bg_id, u16 param2, u8 param3, u8 param4, u32 heap_id)
+{
+
+ NNSG2dCharacterData *pCharData;
+ void *stc = GfGfxLoader_GetCharData(
+ NARC_GRAPHIC_WINFRAME, FUN_0200CD60(param4), FALSE, &pCharData, heap_id);
+ u8 *ptr = AllocFromHeap(heap_id, 0x240);
+ memcpy(ptr, pCharData->pRawData, 0x240);
+
+ for (u32 r3 = 0; r3 < 0x240; r3++)
+ {
+ u8 r6 = (u8)(ptr[r3] >> 4);
+ u8 r2 = (u8)(ptr[r3] & 0xf);
+ if (r6 == 0)
+ {
+ r6 = param3;
+ }
+ if (r2 == 0)
+ {
+ r2 = param3;
+ }
+
+ ptr[r3] = (u8)(r2 | (r6 << 4));
+ }
+
+ BG_LoadCharTilesData(bg_config, bg_id, (u32 *)ptr, 0x240, param2);
+ FreeToHeap(stc);
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FUN_0200D300(struct BgConfig *bg_config,
+ u8 bg_id,
+ u16 numtiles,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u32 heap_id)
+{
+ GfGfxLoader_LoadCharData(NARC_GRAPHIC_FIELD_BOARD,
+ NARC_field_board_narc_0000_NCGR,
+ bg_config,
+ bg_id,
+ numtiles,
+ 0x3C0,
+ FALSE,
+ heap_id);
+
+ NNSG2dPaletteData *pPltData;
+ void *st14;
+ st14 = AllocAndReadWholeNarcMemberByIdPair(
+ NARC_GRAPHIC_FIELD_BOARD, NARC_field_board_narc_0001_NCLR, heap_id);
+ NNS_G2dGetUnpackedPaletteData(st14, &pPltData);
+ BG_LoadPlttData(bg_id, pPltData->pRawData + param4 * 0x20, 0x20, (u16)(param3 << 5));
+ FreeToHeapExplicit(heap_id, st14);
+
+ if (param4 <= 1)
+ {
+ FUN_0200D378(bg_config, bg_id, (u16)(numtiles + 30), param4, param5, heap_id);
+ }
+}
+
+THUMB_FUNC void FUN_0200D378(
+ struct BgConfig *bg_config, u8 bg_id, u16 numtiles, u8 param3, u16 param4, u32 heap_id)
+{
+ if (param3 == 0)
+ {
+ param4 += 33;
+ }
+ else
+ {
+ param4 += 2;
+ }
+
+ GfGfxLoader_LoadCharData(
+ NARC_GRAPHIC_FIELD_BOARD, param4, bg_config, bg_id, numtiles, 0x300, FALSE, heap_id);
+}
+
+THUMB_FUNC void DrawFrame3(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 fillValue)
+{
+ FillBgTilemapRect(bgConfig, bgId, fillValue, (u8)(x - 9), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 1), (u8)(x - 8), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(fillValue + 2),
+ (u8)(x - 7),
+ (u8)(y - 1),
+ (u8)(width + 7),
+ 1,
+ paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 3), (u8)(x + width), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 4), (u8)(x + width + 1), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 5), (u8)(x + width + 2), (u8)(y - 1), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 6), (u8)(x - 9), y, 1, height, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 7), (u8)(x - 8), y, 1, height, paletteNum);
+ FillBgTilemapRect(bgConfig, bgId, (u16)(fillValue + 8), (u8)(x - 1), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 9), (u8)(x + width), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 10), (u8)(x + width + 1), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 11), (u8)(x + width + 2), y, 1, height, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 12), (u8)(x - 9), (u8)(y + height), 1, 1, paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 13), (u8)(x - 8), (u8)(y + height), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(fillValue + 14),
+ (u8)(x - 7),
+ (u8)(y + height),
+ (u8)(width + 7),
+ 1,
+ paletteNum);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(fillValue + 15), (u8)(x + width), (u8)(y + height), 1, 1, paletteNum);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(fillValue + 16),
+ (u8)(x + width + 1),
+ (u8)(y + height),
+ 1,
+ 1,
+ paletteNum);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(fillValue + 17),
+ (u8)(x + width + 2),
+ (u8)(y + height),
+ 1,
+ 1,
+ paletteNum);
+}
+
+THUMB_FUNC void DrawWindowCorner(struct Window *window, u16 fillValue, u8 paletteNum)
+{
+ u16 i, j;
+ u16 x, y;
+ u8 bg_id;
+
+ bg_id = GetWindowBgId(window);
+ x = (u16)(GetWindowX(window) - 7);
+ y = GetWindowY(window);
+
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 6; j++)
+ {
+ FillBgTilemapRect(window->bgConfig,
+ bg_id,
+ (u16)(fillValue + 6 * i + j),
+ (u8)(x + j),
+ (u8)(y + i),
+ 1,
+ 1,
+ paletteNum);
+ }
+ }
+}
+
+THUMB_FUNC void DrawFrameAndWindow3(
+ struct Window *window, BOOL copy_to_vram, u16 fillValue, u8 paletteNum, u8 param4)
+{
+ u8 bg_id = GetWindowBgId(window);
+ if (param4 <= 1)
+ {
+ DrawFrame3(window->bgConfig,
+ bg_id,
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ paletteNum,
+ fillValue);
+ DrawWindowCorner(window, (u16)(fillValue + 30), paletteNum);
+ }
+ else
+ {
+ DrawFrame2(window->bgConfig,
+ bg_id,
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ paletteNum,
+ fillValue);
+ }
+
+ if (!copy_to_vram)
+ {
+ CopyWindowToVram(window);
+ }
+
+ FUN_0200D18C(window, fillValue);
+}
+
+THUMB_FUNC void ClearFrameAndWindow3(struct Window *window, u8 param1, BOOL copy_to_vram)
+{
+ u8 bg_id = GetWindowBgId(window);
+ if (param1 <= 1)
+ {
+ FillBgTilemapRect(window->bgConfig,
+ bg_id,
+ 0,
+ (u8)(GetWindowX(window) - 9),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 11),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+ }
+ else
+ {
+ FillBgTilemapRect(window->bgConfig,
+ bg_id,
+ 0,
+ (u8)(GetWindowX(window) - 2),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 4),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+ }
+
+ if (!copy_to_vram)
+ {
+ ClearWindowTilemapAndCopyToVram(window);
+ }
+}
+
+THUMB_FUNC struct UnkStruct_0200CABC_1 *FUN_0200D858(struct Window *window, u32 param1)
+{
+ u32 heap_id = BgConfig_GetHeapId(window->bgConfig);
+ void *charptr = BgGetCharPtr(GetWindowBgId(window));
+
+ struct UnkStruct_0200CABC_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200CABC_1));
+ memcpy(ptr->unk004[8], charptr + (param1 + 18) * 32, 0x80);
+ void *ptr2 = AllocFromHeap(heap_id, 0x80);
+ memcpy(ptr2, charptr + (param1 + 10) * 32, 0x20);
+ memcpy(ptr2 + 0x20, charptr + (param1 + 11) * 32, 0x20);
+ memcpy(ptr2 + 0x40, charptr + (param1 + 10) * 32, 0x20);
+ memcpy(ptr2 + 0x60, charptr + (param1 + 11) * 32, 0x20);
+
+ for (u8 i = 0; i < 8; i++)
+ {
+ memcpy(ptr->unk004[i], ptr2, 0x80);
+ }
+ FreeToHeap(ptr2);
+
+ NNSG2dCharacterData *pCharData;
+ void *r5 = GfGfxLoader_GetCharData(
+ NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0023_NCGR, FALSE, &pCharData, heap_id);
+ BlitRect4Bit(
+ pCharData->pRawData, 0, 0, 0x10, 0x80, ptr->unk004[0], 0x10, 0x80, 0, 0, 0x10, 0x80);
+ FreeToHeap(r5);
+
+ ptr->unk000 = window;
+ ptr->fillValue = (u16)param1;
+ ptr->unk486 = 0;
+ ptr->unk487 = 0;
+ ptr->unk488 = 0;
+
+ FUN_0200CA60(FUN_0200DB7C, ptr, 0);
+ FUN_0200D980(ptr, 1);
+
+ return ptr;
+}
+
+THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1)
+{
+ u8 bg_id = GetWindowBgId(param0->unk000);
+ u8 x = GetWindowX(param0->unk000);
+ u8 y = GetWindowY(param0->unk000);
+ u8 width = GetWindowWidth(param0->unk000);
+
+ if (param1 == 2)
+ {
+ BG_LoadCharTilesData(param0->unk000->bgConfig,
+ bg_id,
+ (u32 *)param0->unk004[8],
+ 0x80,
+ (u32)(param0->fillValue + 18));
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 10),
+ (u8)(x + width + 1),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 11),
+ (u8)(x + width + 2),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 10),
+ (u8)(x + width + 1),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 11),
+ (u8)(x + width + 2),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ BgCommitTilemapBufferToVram(param0->unk000->bgConfig, bg_id);
+ return;
+ }
+
+ BG_LoadCharTilesData(param0->unk000->bgConfig,
+ bg_id,
+ (u32 *)param0->unk004[param0->unk487],
+ 0x80,
+ (u32)(param0->fillValue + 18));
+ if (param1 != 0)
+ {
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 18),
+ (u8)(x + width + 1),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 19),
+ (u8)(x + width + 2),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 20),
+ (u8)(x + width + 1),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->fillValue + 21),
+ (u8)(x + width + 2),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ BgCommitTilemapBufferToVram(param0->unk000->bgConfig, bg_id);
+ }
+}
+
+THUMB_FUNC void FUN_0200DB7C(u32 param0, void *param1)
+{
+ struct UnkStruct_0200CABC_1 *r1 = (struct UnkStruct_0200CABC_1 *)param1;
+
+ if (r1->unk488 != 0)
+ {
+ if (r1->unk488 == 1)
+ {
+ FUN_0200D980(r1, 2);
+ }
+ FUN_0200CAB4((s32)param0);
+ return;
+ }
+
+ r1->unk486++;
+ if (r1->unk486 == 16)
+ {
+ r1->unk486 = 0;
+ r1->unk487 = (r1->unk487 + 1) & 7;
+ FUN_0200D980(r1, 0);
+ }
+}
+
+THUMB_FUNC void FUN_0200DBE8(u32 param0, void *param1)
+{
+ FreeToHeap(param1);
+ FUN_0200CAB4((s32)param0);
+}
+
+THUMB_FUNC void FUN_0200DBFC(struct UnkStruct_0200CABC_1 *param0)
+{
+ FUN_0200CA98(FUN_0200DBE8, param0, 0);
+ param0->unk488 = 1;
+}
+
+THUMB_FUNC void FUN_0200DC24(struct UnkStruct_0200CABC_1 *param0)
+{
+ FUN_0200CA98(FUN_0200DBE8, param0, 0);
+ param0->unk488 = 2;
+}
+
+THUMB_FUNC u8 *FUN_0200DC4C(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u16 param6,
+ u8 param7,
+ s32 param8)
+{
+ struct UnkStruct_0200CABC_2 *r4 = FUN_0200DD70(bg_config, bg_id, param2, param3, (u32)param8);
+ FUN_0200DDAC(r4, (u32)param8);
+ FUN_0200DDD8(r4);
+ FUN_0200DE30(r4, param2, param3);
+ FUN_0200DE80(r4, param6, param7);
+ DrawFramed10x10Square(r4, param4, param5);
+ BgCommitTilemapBufferToVram(bg_config, bg_id);
+
+ return &r4->unk16f;
+}
+
+THUMB_FUNC u8 *FUN_0200DCA4(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ struct Pokemon *param6,
+ s32 param7)
+{
+ struct UnkStruct_0200CABC_2 *r4 = FUN_0200DD70(bg_config, bg_id, param2, param3, (u32)param7);
+ FUN_0200DDAC(r4, (u32)param7);
+ FUN_0200DDD8(r4);
+ FUN_0200DE30(r4, param2, param3);
+ FUN_0200DEC0(r4, param6);
+ DrawFramed10x10Square(r4, param4, param5);
+ BgCommitTilemapBufferToVram(bg_config, bg_id);
+
+ return &r4->unk16f;
+}
+
+THUMB_FUNC void FUN_0200DCF8(u32 param0, void *param1)
+{
+ struct UnkStruct_0200CABC_2 *unk = (struct UnkStruct_0200CABC_2 *)param1;
+ switch (unk->unk16f)
+ {
+ case 1:
+ ClearFramed10x10Square(unk);
+ FUN_0200C3DC(unk->unk164);
+ MOD05_021D99F8(unk);
+ FUN_0200621C((s32)param0);
+ return;
+ case 2:
+ unk->unk16f = 3;
+ FUN_02020130(*unk->unk164, 1);
+ break;
+ case 3:
+ if (FUN_0202022C(*unk->unk164) == 6)
+ {
+ unk->unk16f = 0;
+ }
+ }
+
+ FUN_020201E4(*unk->unk164, 0x1000);
+ FUN_0201FDEC(unk->unk000);
+}
+
+THUMB_FUNC struct UnkStruct_0200CABC_2 *FUN_0200DD70(
+ struct BgConfig *bg_config, u8 bg_id, u8 param2, u8 param3, u32 param4)
+{
+ struct UnkStruct_0200CABC_2 *res = FUN_0201B6C8(FUN_020061E8(FUN_0200DCF8, 0x170, 0, param4));
+
+ res->unk16f = 0;
+ res->bgConfig = bg_config;
+ res->bgId = bg_id;
+ res->x = param2;
+ res->y = param3;
+
+ return res;
+}
+
+THUMB_FUNC void FUN_0200DDAC(struct UnkStruct_0200CABC_2 *param0, u32 param1)
+{
+
+ const u32 UNK_020ECEA8[] = {
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x00,
+ 0x00,
+ };
+ MOD05_021D959C(param0, UNK_020ECEA8, 1, param1);
+}
+
+THUMB_FUNC void FUN_0200DDD8(struct UnkStruct_0200CABC_2 *param0)
+{
+ MOD05_021D967C(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0049_NCLR, 0, 1, 1, 0x15CD5);
+ MOD05_021D96F4(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0047_NCER, 0, 0x15CD5);
+ MOD05_021D9708(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0046_NANR, 0, 0x15CD5);
+ MOD05_021D971C(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0048_NCGR, 0, 1, 0x15CD5);
+}
+
+THUMB_FUNC void FUN_0200DE30(struct UnkStruct_0200CABC_2 *param0, u8 param1, u8 param2)
+{
+ u32 UNK_020ECEC0[] = {
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x01,
+ 0x015CD5,
+ 0x015CD5,
+ 0x015CD5,
+ 0x015CD5,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ };
+ ((u16 *)UNK_020ECEC0)[0] = (u16)((param1 + 5) * 8);
+ ((u16 *)UNK_020ECEC0)[1] = (u16)((param2 + 5) * 8);
+ param0->unk164 = MOD05_021D9820(param0, UNK_020ECEC0);
+ FUN_0201FDEC(param0->unk000);
+ GX_EngineBToggleLayers(0x10, GX_LAYER_TOGGLE_ON);
+}
+
+THUMB_FUNC void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 param2)
+{
+ struct UnkStruct63_021DB450 *r7 = FUN_02006D98(param0->unk162);
+ struct SomeDrawPokemonStruct stc;
+ FUN_02068C00(&stc, param1, param2, 2, 0, 0, 0);
+ FUN_0200DEF4(param0, &stc);
+ FUN_020072E8(r7);
+}
+
+THUMB_FUNC void FUN_0200DEC0(struct UnkStruct_0200CABC_2 *param0, struct Pokemon *param1)
+{
+ struct UnkStruct63_021DB450 *r6 = FUN_02006D98(param0->unk162);
+ struct SomeDrawPokemonStruct st0;
+ FUN_02068B68(&st0, param1, 2);
+ FUN_0200DEF4(param0, &st0);
+ FUN_020072E8(r6);
+}
+
+THUMB_FUNC void FUN_0200DEF4(
+ struct UnkStruct_0200CABC_2 *param0, struct SomeDrawPokemonStruct *param1)
+{
+ void *r4 = AllocFromHeap(param0->unk162, 0x1900);
+
+ struct UnkStruct_0200CABC_3 st18 = UNK_020ECE98;
+ FUN_02012400(param1->unk0, param1->unk2, param0->unk162, &st18, r4);
+
+ struct UnkStruct_0200CABC_3 st8 = UNK_020ECE88;
+ FUN_02012400(param1->unk0, param1->unk2, param0->unk162, &st8, r4 + 0xc80);
+
+ u32 st4 = FUN_02009C5C(FUN_020094F0(param0->unk130, 0x15CD5));
+
+ u32 r7 = NNS_G2dGetImageLocation(st4, 1);
+ DC_FlushRange(r4, 0x1900);
+ GX_LoadOBJ(r4, r7, 0x1900);
+ FreeToHeap(r4);
+ void *res = FUN_02012470(param1->unk0, param1->unk4, param0->unk162);
+
+ u32 r5 =
+ NNS_G2dGetImagePaletteLocation(FUN_02009E54(FUN_020094F0(param0->unk134, 0x15CD5), st4), 1);
+ DC_FlushRange(res, 0x20);
+ GX_LoadOBJPltt(res, r5, 0x20);
+ FreeToHeap(res);
+}
+
+THUMB_FUNC void DrawFramed10x10Square(
+ struct UnkStruct_0200CABC_2 *param0, u8 paletteNum, u16 fillValue)
+{
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ fillValue,
+ (u8)(param0->x - 1),
+ (u8)(param0->y - 1),
+ 1,
+ 1,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 1),
+ param0->x,
+ (u8)(param0->y - 1),
+ 10,
+ 1,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 2),
+ (u8)(param0->x + 10),
+ (u8)(param0->y - 1),
+ 1,
+ 1,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 4),
+ param0->x,
+ param0->y,
+ 10,
+ 10,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 3),
+ (u8)(param0->x - 1),
+ param0->y,
+ 1,
+ 10,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 5),
+ (u8)(param0->x + 10),
+ param0->y,
+ 1,
+ 10,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 6),
+ (u8)(param0->x - 1),
+ (u8)(param0->y + 10),
+ 1,
+ 1,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 7),
+ param0->x,
+ (u8)(param0->y + 10),
+ 10,
+ 1,
+ paletteNum);
+ FillBgTilemapRect(param0->bgConfig,
+ param0->bgId,
+ (u16)(fillValue + 8),
+ (u8)(param0->x + 10),
+ (u8)(param0->y + 10),
+ 1,
+ 1,
+ paletteNum);
+
+ ScheduleBgTilemapBufferTransfer(param0->bgConfig, param0->bgId);
+}
+
+THUMB_FUNC void ClearFramed10x10Square(struct UnkStruct_0200CABC_2 *param0)
+{
+ FillBgTilemapRect(
+ param0->bgConfig, param0->bgId, 0, (u8)(param0->x - 1), (u8)(param0->y - 1), 12, 12, 0);
+ ScheduleBgTilemapBufferTransfer(param0->bgConfig, param0->bgId);
+}
diff --git a/arm9/src/rs_migrate_string.c b/arm9/src/rs_migrate_string.c
new file mode 100644
index 00000000..46752374
--- /dev/null
+++ b/arm9/src/rs_migrate_string.c
@@ -0,0 +1,327 @@
+#include "global.h"
+#include "string_util.h"
+#include "rs_migrate_string.h"
+
+static const u16 conversion_table[][2] = {
+ {0x0001, 0x01DE}, // <space>
+ {0x0003, 0x0003}, // あ
+ {0x0005, 0x0005}, // い
+ {0x0007, 0x0007}, // う
+ {0x0009, 0x0009}, // え
+ {0x000B, 0x000B}, // お
+ {0x000C, 0x000C}, // か
+ {0x000E, 0x000E}, // き
+ {0x0010, 0x0010}, // く
+ {0x0012, 0x0012}, // け
+ {0x0014, 0x0014}, // こ
+ {0x0016, 0x0016}, // さ
+ {0x0018, 0x0018}, // し
+ {0x001A, 0x001A}, // す
+ {0x001C, 0x001C}, // せ
+ {0x001E, 0x001E}, // そ
+ {0x0020, 0x0020}, // た
+ {0x0022, 0x0022}, // ち
+ {0x0025, 0x0025}, // つ
+ {0x0027, 0x0027}, // て
+ {0x0029, 0x0029}, // と
+ {0x002B, 0x002B}, // な
+ {0x002C, 0x002C}, // に
+ {0x002D, 0x002D}, // ぬ
+ {0x002E, 0x002E}, // ね
+ {0x002F, 0x002F}, // の
+ {0x0030, 0x0030}, // は
+ {0x0033, 0x0033}, // ひ
+ {0x0036, 0x0036}, // ふ
+ {0x0039, 0x0039}, // へ
+ {0x003C, 0x003C}, // ほ
+ {0x003F, 0x003F}, // ま
+ {0x0040, 0x0040}, // み
+ {0x0041, 0x0041}, // む
+ {0x0042, 0x0042}, // め
+ {0x0043, 0x0043}, // も
+ {0x0045, 0x0045}, // や
+ {0x0047, 0x0047}, // ゆ
+ {0x0049, 0x0049}, // よ
+ {0x004A, 0x004A}, // ら
+ {0x004B, 0x004B}, // り
+ {0x004C, 0x004C}, // る
+ {0x004D, 0x004D}, // れ
+ {0x004E, 0x004E}, // ろ
+ {0x004F, 0x004F}, // わ
+ {0x0050, 0x0050}, // を
+ {0x0051, 0x0051}, // ん
+ {0x0002, 0x0002}, // ぁ
+ {0x0004, 0x0004}, // ぃ
+ {0x0006, 0x0006}, // ぅ
+ {0x0008, 0x0008}, // ぇ
+ {0x000A, 0x000A}, // ぉ
+ {0x0044, 0x0044}, // ゃ
+ {0x0046, 0x0046}, // ゅ
+ {0x0048, 0x0048}, // ょ
+ {0x000D, 0x000D}, // が
+ {0x000F, 0x000F}, // ぎ
+ {0x0011, 0x0011}, // ぐ
+ {0x0013, 0x0013}, // げ
+ {0x0015, 0x0015}, // ご
+ {0x0017, 0x0017}, // ざ
+ {0x0019, 0x0019}, // じ
+ {0x001B, 0x001B}, // ず
+ {0x001D, 0x001D}, // ぜ
+ {0x001F, 0x001F}, // ぞ
+ {0x0021, 0x0021}, // だ
+ {0x0023, 0x0023}, // ぢ
+ {0x0026, 0x0026}, // づ
+ {0x0028, 0x0028}, // で
+ {0x002A, 0x002A}, // ど
+ {0x0031, 0x0031}, // ば
+ {0x0034, 0x0034}, // び
+ {0x0037, 0x0037}, // ぶ
+ {0x003A, 0x003A}, // べ
+ {0x003D, 0x003D}, // ぼ
+ {0x0032, 0x0032}, // ぱ
+ {0x0035, 0x0035}, // ぴ
+ {0x0038, 0x0038}, // ぷ
+ {0x003B, 0x003B}, // ぺ
+ {0x003E, 0x003E}, // ぽ
+ {0x0024, 0x0024}, // っ
+ {0x0053, 0x0053}, // ア
+ {0x0055, 0x0055}, // イ
+ {0x0057, 0x0057}, // ウ
+ {0x0059, 0x0059}, // エ
+ {0x005B, 0x005B}, // オ
+ {0x005C, 0x005C}, // カ
+ {0x005E, 0x005E}, // キ
+ {0x0060, 0x0060}, // ク
+ {0x0062, 0x0062}, // ケ
+ {0x0064, 0x0064}, // コ
+ {0x0066, 0x0066}, // サ
+ {0x0068, 0x0068}, // シ
+ {0x006A, 0x006A}, // ス
+ {0x006C, 0x006C}, // セ
+ {0x006E, 0x006E}, // ソ
+ {0x0070, 0x0070}, // タ
+ {0x0072, 0x0072}, // チ
+ {0x0075, 0x0075}, // ツ
+ {0x0077, 0x0077}, // テ
+ {0x0079, 0x0079}, // ト
+ {0x007B, 0x007B}, // ナ
+ {0x007C, 0x007C}, // ニ
+ {0x007D, 0x007D}, // ヌ
+ {0x007E, 0x007E}, // ネ
+ {0x007F, 0x007F}, // ノ
+ {0x0080, 0x0080}, // ハ
+ {0x0083, 0x0083}, // ヒ
+ {0x0086, 0x0086}, // フ
+ {0x0089, 0x0089}, // ヘ
+ {0x008C, 0x008C}, // ホ
+ {0x008F, 0x008F}, // マ
+ {0x0090, 0x0090}, // ミ
+ {0x0091, 0x0091}, // ム
+ {0x0092, 0x0092}, // メ
+ {0x0093, 0x0093}, // モ
+ {0x0095, 0x0095}, // ヤ
+ {0x0097, 0x0097}, // ユ
+ {0x0099, 0x0099}, // ヨ
+ {0x009A, 0x009A}, // ラ
+ {0x009B, 0x009B}, // リ
+ {0x009C, 0x009C}, // ル
+ {0x009D, 0x009D}, // レ
+ {0x009E, 0x009E}, // ロ
+ {0x009F, 0x009F}, // ワ
+ {0x00A0, 0x00A0}, // ヲ
+ {0x00A1, 0x00A1}, // ン
+ {0x0052, 0x0052}, // ァ
+ {0x0054, 0x0054}, // ィ
+ {0x0056, 0x0056}, // ゥ
+ {0x0058, 0x0058}, // ェ
+ {0x005A, 0x005A}, // ォ
+ {0x0094, 0x0094}, // ャ
+ {0x0096, 0x0096}, // ュ
+ {0x0098, 0x0098}, // ョ
+ {0x005D, 0x005D}, // ガ
+ {0x005F, 0x005F}, // ギ
+ {0x0061, 0x0061}, // グ
+ {0x0063, 0x0063}, // ゲ
+ {0x0065, 0x0065}, // ゴ
+ {0x0067, 0x0067}, // ザ
+ {0x0069, 0x0069}, // ジ
+ {0x006B, 0x006B}, // ズ
+ {0x006D, 0x006D}, // ゼ
+ {0x006F, 0x006F}, // ゾ
+ {0x0071, 0x0071}, // ダ
+ {0x0073, 0x0073}, // ヂ
+ {0x0076, 0x0076}, // ヅ
+ {0x0078, 0x0078}, // デ
+ {0x007A, 0x007A}, // ド
+ {0x0081, 0x0081}, // バ
+ {0x0084, 0x0084}, // ビ
+ {0x0087, 0x0087}, // ブ
+ {0x008A, 0x008A}, // ベ
+ {0x008D, 0x008D}, // ボ
+ {0x0082, 0x0082}, // パ
+ {0x0085, 0x0085}, // ピ
+ {0x0088, 0x0088}, // プ
+ {0x008B, 0x008B}, // ペ
+ {0x008E, 0x008E}, // ポ
+ {0x0074, 0x0074}, // ッ
+ {0x00A2, 0x0121}, // 0
+ {0x00A3, 0x0122}, // 1
+ {0x00A4, 0x0123}, // 2
+ {0x00A5, 0x0124}, // 3
+ {0x00A6, 0x0125}, // 4
+ {0x00A7, 0x0126}, // 5
+ {0x00A8, 0x0127}, // 6
+ {0x00A9, 0x0128}, // 7
+ {0x00AA, 0x0129}, // 8
+ {0x00AB, 0x012A}, // 9
+ {0x00E1, 0x01AB}, // !
+ {0x00E2, 0x01AC}, // ?
+ {0x00E4, 0x01AE}, // .
+ {0x00F1, 0x01BE}, // -
+ {0x00E6, 0x01B0}, // ·
+ {0x00E5, 0x01AF}, // …
+ {0x00EA, 0x00EA}, // “
+ {0x00EB, 0x00EB}, // ”
+ {0x00E8, 0x01B2}, // ‘
+ {0x00E9, 0x01B3}, // '
+ {0x00EE, 0x01BB}, // ♂
+ {0x00EF, 0x01BC}, // ♀
+ {0x0112, 0x0112}, // ¥
+ {0x00E3, 0x01AD}, // ,
+ {0x00F2, 0x0176}, // ×
+ {0x00E7, 0x01B1}, // /
+ {0x00AC, 0x012B}, // A
+ {0x00AD, 0x012C}, // B
+ {0x00AE, 0x012D}, // C
+ {0x00AF, 0x012E}, // D
+ {0x00B0, 0x012F}, // E
+ {0x00B1, 0x0130}, // F
+ {0x00B2, 0x0131}, // G
+ {0x00B3, 0x0132}, // H
+ {0x00B4, 0x0133}, // I
+ {0x00B5, 0x0134}, // J
+ {0x00B6, 0x0135}, // K
+ {0x00B7, 0x0136}, // L
+ {0x00B8, 0x0137}, // M
+ {0x00B9, 0x0138}, // N
+ {0x00BA, 0x0139}, // O
+ {0x00BB, 0x013A}, // P
+ {0x00BC, 0x013B}, // Q
+ {0x00BD, 0x013C}, // R
+ {0x00BE, 0x013D}, // S
+ {0x00BF, 0x013E}, // T
+ {0x00C0, 0x013F}, // U
+ {0x00C1, 0x0140}, // V
+ {0x00C2, 0x0141}, // W
+ {0x00C3, 0x0142}, // X
+ {0x00C4, 0x0143}, // Y
+ {0x00C5, 0x0144}, // Z
+ {0x00C6, 0x0145}, // a
+ {0x00C7, 0x0146}, // b
+ {0x00C8, 0x0147}, // c
+ {0x00C9, 0x0148}, // d
+ {0x00CA, 0x0149}, // e
+ {0x00CB, 0x014A}, // f
+ {0x00CC, 0x014B}, // g
+ {0x00CD, 0x014C}, // h
+ {0x00CE, 0x014D}, // i
+ {0x00CF, 0x014E}, // j
+ {0x00D0, 0x014F}, // k
+ {0x00D1, 0x0150}, // l
+ {0x00D2, 0x0151}, // m
+ {0x00D3, 0x0152}, // n
+ {0x00D4, 0x0153}, // o
+ {0x00D5, 0x0154}, // p
+ {0x00D6, 0x0155}, // q
+ {0x00D7, 0x0156}, // r
+ {0x00D8, 0x0157}, // s
+ {0x00D9, 0x0158}, // t
+ {0x00DA, 0x0159}, // u
+ {0x00DB, 0x015A}, // v
+ {0x00DC, 0x015B}, // w
+ {0x00DD, 0x015C}, // x
+ {0x00DE, 0x015D}, // y
+ {0x00DF, 0x015E}, // z
+ {0x011F, 0x011F}, // ▶
+ {0x00F6, 0x01C4}, // :
+ {0x0163, 0x0163}, // Ä
+ {0x0175, 0x0175}, // Ö
+ {0x017B, 0x017B}, // Ü
+ {0x0183, 0x0183}, // ä
+ {0x0195, 0x0195}, // ö
+ {0x019B, 0x019B}, // ü
+};
+
+static THUMB_FUNC u16 GetOpeningQuote(u32 language)
+{
+ switch (language)
+ {
+ default:
+ return 0xEA;
+ case LANGUAGE_ENGLISH:
+ case LANGUAGE_ITALIAN:
+ case LANGUAGE_SPANISH:
+ return 0x1B4;
+ case LANGUAGE_FRENCH:
+ return 0x1B7;
+ case LANGUAGE_GERMAN:
+ return 0x1B6;
+ }
+}
+
+static THUMB_FUNC u16 GetClosingQuote(u32 language)
+{
+ switch (language)
+ {
+ default:
+ return 0xEB;
+ case LANGUAGE_ENGLISH:
+ case LANGUAGE_ITALIAN:
+ case LANGUAGE_SPANISH:
+ return 0x1B5;
+ case LANGUAGE_FRENCH:
+ return 0x1B8;
+ case LANGUAGE_GERMAN:
+ return 0x1B4;
+ }
+}
+
+THUMB_FUNC BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language)
+{
+ BOOL notFullWidth;
+ u32 i;
+
+ notFullWidth = (language != LANGUAGE_JAPANESE);
+ for (i = 0; i < length - 1; i++)
+ {
+ if (rs_str[i] == 0xFF) // RS: EOS
+ break;
+ if (rs_str[i] >= 0xF7) // RS: DYNAMIC
+ {
+ // If we're here, the provided name is corrupt.
+ // Fill it with question marks.
+ s32 r3 = (s32)((length - 1) < 10 ? (length - 1) : 10);
+ s32 r1;
+ for (r1 = 0; r1 < r3; r1++)
+ {
+ dp_str[r1] = 0x1AC; // DP: ?
+ }
+ dp_str[r1] = EOS;
+ return FALSE;
+ }
+ switch (conversion_table[rs_str[i]][notFullWidth])
+ {
+ case 0xEA: // RS: Opening double quote
+ dp_str[i] = GetOpeningQuote(language);
+ break;
+ case 0xEB: // RS: Closing double quote
+ dp_str[i] = GetClosingQuote(language);
+ break;
+ default:
+ dp_str[i] = conversion_table[rs_str[i]][notFullWidth];
+ break;
+ }
+ }
+ dp_str[i] = EOS;
+ return TRUE;
+}
diff --git a/arm9/src/save.c b/arm9/src/save.c
index 7eb523f6..524edfb7 100644
--- a/arm9/src/save.c
+++ b/arm9/src/save.c
@@ -4,6 +4,8 @@
#include "heap.h"
#include "CARD_backup.h"
#include "OS_spinLock.h"
+#include "save_data_read_error.h"
+#include "save_data_write_error.h"
#pragma thumb on
@@ -13,12 +15,6 @@
extern void FUN_02016444(u8 mask);
extern void FUN_02016454(u8 mask);
-// unk_02089D90.s
-extern void FUN_02089D90(int);
-
-// unk_02089F24.s
-extern void FUN_0208A0B8(int, int);
-
struct {
struct SaveBlock2 * ptr;
BOOL iswritten;
@@ -861,7 +857,7 @@ BOOL FlashLoadChunk(u32 src, void * dest, u32 size)
if (!r5)
{
FreeToHeap(UNK_021C59C8.ptr);
- FUN_02089D90(1);
+ ShowSaveDataReadError(1);
}
return r5;
}
@@ -910,10 +906,10 @@ BOOL WaitFlashWrite(int lock, BOOL * res)
return FALSE;
}
-void SaveErrorHandling(int lock, int errno)
+void SaveErrorHandling(int lock, u32 errno)
{
CARD_UnlockBackup((u16)lock);
OS_ReleaseLockID((u16)lock);
FreeToHeap(UNK_021C59C8.ptr);
- FUN_0208A0B8(1, errno);
+ ShowSaveDataWriteError(1, errno);
}
diff --git a/arm9/src/save_data_read_error.c b/arm9/src/save_data_read_error.c
new file mode 100644
index 00000000..45a0c7bd
--- /dev/null
+++ b/arm9/src/save_data_read_error.c
@@ -0,0 +1,185 @@
+#include "global.h"
+#include "bg_window.h"
+#include "brightness.h"
+#include "game_init.h"
+#include "msgdata.h"
+#include "msgdata/msg.naix"
+#include "save_data_read_error.h"
+#include "text.h"
+#include "render_window.h"
+
+extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id);
+extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen);
+extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32);
+
+static const struct WindowTemplate sSaveDataReadErrorWindowTemplate = {
+ .bgId = GF_BG_LYR_MAIN_0,
+ .tilemapLeft = 3,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 18,
+ .paletteNum = 0x01,
+ .baseTile = 0x23,
+};
+
+static const struct GraphicsModes sSaveDataReadErrorGraphicsModes = {
+ .dispMode = GX_DISPMODE_GRAPHICS,
+ .bgMode = GX_BGMODE_0,
+ .subMode = GX_BGMODE_0,
+ ._2d3dMode = GX_BG0_AS_2D,
+};
+
+static const struct BgTemplate sSaveDataReadErrorBgTemplate = {
+ .x = 0,
+ .y = 0,
+ .bufferSize = 0x800,
+ .baseTile = 0,
+ .size = GF_BG_SCR_SIZE_256x256,
+ .colorMode = GX_BG_COLORMODE_16,
+ .screenBase = GX_BG_SCRBASE_0x0000,
+ .charBase = GX_BG_CHARBASE_0x18000,
+ .bgExtPltt = GX_BG_EXTPLTT_01,
+ .priority = 1,
+ .areaOver = GX_BG_AREAOVER_XLU,
+ .unk17 = 0,
+ .mosaic = FALSE,
+};
+
+static const struct GraphicsBanks sSaveDataReadErrorGraphicsBanks = {
+ .bg = 3,
+ .bgextpltt = 0,
+ .subbg = 0,
+ .subbgextpltt = 0,
+ .obj = 0,
+ .objextpltt = 0,
+ .subobj = 0,
+ .subobjextpltt = 0,
+ .tex = 0,
+ .texpltt = 0,
+};
+
+THUMB_FUNC void ShowSaveDataReadError(u32 heap_id)
+{
+ struct Window window;
+
+ FUN_0200E3A0(PM_LCD_TOP, 0);
+ FUN_0200E3A0(PM_LCD_BOTTOM, 0);
+
+ Main_SetVBlankIntrCB(NULL, NULL);
+ FUN_02015F34(NULL, NULL);
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+
+ SetKeyRepeatTimers(4, 8);
+
+ gMain.screensFlipped = 0;
+
+ GX_SwapDisplay();
+ reg_G2_BLDCNT = 0;
+ reg_G2S_DB_BLDCNT = 0;
+ reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
+ reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
+ GX_SetBanks(&sSaveDataReadErrorGraphicsBanks);
+
+ struct BgConfig* bg_config = BgConfig_Alloc(heap_id);
+
+ SetBothScreensModesAndDisable(&sSaveDataReadErrorGraphicsModes);
+
+ InitBgFromTemplate(bg_config, 0, &sSaveDataReadErrorBgTemplate, 0);
+ BgClearTilemapBufferAndCommit(bg_config, 0);
+ FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id);
+ FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id);
+ BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id);
+ BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21);
+ BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21);
+
+ struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0005_bin, heap_id);
+ struct String* str = String_ctor(384, heap_id);
+
+ FUN_0201BD5C();
+
+ AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate);
+ FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
+ DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2);
+
+ ReadMsgDataIntoString(msg_data, 0, str);
+ AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL);
+ String_dtor(str);
+
+ GX_BothDispOn();
+ FUN_0200E394(PM_LCD_TOP);
+ FUN_0200E394(PM_LCD_BOTTOM);
+ SetBrightness(0, 0x3F, 3);
+
+ while (TRUE)
+ {
+ HandleDSLidAction();
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
+ }
+}
+
+THUMB_FUNC void ShowGBACartRemovedError(u32 heap_id)
+{
+ struct Window window;
+
+ FUN_0200E3A0(PM_LCD_TOP, 0);
+ FUN_0200E3A0(PM_LCD_BOTTOM, 0);
+
+ Main_SetVBlankIntrCB(NULL, NULL);
+ FUN_02015F34(NULL, NULL);
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+
+ SetKeyRepeatTimers(4, 8);
+
+ gMain.screensFlipped = 0;
+
+ GX_SwapDisplay();
+ reg_G2_BLDCNT = 0;
+ reg_G2S_DB_BLDCNT = 0;
+ reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
+ reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
+ GX_SetBanks(&sSaveDataReadErrorGraphicsBanks);
+
+ struct BgConfig* bg_config = BgConfig_Alloc(heap_id);
+
+ SetBothScreensModesAndDisable(&sSaveDataReadErrorGraphicsModes);
+
+ InitBgFromTemplate(bg_config, 0, &sSaveDataReadErrorBgTemplate, 0);
+ BgClearTilemapBufferAndCommit(bg_config, 0);
+ FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id);
+ FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id);
+ BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id);
+ BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21);
+ BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21);
+
+ struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0005_bin, heap_id);
+ struct String* str = String_ctor(384, heap_id);
+
+ FUN_0201BD5C();
+
+ AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate);
+ FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
+ DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2);
+
+ ReadMsgDataIntoString(msg_data, 1, str);
+ AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL);
+ String_dtor(str);
+
+ GX_BothDispOn();
+ FUN_0200E394(PM_LCD_TOP);
+ FUN_0200E394(PM_LCD_BOTTOM);
+ SetBrightness(0, 0x3F, 3);
+
+ while (TRUE)
+ {
+ HandleDSLidAction();
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
+ }
+}
diff --git a/arm9/src/save_data_write_error.c b/arm9/src/save_data_write_error.c
new file mode 100644
index 00000000..3f03fb4b
--- /dev/null
+++ b/arm9/src/save_data_write_error.c
@@ -0,0 +1,130 @@
+#include "global.h"
+#include "bg_window.h"
+#include "brightness.h"
+#include "game_init.h"
+#include "msgdata.h"
+#include "msgdata/msg.naix"
+#include "save_data_write_error.h"
+#include "text.h"
+#include "render_window.h"
+
+extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id);
+extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen);
+extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32);
+
+static const struct WindowTemplate sSaveDataWriteErrorWindowTemplate = {
+ .bgId = GF_BG_LYR_MAIN_0,
+ .tilemapLeft = 3,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 18,
+ .paletteNum = 0x01,
+ .baseTile = 0x23,
+};
+
+static const struct GraphicsModes sSaveDataWriteErrorGraphicsModes = {
+ .dispMode = GX_DISPMODE_GRAPHICS,
+ .bgMode = GX_BGMODE_0,
+ .subMode = GX_BGMODE_0,
+ ._2d3dMode = GX_BG0_AS_2D,
+};
+
+static const struct BgTemplate sSaveDataWriteErrorBgTemplate = {
+ .x = 0,
+ .y = 0,
+ .bufferSize = 0x800,
+ .baseTile = 0,
+ .size = GF_BG_SCR_SIZE_256x256,
+ .colorMode = GX_BG_COLORMODE_16,
+ .screenBase = GX_BG_SCRBASE_0x0000,
+ .charBase = GX_BG_CHARBASE_0x18000,
+ .bgExtPltt = GX_BG_EXTPLTT_01,
+ .priority = 1,
+ .areaOver = GX_BG_AREAOVER_XLU,
+ .unk17 = 0,
+ .mosaic = FALSE,
+};
+
+static const struct GraphicsBanks sSaveDataWriteErrorGraphicsBanks = {
+ .bg = 3,
+ .bgextpltt = 0,
+ .subbg = 0,
+ .subbgextpltt = 0,
+ .obj = 0,
+ .objextpltt = 0,
+ .subobj = 0,
+ .subobjextpltt = 0,
+ .tex = 0,
+ .texpltt = 0,
+};
+
+THUMB_FUNC void ShowSaveDataWriteError(u32 heap_id, u32 err_no)
+{
+ struct Window window;
+
+ u32 msg_no;
+ if (err_no == 0) {
+ msg_no = 1;
+ } else {
+ msg_no = 0;
+ }
+
+ FUN_0200E3A0(PM_LCD_TOP, 0);
+ FUN_0200E3A0(PM_LCD_BOTTOM, 0);
+
+ FUN_02015EF4();
+ Main_SetVBlankIntrCB(NULL, NULL);
+ FUN_02015F34(NULL, NULL);
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+
+ SetKeyRepeatTimers(4, 8);
+
+ gMain.screensFlipped = 0;
+
+ GX_SwapDisplay();
+ reg_G2_BLDCNT = 0;
+ reg_G2S_DB_BLDCNT = 0;
+ reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
+ reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
+ GX_SetBanks(&sSaveDataWriteErrorGraphicsBanks);
+
+ struct BgConfig* bg_config = BgConfig_Alloc(heap_id);
+
+ SetBothScreensModesAndDisable(&sSaveDataWriteErrorGraphicsModes);
+
+ InitBgFromTemplate(bg_config, 0, &sSaveDataWriteErrorBgTemplate, 0);
+ BgClearTilemapBufferAndCommit(bg_config, 0);
+ FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id);
+ FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id);
+ BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id);
+ BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21);
+ BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21);
+
+ struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0006_bin, heap_id);
+ struct String* str = String_ctor(384, heap_id);
+
+ FUN_0201BD5C();
+
+ AddWindow(bg_config, &window, &sSaveDataWriteErrorWindowTemplate);
+ FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
+ DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2);
+
+ ReadMsgDataIntoString(msg_data, msg_no, str);
+ AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL);
+ String_dtor(str);
+
+ GX_BothDispOn();
+ FUN_0200E394(PM_LCD_TOP);
+ FUN_0200E394(PM_LCD_BOTTOM);
+ SetBrightness(0, 0x3F, 3);
+
+ while (TRUE)
+ {
+ HandleDSLidAction();
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
+ }
+}
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index c79684a0..2d57f0b1 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -1,10 +1,14 @@
#include "scrcmd.h"
+#include "unk_0200CA44.h"
#include "unk_0204639C.h"
#include "main.h"
#include "options.h"
#include "player_data.h"
#include "text.h"
#include "bg_window.h"
+#include "render_window.h"
+#include "text_02054590.h"
+
extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id);
extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id);
@@ -21,27 +25,19 @@ extern void MOD05_021E2C58(struct ScriptContext *ctx, u16 typ, u16 id, u16 word1
extern struct ScrStrBufs *MOD06_02244210(struct SaveBlock2 *sav, u16 poke, u16 sex, u8 flag, u8 *unk);
extern void MOD05_021E2CBC(struct ScriptContext *ctx, struct ScrStrBufs *str, u8 param2, u32 param3);
extern void MOD05_021E2BB8(void *param0, struct ScriptContext *ctx);
-extern BOOL FUN_020546C8(u8 param0);
extern u32 FUN_02058488(u32 param0);
extern BOOL FUN_02030F40(void);
extern void FUN_02055304(u32 param0, u32 param1);
extern void FUN_02039460(struct UnkSavStruct80 *arg);
-extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2);
-extern void FUN_02054608(u8 *param0, struct Options *options);
-extern void FUN_0200D0E0(struct Window *param0, u32 param1);
extern u32 FUN_02058510(u32 param0, u32 param1);
extern void MOD05_021E8128(u32 param0, u8 type, u16 map);
extern void MOD05_021E8130(u32 param0, u32 param1);
extern void MOD05_021E8158(struct UnkSavStruct80 *unk80);
extern struct Window * MOD05_021E8140(u32 param0);
extern BOOL MOD05_021E8148(u32 param0);
-extern u8 FUN_02054658(struct Window * param0, struct String *str, struct Options *opt, u32 param3);
extern void MOD05_021E8144(u32 param0);
-extern void FUN_0200CB00(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
-extern u32 Std_CreateYesNoMenu(u32 param0, u8 **param1, u32 param2, u32 param3, u32 param4);
+extern u32 Std_CreateYesNoMenu(struct BgConfig *param0, u8 **param1, u32 param2, u32 param3, u32 param4);
extern u32 FUN_020021AC(u32 param0, u32 param1);
-extern u32 FUN_0200D858(u32 *param0, u32 param1);
-extern void FUN_0200DBFC(u32 param0);
extern u32 MOD05_021E1BF8(struct UnkSavStruct80 *arg, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, u32 param6, u32 *param7, struct MsgData *msgData);
extern void MOD05_021E1C4C(u32 param0, u32 param1, u32 param2);
extern void MOD05_021E1C54(u32 param0);
@@ -54,11 +50,11 @@ extern void MOD05_021E26CC(u32 param0, u8 param1);
extern void MOD05_021E2B80(u32 param0, u8 param1);
extern void MOD05_021E2B9C(u32 param0, u8 param1);
extern u32 FUN_0205AEA4(u32 param0, const void *ptr);
-extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2);
extern u32 FUN_02058B2C(u32 param0);
extern u32 FUN_02058B4C(u32 param0);
extern u32 FUN_020580B4(u32 param0, u32 param1);
extern u32 FUN_02058060(u32 param0, u32 param1);
+extern void FUN_0203B1A8(u32 param0, void *param1);
extern u8 *UNK_020F34E0;
@@ -79,6 +75,7 @@ static BOOL FUN_0203AD2C(struct ScriptContext *ctx);
static BOOL FUN_0203AD78(struct ScriptContext *ctx);
static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1);
static BOOL FUN_0203B158(struct ScriptContext *ctx);
+static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2);
extern u8 sScriptConditionTable[6][3];
@@ -771,8 +768,8 @@ THUMB_FUNC BOOL ScrCmd_Unk0033(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u8 *unk = (u8 *)FUN_02039438(unk80, 6);
- FUN_020545B8(unk80->unk08, FUN_02039438(unk80, 1), 3);
- FUN_02054608(FUN_02039438(unk80, 1), Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2));
+ FUN_020545B8(unk80->unk08, (struct Window *)FUN_02039438(unk80, 1), 3);
+ FUN_02054608((struct Window *)FUN_02039438(unk80, 1), Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2));
*unk = 1;
return FALSE;
}
@@ -782,7 +779,7 @@ THUMB_FUNC BOOL ScrCmd_CloseMessageBox(struct ScriptContext* ctx)
struct UnkSavStruct80 *unk80 = ctx->unk80;
struct Window *unk = FUN_02039438(unk80, 0x1);
u8 *unk2 = FUN_02039438(unk80, 0x6);
- FUN_0200D0E0(unk, 0); //clear window?
+ ClearFrameAndWindow2(unk, 0); //clear window?
RemoveWindow(unk);
*unk2 = 0;
return FALSE;
@@ -956,7 +953,7 @@ THUMB_FUNC BOOL ScrCmd_Unk003A(struct ScriptContext *ctx)
ReadMsgDataIntoString(ctx->msgData, msg, *unk2);
StringExpandPlaceholders(*unk4, *unk3, *unk2);
- *unk1 = FUN_02054658(MOD05_021E8140(unk80->unk60), *unk3, Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2), 1);
+ *unk1 = (u8)FUN_02054658(MOD05_021E8140(unk80->unk60), *unk3, Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2), 1);
ctx->data[0] = wk;
SetupNativeScript(ctx, FUN_0203A94C);
return TRUE;
@@ -1110,15 +1107,16 @@ THUMB_FUNC static BOOL FUN_0203AB00(struct ScriptContext *ctx)
THUMB_FUNC BOOL ScrCmd_ShowSaveClock(struct ScriptContext *ctx)
{
- u32 *unk = FUN_02039438(ctx->unk80, 1);
- u32 *unk2 = FUN_02039438(ctx->unk80, 18);
+ struct Window *unk = (struct Window *)FUN_02039438(ctx->unk80, 1);
+ struct UnkStruct_0200CABC_1 **unk2 = (struct UnkStruct_0200CABC_1 **)FUN_02039438(ctx->unk80, 18);
*unk2 = FUN_0200D858(unk, 994);
return FALSE;
}
+
THUMB_FUNC BOOL ScrCmd_HideSaveClock(struct ScriptContext *ctx)
{
- u32 *unk = FUN_02039438(ctx->unk80, 18);
+ struct UnkStruct_0200CABC_1 **unk = (struct UnkStruct_0200CABC_1 **)FUN_02039438(ctx->unk80, 18);
FUN_0200DBFC(*unk);
return FALSE;
}
@@ -1343,25 +1341,25 @@ THUMB_FUNC BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx)
{
unk4[0] = 15;
pos++;
- unk4[1] = unk1 - unk5;
+ unk4[1] = (u16)(unk1 - unk5);
}
else if (unk5 > unk1)
{
unk4[0] = 14;
pos++;
- unk4[1] = unk5 - unk1;
+ unk4[1] = (u16)(unk5 - unk1);
}
if (unk6 < unk2)
{
unk4[pos * 2] = 12;
- unk4[pos * 2 + 1] = unk2 - unk6;
+ unk4[pos * 2 + 1] = (u16)(unk2 - unk6);
pos++;
}
else if (unk6 > unk2)
{
unk4[pos * 2] = 13;
- unk4[pos * 2 + 1] = unk6 - unk2;
+ unk4[pos * 2 + 1] = (u16)(unk6 - unk2);
pos++;
}
@@ -1405,3 +1403,17 @@ THUMB_FUNC static BOOL FUN_0203B158(struct ScriptContext *ctx)
u8 *unk = FUN_02039438(ctx->unk80, 4);
return *unk == 0 ? TRUE : FALSE;
}
+
+THUMB_FUNC static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2)
+{
+ UnkStruct_0203B174 *unkStruct = (UnkStruct_0203B174 *)AllocFromHeap(4, sizeof(UnkStruct_0203B174));
+ if (unkStruct == NULL)
+ {
+ GF_AssertFail();
+ return;
+ }
+ unkStruct->Unk0C = arg;
+ unkStruct->Unk04 = param1;
+ unkStruct->Unk08 = param2;
+ unkStruct->Unk00 = FUN_0200CA44(FUN_0203B1A8, unkStruct, 0);
+}
diff --git a/arm9/src/scrcmd_amity_square.c b/arm9/src/scrcmd_amity_square.c
new file mode 100644
index 00000000..c957dec1
--- /dev/null
+++ b/arm9/src/scrcmd_amity_square.c
@@ -0,0 +1,200 @@
+#include "scrcmd.h"
+#include "constants/accessories.h"
+#include "constants/pokemon.h"
+#include "event_data.h"
+
+extern void FUN_0205F54C(struct ScriptState* state);
+extern u16 FUN_0205F55C(struct ScriptState* state);
+
+static const u16 sAmitySquarePossibleAccessoriesByPokemon[6][10] = {
+ { // Clefairy and Skitty
+ ACCESSORY_WHITE_FLUFF,
+ ACCESSORY_ORANGE_FLUFF,
+ ACCESSORY_WHITE_FEATHER,
+ ACCESSORY_MINI_PEBBLE,
+ ACCESSORY_SMALL_LEAF,
+ ACCESSORY_BLUE_SCALE,
+
+ ACCESSORY_WHITE_BEARD,
+ ACCESSORY_THIN_MUSHROOM,
+ ACCESSORY_BIG_SCALE,
+
+ ACCESSORY_STUMP
+ },
+
+ { // Torchic and Drifloon
+ ACCESSORY_PINK_FLUFF,
+ ACCESSORY_RED_FEATHER,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_BLACK_BEARD,
+ ACCESSORY_NARROW_SCALE,
+ ACCESSORY_WHITE_FLUFF,
+
+ ACCESSORY_WHITE_MOUSTACHE,
+ ACCESSORY_SHED_CLAW,
+ ACCESSORY_NARROW_LEAF,
+
+ ACCESSORY_PURPLE_SCALE
+ },
+
+ { // Psyduck and Pachirisu
+ ACCESSORY_SNAGGY_PEBBLE,
+ ACCESSORY_JAGGED_BOULDER,
+ ACCESSORY_BROWN_FLUFF,
+ ACCESSORY_MINI_PEBBLE,
+ ACCESSORY_BLACK_MOUSTACHE,
+ ACCESSORY_SHED_HORN,
+
+ ACCESSORY_NARROW_SCALE,
+ ACCESSORY_ROUND_PEBBLE,
+ ACCESSORY_GREEN_SCALE,
+
+ ACCESSORY_THICK_MUSHROOM
+ },
+
+ { // Jigglypuff and Shroomish
+ ACCESSORY_PINK_SCALE,
+ ACCESSORY_BLUE_FEATHER,
+ ACCESSORY_WHITE_FEATHER,
+ ACCESSORY_BLUE_SCALE,
+ ACCESSORY_THIN_MUSHROOM,
+ ACCESSORY_JAGGED_BOULDER,
+
+ ACCESSORY_WHITE_BEARD,
+ ACCESSORY_BLACK_BEARD,
+ ACCESSORY_BIG_LEAF,
+
+ ACCESSORY_ROUND_PEBBLE
+ },
+
+ { // Pikachu
+ ACCESSORY_ORANGE_FLUFF,
+ ACCESSORY_BROWN_FLUFF,
+ ACCESSORY_SMALL_LEAF,
+ ACCESSORY_RED_FEATHER,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_YELLOW_FLUFF,
+
+ ACCESSORY_GLITTER_BOULDER,
+ ACCESSORY_BIG_SCALE,
+ ACCESSORY_BLACK_MOUSTACHE,
+
+ ACCESSORY_PURPLE_SCALE
+ },
+
+ { // Buneary and Happiny
+ ACCESSORY_PINK_SCALE,
+ ACCESSORY_SHED_HORN,
+ ACCESSORY_PINK_FLUFF,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_SHED_CLAW,
+ ACCESSORY_BLACK_FLUFF,
+
+ ACCESSORY_SNAGGY_PEBBLE,
+ ACCESSORY_BIG_LEAF,
+ ACCESSORY_GREEN_SCALE,
+
+ ACCESSORY_BLACK_PEBBLE
+ },
+};
+
+THUMB_FUNC BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205F54C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = FUN_0205F55C(state);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 rand = (u16)(LCRandom() % 100);
+
+ u32 j;
+ if (rand < 15)
+ {
+ j = 0;
+ }
+ else if (rand < 30)
+ {
+ j = 1;
+ }
+ else if (rand < 45)
+ {
+ j = 2;
+ }
+ else if (rand < 60)
+ {
+ j = 3;
+ }
+ else if (rand < 70)
+ {
+ j = 4;
+ }
+ else if (rand < 80)
+ {
+ j = 5;
+ }
+ else if (rand < 88)
+ {
+ j = 6;
+ }
+ else if (rand < 93)
+ {
+ j = 7;
+ }
+ else if (rand < 98)
+ {
+ j = 8;
+ }
+ else
+ {
+ j = 9;
+ }
+
+ u32 i;
+ switch (species)
+ {
+ case SPECIES_CLEFAIRY:
+ case SPECIES_SKITTY:
+ i = 0;
+ break;
+ case SPECIES_TORCHIC:
+ case SPECIES_DRIFLOON:
+ i = 1;
+ break;
+ case SPECIES_PSYDUCK:
+ case SPECIES_PACHIRISU:
+ i = 2;
+ break;
+ case SPECIES_JIGGLYPUFF:
+ case SPECIES_SHROOMISH:
+ i = 3;
+ break;
+ case SPECIES_PIKACHU:
+ i = 4;
+ break;
+ case SPECIES_BUNEARY:
+ case SPECIES_HAPPINY:
+ i = 5;
+ break;
+ default:
+ i = 0;
+ break;
+ }
+
+ *ret_ptr = sAmitySquarePossibleAccessoriesByPokemon[i][j];
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c
index ae20b5a4..b0993387 100644
--- a/arm9/src/scrcmd_sound.c
+++ b/arm9/src/scrcmd_sound.c
@@ -1,11 +1,7 @@
#include "scrcmd.h"
#include "unk_020040F4.h"
+#include "sound_chatot.h"
-extern void* Sav2_Chatot_get(struct SaveBlock2* sav2);
-extern u32 FUN_02005D20(void *);
-extern void FUN_02005E6C(void *);
-extern u32 FUN_02005E28(void);
-extern void FUN_02005E64(void);
extern BOOL FUN_02005CBC(void);
extern void PlaySound(u16);
extern void FUN_0204AB20(struct UnkSavStruct80 *ctx, u16);
@@ -41,7 +37,8 @@ THUMB_FUNC BOOL ScrCmd_PlayBgm(struct ScriptContext *ctx)
THUMB_FUNC BOOL ScrCmd_StopBgm(struct ScriptContext *ctx)
{
- u32 unk0 = FUN_02004124(ScriptReadHalfword(ctx));
+ ScriptReadHalfword(ctx);
+ u32 unk0 = FUN_02004124();
FUN_02005350(unk0, 0);
return FALSE;
}
@@ -199,7 +196,7 @@ THUMB_FUNC BOOL ScrCmd_CheckChatotCry(struct ScriptContext* ctx)
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2);
- if (FUN_02005D20(unk) == 1)
+ if (Chatot_checkCry(unk) == 1)
{
*ret_ptr = 1;
return FALSE;
@@ -215,7 +212,7 @@ THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx)
{
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
- if (FUN_02005E28() == 0)
+ if (Chatot_startRecording() == 0)
{
*ret_ptr = 1;
return FALSE;
@@ -230,14 +227,14 @@ THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx)
THUMB_FUNC BOOL ScrCmd_StopChatotRecord(struct ScriptContext* ctx)
{
#pragma unused(ctx)
- FUN_02005E64();
+ Chatot_stopRecording();
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_SaveChatotCry(struct ScriptContext* ctx)
{
void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2);
- FUN_02005E6C(unk);
+ Chatot_saveRecording(unk);
return TRUE;
}
diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c
index 1242d550..550dcab5 100644
--- a/arm9/src/script_buffers.c
+++ b/arm9/src/script_buffers.c
@@ -13,6 +13,8 @@
#include "script_buffers.h"
#include "unk_02024E64.h"
#include "text.h"
+#include "msgdata/msg.naix"
+#include "graphic/font.naix"
#pragma thumb on
@@ -34,9 +36,9 @@ const u16 UNK_020ECE6C[][2] = {
};
const u16 UNK_020ECE64[] = {
- 382,
- 384,
- 383,
+ NARC_msg_narc_0382_bin,
+ NARC_msg_narc_0384_bin,
+ NARC_msg_narc_0383_bin,
0
};
@@ -137,7 +139,7 @@ void BufferRivalsName(struct ScrStrBufs * mgr, u32 idx, struct SaveBlock2 * sav2
void BufferFriendsName(struct ScrStrBufs * mgr, u32 idx, struct SaveBlock2 * sav2)
{
struct PlayerData * data = Sav2_PlayerData_GetProfileAddr(sav2);
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 497, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0497_bin, mgr->heap_id);
if (PlayerProfile_GetTrainerGender(data) == 0)
{
ReadMsgDataIntoString(msgData, 1, mgr->tmpbuf);
@@ -152,7 +154,7 @@ void BufferFriendsName(struct ScrStrBufs * mgr, u32 idx, struct SaveBlock2 * sav
void BufferBoxMonSpeciesName(struct ScrStrBufs * mgr, u32 idx, struct BoxPokemon * mon)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 362, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0362_bin, mgr->heap_id);
ReadMsgDataIntoString(msgData, GetBoxMonData(mon, MON_DATA_SPECIES, NULL), mgr->tmpbuf);
SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL);
DestroyMsgData(msgData);
@@ -165,7 +167,7 @@ void BufferBoxMonSpeciesNameWithArticle(struct ScrStrBufs * mgr, u32 idx, struct
void BufferSpeciesNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 species)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 363, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0363_bin, mgr->heap_id);
ReadMsgDataIntoString(msgData, species, mgr->tmpbuf);
SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL);
DestroyMsgData(msgData);
@@ -191,7 +193,7 @@ void BufferIntegerAsString(struct ScrStrBufs * mgr, u32 idx, int num, u32 ndigit
void BufferMoveName(struct ScrStrBufs * mgr, u32 idx, u32 move)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 588, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0588_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, move, mgr->tmpbuf);
@@ -202,7 +204,7 @@ void BufferMoveName(struct ScrStrBufs * mgr, u32 idx, u32 move)
void BufferRibbonNameOrDesc(struct ScrStrBufs * mgr, u32 idx, u32 ribbon)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 484, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0484_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, ribbon, mgr->tmpbuf);
@@ -213,7 +215,7 @@ void BufferRibbonNameOrDesc(struct ScrStrBufs * mgr, u32 idx, u32 ribbon)
void BufferAbilityName(struct ScrStrBufs * mgr, u32 idx, u32 ability)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 552, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0552_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, ability, mgr->tmpbuf);
@@ -224,7 +226,7 @@ void BufferAbilityName(struct ScrStrBufs * mgr, u32 idx, u32 ability)
void BufferNatureName(struct ScrStrBufs * mgr, u32 idx, u32 nature)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 190, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0190_bin, mgr->heap_id);
ReadMsgDataIntoString(msgData, nature, mgr->tmpbuf);
SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL);
DestroyMsgData(msgData);
@@ -232,7 +234,7 @@ void BufferNatureName(struct ScrStrBufs * mgr, u32 idx, u32 nature)
void BufferItemName(struct ScrStrBufs * mgr, u32 idx, u32 item)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 344, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0344_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, item, mgr->tmpbuf);
@@ -243,7 +245,7 @@ void BufferItemName(struct ScrStrBufs * mgr, u32 idx, u32 item)
void BufferItemNameWithIndefArticle(struct ScrStrBufs * mgr, u32 idx, u32 item)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 346, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0346_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, item, mgr->tmpbuf);
@@ -254,7 +256,7 @@ void BufferItemNameWithIndefArticle(struct ScrStrBufs * mgr, u32 idx, u32 item)
void BufferItemNamePlural(struct ScrStrBufs * mgr, u32 idx, u32 item)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 347, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0347_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, item, mgr->tmpbuf);
@@ -265,7 +267,7 @@ void BufferItemNamePlural(struct ScrStrBufs * mgr, u32 idx, u32 item)
void BufferPocketName(struct ScrStrBufs * mgr, u32 idx, u32 pocket)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 349, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0349_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, pocket, mgr->tmpbuf);
@@ -276,7 +278,7 @@ void BufferPocketName(struct ScrStrBufs * mgr, u32 idx, u32 pocket)
void BufferTypeName(struct ScrStrBufs * mgr, u32 idx, u32 type)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 565, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0565_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, type, mgr->tmpbuf);
@@ -287,7 +289,7 @@ void BufferTypeName(struct ScrStrBufs * mgr, u32 idx, u32 type)
void BufferStatName(struct ScrStrBufs * mgr, u32 idx, u32 stat)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 495, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0495_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, stat, mgr->tmpbuf);
@@ -298,7 +300,7 @@ void BufferStatName(struct ScrStrBufs * mgr, u32 idx, u32 stat)
void BufferStatusName(struct ScrStrBufs * mgr, u32 idx, u32 status)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 205, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0205_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, status, mgr->tmpbuf);
@@ -309,7 +311,7 @@ void BufferStatusName(struct ScrStrBufs * mgr, u32 idx, u32 status)
void BufferFlavorDislikeText(struct ScrStrBufs * mgr, u32 idx, u32 flavor)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 548, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0548_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, flavor, mgr->tmpbuf);
@@ -320,7 +322,7 @@ void BufferFlavorDislikeText(struct ScrStrBufs * mgr, u32 idx, u32 flavor)
void BufferLandmarkName(struct ScrStrBufs * mgr, u32 idx, u32 landmark)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 382, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0382_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, landmark, mgr->tmpbuf);
@@ -331,7 +333,7 @@ void BufferLandmarkName(struct ScrStrBufs * mgr, u32 idx, u32 landmark)
void BufferPoketchAppName(struct ScrStrBufs * mgr, u32 idx, u32 app)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 406, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0406_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, app, mgr->tmpbuf);
@@ -342,7 +344,7 @@ void BufferPoketchAppName(struct ScrStrBufs * mgr, u32 idx, u32 app)
void BufferTrainerClassName(struct ScrStrBufs * mgr, u32 idx, u32 trclass)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 560, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0560_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, trclass, mgr->tmpbuf);
@@ -353,7 +355,7 @@ void BufferTrainerClassName(struct ScrStrBufs * mgr, u32 idx, u32 trclass)
void BufferTrainerClassNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 trclass)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 561, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0561_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, trclass, mgr->tmpbuf);
@@ -364,7 +366,7 @@ void BufferTrainerClassNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 trc
void BufferTrainerClassNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, struct TrainerDataLoaded * tr)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 560, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0560_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, tr->data.trainerClass, mgr->tmpbuf);
@@ -375,7 +377,7 @@ void BufferTrainerClassNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, stru
void BufferTrainerName(struct ScrStrBufs * mgr, u32 idx, u32 msgno)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 559, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0559_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, msgno, mgr->tmpbuf);
@@ -392,7 +394,7 @@ void BufferTrainerNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, struct Tr
void BufferUndergroundItemName(struct ScrStrBufs * mgr, u32 idx, u32 item)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 569, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0569_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, item, mgr->tmpbuf);
@@ -403,7 +405,7 @@ void BufferUndergroundItemName(struct ScrStrBufs * mgr, u32 idx, u32 item)
void BufferUndergroundItemNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 item)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 570, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0570_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, item, mgr->tmpbuf);
@@ -414,7 +416,7 @@ void BufferUndergroundItemNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32
void BufferUndergroundTrapName(struct ScrStrBufs * mgr, u32 idx, u32 trap)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 571, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0571_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, trap, mgr->tmpbuf);
@@ -425,7 +427,7 @@ void BufferUndergroundTrapName(struct ScrStrBufs * mgr, u32 idx, u32 trap)
void BufferUndergroundTrapNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 trap)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 572, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0572_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, trap, mgr->tmpbuf);
@@ -436,7 +438,7 @@ void BufferUndergroundTrapNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32
void BufferContestJudgeName(struct ScrStrBufs * mgr, u32 idx, u32 judge)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 194, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0194_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, judge, mgr->tmpbuf);
@@ -447,7 +449,7 @@ void BufferContestJudgeName(struct ScrStrBufs * mgr, u32 idx, u32 judge)
void BufferContestMessage(struct ScrStrBufs * mgr, u32 idx, u32 msg)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 191, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0191_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, msg, mgr->tmpbuf);
@@ -458,7 +460,7 @@ void BufferContestMessage(struct ScrStrBufs * mgr, u32 idx, u32 msg)
void BufferContestMessage2(struct ScrStrBufs * mgr, u32 idx, u32 msg)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 191, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0191_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, msg, mgr->tmpbuf);
@@ -469,7 +471,7 @@ void BufferContestMessage2(struct ScrStrBufs * mgr, u32 idx, u32 msg)
void BufferInterviewQuestion(struct ScrStrBufs * mgr, u32 idx, u32 question)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 574, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0574_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, question, mgr->tmpbuf);
@@ -480,7 +482,7 @@ void BufferInterviewQuestion(struct ScrStrBufs * mgr, u32 idx, u32 question)
void BufferInterviewAnswer(struct ScrStrBufs * mgr, u32 idx, u32 answer)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 573, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0573_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, answer, mgr->tmpbuf);
@@ -491,7 +493,7 @@ void BufferInterviewAnswer(struct ScrStrBufs * mgr, u32 idx, u32 answer)
void BufferDecorationName(struct ScrStrBufs * mgr, u32 idx, u32 decor)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 567, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0567_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, decor, mgr->tmpbuf);
@@ -502,7 +504,7 @@ void BufferDecorationName(struct ScrStrBufs * mgr, u32 idx, u32 decor)
void BufferDecorationNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 decor)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 568, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0568_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, decor, mgr->tmpbuf);
@@ -513,7 +515,7 @@ void BufferDecorationNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 decor
void BufferGenderSymbol(struct ScrStrBufs * mgr, u32 idx, u32 gender)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 199, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0199_bin, mgr->heap_id);
switch (gender)
{
case 0:
@@ -538,7 +540,7 @@ void BufferBoxName(struct ScrStrBufs * mgr, u32 idx, struct PCStorage * pc, int
void BufferGymName(struct ScrStrBufs * mgr, u32 idx, u32 gym)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 331, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0331_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, gym, mgr->tmpbuf);
@@ -549,7 +551,7 @@ void BufferGymName(struct ScrStrBufs * mgr, u32 idx, u32 gym)
void BufferTimeOfDayName(struct ScrStrBufs * mgr, u32 idx, u32 time)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 550, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0550_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, time, mgr->tmpbuf);
@@ -560,7 +562,7 @@ void BufferTimeOfDayName(struct ScrStrBufs * mgr, u32 idx, u32 time)
void BufferCountryName(struct ScrStrBufs * mgr, u32 idx, u32 country)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 612, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0612_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, country, mgr->tmpbuf);
@@ -592,7 +594,7 @@ void FUN_0200B518(struct ScrStrBufs * mgr, u32 idx, u32 a2)
void BufferSealName(struct ScrStrBufs * mgr, u32 idx, u32 seal)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 10, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0010_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, seal, mgr->tmpbuf);
@@ -603,7 +605,7 @@ void BufferSealName(struct ScrStrBufs * mgr, u32 idx, u32 seal)
void BufferSealNamePlural(struct ScrStrBufs * mgr, u32 idx, u32 seal)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 11, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0011_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, seal, mgr->tmpbuf);
@@ -629,7 +631,7 @@ void BufferLocationName(struct ScrStrBufs * mgr, u32 idx, u16 a2)
// Location is invalid.
// Fallback: Mystery Zone
DestroyMsgData(msgData);
- msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 382, mgr->heap_id);
+ msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0382_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, 0, mgr->tmpbuf);
@@ -641,7 +643,7 @@ void BufferLocationName(struct ScrStrBufs * mgr, u32 idx, u16 a2)
void BufferPoffinName(struct ScrStrBufs * mgr, u32 idx, u32 poffin)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 414, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0414_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, poffin, mgr->tmpbuf);
@@ -652,7 +654,7 @@ void BufferPoffinName(struct ScrStrBufs * mgr, u32 idx, u32 poffin)
void BufferFashionName(struct ScrStrBufs * mgr, u32 idx, u32 fashion)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 338, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0338_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, fashion, mgr->tmpbuf);
@@ -663,7 +665,7 @@ void BufferFashionName(struct ScrStrBufs * mgr, u32 idx, u32 fashion)
void BufferFashionNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 fashion)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 339, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0339_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, fashion, mgr->tmpbuf);
@@ -674,7 +676,7 @@ void BufferFashionNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 fashion)
void BufferContestBackgroundName(struct ScrStrBufs * mgr, u32 idx, u32 bg)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 340, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0340_bin, mgr->heap_id);
if (msgData != NULL)
{
ReadMsgDataIntoString(msgData, bg, mgr->tmpbuf);
@@ -696,7 +698,7 @@ void BufferEasyChatWord(struct ScrStrBufs * mgr, struct SaveBlock2 * sav2, u32 r
void BufferMonthNameAbbr(struct ScrStrBufs * mgr, u32 idx, u32 month)
{
- struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 364, mgr->heap_id);
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0364_bin, mgr->heap_id);
if (msgData != NULL)
{
if (month < 1 || month > 12)
@@ -746,12 +748,12 @@ void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr)
StringSetEmpty(mgr->array[i].msg);
}
-struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4)
+struct UnkStruct_0200B870 * MessagePrinter_new(u32 color1, u32 color2, u32 color3, u32 heap_id)
{
- struct UnkStruct_0200B870 * sp8 = AllocFromHeap(r4, sizeof(struct UnkStruct_0200B870));
+ struct UnkStruct_0200B870 * sp8 = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200B870));
if (sp8 != NULL)
{
- sp8->unk_0 = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 4, 1, &sp8->unk_4, r4);
+ sp8->unk_0 = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, NARC_font_narc_0004_NCGR_lz, 1, &sp8->unk_4, heap_id);
int i;
u8 * ptr = sp8->unk_4->unk_14;
for (i = 0; i < sp8->unk_4->unk_10; i++)
@@ -759,35 +761,35 @@ struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4)
switch (ptr[i])
{
case 0x00:
- ptr[i] = (u8)((sp4 << 4) | sp4);
+ ptr[i] = (u8)((color3 << 4) | color3);
break;
case 0x01:
- ptr[i] = (u8)((sp4 << 4) | r5);
+ ptr[i] = (u8)((color3 << 4) | color1);
break;
case 0x02:
- ptr[i] = (u8)((sp4 << 4) | r6);
+ ptr[i] = (u8)((color3 << 4) | color2);
break;
case 0x10:
- ptr[i] = (u8)((r5 << 4) | sp4);
+ ptr[i] = (u8)((color1 << 4) | color3);
break;
case 0x11:
- ptr[i] = (u8)((r5 << 4) | r5);
+ ptr[i] = (u8)((color1 << 4) | color1);
break;
case 0x12:
- ptr[i] = (u8)((r5 << 4) | r6);
+ ptr[i] = (u8)((color1 << 4) | color2);
break;
case 0x20:
- ptr[i] = (u8)((r6 << 4) | sp4);
+ ptr[i] = (u8)((color2 << 4) | color3);
break;
case 0x21:
- ptr[i] = (u8)((r6 << 4) | r5);
+ ptr[i] = (u8)((color2 << 4) | color1);
break;
case 0x22:
- ptr[i] = (u8)((r6 << 4) | r6);
+ ptr[i] = (u8)((color2 << 4) | color2);
break;
}
}
- sp8->unk_28 = sp4;
+ sp8->unk_28 = color3;
}
return sp8;
}
diff --git a/arm9/src/sound.c b/arm9/src/sound.c
index ec65dd06..210aec2e 100644
--- a/arm9/src/sound.c
+++ b/arm9/src/sound.c
@@ -3,6 +3,7 @@
#include "SPI_mic.h"
#include "SPI_pm.h"
#include "unk_020040F4.h"
+#include "sound_chatot.h"
#pragma thumb on
@@ -21,7 +22,6 @@ void FUN_020040DC(void);
extern void FUN_0200521C(int);
extern void FUN_0200538C(int, int, int);
extern BOOL FUN_02005404(void);
-extern void FUN_02005CFC(void);
void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options)
{
diff --git a/arm9/src/sound_chatot.c b/arm9/src/sound_chatot.c
new file mode 100644
index 00000000..06b2fc64
--- /dev/null
+++ b/arm9/src/sound_chatot.c
@@ -0,0 +1,181 @@
+#include "global.h"
+#include "sound_chatot.h"
+#include "SPI_mic.h"
+#include "math_util.h"
+#include "proto.h"
+#include "sav_chatot.h"
+#include "sound.h"
+#include "unk_020040F4.h"
+#include "unk_020051F4.h"
+
+THUMB_FUNC BOOL FUN_02005CFC(void)
+{
+ if (*(u8 *)FUN_02003D38(29) == 1 && FUN_02004ABC(14) == 0)
+ {
+ FUN_02005DFC();
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL Chatot_checkCry(struct SaveChatotSoundClip *param0)
+{
+ u8 *r4 = FUN_02003D38(30);
+
+ if (!Chatot_exists(param0))
+ {
+ return FALSE;
+ }
+
+ if (*r4 != 1)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3)
+{
+#pragma unused(param1)
+
+ s8 *st0 = FUN_02004DB4();
+ u8 *st4 = FUN_02003D38(29);
+
+ if (!Chatot_checkCry(param0))
+ {
+ return 0;
+ }
+
+ FUN_02005614(0);
+ FUN_02005DFC();
+ FUN_02004984(14);
+ u16 r4 = (u16)(LCRandom() % 8192);
+
+ Chatot_Decode(st0, Chatot_GetData(param0));
+
+ struct UnkStruct_020040F4_1 st8;
+
+ st8.unk00 = FUN_02004930(14);
+ st8.unk04 = 0;
+ st8.unk08 = FUN_02004DB4();
+ st8.unk0c = 0;
+ st8.unk10 = 0;
+ st8.unk14 = 2000;
+ st8.unk18 = 2000;
+ st8.unk20 = (u32)(r4 + 0x8000);
+ st8.unk24 = param3 / 2 + 64;
+ st8.unk1c = param2;
+
+ u32 res = FUN_02004A6C(&st8, 14);
+ FUN_02004AF8(14, param2);
+ *st4 = 1;
+ FUN_02005E80(0);
+
+ return res;
+}
+
+THUMB_FUNC void FUN_02005DFC(void)
+{
+ u8 *r5 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(29);
+
+ if (*r5 == 1)
+ {
+ FUN_02004C3C(14);
+ FUN_02004A04(14);
+ }
+
+ *r4 = 0;
+}
+
+THUMB_FUNC u32 Chatot_startRecording(void)
+{
+ struct MIC_SamplingData st0;
+
+ st0.unk00 = 2;
+ st0.unk04 = FUN_02004DB4();
+ st0.unk08 = 2000;
+ if ((st0.unk08 & 0x1f) != 0)
+ {
+ st0.unk08 &= ~0x1f;
+ }
+ st0.unk0c = 0x4174;
+ st0.unk10 = 0;
+ st0.unk14 = 0;
+ st0.unk18 = 0;
+
+ return GF_MIC_StartAutoSampling(&st0);
+}
+
+THUMB_FUNC void Chatot_stopRecording(void)
+{
+ GF_MIC_StopAutoSampling();
+}
+
+THUMB_FUNC void Chatot_saveRecording(struct SaveChatotSoundClip *param0)
+{
+ Chatot_Encode(param0, FUN_02004DB4());
+}
+
+THUMB_FUNC void FUN_02005E80(u8 param0)
+{
+ *(u8 *)FUN_02003D38(30) = param0;
+}
+
+THUMB_FUNC void FUN_02005E90(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3)
+{
+ struct SaveChatotSoundClip **r0 = FUN_02003D38(35);
+ u32 ret;
+ if (param0 == 0)
+ {
+ ret = FUN_02005D48(*r0, param1, param2, param3);
+ }
+ else
+ {
+ ret = FUN_02005D48(param0, param1, param2, param3);
+ }
+
+ if (ret == 0)
+ {
+ FUN_02005E80(1);
+ FUN_020056AC(0, SPECIES_CHATOT, param3, param2, 11);
+ }
+}
+
+THUMB_FUNC u32 FUN_02005EE0(struct SaveChatotSoundClip *param0)
+{
+ if (!Chatot_exists(param0))
+ {
+ return 0;
+ }
+
+ s8 r0 = Chatot_GetData(param0)[15];
+ if (r0 < -30)
+ {
+ return 1;
+ }
+ else if (r0 >= 30 && r0 < 128)
+ {
+ return 2;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC BOOL FUN_02005F14(s32 param0)
+{
+ switch (param0)
+ {
+ case 0:
+ case 1:
+ case 5:
+ case 11:
+ case 12:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
diff --git a/arm9/src/text.c b/arm9/src/text.c
index e8c76722..f178fa9d 100644
--- a/arm9/src/text.c
+++ b/arm9/src/text.c
@@ -6,10 +6,11 @@
#include "script_buffers.h"
#include "unk_0200CA44.h"
#include "font.h"
+#include "graphic/font.naix"
const struct FontInfo *gFonts = NULL;
-u16 UNK_021C5734[0x100];
+u16 sFontHalfRowLookupTable[0x100];
BOOL UNK_021C5714[8];
u16 UNK_021C570E;
u16 UNK_021C5710;
@@ -281,7 +282,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow
sp20[2] = shadowColor;
sp20[3] = bgColor;
- // FIXME: Need these to be accessed by a pointer to UNK_021C570C
+ // These are accessed by a pointer to UNK_021C570C due to -ipa file
UNK_021C5712 = bgColor;
UNK_021C570E = fgColor;
UNK_021C5710 = shadowColor;
@@ -294,7 +295,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow
{
for (l = 0; l < 4; l++)
{
- UNK_021C5734[r5++] = (u16)((sp20[l] << 12) | (sp20[k] << 8) | (sp20[j] << 4) | (sp20[i] << 0));
+ sFontHalfRowLookupTable[r5++] = (u16)((sp20[l] << 12) | (sp20[k] << 8) | (sp20[j] << 4) | (sp20[i] << 0));
}
}
}
@@ -303,22 +304,22 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow
THUMB_FUNC void DecompressGlyphTile(const u16 *src, u16 *dst)
{
- dst[0] = UNK_021C5734[(u32)src[0] >> 8];
- dst[1] = UNK_021C5734[(u8)src[0]];
- dst[2] = UNK_021C5734[(u32)src[1] >> 8];
- dst[3] = UNK_021C5734[(u8)src[1]];
- dst[4] = UNK_021C5734[(u32)src[2] >> 8];
- dst[5] = UNK_021C5734[(u8)src[2]];
- dst[6] = UNK_021C5734[(u32)src[3] >> 8];
- dst[7] = UNK_021C5734[(u8)src[3]];
- dst[8] = UNK_021C5734[(u32)src[4] >> 8];
- dst[9] = UNK_021C5734[(u8)src[4]];
- dst[10] = UNK_021C5734[(u32)src[5] >> 8];
- dst[11] = UNK_021C5734[(u8)src[5]];
- dst[12] = UNK_021C5734[(u32)src[6] >> 8];
- dst[13] = UNK_021C5734[(u8)src[6]];
- dst[14] = UNK_021C5734[(u32)src[7] >> 8];
- dst[15] = UNK_021C5734[(u8)src[7]];
+ dst[0] = sFontHalfRowLookupTable[(u32)src[0] >> 8];
+ dst[1] = sFontHalfRowLookupTable[(u8)src[0]];
+ dst[2] = sFontHalfRowLookupTable[(u32)src[1] >> 8];
+ dst[3] = sFontHalfRowLookupTable[(u8)src[1]];
+ dst[4] = sFontHalfRowLookupTable[(u32)src[2] >> 8];
+ dst[5] = sFontHalfRowLookupTable[(u8)src[2]];
+ dst[6] = sFontHalfRowLookupTable[(u32)src[3] >> 8];
+ dst[7] = sFontHalfRowLookupTable[(u8)src[3]];
+ dst[8] = sFontHalfRowLookupTable[(u32)src[4] >> 8];
+ dst[9] = sFontHalfRowLookupTable[(u8)src[4]];
+ dst[10] = sFontHalfRowLookupTable[(u32)src[5] >> 8];
+ dst[11] = sFontHalfRowLookupTable[(u8)src[5]];
+ dst[12] = sFontHalfRowLookupTable[(u32)src[6] >> 8];
+ dst[13] = sFontHalfRowLookupTable[(u8)src[6]];
+ dst[14] = sFontHalfRowLookupTable[(u32)src[7] >> 8];
+ dst[15] = sFontHalfRowLookupTable[(u8)src[7]];
}
THUMB_FUNC void FUN_0201C1A8(struct TextPrinter *printer)
@@ -330,7 +331,7 @@ THUMB_FUNC u16 *FUN_0201C1B0(void)
{
void *res = AllocFromHeap(0, 32 * 24 * sizeof(u16));
struct UnkStruct_0200B870_sub * var;
- void *tmp = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 5, 0, &var, 0);
+ void *tmp = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, NARC_font_narc_0005_NCGR, 0, &var, 0);
MI_CpuCopy32(var->unk_14, res, 32 * 24 * sizeof(u16));
FreeToHeap(tmp);
return res;
diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c
index 3c3d0fed..03d01ae6 100644
--- a/arm9/src/text_02054590.c
+++ b/arm9/src/text_02054590.c
@@ -3,22 +3,10 @@
#include "bg_window.h"
#include "font.h"
#include "render_text.h"
+#include "render_window.h"
extern void FUN_0201BD5C(void);
-extern void FUN_0200CD68(
- struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
-extern void FUN_0200D0BC(struct Window *param0, u32 param1, u32 param2, u32 param3);
-
-extern void FUN_0200D300(struct BgConfig *param0,
- u32 param1,
- u32 param2,
- u32 param3,
- u8 param4,
- u32 param5,
- u32 param6);
-extern void FUN_0200D6F8(struct Window *param0, u32 param1, u32 param2, u32 param3, u8 param4);
-
THUMB_FUNC void FUN_02054590(u32 param0, u32 param1)
{
if (param1 == 1)
@@ -45,7 +33,7 @@ THUMB_FUNC void FUN_02054608(struct Window *param0, struct Options *options)
{
FUN_0200CD68(param0->bgConfig, GetWindowBgId(param0), 994, 10, (u8)Options_GetFrame(options), 4);
FUN_0205464C(param0);
- FUN_0200D0BC(param0, 0, 994, 10);
+ DrawFrameAndWindow2(param0, 0, 994, 10);
}
THUMB_FUNC void FUN_0205464C(struct Window *param0)
@@ -99,9 +87,9 @@ THUMB_FUNC void FUN_020546E0(
}
}
-THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u32 param2)
+THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u16 param2)
{
FUN_0200D300(param0->bgConfig, GetWindowBgId(param0), 0x399, 9, (u8)param1, param2, 4);
FillWindowPixelBuffer(param0, 15);
- FUN_0200D6F8(param0, 0, 0x399, 9, (u8)param1);
+ DrawFrameAndWindow3(param0, 0, 0x399, 9, (u8)param1);
}
diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c
index 5713ddf0..fa1d968f 100644
--- a/arm9/src/unk_020040F4.c
+++ b/arm9/src/unk_020040F4.c
@@ -3,6 +3,7 @@
#include "OS_cache.h"
#include "sound.h"
#include "unk_0202F150.h"
+#include "SPI_mic.h"
u32 UNK_021C3DD8[2];
@@ -22,9 +23,6 @@ extern void NNS_SndArcPlayerStartSeqEx(u32 *, u32, s32, s32, u32);
extern u16 NNS_SndPlayerCountPlayingSeqByPlayerNo(int);
extern u32 NNS_SndPlayerGetSeqNo(u32 *);
extern u32 NNS_SndArcGetBankInfo(u32);
-extern u32 MIC_StartAutoSampling(u32);
-extern u32 MIC_StopAutoSampling();
-extern u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3);
extern u32 NNS_SndWaveOutAllocChannel(u32);
extern void NNS_SndWaveOutFreeChannel(u32);
extern u32 NNS_SndWaveOutStart(u32, u32, void *, u32, u32, u32, u32, s32, u32, s32);
@@ -59,7 +57,7 @@ THUMB_FUNC void FUN_020040F4(u8 param0)
*ptr = param0;
}
-THUMB_FUNC u8 FUN_02004104()
+THUMB_FUNC u8 FUN_02004104(void)
{
u8 *ptr = FUN_02003D38(5);
@@ -74,7 +72,7 @@ THUMB_FUNC void FUN_02004110(u16 param0)
FUN_02004130(0);
}
-THUMB_FUNC u16 FUN_02004124()
+THUMB_FUNC u16 FUN_02004124(void)
{
u16 *ptr = FUN_02003D38(9);
@@ -87,7 +85,7 @@ THUMB_FUNC void FUN_02004130(u16 param0)
*ptr = param0;
}
-THUMB_FUNC u16 FUN_02004140()
+THUMB_FUNC u16 FUN_02004140(void)
{
u16 *ptr = FUN_02003D38(10);
@@ -471,7 +469,7 @@ THUMB_FUNC void FUN_02004724(int param0)
FUN_0200521C(param0);
}
-THUMB_FUNC void FUN_02004738()
+THUMB_FUNC void FUN_02004738(void)
{
GF_Snd_RestoreState(FUN_02004748(4));
}
@@ -544,7 +542,7 @@ THUMB_FUNC void FUN_020047C8(u8 param0, u8 param1)
*ptr = param1;
}
-THUMB_FUNC void FUN_02004810()
+THUMB_FUNC void FUN_02004810(void)
{
u8 *ptr = FUN_02003D38(11);
u8 *ptr2 = FUN_02003D38(12);
@@ -650,14 +648,13 @@ THUMB_FUNC u16 FUN_02004900(u32 param0)
return *ptr;
}
-THUMB_FUNC u32 GF_MIC_StartAutoSampling(u32 param0)
+THUMB_FUNC u32 GF_MIC_StartAutoSampling(struct MIC_SamplingData *param0)
{
return MIC_StartAutoSampling(param0);
}
-THUMB_FUNC u32 GF_MIC_StopAutoSampling(u32 param0)
+THUMB_FUNC u32 GF_MIC_StopAutoSampling(void)
{
-#pragma unused(param0)
GetSoundDataPointer();
return MIC_StopAutoSampling();
}
@@ -914,7 +911,7 @@ THUMB_FUNC void FUN_02004C3C(u32 param0)
}
}
-THUMB_FUNC BOOL GF_SndCaptureIsActive()
+THUMB_FUNC BOOL GF_SndCaptureIsActive(void)
{
return NNS_SndCaptureIsActive();
}
@@ -936,7 +933,7 @@ THUMB_FUNC void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1)
NNS_SndCaptureSetReverbVolume(param0, param1);
}
-THUMB_FUNC void FUN_02004CB4()
+THUMB_FUNC void FUN_02004CB4(void)
{
GetSoundDataPointer();
@@ -948,7 +945,7 @@ THUMB_FUNC void FUN_02004CB4()
NNS_SndCaptureStartEffect(r4, 0x1000, 0, 0x55F0, 2, FUN_02005068, st8);
}
-THUMB_FUNC void GF_SndCaptureStopEffect()
+THUMB_FUNC void GF_SndCaptureStopEffect(void)
{
NNS_SndCaptureStopEffect();
}
@@ -1000,7 +997,7 @@ THUMB_FUNC void FUN_02004D84(u32 param0)
*(u32 *)FUN_02003D38(7) = param0;
}
-THUMB_FUNC u16 FUN_02004D94()
+THUMB_FUNC u16 FUN_02004D94(void)
{
u16 *ptr = FUN_02003D38(7);
@@ -1013,7 +1010,7 @@ THUMB_FUNC u16 FUN_02004D94()
return --(*ptr);
}
-THUMB_FUNC u8 *FUN_02004DB4()
+THUMB_FUNC u8 *FUN_02004DB4(void)
{
return UNK_021C3DE0;
}
@@ -1345,7 +1342,7 @@ THUMB_FUNC void FUN_0200516C(u32 param0)
GF_SndCaptureIsActive();
}
-THUMB_FUNC void FUN_020051AC()
+THUMB_FUNC void FUN_020051AC(void)
{
if (FUN_02005404() == FALSE && GF_SndPlayerGetSeqNo(GetSoundPlayer(0)) != -1 &&
FUN_02004124() != 0x47e)
diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c
index 6da250d5..53311039 100644
--- a/arm9/src/unk_020051F4.c
+++ b/arm9/src/unk_020051F4.c
@@ -6,6 +6,7 @@
#include "sound.h"
#include "unk_020040F4.h"
#include "unk_0200CA44.h"
+#include "sound_chatot.h"
extern u32 NNS_SndArcPlayerStartSeq(u32 *, u32);
extern u32 NNS_SndArcPlayerStartSeqEx(u32 *, s32, s32, s32, u32);
@@ -13,9 +14,6 @@ extern void NNS_SndPlayerStopSeqBySeqNo(u32, u32);
extern void NNS_SndPlayerStopSeqAll(u32);
extern void NNS_SndPlayerStopSeq(u32 *, u32);
extern void NNS_SndPlayerSetTrackPan(u32 *, u32, u32);
-extern u32 FUN_02005D48(u32, u32, u32, u32);
-extern void FUN_02005E80(u32);
-extern void FUN_02005DFC();
extern void *FUN_0201B6C8(u32 *);
THUMB_FUNC u32 FUN_020051F4(u16 param0)
@@ -281,7 +279,7 @@ THUMB_FUNC void FUN_0200554C(u32 param0)
THUMB_FUNC u32 FUN_02005578(u16 species)
{
u8 *r4 = FUN_02003D38(17);
- u32 *r0 = FUN_02003D38(35);
+ struct SaveChatotSoundClip **r0 = FUN_02003D38(35);
if (species != SPECIES_CHATOT)
{
diff --git a/arm9/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c
new file mode 100644
index 00000000..300967fc
--- /dev/null
+++ b/arm9/src/unk_02008AA4.c
@@ -0,0 +1,249 @@
+#include "global.h"
+#include "unk_02008AA4.h"
+#include "GX_vramcnt.h"
+#include "heap.h"
+#include "unk_0200BB14.h"
+#include "unk_02008DEC.h"
+#include "oam.h"
+
+extern void FUN_0202134C(void *, u32);
+extern u32 FUN_0201FCB0(u32 *);
+extern void FUN_02021390(u32, u32 *);
+extern void FUN_0201D194(u32, u32, u32);
+extern void FUN_0201E068(u32, u32);
+
+THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ s32 param4,
+ s32 param5,
+ s32 param6,
+ u32 param7,
+ u32 param8,
+ struct UnkStruct_02008DEC_1 *param9,
+ struct UnkStruct_02008DEC_1 *param10,
+ struct UnkStruct_02008DEC_1 *param11,
+ struct UnkStruct_02008DEC_1 *param12,
+ struct UnkStruct_02008DEC_1 *param13,
+ struct UnkStruct_02008DEC_1 *param14)
+{
+ struct UnkStruct_02008DEC_sub *r7;
+ struct UnkStruct_02008DEC_sub *st14;
+ struct UnkStruct_02008DEC_sub *st10;
+
+ struct UnkStruct_02008DEC_sub *stc = NULL;
+ struct UnkStruct_02008DEC_sub *r4 = NULL;
+ struct UnkStruct_02008DEC_sub *st8 = NULL;
+
+ GF_ASSERT(param9);
+ GF_ASSERT(param10);
+ GF_ASSERT(param12);
+ GF_ASSERT(param11);
+ GF_ASSERT(param0);
+
+ r7 = FUN_020094F0(param9, param1);
+ GF_ASSERT(r7);
+
+ st14 = FUN_020094F0(param10, param2);
+ GF_ASSERT(st14);
+
+ st10 = FUN_020094F0(param11, param3);
+ GF_ASSERT(st10);
+
+ if (param12 != 0 && param4 != -1)
+ {
+ stc = FUN_020094F0(param12, param4);
+ GF_ASSERT(stc);
+ }
+
+ if (param13 != 0)
+ {
+ if (param5 != -1)
+ {
+ r4 = FUN_020094F0(param13, param5);
+ }
+
+ if (param6 != -1)
+ {
+ st8 = FUN_020094F0(param14, param6);
+ }
+ }
+
+ u32 r6;
+ if (param7 != 0)
+ {
+ r6 = FUN_02009C80(r7, st10);
+ GF_ASSERT(r6);
+
+ param0->unk04 = FUN_02009544(r7);
+ }
+ else
+ {
+ r6 = FUN_02009C5C(r7);
+ GF_ASSERT(r6);
+
+ param0->unk04 = 0;
+ }
+
+ param0->unk08 = FUN_02009E54(st14, r6);
+ param0->unk00 = r6;
+ param0->unk0C = FUN_02009574(st10);
+
+ if (stc != 0)
+ {
+ param0->unk10 = FUN_0200958C(stc);
+ }
+ else
+ {
+ param0->unk10 = 0;
+ }
+
+ if (r4 != 0)
+ {
+ param0->unk14 = FUN_020095A4(r4);
+ param0->unk18 = FUN_020095BC(st8);
+ }
+ else
+ {
+ param0->unk14 = 0;
+ param0->unk18 = 0;
+ }
+
+ param0->unk1C = param7;
+ param0->unk20 = (u8)param8;
+}
+
+THUMB_FUNC struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0,
+ u32 param1,
+ struct UnkStruct_02008DEC_1 *param2,
+ struct UnkStruct_02008DEC_1 *param3,
+ struct UnkStruct_02008DEC_1 *param4,
+ struct UnkStruct_02008DEC_1 *param5,
+ struct UnkStruct_02008DEC_1 *param6,
+ struct UnkStruct_02008DEC_1 *param7)
+{
+
+ s32 r4 = 0;
+ while (param0[r4].unk00 != -2)
+ {
+ r4++;
+ }
+
+ struct UnkStruct_02008AA4_1 *r6 = AllocFromHeap(param1, sizeof(struct UnkStruct_02008AA4_1));
+ r6->unk00 = AllocFromHeap(param1, r4 * sizeof(struct UnkStruct_0200BB14_sub));
+ r6->unk04 = r4;
+
+ for (int r7 = 0; r7 < r6->unk04; r7++)
+ {
+ FUN_02008AA4(&r6->unk00[r7],
+ param0[r7].unk00,
+ param0[r7].unk04,
+ param0[r7].unk08,
+ param0[r7].unk0C,
+ param0[r7].unk10,
+ param0[r7].unk14,
+ param0[r7].unk18,
+ param0[r7].unk1C,
+ param2,
+ param3,
+ param4,
+ param5,
+ param6,
+ param7);
+ }
+
+ return r6;
+}
+
+THUMB_FUNC void FUN_02008C80(struct UnkStruct_02008AA4_1 *param0)
+{
+ GF_ASSERT(param0);
+
+ if (param0->unk00 != NULL)
+ {
+ FreeToHeap(param0->unk00);
+ }
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC u32 FUN_02008C9C(u32 param0, void *param1, u32 param2)
+{
+ FUN_0202134C(param1, 0xFFFFF000);
+
+ u32 st10[3];
+ u32 st0[4];
+
+ st0[0] = 0;
+ st0[1] = 0;
+ st0[2] = 0xFF000;
+ st0[3] = 0xC0000;
+ FUN_02009FD8(param1 + 0x98, st0, 1, param1);
+
+ st0[0] = 0;
+ st0[1] = 0xC0000;
+ st0[2] = 0xFF000;
+ st0[3] = 0xC0000;
+
+ FUN_02009FD8(param1 + 0xe0, st0, 2, param1);
+
+ st10[0] = param0;
+ st10[1] = (u32)param1;
+ st10[2] = param2;
+
+ return FUN_0201FCB0(st10);
+}
+
+THUMB_FUNC void FUN_02008D04(u32 param0, u32 param1, u32 param2)
+{
+ u32 st0[4];
+ st0[0] = param1;
+ st0[2] = 0xFF000;
+ st0[3] = 0xC0000;
+ st0[1] = param2;
+ FUN_02021390(param0 + 0x98, st0);
+}
+
+THUMB_FUNC void FUN_02008D24(u32 param0, u32 param1, u32 param2)
+{
+ u32 st0[4];
+ st0[0] = param1;
+ st0[2] = 0xFF000;
+ st0[3] = 0xC0000;
+ st0[1] = param2;
+ FUN_02021390(param0 + 0xe0, st0);
+}
+
+THUMB_FUNC void FUN_02008D44(u32 param0, u32 param1)
+{
+ switch (param1)
+ {
+ case 0x10:
+ if (GX_GetBankForOBJ() == 0x40 || GX_GetBankForOBJ() == 0x20)
+ {
+ FUN_0201D194(0x3E00, 0x200, param0);
+ return;
+ }
+
+ FUN_0201D194(0x7E00, 0x200, param0);
+ return;
+ case 0x00100010:
+ FUN_0201D194(0xfe00, 0x200, param0);
+ return;
+ case 0x00200010:
+ if (GX_GetBankForOBJ() == 0x30 || GX_GetBankForOBJ() == 0x50)
+ {
+ FUN_0201D194(0x13E00, 0x200, param0);
+ return;
+ }
+ FUN_0201D194(0x1FE00, 0x200, param0);
+ return;
+ }
+
+ GF_AssertFail();
+}
+
+THUMB_FUNC void FUN_02008DDC(u32 param0)
+{
+ FUN_0201E068(0xC000, param0);
+}
diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c
new file mode 100644
index 00000000..2238b920
--- /dev/null
+++ b/arm9/src/unk_02008DEC.c
@@ -0,0 +1,1118 @@
+#include "global.h"
+#include "unk_02008DEC.h"
+#include "NNS_g2d.h"
+#include "gf_gfx_loader.h"
+#include "heap.h"
+
+extern u32 FUN_02020C44(u32, u32);
+extern void FUN_02020C90(u32);
+extern u32 FUN_02020CB0(u32 param0, s32 param1);
+extern void FUN_02020E1C(u32 param0, u32 param1);
+extern void FUN_02020D68(u32 param0, u32 param1);
+extern s32 FUN_02020E38(u32);
+extern void *FUN_02020E0C(u32);
+extern BOOL NNS_G2dGetUnpackedMultiCellBank(void *, void *);
+extern BOOL NNS_G2dGetUnpackedMCAnimBank(void *, void *);
+extern u32 FUN_02020D10(u32, void *, s32, u32);
+extern u32 FUN_02020CD4(u32, void *, s32);
+extern u32 FUN_0201D1F8(u32 *param0);
+extern u32 FUN_0201D250(u32 *param0);
+extern void FUN_0201D2DC(s32, u32);
+extern void FUN_0201D324(s32 param0);
+extern u32 FUN_0201D3B0(s32);
+extern u32 FUN_0201D3D4(s32, u32);
+extern u32 FUN_0201D458(u32);
+extern void FUN_0201D4F0(u32);
+extern u32 FUN_0201E0E4(u32 *param0);
+extern u32 FUN_0201E128(u32 *param0);
+extern void FUN_0201E168(s32, u32);
+extern void FUN_0201E1C8(s32);
+extern u32 FUN_0201E258(s32, u32);
+extern u32 FUN_0201E230(s32);
+extern s32 NNS_G2dGetImagePaletteLocation(u32, u32);
+
+THUMB_FUNC struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id)
+{
+ struct UnkStruct_02008DEC_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02008DEC_1));
+ ptr->unk00 = FUN_02020C44(param0, heap_id);
+ ptr->unk04 = AllocFromHeap(heap_id, param0 * sizeof(struct UnkStruct_02008DEC_sub));
+ memset(ptr->unk04, 0, param0 * sizeof(struct UnkStruct_02008DEC_sub));
+ ptr->unk08 = (s32)param0;
+ ptr->unk0C = 0;
+ ptr->unk10 = param1;
+
+ return ptr;
+}
+
+THUMB_FUNC void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk00);
+ GF_ASSERT(param0->unk04);
+
+ FUN_020094C4(param0);
+
+ FUN_02020C90(param0->unk00);
+ param0->unk00 = 0;
+
+ FreeToHeap(param0->unk04);
+ param0->unk04 = NULL;
+
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008E6C(
+ struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, s32 param2, u32 param3)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param1);
+ GF_ASSERT(param1->unk04 > param2);
+ GF_ASSERT(param0->unk10 == param1->unk08);
+
+ struct UnkStruct_02008DEC_sub *st1c = FUN_020097D0(param0);
+ GF_ASSERT(st1c);
+
+ if (param1->unk0C == 0)
+ {
+ struct UnkStruct_02008DEC_3 *r6 = &param1->unk00_3[param2];
+ GF_ASSERT(FUN_0200945C(param0, r6->unk00) == 1);
+
+ FUN_0200994C(
+ param0, st1c, r6->unk04, r6->unk00, r6->unk44, r6->unk48, param1->unk08, param3);
+ }
+ else
+ {
+ struct UnkStruct_02008DEC_4 *r6 = &param1->unk00_4[param2];
+ GF_ASSERT(FUN_0200945C(param0, r6->unk0C) == 1);
+
+ FUN_02009978(param0,
+ st1c,
+ r6->unk00,
+ r6->unk04,
+ r6->unk08,
+ r6->unk0C,
+ r6->unk10,
+ r6->unk14,
+ param1->unk08,
+ param3,
+ FALSE);
+ }
+
+ param0->unk0C++;
+
+ return st1c;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, FALSE);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ BOOL param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, FALSE);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ BOOL param8)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, FALSE);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ u32 param5)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+ GF_ASSERT(param1);
+ GF_ASSERT(param1->unk04 == 0);
+
+ s32 r6 = FUN_02009530(param1);
+ u32 r7 = FUN_020095E4(param1);
+ FUN_02009490(param0, param1);
+
+ FUN_02009978(param0, param1, param2, param3, param4, r6, r7, 0, 0, param5, FALSE);
+}
+
+THUMB_FUNC void FUN_02009168(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ u32 param5)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+ GF_ASSERT(param1);
+ GF_ASSERT(param1->unk04 == 1);
+
+ s32 r6 = FUN_02009530(param1);
+ u32 r7 = FUN_020095E4(param1);
+ u32 st24 = FUN_02009610(param1);
+ FUN_02009490(param0, param1);
+
+ FUN_02009978(param0, param1, param2, param3, param4, r6, r7, st24, 1, param5, 0);
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, 0);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, 0);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, 0);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC s32 FUN_020093A8(
+ struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, struct UnkStruct_02008DEC_5 *param2, u32 param3)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param1);
+
+ FUN_020093DC(param0, param1, 0, param1->unk04, param2, param3);
+
+ return param1->unk04;
+}
+
+THUMB_FUNC void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_2 *param1,
+ s32 param2,
+ s32 param3,
+ struct UnkStruct_02008DEC_5 *param4,
+ u32 param5)
+{
+ for (int r5 = param2; r5 < param2 + param3; r5++)
+ {
+ struct UnkStruct_02008DEC_sub *r0 = FUN_02008E6C(param0, param1, r5, param5);
+
+ if (param4 != NULL && param4->unk04 > param4->unk08)
+ {
+ param4->unk00[param4->unk08] = r0;
+ param4->unk08++;
+ }
+ }
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1)
+{
+ struct UnkStruct_02008DEC_5 *r4 = AllocFromHeap(param1, sizeof(struct UnkStruct_02008DEC_5));
+ r4->unk00 = AllocFromHeap(param1, param0 * sizeof(struct UnkStruct_02008DEC_sub *));
+ r4->unk04 = param0;
+ r4->unk08 = 0;
+
+ return r4;
+}
+
+THUMB_FUNC void FUN_02009448(struct UnkStruct_02008DEC_5 *param0)
+{
+ FreeToHeap(param0->unk00);
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC u32 FUN_0200945C(struct UnkStruct_02008DEC_1 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ return FUN_02020CB0(param0->unk00, param1);
+}
+
+THUMB_FUNC void FUN_02009474(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_02009920(param0);
+ FUN_02020E1C(param0->unk00, 0);
+}
+
+THUMB_FUNC void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04);
+
+ FUN_02009920(param1);
+ FUN_02020D68(param0->unk00, param1->unk00);
+ param1->unk00 = 0;
+ param0->unk0C--;
+}
+
+THUMB_FUNC void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0)
+{
+ for (int i = 0; i < param0->unk08; i++)
+ {
+ if (param0->unk04[i].unk00 != 0)
+ {
+ FUN_02009490(param0, &param0->unk04[i]);
+ }
+ }
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+
+ for (int i = 0; i < param0->unk08; i++)
+ {
+ if (param0->unk04[i].unk00 != 0)
+ {
+ s32 r0 = FUN_02020E38(param0->unk04[i].unk00);
+ if (r0 == param1)
+ {
+ return &param0->unk04[i];
+ }
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ return FUN_02020E38(param0->unk00);
+}
+
+THUMB_FUNC u32 FUN_02009544(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 0);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_0200955C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 1);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_02009574(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 2);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_0200958C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 3);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_020095A4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 4);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_020095BC(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 5);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ return param0->unk04;
+}
+
+THUMB_FUNC u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ if (param0->unk04 == 0)
+ {
+ return FUN_02009934(param0)[1];
+ }
+ if (param0->unk04 == 1)
+ {
+ return FUN_02009934(param0)[1];
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ if (param0->unk04 == 1)
+ {
+ return FUN_02009934(param0)[2];
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1)
+{
+ GF_ASSERT(param0);
+
+ if (param0->unk04 == 0)
+ {
+ FUN_02009934(param0)[1] = param1;
+ }
+ if (param0->unk04 == 1)
+ {
+ FUN_02009934(param0)[1] = param1;
+ }
+}
+
+THUMB_FUNC u32 FUN_0200965C(void)
+{
+ return 16;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_2 *FUN_02009660(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ return &param0[param1];
+}
+
+THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u32 param2)
+{
+ GF_ASSERT(param1);
+
+ param1->unk08 = param0[0];
+ param1->unk0C = 1;
+
+ param1->unk04 = FUN_020099E8((struct UnkStruct_02008DEC_4 *)(param0 + 1));
+
+ if (param1->unk04 > 0)
+ {
+ param1->unk00_4 = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4));
+ }
+ else
+ {
+ param1->unk00_4 = NULL;
+ }
+
+ if (param1->unk00_4 != NULL)
+ {
+ memcpy(param1->unk00_4, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4));
+ }
+}
+
+THUMB_FUNC void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0)
+{
+ if (param0->unk00_4)
+ {
+ FreeToHeap(param0->unk00_4);
+ }
+ param0->unk00_4 = NULL;
+ param0->unk04 = 0;
+}
+
+THUMB_FUNC s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0)
+{
+ GF_ASSERT(param0);
+
+ return param0->unk04;
+}
+
+THUMB_FUNC s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ if (param0->unk0C == 0)
+ {
+ return param0->unk00_3[param1].unk00;
+ }
+
+ return param0->unk00_4[param1].unk0C;
+}
+
+THUMB_FUNC s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ s32 r6;
+ if (param0->unk0C == 1)
+ {
+ r6 = param0->unk00_4[param1].unk04;
+ }
+
+ // oops, UB here
+ return r6;
+}
+
+THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ BOOL r6;
+ if (param0->unk0C == 1)
+ {
+ r6 = param0->unk00_4[param1].unk08;
+ }
+
+ // oops, UB here
+ return r6;
+}
+
+THUMB_FUNC u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ if (param0->unk0C == 0)
+ {
+ return param0->unk00_3[param1].unk44;
+ }
+
+ return param0->unk00_4[param1].unk10;
+}
+
+THUMB_FUNC u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ if (param0->unk0C == 0)
+ {
+ return param0->unk00_3[param1].unk48;
+ }
+
+ return param0->unk00_4[param1].unk14;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0)
+{
+ for (int i = 0; i < param0->unk08; i++)
+ {
+ if (param0->unk04[i].unk00 == 0)
+ {
+ return &param0->unk04[i];
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC void FUN_020097FC(
+ struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4)
+{
+ void *r0 = FUN_02020E0C(param0->unk00);
+
+ switch (param1)
+ {
+ case 0:
+ param0->unk08 = FUN_0200986C(r0, param2, param4);
+ break;
+ case 1:
+ param0->unk08 = FUN_0200988C(r0, param2, param3, param4);
+ break;
+ case 2:
+ param0->unk08 = FUN_020098B0(r0, param4);
+ break;
+ case 3:
+ param0->unk08 = FUN_020098CC(r0, param4);
+ break;
+ case 4:
+ param0->unk08 = FUN_020098E8(r0, param4);
+ break;
+ case 5:
+ param0->unk08 = FUN_02009904(r0, param4);
+ break;
+ }
+}
+
+THUMB_FUNC struct CharacterData_02008DEC *FUN_0200986C(void *param0, u32 param1, u32 param2)
+{
+ struct CharacterData_02008DEC *ptr =
+ AllocFromHeap(param2, sizeof(struct CharacterData_02008DEC));
+
+ NNS_G2dGetUnpackedCharacterData(param0, &ptr->chData);
+ ptr->unk04 = param1;
+
+ return ptr;
+}
+
+THUMB_FUNC struct PaletteData_02008DEC *FUN_0200988C(
+ void *param0, u32 param1, u32 param2, u32 param3)
+{
+ struct PaletteData_02008DEC *ptr = AllocFromHeap(param3, sizeof(struct PaletteData_02008DEC));
+
+ NNS_G2dGetUnpackedPaletteData(param0, &ptr->plttData);
+ ptr->unk04 = param1;
+ ptr->unk08 = param2;
+
+ return ptr;
+}
+
+THUMB_FUNC struct CellDataBank_02008DEC *FUN_020098B0(void *param0, u32 param1)
+{
+ struct CellDataBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct CellDataBank_02008DEC));
+
+ NNS_G2dGetUnpackedCellBank(param0, &ptr->cellBank);
+
+ return ptr;
+}
+
+THUMB_FUNC struct AnimBank_02008DEC *FUN_020098CC(void *param0, u32 param1)
+{
+ struct AnimBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct AnimBank_02008DEC));
+
+ NNS_G2dGetUnpackedAnimBank(param0, &ptr->bankData);
+
+ return ptr;
+}
+
+THUMB_FUNC void *FUN_020098E8(void *param0, u32 param1)
+{
+ void *ptr = AllocFromHeap(param1, 4);
+
+ NNS_G2dGetUnpackedMultiCellBank(param0, ptr);
+
+ return ptr;
+}
+
+THUMB_FUNC void *FUN_02009904(void *param0, u32 param1)
+{
+ void *ptr = AllocFromHeap(param1, 4);
+
+ NNS_G2dGetUnpackedMCAnimBank(param0, ptr);
+
+ return ptr;
+}
+
+THUMB_FUNC void FUN_02009920(struct UnkStruct_02008DEC_sub *param0)
+{
+ if (param0->unk08 != NULL)
+ {
+ FreeToHeap(param0->unk08);
+ }
+
+ param0->unk08 = NULL;
+}
+
+THUMB_FUNC u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk08);
+
+ return param0->unk08;
+}
+
+THUMB_FUNC void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ void *param2,
+ s32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ param1->unk00 = FUN_02020D10(param0->unk00, param2, param3, param7);
+ param1->unk04 = param6;
+ FUN_020097FC(param1, param6, param4, param5, param7);
+}
+
+THUMB_FUNC void FUN_02009978(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ s32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ BOOL param10)
+{
+ void *r1 = GfGfxLoader_LoadFromNarc(param2, param3, param4, param9, param10);
+ param1->unk00 = FUN_02020CD4(param0->unk00, r1, param5);
+ param1->unk04 = param8;
+
+ FUN_020097FC(param1, param8, param6, param7, param9);
+}
+
+THUMB_FUNC void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NARC *param2,
+ u32 param3,
+ u32 param4,
+ s32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10)
+{
+ param1->unk00 =
+ FUN_02020CD4(param0->unk00, FUN_02009A04(param2, param3, param4, param9, param10), param5);
+ param1->unk04 = param8;
+
+ FUN_020097FC(param1, param8, param6, param7, param9);
+}
+
+THUMB_FUNC s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0)
+{
+ s32 r3 = 0;
+ while (param0[r3].unk00 != -2)
+ {
+ r3++;
+ }
+
+ return r3;
+}
+
+THUMB_FUNC void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, u32 param4)
+{
+ void *r4 = NARC_AllocAndReadWholeMember(param0, param1, param3);
+
+ if (r4 != NULL && param2 != 0)
+ {
+ void *ptr;
+ if (param4 == 0)
+ {
+ ptr = AllocFromHeap(param3, (*(u32 *)r4) >> 8);
+ }
+ else
+ {
+ ptr = AllocFromHeapAtEnd(param3, (*(u32 *)r4) >> 8);
+ }
+
+ if (ptr != NULL)
+ {
+ MI_UncompressLZ8(r4, ptr);
+ FreeToHeap(r4);
+ }
+
+ r4 = ptr;
+ }
+
+ return r4;
+}
+
+THUMB_FUNC u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 0;
+
+ return FUN_0201D1F8(st0);
+}
+
+THUMB_FUNC void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ GF_ASSERT(param0->unk00[i] == NULL || FUN_02009A50(param0->unk00[i]) != 0);
+ }
+}
+
+THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 0;
+
+ return FUN_0201D250(st0);
+}
+
+THUMB_FUNC u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 1;
+
+ return FUN_0201D1F8(st0);
+}
+
+THUMB_FUNC void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ GF_ASSERT(param0->unk00[i] == NULL || FUN_02009B04(param0->unk00[i]) != 0);
+ }
+}
+
+THUMB_FUNC u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 1;
+
+ return FUN_0201D250(st0);
+}
+
+THUMB_FUNC void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param1);
+
+ FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param1));
+}
+
+THUMB_FUNC void FUN_02009BE8(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param0));
+}
+
+THUMB_FUNC void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ FUN_0201D324(FUN_02009530(param0));
+}
+
+THUMB_FUNC void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ FUN_02009C0C(param0->unk00[i]);
+ }
+ }
+}
+
+THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ return FUN_0201D3B0(FUN_02009530(param0));
+}
+
+THUMB_FUNC u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+ GF_ASSERT(param1);
+ GF_ASSERT(FUN_020095D4(param1) == 2);
+
+ s32 r4 = FUN_02009530(param0);
+
+ u32 r0 = FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]);
+ if (r0 == 0)
+ {
+ return FUN_0201D458(FUN_0201D3B0(r4));
+ }
+
+ return r0;
+}
+
+THUMB_FUNC void FUN_02009CDC(u32 param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_0201D4F0(param0);
+}
+
+THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ u32 st0[4];
+ st0[0] = FUN_0200955C(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[3] = (u32)FUN_02009530(param0);
+ st0[2] = FUN_02009610(param0);
+
+ return FUN_0201E0E4(st0);
+}
+
+THUMB_FUNC void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ GF_ASSERT(FUN_02009CF0(param0->unk00[i]) != 0);
+ }
+ }
+}
+
+THUMB_FUNC u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ u32 st0[4];
+ st0[0] = FUN_0200955C(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[3] = (u32)FUN_02009530(param0);
+ st0[2] = FUN_02009610(param0);
+
+ return FUN_0201E128(st0);
+}
+
+THUMB_FUNC void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ GF_ASSERT(FUN_02009D68(param0->unk00[i]) != 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02009DE0(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_0201E168(FUN_02009530(param0), FUN_0200955C(param0));
+}
+
+THUMB_FUNC void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ FUN_0201E1C8(FUN_02009530(param0));
+}
+
+THUMB_FUNC void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ FUN_02009E04(param0->unk00[i]);
+ }
+ }
+}
+
+THUMB_FUNC u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ s32 r0 = FUN_02009530(param0);
+ if (param1 != 0)
+ {
+ return FUN_0201E258(r0, param1);
+ }
+
+ return FUN_0201E230(r0);
+}
+
+THUMB_FUNC s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1)
+{
+ s32 ret = NNS_G2dGetImagePaletteLocation(FUN_02009E54(param0, 0), param1);
+ if (ret != -1)
+ {
+ return ret / 32;
+ }
+
+ return ret;
+}
diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c
index 4ed957d6..093d35c1 100644
--- a/arm9/src/unk_0200BB14.c
+++ b/arm9/src/unk_0200BB14.c
@@ -2,90 +2,28 @@
#include "unk_0200BB14.h"
#include "game_init.h"
#include "heap.h"
+#include "unk_02008AA4.h"
+#include "unk_02008DEC.h"
+#include "oam.h"
extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2);
extern void FUN_0201E00C(u32 param0, u32 param1);
extern void NNS_G2dInitOamManagerModule();
-extern void FUN_02009EAC(u32 param0,
- u32 param1,
- u32 param2,
- u32 param3,
- u32 param4,
- u32 param5,
- u32 param6,
- u32 param7,
- u32 param8);
extern u32 FUN_0201C328(u32 param0, u32 param1);
extern void FUN_0201D168();
extern void FUN_0201E0BC();
-extern u32 FUN_02008C9C(u32 param0, void *param1, u32 param2);
extern void FUN_0201FFC8(u32 param0);
extern void FUN_0201FDEC(u32 param0);
-extern void FUN_02009F80();
extern void FUN_0201C348();
extern void FUN_0201FD58(u32 param0);
-extern void FUN_02008C80(u32 param0);
-extern u32 FUN_02009660(u32 *param0, s32 param1);
-extern void FUN_020096B4(u32 param0);
-extern void FUN_02009C30(u32 *param0);
-extern void FUN_02009E28(u32 *param0);
-extern void FUN_02009448(u32 *param0);
-extern void FUN_02008E2C(u32 param0);
extern void FUN_0201C350(u32 param0);
extern void FUN_0201D12C();
extern void FUN_0201E08C();
-extern void FUN_02009FA0();
-extern u32 FUN_0200965C(s32 param0);
-extern void FUN_02009668(void *param0, u32 param1, u32 param2);
-extern u32 FUN_020096CC(u32 param0);
-extern u32 FUN_02008DEC(u32 param0, s32 param1, u32 param2);
-extern u32 *FUN_02009424(u32 param0, u32 param1);
-extern u32 FUN_020093A8(u32 param0, u32 param1, u32 *param2, u32 param3);
-extern void FUN_02009A90(u32 *param0);
-extern void FUN_02009D34(u32 *param0);
-extern u32 FUN_02008BE0(void *param0,
- u32 param1,
- u32 param2,
- u32 param3,
- u32 param4,
- u32 param5,
- u32 param6,
- u32 param7);
extern u32 FUN_0201FE94(struct UnkStruct_0200BB14_4 *param0);
extern void FUN_02020130(u32 param0, u32 param1);
extern void FUN_02020248(u32 param0, u32 param1);
-extern u32 FUN_0200945C(u32 param0, s32 param1);
-extern u32 FUN_02008F34(
- u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
-extern void FUN_02009B04(u32 param0);
-extern u32 FUN_02008FEC(
- u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6, u32 param7);
-extern u32 FUN_02009D68(u32 param0);
-extern u32 FUN_02009E88(u32 param0, u32 param1);
extern void FUN_02003108(u32 param0, u32 param1, u16 param2, u32 param3);
-extern void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0,
- s32 param1,
- s32 param2,
- s32 param3,
- s32 param4,
- s32 param5,
- s32 param6,
- u32 param7,
- u32 param8,
- u32 param9,
- u32 param10,
- u32 param11,
- u32 param12,
- u32 param13,
- u32 param14);
extern u8 FUN_020202A0(u32 param0);
-extern u32 FUN_020094F0(u32 param0, u32 param1);
-extern u32 FUN_02009E54(u32 param0, u32 param1);
-extern void FUN_02009CDC(u32 param0);
-extern u32 FUN_020090AC(
- u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
-extern u32 FUN_02009530(u32 param0);
-extern void FUN_02009490(u32 param0, u32 param1);
extern void FUN_0201D324(u32 param0);
extern void FUN_0201E1C8(u32 param0);
extern void FUN_020201E4(u32 param0, u32 param1);
@@ -115,12 +53,6 @@ extern void FUN_02020100(u32 param0, u32 param1);
extern void FUN_02020054(u32 param0, u32 *param1);
extern void FUN_02020358(u32 param0, u32 param1);
extern void FUN_02020398(u32 param0, u32 param1);
-extern void FUN_02009AC4(u32 param0);
-extern void FUN_02009B78(u32 param0);
-extern void FUN_020090FC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
-extern void FUN_02009BE8(u32 param0);
-extern void FUN_02009168(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
-extern void FUN_02009DE0(u32 param0);
THUMB_FUNC struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id)
{
@@ -226,7 +158,7 @@ THUMB_FUNC void FUN_0200BC1C(u32 *param0)
THUMB_FUNC void FUN_0200BC30()
{
- FUN_02009F80();
+ ApplyAndResetOamManagerBuffer();
}
THUMB_FUNC void FUN_0200BC38()
@@ -273,7 +205,7 @@ THUMB_FUNC void FUN_0200BCB0(u32 *param0)
if (param0[2] == 1)
{
- FUN_02009FA0();
+ DeinitOamData();
}
}
@@ -317,12 +249,12 @@ THUMB_FUNC BOOL FUN_0200BD20(
}
param1->unk54 = st14;
- u32 r2 = FUN_0200965C(st14);
+ u32 r2 = FUN_0200965C();
param1->unk08 = AllocFromHeap(param0->unk000, r2 * st14);
for (s32 i = 0; i < st14; i++)
{
- u32 st18 = FUN_02009660(param1->unk08, i);
+ struct UnkStruct_02008DEC_2 *st18 = FUN_02009660(param1->unk08, i);
void *st1c = AllocAndReadFile(param0->unk000, st10[i]);
FUN_02009668(st1c, st18, param0->unk000);
@@ -337,14 +269,14 @@ THUMB_FUNC BOOL FUN_0200BD20(
for (s32 i = 0; i < st14; i++)
{
- u32 st20 = FUN_02009660(param1->unk08, i);
+ struct UnkStruct_02008DEC_2 *st20 = FUN_02009660(param1->unk08, i);
param1->unk24[i] = FUN_02009424(FUN_020096CC(st20), param0->unk000);
param1->unk3c[i] = FUN_020093A8(param1->unk0c[i], st20, param1->unk24[i], param0->unk000);
}
FUN_02009A90(param1->unk24[0]);
FUN_02009D34(param1->unk24[1]);
- void *r6 = AllocAndReadFile(param0->unk000, st10[6]);
+ struct UnkStruct_02008AA4_2 *r6 = AllocAndReadFile(param0->unk000, st10[6]);
param1->unk04 = FUN_02008BE0(r6,
param0->unk000,
param1->unk0c[0],
@@ -456,7 +388,7 @@ THUMB_FUNC u32 FUN_0200BE74(u32 *param0,
}
THUMB_FUNC BOOL FUN_0200BF60(
- struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2)
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, s32 *param2)
{
struct UnkStruct_0200BB14_1 *st0 = param0;
s32 i;
@@ -486,9 +418,9 @@ THUMB_FUNC BOOL FUN_0200BF60(
param1->unk24[i] = FUN_02009424(param2[i], st0->unk000);
param1->unk3c[i] = 0;
- for (s32 j = 0; j < (s32)param1->unk24[i][1]; j++)
+ for (s32 j = 0; j < param1->unk24[i]->unk04; j++)
{
- ((u32 *)param1->unk24[i][0])[j] = 0;
+ param1->unk24[i]->unk00[j] = NULL;
}
}
}
@@ -498,9 +430,9 @@ THUMB_FUNC BOOL FUN_0200BF60(
THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -509,8 +441,8 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
FUN_02009B04(r5);
FUN_0200C474(param1->unk24[0], r5);
@@ -518,14 +450,14 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
}
GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ return r5 != NULL ? TRUE : FALSE;
}
THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
u32 param6,
s32 param7)
@@ -535,16 +467,16 @@ THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
return -1;
}
- u32 r5 =
+ struct UnkStruct_02008DEC_sub * r5 =
FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]);
- if (r5 != 0)
+ if (r5 != NULL)
{
GF_ASSERT(FUN_02009D68(r5) == 1);
FUN_0200C474(param1->unk24[1], r5);
return (s8)FUN_02009E88(r5, param6);
}
- GF_ASSERT(0);
+ GF_ASSERT(FALSE);
return -1;
}
@@ -552,9 +484,9 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0,
u32 param1,
u32 *param2,
struct UnkStruct_0200BB14_2 *param3,
- u32 param4,
- u32 param5,
- u32 param6,
+ NarcId param4,
+ s32 param5,
+ BOOL param6,
u32 param7,
u32 param8,
s32 param9)
@@ -568,21 +500,21 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0,
return (u8)r4;
}
-THUMB_FUNC u32 FUN_0200C124(u32 *param0,
+THUMB_FUNC BOOL FUN_0200C124(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
s32 param5)
{
return FUN_0200C404(param0, param1, param2, param3, param4, 2, param5);
}
-THUMB_FUNC u32 FUN_0200C13C(u32 *param0,
+THUMB_FUNC BOOL FUN_0200C13C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
s32 param5)
{
return FUN_0200C404(param0, param1, param2, param3, param4, 3, param5);
@@ -722,32 +654,32 @@ THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154(
return ptr;
}
-THUMB_FUNC u32 FUN_0200C334(u32 *param0, u32 param1)
+THUMB_FUNC u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1)
{
return FUN_02009E54(FUN_020094F0(param0[4], param1), 0);
}
-THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2)
+THUMB_FUNC s32 FUN_0200C344(struct UnkStruct_02008DEC_1 **param0, s32 param1, u32 param2)
{
return FUN_02009E88(FUN_020094F0(param0[4], param1), param2);
}
-THUMB_FUNC u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+THUMB_FUNC BOOL FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1)
{
return FUN_0200C4F4(param0->unk0c[0], param0->unk24[0], param1);
}
-THUMB_FUNC u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+THUMB_FUNC BOOL FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1)
{
return FUN_0200C548(param0->unk0c[1], param0->unk24[1], param1);
}
-THUMB_FUNC u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+THUMB_FUNC BOOL FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1)
{
return FUN_0200C4A8(param0->unk0c[2], param0->unk24[2], param1);
}
-THUMB_FUNC u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+THUMB_FUNC BOOL FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1)
{
return FUN_0200C4A8(param0->unk0c[3], param0->unk24[3], param1);
}
@@ -776,15 +708,15 @@ THUMB_FUNC void FUN_0200C3DC(u32 *param0)
}
FUN_0201FFC8(param0[0]);
- FUN_02008C80(param0[2]);
+ FUN_02008C80((struct UnkStruct_02008AA4_1 *)param0[2]);
FreeToHeap(param0);
}
THUMB_FUNC BOOL FUN_0200C404(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -793,25 +725,25 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
- u32 r4 = FUN_0200C474(param1->unk24[param5], r5);
- GF_ASSERT(r4 == 1);
+ BOOL r4 = FUN_0200C474(param1->unk24[param5], r5);
+ GF_ASSERT(r4 == TRUE);
return r4;
}
GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ return r5 != NULL ? TRUE : FALSE;
}
-THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1)
+THUMB_FUNC BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1)
{
- for (s32 i = 0; i < (s32)param0[1]; i++)
+ for (s32 i = 0; i < param0->unk04; i++)
{
- if (((u32 *)param0[0])[i] == 0)
+ if (param0->unk00[i] == NULL)
{
- ((u32 *)param0[0])[i] = param1;
- param0[2]++;
+ param0->unk00[i] = param1;
+ param0->unk08++;
return TRUE;
}
}
@@ -819,19 +751,19 @@ THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1)
return FALSE;
}
-THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2)
+THUMB_FUNC BOOL FUN_0200C4A8(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2)
{
- for (s32 i = 0; i < (s32)param1[1]; i++)
+ for (s32 i = 0; i < param1->unk04; i++)
{
- if (((u32 *)param1[0])[i] != 0)
+ if (param1->unk00[i] != 0)
{
- u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ s32 r0 = FUN_02009530(param1->unk00[i]);
if (r0 == param2)
{
- FUN_02009490(param0, ((u32 *)param1[0])[i]);
- ((u32 *)param1[0])[i] = 0;
- param1[2]--;
+ FUN_02009490(param0, param1->unk00[i]);
+ param1->unk00[i] = NULL;
+ param1->unk08--;
return TRUE;
}
@@ -841,20 +773,20 @@ THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2)
return FALSE;
}
-THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2)
+THUMB_FUNC BOOL FUN_0200C4F4(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2)
{
- for (s32 i = 0; i < (s32)param1[1]; i++)
+ for (s32 i = 0; i < param1->unk04; i++)
{
- if (((u32 *)param1[0])[i] != 0)
+ if (param1->unk00[i] != NULL)
{
- u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ s32 r0 = FUN_02009530(param1->unk00[i]);
if (r0 == param2)
{
FUN_0201D324(param2);
- FUN_02009490(param0, ((u32 *)param1[0])[i]);
- ((u32 *)param1[0])[i] = 0;
- param1[2]--;
+ FUN_02009490(param0, param1->unk00[i]);
+ param1->unk00[i] = NULL;
+ param1->unk08--;
return TRUE;
}
@@ -864,20 +796,20 @@ THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2)
return FALSE;
}
-THUMB_FUNC BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2)
+THUMB_FUNC BOOL FUN_0200C548(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2)
{
- for (s32 i = 0; i < (s32)param1[1]; i++)
+ for (s32 i = 0; i < param1->unk04; i++)
{
- if (((u32 *)param1[0])[i] != 0)
+ if (param1->unk00[i] != 0)
{
- u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ s32 r0 = FUN_02009530(param1->unk00[i]);
if (r0 == param2)
{
FUN_0201E1C8(param2);
- FUN_02009490(param0, ((u32 *)param1[0])[i]);
- ((u32 *)param1[0])[i] = 0;
- param1[2]--;
+ FUN_02009490(param0, param1->unk00[i]);
+ param1->unk00[i] = NULL;
+ param1->unk08--;
return TRUE;
}
@@ -1085,18 +1017,18 @@ THUMB_FUNC void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2)
{
s32 *r4 = FUN_0202011C(param0, param1, param2);
- param1[0] = r4[0] / 0x1000;
+ param1[0] = (u16)(r4[0] / 0x1000);
if (FUN_02020380(param0) == 2)
{
s32 r1 = r4[1] - 0xc0000;
- param2[0] = r1 / 0x1000;
+ param2[0] = (u16)(r1 / 0x1000);
return;
}
- param2[0] = r4[1] / 0x1000;
+ param2[0] = (u16)(r4[1] / 0x1000);
}
THUMB_FUNC void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2)
@@ -1104,25 +1036,25 @@ THUMB_FUNC void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2)
FUN_0200C75C(*param0, param1, param2);
}
-THUMB_FUNC void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3)
+THUMB_FUNC void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, s32 param3)
{
s32 *r4 = FUN_0202011C(param0, param1, param2);
- param1[0] = r4[0] / 0x1000;
+ param1[0] = (u16)(r4[0] / 0x1000);
if (FUN_02020380(param0) == 2)
{
s32 r1 = r4[1] - param3;
- param2[0] = r1 / 0x1000;
+ param2[0] = (u16)(r1 / 0x1000);
return;
}
- param2[0] = r4[1] / 0x1000;
+ param2[0] = (u16)(r4[1] / 0x1000);
}
-THUMB_FUNC void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3)
+THUMB_FUNC void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, s32 param3)
{
FUN_0200C7AC(*param0, param1, param2, param3);
}
@@ -1229,9 +1161,9 @@ THUMB_FUNC void FUN_0200C90C(u32 *param0, u32 param1)
THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -1240,8 +1172,8 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
FUN_02009AC4(r5);
FUN_0200C474(param1->unk24[0], r5);
@@ -1249,15 +1181,15 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
return TRUE;
}
- GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ GF_ASSERT(FALSE);
+ return r5 != NULL ? TRUE : FALSE;
}
THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -1266,8 +1198,8 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
FUN_02009B78(r5);
FUN_0200C474(param1->unk24[0], r5);
@@ -1275,23 +1207,23 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
return TRUE;
}
- GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ GF_ASSERT(FALSE);
+ return r5 != NULL ? TRUE : FALSE;
}
THUMB_FUNC void FUN_0200C9D8(
- u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+ u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5)
{
- u32 r6 = FUN_020094F0(param1[3], param5);
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[3], param5);
FUN_020090FC(param1[3], r6, param2, param3, param4, param0[0]);
FUN_02009BE8(r6);
}
THUMB_FUNC void FUN_0200CA0C(
- u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+ u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5)
{
- u32 r6 = FUN_020094F0(param1[4], param5);
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[4], param5);
FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]);
FUN_02009DE0(r6);
diff --git a/arm9/src/unk_02021590.c b/arm9/src/unk_02021590.c
new file mode 100644
index 00000000..e6a3d690
--- /dev/null
+++ b/arm9/src/unk_02021590.c
@@ -0,0 +1,212 @@
+#include "global.h"
+#include "heap.h"
+#include "filesystem.h"
+#include "unk_02021590.h"
+#include "unk_0201B8B8.h"
+#include "string_util.h"
+
+static const u8 sGlyphShapes[][2] = {
+ { 0, 1 },
+ { 2, 3 },
+};
+
+static void (*const sAllocators[])(struct FontData *, u32) = {
+ InitFontResources_FromPreloaded,
+ InitFontResources_LazyFromNarc,
+};
+
+static void (*const sDestructors[])(struct FontData *) = {
+ FreeLoadedFontResources_FromPreloaded,
+ FreeLoadedFontResources_LazyFromNarc,
+};
+
+THUMB_FUNC struct FontData *FontData_new(NarcId narcId, s32 fileId, u32 unk2, BOOL unk3, u32 heap_id)
+{
+ struct FontData * ret = (struct FontData *)AllocFromHeap(heap_id, sizeof(struct FontData));
+ if (ret != NULL)
+ {
+ FontData_Init(ret, narcId, fileId, unk3, heap_id);
+ InitFontResources(ret, unk2, heap_id);
+ }
+ return ret;
+}
+
+THUMB_FUNC void FontData_delete(struct FontData * ptr)
+{
+ FreeLoadedFontResources(ptr);
+ FontData_FreeWidthsAndNarc(ptr);
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FontData_ModeSwitch(struct FontData * ptr, u32 a1, u32 heap_id)
+{
+ if (ptr->glyphAccessMode != a1)
+ {
+ FreeLoadedFontResources(ptr);
+ InitFontResources(ptr, a1, heap_id);
+ }
+}
+
+THUMB_FUNC void FontData_Init(struct FontData *ptr, NarcId narcId, s32 fileId, BOOL unk, u32 heap_id)
+{
+ ptr->narc = NARC_ctor(narcId, heap_id);
+ if (ptr->narc != NULL)
+ {
+ NARC_ReadFromMember(ptr->narc, (u32)fileId, 0, 16, &ptr->gfxHeader);
+ ptr->isFixedWidthFont = unk;
+ if (unk)
+ {
+ ptr->glyphWidths = NULL;
+ ptr->glyphWidthFunc = GetGlyphWidth_FixedWidth;
+ }
+ else
+ {
+ GF_ASSERT(ptr->gfxHeader.widthDataStart != 0);
+ ptr->glyphWidths = AllocFromHeap(heap_id, ptr->gfxHeader.numGlyphs);
+ ptr->glyphWidthFunc = GetGlyphWidth_VariableWidth;
+ NARC_ReadFromMember(ptr->narc, (u32)fileId, ptr->gfxHeader.widthDataStart, ptr->gfxHeader.numGlyphs, ptr->glyphWidths);
+ }
+ GF_ASSERT(ptr->gfxHeader.glyphWidth <= 2 && ptr->gfxHeader.glyphHeight <= 2);
+ ptr->glyphShape = sGlyphShapes[ptr->gfxHeader.glyphWidth - 1][ptr->gfxHeader.glyphHeight - 1];
+ ptr->glyphSize = (u32)(16 * ptr->gfxHeader.glyphWidth * ptr->gfxHeader.glyphHeight);
+ ptr->fileId = (u32)fileId;
+ }
+}
+
+THUMB_FUNC void FontData_FreeWidthsAndNarc(struct FontData * ptr)
+{
+ if (ptr->glyphWidths != NULL)
+ FreeToHeap(ptr->glyphWidths);
+ if (ptr->narc != NULL)
+ NARC_dtor(ptr->narc);
+}
+
+THUMB_FUNC void InitFontResources(struct FontData * ptr, u32 a1, u32 heap_id)
+{
+ ptr->glyphAccessMode = a1;
+ sAllocators[a1](ptr, heap_id);
+}
+
+THUMB_FUNC void InitFontResources_FromPreloaded(struct FontData * ptr, u32 heap_id)
+{
+ u32 r4 = ptr->glyphSize * ptr->gfxHeader.numGlyphs;
+ ptr->narcReadBuf = AllocFromHeap(heap_id, r4);
+ ptr->uncompGlyphFunc = DecompressGlyphTiles_FromPreloaded;
+ NARC_ReadFromMember(ptr->narc, ptr->fileId, ptr->gfxHeader.headerSize, r4, ptr->narcReadBuf);
+}
+
+THUMB_FUNC void InitFontResources_LazyFromNarc(struct FontData * ptr, u32 heap_id)
+{
+#pragma unused(heap_id)
+ ptr->uncompGlyphFunc = DecompressGlyphTiles_LazyFromNarc;
+}
+
+THUMB_FUNC void FreeLoadedFontResources(struct FontData * ptr)
+{
+ sDestructors[ptr->glyphAccessMode](ptr);
+}
+
+THUMB_FUNC void FreeLoadedFontResources_FromPreloaded(struct FontData * ptr)
+{
+ FreeToHeap(ptr->narcReadBuf);
+ ptr->narcReadBuf = NULL;
+}
+
+THUMB_FUNC void FreeLoadedFontResources_LazyFromNarc(struct FontData * ptr)
+{
+#pragma unused(ptr)
+}
+
+THUMB_FUNC void TryLoadGlyph(struct FontData * ptr, u32 param1, struct UnkStruct_02002C14_sub * ptr2)
+{
+ if (param1 <= ptr->gfxHeader.numGlyphs)
+ ptr->uncompGlyphFunc(ptr, (u16)(param1 - 1), ptr2);
+ else
+ {
+ ptr2->width = 0;
+ ptr2->height = 0;
+ }
+}
+
+THUMB_FUNC void DecompressGlyphTiles_FromPreloaded(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2)
+{
+ u8 *r4 = &((u8 *)ptr->narcReadBuf)[param1 * ptr->glyphSize];
+ switch (ptr->glyphShape)
+ {
+ case 0:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ break;
+ case 1:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ DecompressGlyphTile((void *)(r4 + 0x10), (void *)(param2->buf + 0x40));
+ break;
+ case 2:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ DecompressGlyphTile((void *)(r4 + 0x10), (void *)(param2->buf + 0x20));
+ break;
+ case 3:
+ DecompressGlyphTile((void *)(r4), (void *)param2->buf);
+ DecompressGlyphTile((void *)(r4 + 0x10), (void *)(param2->buf + 0x20));
+ DecompressGlyphTile((void *)(r4 + 0x20), (void *)(param2->buf + 0x40));
+ DecompressGlyphTile((void *)(r4 + 0x30), (void *)(param2->buf + 0x60));
+ break;
+ }
+ param2->width = (u8)ptr->glyphWidthFunc(ptr, param1);
+ param2->height = ptr->gfxHeader.fixedHeight;
+}
+
+THUMB_FUNC void DecompressGlyphTiles_LazyFromNarc(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2)
+{
+ NARC_ReadFromMember(ptr->narc, ptr->fileId, ptr->gfxHeader.headerSize + param1 * ptr->glyphSize, ptr->glyphSize, ptr->glyphReadBuf);
+ switch (ptr->glyphShape)
+ {
+ case 0:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ break;
+ case 1:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x10), (void *)(param2->buf + 0x40));
+ break;
+ case 2:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x10), (void *)(param2->buf + 0x20));
+ break;
+ case 3:
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf), (void *)param2->buf);
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x10), (void *)(param2->buf + 0x20));
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x20), (void *)(param2->buf + 0x40));
+ DecompressGlyphTile((void *)(ptr->glyphReadBuf + 0x30), (void *)(param2->buf + 0x60));
+ break;
+ }
+ param2->width = (u8)ptr->glyphWidthFunc(ptr, param1);
+ param2->height = ptr->gfxHeader.fixedHeight;
+}
+
+THUMB_FUNC u32 GetStringWidth(struct FontData * ptr, const u16 * str, u32 letterSpacing)
+{
+ u32 width = 0;
+
+ while (*str != EOS)
+ {
+ if (*str == 0xFFFE)
+ {
+ str = MsgArray_SkipControlCode(str);
+ if (*str == EOS)
+ break;
+ }
+ width += ptr->glyphWidthFunc(ptr, (*str) - 1) + letterSpacing;
+ str++;
+ }
+ return width - letterSpacing;
+}
+
+THUMB_FUNC int GetGlyphWidth_VariableWidth(struct FontData * ptr, int a1)
+{
+ return ptr->glyphWidths[a1];
+}
+
+THUMB_FUNC int GetGlyphWidth_FixedWidth(struct FontData * ptr, int a1)
+{
+#pragma unused(a1)
+ return ptr->gfxHeader.fixedWidth;
+}
diff --git a/arm9/src/unk_02021934.c b/arm9/src/unk_02021934.c
index b12e2d8f..07ddde87 100644
--- a/arm9/src/unk_02021934.c
+++ b/arm9/src/unk_02021934.c
@@ -3,6 +3,7 @@
#include "heap.h"
#include "string_util.h"
#include "unk_0201B8B8.h"
+#include "unk_02021590.h"
#pragma thumb on
@@ -10,7 +11,7 @@
void StrAddChar(struct String * str, u16 val);
-s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6)
+s32 StringGetWidth(struct FontData * r7, const u16 * arr, u32 r6)
{
s32 ret = 0;
u32 r4 = 0;
@@ -29,7 +30,7 @@ s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6)
}
else
{
- r4 += (r6 + r7->unk_70(r7, *arr - 1));
+ r4 += (r6 + r7->glyphWidthFunc(r7, *arr - 1));
arr++;
}
}
@@ -38,7 +39,7 @@ s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6)
return ret;
}
-s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct UnkStruct_0202199C * r6, const u16 * arr)
+s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct FontData * r6, const u16 * arr)
{
s32 ret = 0;
while (*arr != 0xFFFF)
@@ -53,7 +54,7 @@ s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct UnkStruct_0202199C
}
else
{
- ret += r6->unk_70(r6, *arr - 1);
+ ret += r6->glyphWidthFunc(r6, *arr - 1);
arr++;
}
}
diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c
index d9edd94c..e48262b0 100644
--- a/arm9/src/wfc_user_info_warning.c
+++ b/arm9/src/wfc_user_info_warning.c
@@ -10,11 +10,10 @@
#include "string16.h"
#include "text.h"
#include "wfc_user_info_warning.h"
+#include "brightness.h"
+#include "render_window.h"
extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id);
-extern void FUN_0200A274(fx32 brightness, fx32, u32);
-extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id);
-extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_value, u32 palette_num);
extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen);
extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32);
@@ -83,7 +82,7 @@ THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1)
SetKeyRepeatTimers(4, 8);
- gMain.unk65 = 0;
+ gMain.screensFlipped = 0;
GX_SwapDisplay();
reg_G2_BLDCNT = 0;
@@ -109,7 +108,7 @@ THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1)
FUN_0201BD5C();
AddWindow(bg_config, &window, &sWFCWarningMsgWindowTemplate);
FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
- FUN_0200CCA4(&window, FALSE, 0x01F7, 2);
+ DrawFrameAndWindow1(&window, FALSE, 0x01F7, 2);
ReadMsgDataIntoString(warning_messages_data, 15, warning_message);
AddTextPrinterParameterized(&window, 0, warning_message, 0, 0, 0, 0);
@@ -118,7 +117,7 @@ THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1)
GX_BothDispOn();
FUN_0200E394(0);
FUN_0200E394(1);
- FUN_0200A274(0, 0x3F, 3);
+ SetBrightness(0, 0x3F, 3);
while (TRUE)
{
diff --git a/include/bg_window.h b/include/bg_window.h
index 24ed152b..9ac29965 100644
--- a/include/bg_window.h
+++ b/include/bg_window.h
@@ -267,7 +267,7 @@ void CopyBgTilemapRectAffine(struct Bg *bg,
u8 srcHeight,
u8 adjustForSrcDims);
void FillBgTilemapRect(struct BgConfig *bgConfig,
- u32 bgId,
+ u8 bgId,
u16 fillValue,
u8 x,
u8 y,
diff --git a/include/brightness.h b/include/brightness.h
new file mode 100644
index 00000000..029ee0b9
--- /dev/null
+++ b/include/brightness.h
@@ -0,0 +1,38 @@
+#ifndef POKEDIAMOND_UNK_0200A104_H
+#define POKEDIAMOND_UNK_0200A104_H
+
+#include "global.h"
+#include "nitro/FX_types.h"
+
+struct BrightnessData
+{
+ fx32 surfaceMask;
+ u32 screenMask;
+ u16 step_count;
+ s16 target_brightness;
+ u32 unk0c;
+ s8 transition_direction;
+ s16 brightness_diff;
+ s16 step_size_integer;
+ u16 step_size_fractional;
+ u16 fractional_count;
+ s16 current_brightness;
+ BOOL transitionActive;
+};
+
+void DoBrightnessTransitionStep(struct BrightnessData *brightness);
+void InitBrightnessTransition(struct BrightnessData *brightnessData,
+ u16 step_count,
+ s16 target_brightness,
+ s16 start_brightness,
+ fx32 surfaceMask,
+ u32 screenMask);
+void StartBrightnessTransition(
+ u16 step_count, s16 target_brightness, s16 start_brightness, fx32 surfaceMask, u32 screenMask);
+void SetBrightness(fx32 brightness, fx32 surfaceMask, u32 screenMask);
+void InitAllScreenBrightnessData(void);
+void InitScreenBrightnessData(u32 screenMask);
+void DoAllScreenBrightnessTransitionStep(void);
+BOOL IsBrightnessTransitionActive(u32 screenMask);
+
+#endif // POKEDIAMOND_UNK_0200A104_H
diff --git a/include/constants/accessories.h b/include/constants/accessories.h
new file mode 100644
index 00000000..907e12cb
--- /dev/null
+++ b/include/constants/accessories.h
@@ -0,0 +1,105 @@
+#ifndef POKEDIAMOND_CONSTANTS_ACCESSORIES_H
+#define POKEDIAMOND_CONSTANTS_ACCESSORIES_H
+
+#define ACCESSORY_WHITE_FLUFF 0
+#define ACCESSORY_YELLOW_FLUFF 1
+#define ACCESSORY_PINK_FLUFF 2
+#define ACCESSORY_BROWN_FLUFF 3
+#define ACCESSORY_BLACK_FLUFF 4
+#define ACCESSORY_ORANGE_FLUFF 5
+#define ACCESSORY_ROUND_PEBBLE 6
+#define ACCESSORY_GLITTER_BOULDER 7
+#define ACCESSORY_SNAGGY_PEBBLE 8
+#define ACCESSORY_JAGGED_BOULDER 9
+#define ACCESSORY_BLACK_PEBBLE 10
+#define ACCESSORY_MINI_PEBBLE 11
+#define ACCESSORY_PINK_SCALE 12
+#define ACCESSORY_BLUE_SCALE 13
+#define ACCESSORY_GREEN_SCALE 14
+#define ACCESSORY_PURPLE_SCALE 15
+#define ACCESSORY_BIG_SCALE 16
+#define ACCESSORY_NARROW_SCALE 17
+#define ACCESSORY_BLUE_FEATHER 18
+#define ACCESSORY_RED_FEATHER 19
+#define ACCESSORY_YELLOW_FEATHER 20
+#define ACCESSORY_WHITE_FEATHER 21
+#define ACCESSORY_BLACK_MOUSTACHE 22
+#define ACCESSORY_WHITE_MOUSTACHE 23
+#define ACCESSORY_BLACK_BEARD 24
+#define ACCESSORY_WHITE_BEARD 25
+#define ACCESSORY_SMALL_LEAF 26
+#define ACCESSORY_BIG_LEAF 27
+#define ACCESSORY_NARROW_LEAF 28
+#define ACCESSORY_SHED_CLAW 29
+#define ACCESSORY_SHED_HORN 30
+#define ACCESSORY_THIN_MUSHROOM 31
+#define ACCESSORY_THICK_MUSHROOM 32
+#define ACCESSORY_STUMP 33
+#define ACCESSORY_PRETTY_DEWDROP 34
+#define ACCESSORY_SNOW_CRYSTAL 35
+#define ACCESSORY_SPARKS 36
+#define ACCESSORY_SHIMMERING_FIRE 37
+#define ACCESSORY_MYSTIC_FIRE 38
+#define ACCESSORY_DETERMINATION 39
+#define ACCESSORY_PECULIAR_SPOON 40
+#define ACCESSORY_PUFFY_SMOKE 41
+#define ACCESSORY_POISON_EXTRACT 42
+#define ACCESSORY_WEALTHY_COIN 43
+#define ACCESSORY_EERIE_THING 44
+#define ACCESSORY_SPRING 45
+#define ACCESSORY_SEASHELL 46
+#define ACCESSORY_HUMMING_NOTE 47
+#define ACCESSORY_SHINY_POWDER 48
+#define ACCESSORY_GLITTER_POWDER 49
+#define ACCESSORY_RED_FLOWER 50
+#define ACCESSORY_PINK_FLOWER 51
+#define ACCESSORY_WHITE_FLOWER 52
+#define ACCESSORY_BLUE_FLOWER 53
+#define ACCESSORY_ORANGE_FLOWER 54
+#define ACCESSORY_YELLOW_FLOWER 55
+#define ACCESSORY_GOOGLY_SPECS 56
+#define ACCESSORY_BLACK_SPECS 57
+#define ACCESSORY_GORGEOUS_SPECS 58
+#define ACCESSORY_SWEET_CANDY 59
+#define ACCESSORY_CONFETTI 60
+#define ACCESSORY_COLORED_PARASOL 61
+#define ACCESSORY_OLD_UMBRELLA 62
+#define ACCESSORY_SPOTLIGHT 63
+#define ACCESSORY_CAPE 64
+#define ACCESSORY_STANDING_MIKE 65
+#define ACCESSORY_SURFBOARD 66
+#define ACCESSORY_CARPET 67
+#define ACCESSORY_RETRO_PIPE 68
+#define ACCESSORY_FLUFFY_BED 69
+#define ACCESSORY_MIRROR_BALL 70
+#define ACCESSORY_PHOTO_BOARD 71
+#define ACCESSORY_PINK_BARRETTE 72
+#define ACCESSORY_RED_BARRETTE 73
+#define ACCESSORY_BLUE_BARRETTE 74
+#define ACCESSORY_YELLOW_BARRETTE 75
+#define ACCESSORY_GREEN_BARRETTE 76
+#define ACCESSORY_PINK_BALLOON 77
+#define ACCESSORY_RED_BALLOONS 78
+#define ACCESSORY_BLUE_BALLOONS 79
+#define ACCESSORY_YELLOW_BALLOON 80
+#define ACCESSORY_GREEN_BALLOONS 81
+#define ACCESSORY_LACE_HEADDRESS 82
+#define ACCESSORY_TOP_HAT 83
+#define ACCESSORY_SILK_VEIL 84
+#define ACCESSORY_HEROIC_HEADBAND 85
+#define ACCESSORY_PROFESSOR_HAT 86
+#define ACCESSORY_FLOWER_STAGE 87
+#define ACCESSORY_GOLD_PEDESTAL 88
+#define ACCESSORY_GLASS_STAGE 89
+#define ACCESSORY_AWARD_PODIUM 90
+#define ACCESSORY_CUBE_STAGE 91
+#define ACCESSORY_TURTWIG_MASK 92
+#define ACCESSORY_CHIMCHAR_MASK 93
+#define ACCESSORY_PIPLUP_MASK 94
+#define ACCESSORY_BIG_TREE 95
+#define ACCESSORY_FLAG 96
+#define ACCESSORY_CROWN 97
+#define ACCESSORY_TIARA 98
+#define ACCESSORY_COMET 99
+
+#endif
diff --git a/include/font.h b/include/font.h
index 963e36bc..3c0f4267 100644
--- a/include/font.h
+++ b/include/font.h
@@ -4,28 +4,33 @@
#include "global.h"
#include "text.h"
-struct UnkStruct_02002C14
+struct UnkStruct_02002C14_sub
{
const char buf[0x80];
u8 width;
u8 height;
+};
+
+struct UnkStruct_02002C14
+{
+ struct UnkStruct_02002C14_sub unk00;
void *unk84[4];
- struct UnkStruct_0202199C *unk94[4];
+ struct FontData *unk94[4];
};
extern struct UnkStruct_02002C14 *UNK_02106FC8;
void FUN_02002C14();
-void FUN_02002C50(u32 param0, u32 param1);
+void FUN_02002C50(u32 font_id, u32 heap_id);
void FUN_02002C84(s32 param0, u32 param1);
void FUN_02002CC0(s32 param0);
void FUN_02002CF8(int param0);
-struct UnkStruct_02002C14 *FUN_02002D94(u32 param0, u32 param1);
+struct UnkStruct_02002C14_sub *FUN_02002D94(u32 param0, u32 param1);
u32 FontFunc(u32 fontId, struct TextPrinter *printer);
u32 FUN_02002DE0(u32 param0, u16 *str, u32 param2);
u32 FUN_02002E14(u32 param0, struct String *str, u32 param2);
s32 GetFontAttribute(u8 fontId, s32 attr);
-void FUN_02002ED0(u32 layer, u32 baseAddr, u32 heap_id);
+void FUN_02002ED0(enum GFBgLayer layer, u32 baseAddr, u32 heap_id);
void FUN_02002EEC(u32 layer, u32 baseAddr, u32 heap_id);
s32 FUN_02002F08(u32 param0, struct String *str, u32 param2);
u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3);
diff --git a/include/main.h b/include/main.h
index ba4d7bc2..87110de5 100644
--- a/include/main.h
+++ b/include/main.h
@@ -94,7 +94,7 @@ struct Main
u16 touchNew;
u16 touchHeld;
u8 touchpadReadAuto;
- u8 unk65;
+ u8 screensFlipped;
u8 unk66;
u8 unk67;
u8 softResetDisabled;
diff --git a/include/oam.h b/include/oam.h
new file mode 100644
index 00000000..773c985d
--- /dev/null
+++ b/include/oam.h
@@ -0,0 +1,42 @@
+#ifndef POKEDIAMOND_UNK_02009EAC_H
+#define POKEDIAMOND_UNK_02009EAC_H
+
+#include "global.h"
+#include "NNS_g2d.h"
+
+struct OamData
+{
+ NNSG2dOamManager oamManagers[2];
+ u32 heap_id;
+};
+
+void FUN_02009EAC(s32 param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8);
+void InitOamData(s32 param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 heap_id);
+void ApplyAndResetOamManagerBuffer(void);
+void DeinitOamData(void);
+void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3);
+NNSG2dOamManager *GetOamManager(u32 screen);
+void FUN_0200A064(u32 heap_id);
+void FUN_0200A06C(u32 heap_id);
+u32 EntryOamManagerOamWithAffineIdxMainScreen(u32 param0, u32 param1);
+u32 EntryOamManagerOamWithAffineIdxSubScreen(u32 param0, u32 param1);
+u32 EntryOamManagerAffineMainScreen(u32 param0);
+u32 EntryOamManagerAffineSubScreen(u32 param0);
+
+#endif // POKEDIAMOND_UNK_02009EAC_H
diff --git a/include/pokemon.h b/include/pokemon.h
index d107bf85..60fa1838 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -10,6 +10,7 @@
#include "constants/pokemon.h"
#include "string16.h"
#include "player_data.h"
+#include "sound_chatot.h"
struct BaseStats {
/* 0x00 */ u8 hp;
@@ -294,7 +295,7 @@ void Party_SpreadPokerus(struct PlayerParty * party);
BOOL Pokemon_HasPokerus(struct Pokemon * pokemon);
BOOL Pokemon_IsImmuneToPokerus(struct Pokemon * pokemon);
void Pokemon_UpdateArceusForme(struct Pokemon * pokemon);
-void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20);
+void FUN_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp18, u32 sp1C, u32 sp20);
void FUN_0206A014(struct Pokemon * pokemon, struct PlayerData * a1, u32 pokeball, u32 a3, u32 encounterType, u32 heap_id);
void FUN_0206A094(struct Pokemon * pokemon, u32 a1, u32 a2);
BOOL FUN_0206A13C(struct Pokemon * pokemon, u32 a1);
diff --git a/include/proto.h b/include/proto.h
index 7af3f19d..43ed28ac 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -11,10 +11,6 @@ int TrainerClass_GetGenderOrTrainerCount(int x);
int FUN_02014C3C(u8);
void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8);
u32 IsNighttime(void); // is day or night
-int FUN_02005F14(int);
-void FUN_02005E80(int);
-void FUN_02005E90(int, int, int, int);
-void FUN_020056AC(int, int, int, int, int);
void FUN_020808AC(struct BoxPokemon *, struct PlayerData *, int, u32, u32);
#endif //POKEDIAMOND_PROTO_H
diff --git a/include/render_window.h b/include/render_window.h
new file mode 100644
index 00000000..385c61ad
--- /dev/null
+++ b/include/render_window.h
@@ -0,0 +1,143 @@
+#ifndef POKEDIAMOND_UNK_0200CABC_H
+#define POKEDIAMOND_UNK_0200CABC_H
+
+#include "global.h"
+#include "bg_window.h"
+#include "pokemon.h"
+#include "unk_02008DEC.h"
+
+struct UnkStruct_0200CABC_1
+{
+ struct Window *unk000;
+ u8 unk004[9][0x80];
+ u16 fillValue;
+ u8 unk486;
+ u8 unk487 : 7;
+ u8 unk488 : 2;
+};
+
+struct UnkStruct_0200CABC_2
+{
+ u32 unk000;
+ u8 unk004[0x12c];
+ struct UnkStruct_02008DEC_1 *unk130;
+ struct UnkStruct_02008DEC_1 *unk134;
+ u8 unk138[0x2a];
+ u16 unk162;
+ u32 *unk164;
+ struct BgConfig *bgConfig;
+ u8 bgId;
+ u8 x;
+ u8 y;
+ u8 unk16f;
+};
+
+struct UnkStruct_0200CABC_3
+{
+ u32 unk00;
+ u32 unk04;
+ u32 unk08;
+ u32 unk0c;
+};
+
+u32 FUN_0200CABC(struct BgConfig *bgConfig, u32 layer, u32 numTiles, u32 param3, u32 heap_id);
+s32 FUN_0200CAFC(void);
+void FUN_0200CB00(
+ struct BgConfig *bg_config, u32 layer, u32 num_tiles, u32 param3, u8 param4, u32 heap_id);
+void DrawFrame1(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 fillValue);
+void DrawFrameAndWindow1(struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num);
+void ClearFrameAndWindow1(struct Window *window, BOOL copy_to_vram);
+s32 FUN_0200CD60(s32 param0);
+s32 FUN_0200CD64(s32 param0);
+void FUN_0200CD68(
+ struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+void DrawFrame2(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 fillValue);
+void DrawWindowFrame2(struct Window *window, u32 fill_value, u32 palette_num);
+void DrawFrameAndWindow2(struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num);
+void ClearFrameAndWindow2(struct Window *window, BOOL param1);
+void BlitRect4Bit(u8 *srcPixels,
+ u16 srcX,
+ u16 srcY,
+ u16 srcWidth,
+ u16 srcHeight,
+ u8 *dstPixels,
+ u16 dstWidth,
+ u16 dstHeight,
+ u16 dstX,
+ u16 dstY,
+ u16 width,
+ u16 height);
+void FUN_0200D18C(struct Window *window, u16 fill_value);
+void FUN_0200D274(
+ struct BgConfig *bg_config, u8 bg_id, u16 param2, u8 param3, u8 param4, u32 heap_id);
+void FUN_0200D300(struct BgConfig *bg_config,
+ u8 bg_id,
+ u16 numtiles,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u32 heap_id);
+void FUN_0200D378(
+ struct BgConfig *bg_config, u8 bg_id, u16 numtiles, u8 param3, u16 param4, u32 heap_id);
+void DrawFrame3(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 fillValue);
+void DrawWindowCorner(struct Window *window, u16 fillValue, u8 paletteNum);
+void DrawFrameAndWindow3(
+ struct Window *window, BOOL copy_to_vram, u16 fillValue, u8 paletteNum, u8 param4);
+void ClearFrameAndWindow3(struct Window *window, u8 param1, BOOL copy_to_vram);
+struct UnkStruct_0200CABC_1 *FUN_0200D858(struct Window *window, u32 param1);
+void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1);
+void FUN_0200DB7C(u32 param0, void *param1);
+void FUN_0200DBE8(u32 param0, void *param1);
+void FUN_0200DBFC(struct UnkStruct_0200CABC_1 *param0);
+void FUN_0200DC24(struct UnkStruct_0200CABC_1 *param0);
+u8 *FUN_0200DC4C(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u16 param6,
+ u8 param7,
+ s32 param8);
+u8 *FUN_0200DCA4(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ struct Pokemon *param6,
+ s32 param7);
+void FUN_0200DCF8(u32 param0, void *param1);
+struct UnkStruct_0200CABC_2 *FUN_0200DD70(
+ struct BgConfig *bg_config, u8 bg_id, u8 param2, u8 param3, u32 param4);
+void FUN_0200DDAC(struct UnkStruct_0200CABC_2 *param0, u32 param1);
+void FUN_0200DDD8(struct UnkStruct_0200CABC_2 *param0);
+void FUN_0200DE30(struct UnkStruct_0200CABC_2 *param0, u8 param1, u8 param2);
+void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 param2);
+void FUN_0200DEC0(struct UnkStruct_0200CABC_2 *param0, struct Pokemon *param1);
+void FUN_0200DEF4(struct UnkStruct_0200CABC_2 *param0, struct SomeDrawPokemonStruct *param1);
+void DrawFramed10x10Square(struct UnkStruct_0200CABC_2 *param0, u8 paletteNum, u16 fillValue);
+void ClearFramed10x10Square(struct UnkStruct_0200CABC_2 *param0);
+
+#endif // POKEDIAMOND_UNK_0200CABC_H
diff --git a/include/rs_migrate_string.h b/include/rs_migrate_string.h
new file mode 100644
index 00000000..b83807f5
--- /dev/null
+++ b/include/rs_migrate_string.h
@@ -0,0 +1,26 @@
+#ifndef POKEDIAMOND_UNK_02015D14_H
+#define POKEDIAMOND_UNK_02015D14_H
+
+// --------------------------------------------
+// ConvertRSStringToDPStringInternational
+// ============================================
+// Param rs_str: Pointer to u8 representing
+// the name of a Pokemon or
+// its OT when migrating from
+// Advanced Gameboy.
+// Param dp_str: Pointer to u16 representing
+// the destination string buffer
+// for migration to Diamond
+// or Pearl.
+// Param length: The length of the string
+// to convert, including the
+// terminator byte.
+// Param language: Game language of origin.
+// See include/config.h.
+// Return: TRUE if the conversion was completed
+// successfully. Otherwise, dp_str will
+// be filled with up to 10 question mark
+// characters.
+BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language);
+
+#endif //POKEDIAMOND_UNK_02015D14_H
diff --git a/include/save_block_2.h b/include/save_block_2.h
index a4514c96..fb2bc92a 100644
--- a/include/save_block_2.h
+++ b/include/save_block_2.h
@@ -152,6 +152,6 @@ BOOL FlashLoadChunk(u32 src, void * dest, u32 size);
void FlashWriteCommandCallback(void * arg);
int FlashWriteChunkInternal(u32 dest, void * src, u32 size);
BOOL WaitFlashWrite(int lock, BOOL * res);
-void SaveErrorHandling(int lock, int errno);
+void SaveErrorHandling(int lock, u32 errno);
#endif //POKEDIAMOND_SAVE_BLOCK_2_H
diff --git a/include/save_data_read_error.h b/include/save_data_read_error.h
new file mode 100644
index 00000000..d3556734
--- /dev/null
+++ b/include/save_data_read_error.h
@@ -0,0 +1,7 @@
+#ifndef POKEDIAMOND_SAVE_DATA_READ_ERROR_H
+#define POKEDIAMOND_SAVE_DATA_READ_ERROR_H
+
+void ShowSaveDataReadError(u32 heap_id);
+void ShowGBACartRemovedError(u32 heap_id);
+
+#endif
diff --git a/include/save_data_write_error.h b/include/save_data_write_error.h
new file mode 100644
index 00000000..e4c77453
--- /dev/null
+++ b/include/save_data_write_error.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_SAVE_DATA_WRITE_ERROR_H
+#define POKEDIAMOND_SAVE_DATA_WRITE_ERROR_H
+
+void ShowSaveDataWriteError(u32 heap_id, u32 err_no);
+
+#endif
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 5e28a4d0..7a0ab21e 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -15,6 +15,14 @@ struct UnkStruct_0203A288 {
u8 padding[1];
};
+typedef struct UnkStruct_0203B174
+{
+ BOOL Unk00;
+ u32 Unk04;
+ void *Unk08;
+ struct UnkSavStruct80 *Unk0C;
+} UnkStruct_0203B174;
+
//scrcmd.c
BOOL ScrCmd_Nop(struct ScriptContext* ctx);
BOOL ScrCmd_Dummy(struct ScriptContext* ctx);
@@ -249,7 +257,12 @@ BOOL ScrCmd_Unk01A6(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01A7(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx);
-//scrcmd_18.c
+//scrcmd_amity_square.c
+BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx);
+BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx);
+
+//scrcmd_party.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);
BOOL ScrCmd_GetPartyMonSpecies(struct ScriptContext* ctx);
BOOL ScrCmd_CheckPartyMonOTID(struct ScriptContext* ctx);
diff --git a/include/script_buffers.h b/include/script_buffers.h
index b9f0e268..e5c39291 100644
--- a/include/script_buffers.h
+++ b/include/script_buffers.h
@@ -104,7 +104,7 @@ void BufferMonthNameAbbr(struct ScrStrBufs * mgr, u32 idx, u32 month);
void ScrStrBufs_UpperFirstChar(struct ScrStrBufs * mgr, u32 idx);
void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, struct String * src);
void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr);
-struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4);
+struct UnkStruct_0200B870 * MessagePrinter_new(u32 color1, u32 color2, u32 color3, u32 heap_id);
void MessagePrinter_delete(struct UnkStruct_0200B870 * a0);
void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window * a2, int a3, int a4);
void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y);
diff --git a/include/sound_chatot.h b/include/sound_chatot.h
new file mode 100644
index 00000000..fbbba0c6
--- /dev/null
+++ b/include/sound_chatot.h
@@ -0,0 +1,19 @@
+#ifndef POKEDIAMOND_SOUND_CHATOT_H
+#define POKEDIAMOND_SOUND_CHATOT_H
+
+#include "global.h"
+#include "sav_chatot.h"
+
+BOOL FUN_02005CFC(void);
+BOOL Chatot_checkCry(struct SaveChatotSoundClip *param0);
+u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3);
+void FUN_02005DFC(void);
+u32 Chatot_startRecording(void);
+void Chatot_stopRecording(void);
+void Chatot_saveRecording(struct SaveChatotSoundClip *param0);
+void FUN_02005E80(u8 param0);
+void FUN_02005E90(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3);
+u32 FUN_02005EE0(struct SaveChatotSoundClip *param0);
+BOOL FUN_02005F14(s32 param0);
+
+#endif // POKEDIAMOND_UNK_02005CFC_H
diff --git a/include/string16.h b/include/string16.h
index 69ea4e30..f42ff918 100644
--- a/include/string16.h
+++ b/include/string16.h
@@ -2,6 +2,7 @@
#define POKEDIAMOND_STRING16_H
#include "string_util.h"
+#include "unk_02021590.h"
struct String
{
@@ -12,12 +13,6 @@ struct String
u8 padding[2];
};
-struct UnkStruct_0202199C
-{
- u8 filler_00[0x70];
- int (*unk_70)(struct UnkStruct_0202199C *, int);
-};
-
#define STR16_MAGIC 0xB6F8D2EC
struct String * String_ctor(u32 count, u32 heap_id);
@@ -25,8 +20,8 @@ BOOL StringCompare(struct String *, struct String *);
void CopyU16ArrayToStringN(struct String *, u16 *, u32); // copy
void StringSetEmpty(struct String *); // set empty
struct String * StringDup(struct String *, u32 heap_id);
-s32 StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6);
-s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct UnkStruct_0202199C * r6, const u16 * arr);
+s32 StringGetWidth(struct FontData * r7, const u16 * arr, u32 r6);
+s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct FontData * r6, const u16 * arr);
void String_dtor(struct String * str);
void StringCopy(struct String * dest, struct String * src);
void String16_FormatInteger(struct String * str, int num, u32 ndigits, int strConvMode, BOOL whichCharset);
diff --git a/include/text_02054590.h b/include/text_02054590.h
index 4d05260a..d55f0b80 100644
--- a/include/text_02054590.h
+++ b/include/text_02054590.h
@@ -15,6 +15,6 @@ u16 FUN_02054658(struct Window * window, struct String *str, struct Options *opt
u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, s32 a5);
u8 FUN_020546C8(u32 param0);
void FUN_020546E0(struct BgConfig *param0, struct Window *param1, u32 param2, u32 param3);
-void FUN_02054744(struct Window *param0, u32 param1, u32 param2);
+void FUN_02054744(struct Window *param0, u32 param1, u16 param2);
#endif // POKEDIAMOND_UNK_02054590_H
diff --git a/include/unk_020040F4.h b/include/unk_020040F4.h
index 413e853f..819a96fa 100644
--- a/include/unk_020040F4.h
+++ b/include/unk_020040F4.h
@@ -2,6 +2,7 @@
#define POKEDIAMOND_UNK_020040F4_H
#include "global.h"
+#include "SPI_mic.h"
struct WaveArcInfo
{
@@ -31,11 +32,11 @@ struct UnkStruct_020040F4_2
};
void FUN_020040F4(u8 param0);
-u8 FUN_02004104();
+u8 FUN_02004104(void);
void FUN_02004110(u16 param0);
-u16 FUN_02004124();
+u16 FUN_02004124(void);
void FUN_02004130(u16 param0);
-u16 FUN_02004140();
+u16 FUN_02004140(void);
void FUN_0200414C(u16 param0);
void FUN_0200415C(u8 param0);
BOOL FUN_02004180(s32 param0);
@@ -51,10 +52,10 @@ void FUN_020046C4(int param0, u32 param1);
void FUN_020046E8(s32 param0);
void FUN_02004704(s32 param0, int param1, u32 param2);
void FUN_02004724(int param0);
-void FUN_02004738();
+void FUN_02004738(void);
int FUN_02004748(s32 param0);
void FUN_020047C8(u8 param0, u8 param1);
-void FUN_02004810();
+void FUN_02004810(void);
void GF_SndPlayerMoveVolume(int playerNo, s32 param1, s32 param2);
void GF_SndPlayerSetInitialVolume(int playerNo, s32 param1);
void FUN_02004858(u32 param0, int playerNo);
@@ -65,8 +66,8 @@ u8 FUN_020048D0(u16 param0);
u32 GF_SndPlayerGetSeqNo(u32 *param0);
u32 FUN_020048F4(u16 param0);
u16 FUN_02004900(u32 param0);
-u32 GF_MIC_StartAutoSampling(u32 param0);
-u32 GF_MIC_StopAutoSampling(u32 param0);
+u32 GF_MIC_StartAutoSampling(struct MIC_SamplingData *param0);
+u32 GF_MIC_StopAutoSampling(void);
u32 GF_MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3);
void *FUN_02004930(u32 param0);
BOOL FUN_02004984(u32 param0);
@@ -80,12 +81,12 @@ void FUN_02004AF8(u32 param0, s32 param1);
u32 FUN_02004B30(u32 param0, s32 param1, s32 param2, u32 param3, u32 param4);
void FUN_02004C1C(u8 *param0, u32 param1);
void FUN_02004C3C(u32 param0);
-BOOL GF_SndCaptureIsActive();
+BOOL GF_SndCaptureIsActive(void);
u32 GF_SndCaptureStartReverb(u32 param0);
void GF_SndCaptureStopReverb(u32 param0);
void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1);
-void FUN_02004CB4();
-void GF_SndCaptureStopEffect();
+void FUN_02004CB4(void);
+void GF_SndCaptureStopEffect(void);
void FUN_02004D04(s32 param0);
void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, s32 param2);
void FUN_02004D34(u16 param0, u32 param1, s32 param2);
@@ -93,8 +94,8 @@ void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, s32 param2);
void GF_SndSetMonoFlag(u32 param0);
void FUN_02004D74(s32 param0);
void FUN_02004D84(u32 param0);
-u16 FUN_02004D94();
-u8 *FUN_02004DB4();
+u16 FUN_02004D94(void);
+u8 *FUN_02004DB4(void);
void FUN_02004DBC(u8 param0);
u32 FUN_02004DCC(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5);
u32 FUN_02004E08(
@@ -110,7 +111,7 @@ void FUN_02004F70(struct UnkStruct_020040F4_2 *param0, u8 *param1, int param2, s
void FUN_02005068(s16 *param0, s16 *param1, u32 param2, u32 param3, void *param4);
void FUN_02005160(u32 param0);
void FUN_0200516C(u32 param0);
-void FUN_020051AC();
+void FUN_020051AC(void);
void GF_SndPlayerSetPlayerVolume(u32 param0, u8 param1);
#endif // POKEDIAMOND_UNK_020040F4_H
diff --git a/include/unk_02008AA4.h b/include/unk_02008AA4.h
new file mode 100644
index 00000000..00343884
--- /dev/null
+++ b/include/unk_02008AA4.h
@@ -0,0 +1,55 @@
+#ifndef POKEDIAMOND_UNK_02008AA4_H
+#define POKEDIAMOND_UNK_02008AA4_H
+
+#include "global.h"
+#include "unk_0200BB14.h"
+
+struct UnkStruct_02008AA4_1
+{
+ struct UnkStruct_0200BB14_sub *unk00;
+ s32 unk04;
+};
+
+struct UnkStruct_02008AA4_2
+{
+ s32 unk00;
+ s32 unk04;
+ s32 unk08;
+ s32 unk0C;
+ s32 unk10;
+ s32 unk14;
+ u32 unk18;
+ u32 unk1C;
+};
+
+void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ s32 param4,
+ s32 param5,
+ s32 param6,
+ u32 param7,
+ u32 param8,
+ struct UnkStruct_02008DEC_1 *param9,
+ struct UnkStruct_02008DEC_1 *param10,
+ struct UnkStruct_02008DEC_1 *param11,
+ struct UnkStruct_02008DEC_1 *param12,
+ struct UnkStruct_02008DEC_1 *param13,
+ struct UnkStruct_02008DEC_1 *param14);
+struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0,
+ u32 param1,
+ struct UnkStruct_02008DEC_1 *param2,
+ struct UnkStruct_02008DEC_1 *param3,
+ struct UnkStruct_02008DEC_1 *param4,
+ struct UnkStruct_02008DEC_1 *param5,
+ struct UnkStruct_02008DEC_1 *param6,
+ struct UnkStruct_02008DEC_1 *param7);
+void FUN_02008C80(struct UnkStruct_02008AA4_1 *param0);
+u32 FUN_02008C9C(u32 param0, void *param1, u32 param2);
+void FUN_02008D04(u32 param0, u32 param1, u32 param2);
+void FUN_02008D24(u32 param0, u32 param1, u32 param2);
+void FUN_02008D44(u32 param0, u32 param1);
+void FUN_02008DDC(u32 param0);
+
+#endif // POKEDIAMOND_UNK_02008AA4_H
diff --git a/include/unk_02008DEC.h b/include/unk_02008DEC.h
new file mode 100644
index 00000000..6504b524
--- /dev/null
+++ b/include/unk_02008DEC.h
@@ -0,0 +1,285 @@
+#ifndef POKEDIAMOND_UNK_02008DEC_H
+#define POKEDIAMOND_UNK_02008DEC_H
+
+#include "global.h"
+#include "NNS_g2d.h"
+#include "filesystem.h"
+
+struct UnkStruct_02008DEC_sub
+{
+ u32 unk00;
+ u32 unk04;
+ void *unk08;
+};
+
+struct UnkStruct_02008DEC_1
+{
+
+ u32 unk00;
+ struct UnkStruct_02008DEC_sub *unk04;
+ s32 unk08;
+ u32 unk0C;
+ s32 unk10;
+};
+
+struct UnkStruct_02008DEC_2
+{
+ union
+ {
+ struct UnkStruct_02008DEC_3 *unk00_3;
+ struct UnkStruct_02008DEC_4 *unk00_4;
+ };
+ s32 unk04;
+ u32 unk08;
+ u8 unk0C;
+};
+
+struct UnkStruct_02008DEC_3
+{
+ s32 unk00;
+ u8 unk04[0x40];
+ u32 unk44;
+ u32 unk48;
+};
+
+struct UnkStruct_02008DEC_4
+{
+ NarcId unk00;
+ s32 unk04;
+ BOOL unk08;
+ s32 unk0C;
+ u32 unk10;
+ u32 unk14;
+};
+
+struct UnkStruct_02008DEC_5
+{
+ struct UnkStruct_02008DEC_sub **unk00;
+ s32 unk04;
+ s32 unk08;
+};
+
+struct CharacterData_02008DEC
+{
+ NNSG2dCharacterData *chData;
+ u32 unk04;
+};
+
+struct PaletteData_02008DEC
+{
+ NNSG2dPaletteData *plttData;
+ u32 unk04;
+ u32 unk08;
+};
+
+struct CellDataBank_02008DEC
+{
+ NNSG2dCellDataBank *cellBank;
+};
+
+struct AnimBank_02008DEC
+{
+ NNSG2dAnimBankData *bankData;
+};
+
+struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 param2);
+void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0);
+struct UnkStruct_02008DEC_sub *FUN_02008E6C(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_2 *param1,
+ s32 param2,
+ u32 param3);
+struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6);
+struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ BOOL param7);
+struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7);
+struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ BOOL param8);
+struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6);
+void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ u32 param5);
+void FUN_02009168(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ u32 param5);
+struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6);
+struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7);
+struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7);
+struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8);
+struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6);
+s32 FUN_020093A8(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_2 *param1,
+ struct UnkStruct_02008DEC_5 *param2,
+ u32 param3);
+void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_2 *param1,
+ s32 param2,
+ s32 param3,
+ struct UnkStruct_02008DEC_5 *param4,
+ u32 param5);
+struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1);
+void FUN_02009448(struct UnkStruct_02008DEC_5 *param0);
+u32 FUN_0200945C(struct UnkStruct_02008DEC_1 *param0, s32 param1);
+void FUN_02009474(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1);
+void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0);
+struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1);
+s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_02009544(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_0200955C(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_02009574(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_0200958C(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_020095A4(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_020095BC(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1);
+u32 FUN_0200965C(void);
+struct UnkStruct_02008DEC_2 *FUN_02009660(struct UnkStruct_02008DEC_2 *param0, s32 param1);
+void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u32 param2);
+void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0);
+s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0);
+s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1);
+s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1);
+BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1);
+u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1);
+u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1);
+struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0);
+void FUN_020097FC(
+ struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4);
+struct CharacterData_02008DEC *FUN_0200986C(void *param0, u32 param1, u32 param2);
+struct PaletteData_02008DEC *FUN_0200988C(void *param0, u32 param1, u32 param2, u32 param3);
+struct CellDataBank_02008DEC *FUN_020098B0(void *param0, u32 param1);
+struct AnimBank_02008DEC *FUN_020098CC(void *param0, u32 param1);
+void *FUN_020098E8(void *param0, u32 param1);
+void *FUN_02009904(void *param0, u32 param1);
+void FUN_02009920(struct UnkStruct_02008DEC_sub *param0);
+u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0);
+void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ void *param2,
+ s32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7);
+void FUN_02009978(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ s32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ BOOL param10);
+void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NARC *param2,
+ u32 param3,
+ u32 param4,
+ s32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10);
+s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0);
+void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, u32 param4);
+u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0);
+u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0);
+u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1);
+void FUN_02009BE8(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0);
+u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0);
+u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1);
+void FUN_02009CDC(u32 param0);
+u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0);
+u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0);
+void FUN_02009DE0(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0);
+void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0);
+u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1);
+s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1);
+
+#endif // POKEDIAMOND_UNK_02008DEC_H
diff --git a/include/unk_0200BB14.h b/include/unk_0200BB14.h
index a252fd93..7d5a0083 100644
--- a/include/unk_0200BB14.h
+++ b/include/unk_0200BB14.h
@@ -2,6 +2,7 @@
#define POKEDIAMOND_UNK_0200BB14_H
#include "global.h"
+#include "unk_02008DEC.h"
struct UnkStruct_0200BB14_1
{
@@ -15,11 +16,11 @@ struct UnkStruct_0200BB14_1
struct UnkStruct_0200BB14_2
{
u32 unk00;
- u32 unk04;
- u32 *unk08;
- u32 unk0c[6];
- u32 *unk24[6];
- u32 unk3c[6];
+ struct UnkStruct_02008AA4_1 *unk04;
+ struct UnkStruct_02008DEC_2 *unk08;
+ struct UnkStruct_02008DEC_1 *unk0c[6];
+ struct UnkStruct_02008DEC_5 *unk24[6];
+ s32 unk3c[6];
s32 unk54;
};
@@ -41,7 +42,16 @@ struct UnkStruct_0200BB14_3
struct UnkStruct_0200BB14_sub
{
- u8 unk00[0x24];
+ u32 unk00;
+ u32 unk04;
+ u32 unk08;
+ u32 unk0C;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1C;
+ u8 unk20;
+ u8 unk21[0x3];
};
struct UnkStruct_0200BB14_4
@@ -108,19 +118,19 @@ u32 FUN_0200BE74(u32 *param0,
u32 param12,
u32 param13);
BOOL FUN_0200BF60(
- struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2);
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, s32 *param2);
BOOL FUN_0200C00C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6);
s32 FUN_0200C06C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
u32 param6,
s32 param7);
@@ -128,45 +138,45 @@ u8 FUN_0200C0DC(u32 param0,
u32 param1,
u32 *param2,
struct UnkStruct_0200BB14_2 *param3,
- u32 param4,
- u32 param5,
- u32 param6,
+ NarcId param4,
+ s32 param5,
+ BOOL param6,
u32 param7,
u32 param8,
s32 param9);
-u32 FUN_0200C124(u32 *param0,
+BOOL FUN_0200C124(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
s32 param5);
-u32 FUN_0200C13C(u32 *param0,
+BOOL FUN_0200C13C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
s32 param5);
struct UnkStruct_0200BB14_5 *FUN_0200C154(
struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2);
-u32 FUN_0200C334(u32 *param0, u32 param1);
-u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2);
-u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1);
-u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1);
-u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1);
-u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1);
+s32 FUN_0200C344(struct UnkStruct_02008DEC_1 **param0, s32 param1, u32 param2);
+BOOL FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+BOOL FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+BOOL FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+BOOL FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1);
void FUN_0200C398(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1);
void FUN_0200C3DC(u32 *param0);
BOOL FUN_0200C404(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6);
-BOOL FUN_0200C474(u32 *param0, u32 param1);
-BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2);
-BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2);
-BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2);
+BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1);
+BOOL FUN_0200C4A8(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2);
+BOOL FUN_0200C4F4(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2);
+BOOL FUN_0200C548(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2);
void FUN_0200C59C(u32 param0);
void FUN_0200C5A8(u32 *param0);
void FUN_0200C5B4(u32 *param0, u32 param1);
@@ -204,8 +214,8 @@ void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3);
void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3);
void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2);
void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2);
-void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3);
-void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3);
+void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, s32 param3);
+void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, s32 param3);
void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2);
void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2);
void FUN_0200C838(u32 param0, u32 param1);
@@ -224,20 +234,22 @@ void FUN_0200C904(u32 param0, u32 param1);
void FUN_0200C90C(u32 *param0, u32 param1);
BOOL FUN_0200C918(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6);
BOOL FUN_0200C978(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6);
-void FUN_0200C9D8(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5);
-void FUN_0200CA0C(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5);
+void FUN_0200C9D8(
+ u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5);
+void FUN_0200CA0C(
+ u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5);
u32 FUN_0200CA40(u32 *param0);
#endif // POKEDIAMOND_UNK_0200BB14_H
diff --git a/include/unk_02021590.h b/include/unk_02021590.h
new file mode 100644
index 00000000..6ed73bb8
--- /dev/null
+++ b/include/unk_02021590.h
@@ -0,0 +1,52 @@
+#ifndef POKEDIAMOND_UNK_02021590_H
+#define POKEDIAMOND_UNK_02021590_H
+
+#include "filesystem.h"
+#include "font.h"
+
+struct FontGraphicHeader
+{
+ u32 headerSize;
+ u32 widthDataStart;
+ u32 numGlyphs;
+ u8 fixedWidth;
+ u8 fixedHeight;
+ u8 glyphWidth;
+ u8 glyphHeight;
+};
+
+struct FontData
+{
+ u32 glyphAccessMode;
+ void (*uncompGlyphFunc)(struct FontData *, u16, struct UnkStruct_02002C14_sub *);
+ u32 glyphShape;
+ u32 glyphSize;
+ void * narcReadBuf;
+ u8 glyphReadBuf[0x40];
+ NARC * narc;
+ u32 fileId;
+ struct FontGraphicHeader gfxHeader;
+ BOOL isFixedWidthFont;
+ int (*glyphWidthFunc)(struct FontData *, int);
+ u8 * glyphWidths;
+};
+
+struct FontData *FontData_new(NarcId narcId, s32 fileId, u32 unk2, BOOL unk3, u32 heap_id);
+void FontData_delete(struct FontData * ptr);
+void FontData_ModeSwitch(struct FontData * ptr, u32 a1, u32 heap_id);
+void FontData_Init(struct FontData *ptr, NarcId narcId, s32 fileId, BOOL unk, u32 heap_id);
+void FontData_FreeWidthsAndNarc(struct FontData * ptr);
+void InitFontResources(struct FontData * ptr, u32 a1, u32 heap_id);
+void InitFontResources_FromPreloaded(struct FontData * ptr, u32 heap_id);
+void InitFontResources_LazyFromNarc(struct FontData * ptr, u32 heap_id);
+void FreeLoadedFontResources(struct FontData * ptr);
+void FreeLoadedFontResources_FromPreloaded(struct FontData * ptr);
+void FreeLoadedFontResources_LazyFromNarc(struct FontData * ptr);
+void TryLoadGlyph(struct FontData * ptr, u32 param1, struct UnkStruct_02002C14_sub * ptr2);
+void DecompressGlyphTiles_FromPreloaded(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2);
+void DecompressGlyphTiles_LazyFromNarc(struct FontData * ptr, u16 param1, struct UnkStruct_02002C14_sub * param2);
+u32 GetStringWidth(struct FontData * ptr, const u16 * str, u32 letterSpacing);
+int GetGlyphWidth_VariableWidth(struct FontData * ptr, int a1);
+int GetGlyphWidth_FixedWidth(struct FontData * ptr, int a1);
+
+#endif //POKEDIAMOND_UNK_02021590_H
diff --git a/tools/.gitignore b/tools/.gitignore
new file mode 100644
index 00000000..5bae8ad8
--- /dev/null
+++ b/tools/.gitignore
@@ -0,0 +1 @@
+asmdiff
diff --git a/tools/nitrobanner/.gitignore b/tools/nitrobanner/.gitignore
new file mode 100644
index 00000000..e8eff425
--- /dev/null
+++ b/tools/nitrobanner/.gitignore
@@ -0,0 +1 @@
+nitrobanner
diff --git a/tools/nitrobanner/LICENSE b/tools/nitrobanner/LICENSE
new file mode 100644
index 00000000..193cec26
--- /dev/null
+++ b/tools/nitrobanner/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2021 tgsm
+
+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/nitrobanner/Makefile b/tools/nitrobanner/Makefile
new file mode 100644
index 00000000..322525bd
--- /dev/null
+++ b/tools/nitrobanner/Makefile
@@ -0,0 +1,30 @@
+CXXFLAGS := -std=c++17 -O3 -Wall -Wextra -Wpedantic
+
+ifeq ($(OS),Windows_NT)
+LDFLAGS += -lstdc++fs
+else
+UNAME_S := $(shell uname -s)
+ifeq ($(UNAME_S),Darwin)
+LDFLAGS += -lstdc++ -lc++ -lc /usr/local/opt/llvm@8/lib/libc++fs.a
+else
+LDFLAGS += -lstdc++fs
+endif
+endif
+
+OBJS = \
+ banner.o \
+ crc16.o \
+ main.o
+
+.PHONY: all clean
+
+all: nitrobanner
+
+%.o: %.cpp
+ $(CXX) -c -o $@ $< $(CXXFLAGS)
+
+clean:
+ $(RM) nitrobanner nitrobanner.exe *.o
+
+nitrobanner: $(OBJS)
+ $(CXX) -o $@ $^ $(LDFLAGS)
diff --git a/tools/nitrobanner/banner.cpp b/tools/nitrobanner/banner.cpp
new file mode 100644
index 00000000..ef73ccf9
--- /dev/null
+++ b/tools/nitrobanner/banner.cpp
@@ -0,0 +1,276 @@
+#include <cstdio>
+#include <codecvt>
+#include <exception>
+#include <fstream>
+#include <locale>
+#include <string>
+#include "banner.h"
+#include "crc16.h"
+
+template <typename T>
+void SerializeData(std::ofstream& ostream, T data) {
+ for (std::size_t i = 0; i < sizeof(T); i++) {
+ ostream.put(static_cast<u8>((data >> (i * 8)) & 0xFF));
+ }
+}
+
+std::wstring GetTitleAndDeveloperFromSpecCommandArgument(std::wifstream& stream, const std::wstring& command_argument) {
+ std::wstring title_and_developer = command_argument;
+ constexpr int max_lines = 3;
+ int current_line = 1;
+
+ while (true) {
+ wchar_t first_char = stream.get();
+ stream.unget();
+ if (first_char != L' ') {
+ return title_and_developer;
+ }
+
+ if (current_line++ == max_lines) {
+ throw std::runtime_error("Title and developer can not be more than " + std::to_string(max_lines) + " lines");
+ }
+
+ std::wstring line;
+ std::getline(stream, line);
+
+ title_and_developer += '\n';
+ title_and_developer += line.substr(line.find_first_not_of(L' '), line.size());
+ }
+}
+
+SpecFileData ParseSpecFile(const filesystem::path& specfile_path) {
+ std::wifstream stream(specfile_path, std::ios::binary);
+ if (!stream.is_open()) {
+ throw std::runtime_error("could not open specfile " + specfile_path.string() + " for parsing");
+ }
+
+ // convert utf-16 to utf-32
+ stream.imbue(std::locale(stream.getloc(), new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>));
+
+ // first character of the file has to be U+FEFF.
+ if (stream.get() != 0xFEFF) {
+ throw std::runtime_error("specfile must be encoded as UTF-16");
+ }
+
+ SpecFileData specfile_data = {};
+
+ for (std::wstring line; std::getline(stream, line);) {
+ const std::size_t end_of_command_name = line.find(L':');
+ if (end_of_command_name == std::wstring::npos) {
+ continue;
+ }
+
+ const std::size_t beginning_of_command_name = line.find_first_not_of(' ');
+ const std::wstring command_name = line.substr(beginning_of_command_name, end_of_command_name - beginning_of_command_name);
+
+ const std::size_t beginning_of_command_argument = line.find_first_of(L": ") + 2;
+ const std::wstring command_argument = line.substr(beginning_of_command_argument, line.size());
+
+ if (command_name == L"Version") {
+ printf("warning: Version command is currently unsupported, defaulting to version 1\n");
+ specfile_data.version = 1;
+ } else if (command_name == L"ImageFile") {
+ specfile_data.icon_bitmap_filename = command_argument;
+ } else if (command_name == L"PlttFile") {
+ specfile_data.icon_palette_filename = command_argument;
+ } else if (CommandIsForTitleAndDeveloper(command_name)) {
+ const std::wstring& title_and_developer = GetTitleAndDeveloperFromSpecCommandArgument(stream, command_argument);
+
+ if (command_name == L"JP") {
+ for (wchar_t c : title_and_developer) {
+ specfile_data.japanese_title += char16_t(c);
+ }
+ } else if (command_name == L"EN") {
+ for (wchar_t c : title_and_developer) {
+ specfile_data.english_title += char16_t(c);
+ }
+ } else if (command_name == L"FR") {
+ for (wchar_t c : title_and_developer) {
+ specfile_data.french_title += char16_t(c);
+ }
+ } else if (command_name == L"GE") {
+ for (wchar_t c : title_and_developer) {
+ specfile_data.german_title += char16_t(c);
+ }
+ } else if (command_name == L"IT") {
+ for (wchar_t c : title_and_developer) {
+ specfile_data.italian_title += char16_t(c);
+ }
+ } else if (command_name == L"SP") {
+ for (wchar_t c : title_and_developer) {
+ specfile_data.spanish_title += char16_t(c);
+ }
+ }
+ } else {
+ printf("warning: unsupported command '%ls', ignoring...\n", command_name.data());
+ }
+ }
+
+ if (specfile_data.version == 0) {
+ // no banner version provided, assuming version 1
+ specfile_data.version = 1;
+ }
+
+ if (specfile_data.icon_bitmap_filename.empty()) {
+ throw std::runtime_error("missing required ImageFile command (filename of icon bitmap)");
+ }
+
+ if (specfile_data.icon_palette_filename.empty()) {
+ throw std::runtime_error("missing required PlttFile command (filename of icon palette)");
+ }
+
+ if (specfile_data.japanese_title.empty()) {
+ throw std::runtime_error("missing required JP command (Japanese title & developer)");
+ }
+
+ if (specfile_data.english_title.empty()) {
+ throw std::runtime_error("missing required EN command (English title & developer)");
+ }
+
+ if (specfile_data.french_title.empty()) {
+ throw std::runtime_error("missing required FR command (French title & developer)");
+ }
+
+ if (specfile_data.german_title.empty()) {
+ throw std::runtime_error("missing required GE command (German title & developer)");
+ }
+
+ if (specfile_data.italian_title.empty()) {
+ throw std::runtime_error("missing required IT command (Italian title & developer)");
+ }
+
+ if (specfile_data.spanish_title.empty()) {
+ throw std::runtime_error("missing required SP command (Spanish title & developer)");
+ }
+
+ return specfile_data;
+}
+
+IconBitmap GetIconBitmap(const filesystem::path& icon_bitmap_filename) {
+ if (!filesystem::is_regular_file(icon_bitmap_filename)) {
+ throw std::runtime_error("icon bitmap file '" + icon_bitmap_filename.string() + "' does not exist / is not a regular file");
+ }
+
+ if (filesystem::file_size(icon_bitmap_filename) != ICON_BITMAP_SIZE) {
+ throw std::runtime_error("icon bitmap is not 512 bytes");
+ }
+
+ std::ifstream stream(icon_bitmap_filename, std::ios::binary);
+ if (!stream.is_open()) {
+ throw std::runtime_error("could not open icon bitmap file '" + icon_bitmap_filename.string() + "' for reading");
+ }
+
+ IconBitmap bitmap = {};
+ stream.read(reinterpret_cast<char*>(bitmap.data()), ICON_BITMAP_SIZE);
+ return bitmap;
+}
+
+IconPalette GetIconPalette(const filesystem::path& icon_palette_filename) {
+ if (!filesystem::is_regular_file(icon_palette_filename)) {
+ throw std::runtime_error("icon palette file '" + icon_palette_filename.string() + "' does not exist / is not a regular file");
+ }
+
+ if (filesystem::file_size(icon_palette_filename) != ICON_PALETTE_SIZE) {
+ throw std::runtime_error("icon palette is not 32 bytes");
+ }
+
+ std::ifstream stream(icon_palette_filename, std::ios::binary);
+ if (!stream.is_open()) {
+ throw std::runtime_error("could not open icon palette file '" + icon_palette_filename.string() + "' for reading");
+ }
+
+ IconPalette palette = {};
+ stream.read(reinterpret_cast<char*>(palette.data()), ICON_PALETTE_SIZE);
+ return palette;
+}
+
+void OutputBanner(std::ofstream& ostream, const Banner& banner) {
+ SerializeData<u16>(ostream, banner.version);
+ SerializeData<u16>(ostream, banner.crc);
+
+ for ([[maybe_unused]] u16 i : banner.crc_padding) {
+ SerializeData<u16>(ostream, 0);
+ }
+
+ for ([[maybe_unused]] u8 i : banner.padding) {
+ SerializeData<u8>(ostream, 0);
+ }
+
+ for (u8 i : banner.bitmap) {
+ SerializeData<u8>(ostream, i);
+ }
+
+ for (u8 i : banner.palette) {
+ SerializeData<u8>(ostream, i);
+ }
+
+ for (char16_t c : banner.japanese_title) {
+ SerializeData<u16>(ostream, c);
+ }
+
+ for (char16_t c : banner.english_title) {
+ SerializeData<u16>(ostream, c);
+ }
+
+ for (char16_t c : banner.french_title) {
+ SerializeData<u16>(ostream, c);
+ }
+
+ for (char16_t c : banner.german_title) {
+ SerializeData<u16>(ostream, c);
+ }
+
+ for (char16_t c : banner.italian_title) {
+ SerializeData<u16>(ostream, c);
+ }
+
+ for (char16_t c : banner.spanish_title) {
+ SerializeData<u16>(ostream, c);
+ }
+}
+
+bool MakeBanner(const filesystem::path& specfile_path, const filesystem::path& outfile_path) {
+ std::ofstream ostream(outfile_path, std::ios::binary);
+ if (!ostream.is_open()) {
+#ifdef _MSC_VER
+ printf("error: could not open %ls for writing\n", outfile_path.c_str());
+#else
+ printf("error: could not open %s for writing\n", outfile_path.c_str());
+#endif
+ return false;
+ }
+
+ SpecFileData specfile_data = {};
+ try {
+ specfile_data = ParseSpecFile(specfile_path);
+ } catch (std::runtime_error& e) {
+ printf("error: %s\n", e.what());
+ return false;
+ }
+
+ Banner banner = {};
+
+ banner.version = specfile_data.version;
+ banner.bitmap = GetIconBitmap(specfile_data.icon_bitmap_filename);
+ banner.palette = GetIconPalette(specfile_data.icon_palette_filename);
+
+ std::copy(specfile_data.japanese_title.begin(), specfile_data.japanese_title.end(), banner.japanese_title.data());
+ std::copy(specfile_data.english_title.begin(), specfile_data.english_title.end(), banner.english_title.data());
+ std::copy(specfile_data.french_title.begin(), specfile_data.french_title.end(), banner.french_title.data());
+ std::copy(specfile_data.german_title.begin(), specfile_data.german_title.end(), banner.german_title.data());
+ std::copy(specfile_data.italian_title.begin(), specfile_data.italian_title.end(), banner.italian_title.data());
+ std::copy(specfile_data.spanish_title.begin(), specfile_data.spanish_title.end(), banner.spanish_title.data());
+
+ // checksum the banner data, starting from the icon bitmap and ending at the end of the file.
+ banner.crc = CalculateCRC16FromBannerData(banner.bitmap.data());
+
+ // check against diamond's icon crc
+ // if (banner.crc != 0x048B) {
+ // printf("CRC did not match (expected 0x048B, got 0x%04X)\n", banner.crc);
+ // } else {
+ // printf("CRC matched\n");
+ // }
+
+ OutputBanner(ostream, banner);
+ return true;
+}
diff --git a/tools/nitrobanner/banner.h b/tools/nitrobanner/banner.h
new file mode 100644
index 00000000..70684172
--- /dev/null
+++ b/tools/nitrobanner/banner.h
@@ -0,0 +1,61 @@
+#pragma once
+
+#include <array>
+#include <filesystem>
+#include "types.h"
+
+constexpr int TITLE_LENGTH = 0x100 / sizeof(u16); // 128 UTF-16 characters
+constexpr int ICON_BITMAP_SIZE = 0x200; // 512 bytes
+constexpr int ICON_PALETTE_SIZE = 0x20; // 32 bytes
+
+struct SpecFileData {
+ u16 version;
+ std::wstring icon_bitmap_filename;
+ std::wstring icon_palette_filename;
+ std::u16string japanese_title;
+ std::u16string english_title;
+ std::u16string french_title;
+ std::u16string german_title;
+ std::u16string italian_title;
+ std::u16string spanish_title;
+};
+
+using IconBitmap = std::array<u8, ICON_BITMAP_SIZE>;
+using IconPalette = std::array<u8, ICON_PALETTE_SIZE>;
+
+struct Banner {
+ u16 version;
+ u16 crc;
+ const std::array<u16, 3> crc_padding {};
+ const std::array<u8, 0x16> padding {};
+ IconBitmap bitmap {};
+ IconPalette palette {};
+ std::array<u16, TITLE_LENGTH> japanese_title {};
+ std::array<u16, TITLE_LENGTH> english_title {};
+ std::array<u16, TITLE_LENGTH> french_title {};
+ std::array<u16, TITLE_LENGTH> german_title {};
+ std::array<u16, TITLE_LENGTH> italian_title {};
+ std::array<u16, TITLE_LENGTH> spanish_title {};
+};
+static_assert(sizeof(Banner) == 0x840, "Size of banner struct is wrong");
+
+template <typename T>
+void SerializeData(std::ofstream& ostream, T data);
+
+void ProcessSpecFileCommand(SpecFileData& specfile_data, const std::wstring_view& command_name, const std::wstring_view& command_argument);
+SpecFileData ParseSpecFile(const std::filesystem::path& specfile_path);
+
+IconBitmap GetIconBitmap(const std::filesystem::path& icon_bitmap_filename);
+IconPalette GetIconPalette(const std::filesystem::path& icon_palette_filename);
+
+void OutputBanner(std::ofstream& ostream, const Banner& banner);
+bool MakeBanner(const std::filesystem::path& specfile_path, const std::filesystem::path& outfile_path);
+
+inline bool CommandIsForTitleAndDeveloper(const std::wstring& command_name) {
+ return command_name == L"JP" ||
+ command_name == L"EN" ||
+ command_name == L"FR" ||
+ command_name == L"GE" ||
+ command_name == L"IT" ||
+ command_name == L"SP";
+}
diff --git a/tools/nitrobanner/crc16.cpp b/tools/nitrobanner/crc16.cpp
new file mode 100644
index 00000000..bac64b57
--- /dev/null
+++ b/tools/nitrobanner/crc16.cpp
@@ -0,0 +1,22 @@
+#include <array>
+#include "banner.h"
+#include "crc16.h"
+
+u16 CalculateCRC16FromBannerData(const u8* banner_data) {
+ const std::array<u16, 16> crc_table = {
+ 0x0000, 0xCC01, 0xD801, 0x1400,
+ 0xF001, 0x3C00, 0x2800, 0xE401,
+ 0xA001, 0x6C00, 0x7800, 0xB401,
+ 0x5000, 0x9C01, 0x8801, 0x4400,
+ };
+
+ u16 checksum = 0xFFFF;
+
+ const std::size_t data_size = sizeof(Banner) - offsetof(Banner, bitmap);
+ for (std::size_t i = 0; i < data_size; i++) {
+ u16 lookup_index = crc_table[banner_data[i] & 0xF] ^ (checksum >> 4) ^ crc_table[checksum & 0xF];
+ checksum = crc_table[banner_data[i] >> 4] ^ (lookup_index >> 4) ^ crc_table[lookup_index & 0xF];
+ }
+
+ return checksum;
+}
diff --git a/tools/nitrobanner/crc16.h b/tools/nitrobanner/crc16.h
new file mode 100644
index 00000000..29811cf9
--- /dev/null
+++ b/tools/nitrobanner/crc16.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "types.h"
+
+u16 CalculateCRC16FromBannerData(const u8* banner_data);
diff --git a/tools/nitrobanner/main.cpp b/tools/nitrobanner/main.cpp
new file mode 100644
index 00000000..031d9218
--- /dev/null
+++ b/tools/nitrobanner/main.cpp
@@ -0,0 +1,45 @@
+#include <cstdio>
+#include <cstring>
+#include "banner.h"
+#include "types.h"
+
+#ifdef _MSC_VER
+#define strcasecmp _stricmp
+#endif
+
+int main(int argc, char* argv[]) {
+ if (argc != 2 && argc != 3) {
+ printf("usage: %s <specfile> [outfile]\n", argv[0]);
+ return 1;
+ }
+
+ const filesystem::path specfile_path = argv[1];
+ if (!filesystem::is_regular_file(specfile_path)) {
+ printf("error: provided specfile does not exist / is not a regular file. (did you put the right path?)\n");
+ return 1;
+ }
+
+ if (specfile_path.extension() == ".bnr") {
+ printf("error: can't use a bnr file as a specfile\n");
+ return 1;
+ }
+
+ // If the user doesn't provide a path to an outfile, or if the provided outfile is
+ // identical to the provided specfile, use the specfile's name + the .bnr extension.
+ filesystem::path outfile_path;
+ if (argc == 2 || strcasecmp(argv[1], argv[2]) == 0) {
+ outfile_path = specfile_path.stem().string() + ".bnr";
+ } else {
+ outfile_path = argv[2];
+ }
+
+ // printf("debug: specfile: %s\n", specfile_path.c_str());
+ // printf("debug: outfile: %s\n", outfile_path.c_str());
+
+ if (!MakeBanner(specfile_path, outfile_path)) {
+ printf("error: failed to create banner file\n");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/tools/nitrobanner/types.h b/tools/nitrobanner/types.h
new file mode 100644
index 00000000..5776e62f
--- /dev/null
+++ b/tools/nitrobanner/types.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <cstdint>
+
+#if (__GNUC__ <= 7) && !defined _MSC_VER
+#include <experimental/filesystem>
+namespace filesystem = std::experimental::filesystem;
+#else
+#include <filesystem>
+namespace filesystem = std::filesystem;
+#endif
+
+using u8 = uint8_t;
+using u16 = uint16_t;
+using u32 = uint32_t;