diff options
109 files changed, 97130 insertions, 1160 deletions
diff --git a/arm9/Makefile b/arm9/Makefile index f792c5bf..b53a5d3c 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -265,8 +265,10 @@ $(CXX_OBJS): $(BUILD_DIR)/%.o: %.cpp $$(dep) $(S_OBJS): $(BUILD_DIR)/%.o: %.s $$(dep) $(AS) $(ASFLAGS) -o $@ $< -$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros.lcf.inc - # $(MAKELSF) $(MAKELSF_FLAGS) $< $(LD_TEMPLATE) $@ +# $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SPEC) $(LD_TEMPLATE) + # $(MAKELSF) $(MAKELSF_FLAGS) $^ $@ + +$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $< $(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES) diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 57e6e64f..fd2d2cd9 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -1,4 +1,7 @@ -#include "macros.lcf.inc" +/* + * Linker command file for Metrowerks ARM Linker 2.0 + * TODO: Split .rodata, .data, .sbss, .bss sections in source + */ MEMORY { arm9 (RWX) : ORIGIN=0x02000000, LENGTH=0 > arm9.sbin @@ -110,7 +113,6 @@ MEMORY { } SECTIONS { -#include "undefined_syms.txt" .arm9 : { ALIGNALL(4); . = ALIGN(32); SDK_STATIC_START = .; @@ -2940,7 +2942,17 @@ SECTIONS { SDK_OVERLAY_MODULE_76_ID = 76; SDK_OVERLAY.MODULE_76.ID = 76; SDK_OVERLAY.MODULE_76.START = .; - FILE_2D5C00.o (.text) /* 0x2D1C00 */ + module_76.o (.text) + module_76.o (.rodata) + module_76.o (.init) + SDK_OVERLAY.MODULE_76.SINIT_START = .; + module_76.o (.ctor) + module_76.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_76.SINIT_END = .; + . = ALIGN(32); + module_76.o (.sdata) + module_76.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_76.END = .; SDK_OVERLAY.MODULE_76.SIZE = SDK_OVERLAY.MODULE_76.END - SDK_OVERLAY.MODULE_76.START; @@ -2950,7 +2962,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_76.BSS_START = .; - FILE_2D5C00.o (.bss) + module_76.o (.bss) + module_76.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_76.BSS_END = .; SDK_OVERLAY.MODULE_76.BSS_SIZE = SDK_OVERLAY.MODULE_76.BSS_END - SDK_OVERLAY.MODULE_76.BSS_START; @@ -2961,7 +2974,17 @@ SECTIONS { SDK_OVERLAY_MODULE_77_ID = 77; SDK_OVERLAY.MODULE_77.ID = 77; SDK_OVERLAY.MODULE_77.START = .; - FILE_2D7C00.o (.text) /* 0x2D3C00 */ + module_77.o (.text) + module_77.o (.rodata) + module_77.o (.init) + SDK_OVERLAY.MODULE_77.SINIT_START = .; + module_77.o (.ctor) + module_77.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_77.SINIT_END = .; + . = ALIGN(32); + module_77.o (.sdata) + module_77.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_77.END = .; SDK_OVERLAY.MODULE_77.SIZE = SDK_OVERLAY.MODULE_77.END - SDK_OVERLAY.MODULE_77.START; @@ -2971,7 +2994,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_77.BSS_START = .; - FILE_2D7C00.o (.bss) + module_77.o (.bss) + module_77.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_77.BSS_END = .; SDK_OVERLAY.MODULE_77.BSS_SIZE = SDK_OVERLAY.MODULE_77.BSS_END - SDK_OVERLAY.MODULE_77.BSS_START; @@ -2982,7 +3006,17 @@ SECTIONS { SDK_OVERLAY_MODULE_78_ID = 78; SDK_OVERLAY.MODULE_78.ID = 78; SDK_OVERLAY.MODULE_78.START = .; - FILE_2D9800.o (.text) /* 0x2D5800 */ + module_78.o (.text) + module_78.o (.rodata) + module_78.o (.init) + SDK_OVERLAY.MODULE_78.SINIT_START = .; + module_78.o (.ctor) + module_78.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_78.SINIT_END = .; + . = ALIGN(32); + module_78.o (.sdata) + module_78.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_78.END = .; SDK_OVERLAY.MODULE_78.SIZE = SDK_OVERLAY.MODULE_78.END - SDK_OVERLAY.MODULE_78.START; @@ -2992,7 +3026,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_78.BSS_START = .; - FILE_2D9800.o (.bss) + module_78.o (.bss) + module_78.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_78.BSS_END = .; SDK_OVERLAY.MODULE_78.BSS_SIZE = SDK_OVERLAY.MODULE_78.BSS_END - SDK_OVERLAY.MODULE_78.BSS_START; @@ -3003,7 +3038,24 @@ SECTIONS { SDK_OVERLAY_MODULE_79_ID = 79; SDK_OVERLAY.MODULE_79.ID = 79; SDK_OVERLAY.MODULE_79.START = .; - FILE_2D9E00.o (.text) /* 0x2D5E00 */ + module_79_thumb.o (.text) + module_79_arm.o (.text) + module_79_thumb.o (.rodata) + module_79_arm.o (.rodata) + module_79_thumb.o (.init) + module_79_arm.o (.init) + SDK_OVERLAY.MODULE_79.SINIT_START = .; + module_79_thumb.o (.ctor) + module_79_arm.o (.ctor) + module_79_thumb.o (.sinit) + module_79_arm.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_79.SINIT_END = .; + . = ALIGN(32); + module_79_thumb.o (.sdata) + module_79_arm.o (.sdata) + module_79_thumb.o (.data) + module_79_arm.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_79.END = .; SDK_OVERLAY.MODULE_79.SIZE = SDK_OVERLAY.MODULE_79.END - SDK_OVERLAY.MODULE_79.START; @@ -3013,7 +3065,10 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_79.BSS_START = .; - FILE_2D9E00.o (.bss) + module_79_thumb.o (.bss) + module_79_arm.o (.bss) + module_79_thumb.o (.sbss) + module_79_arm.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_79.BSS_END = .; SDK_OVERLAY.MODULE_79.BSS_SIZE = SDK_OVERLAY.MODULE_79.BSS_END - SDK_OVERLAY.MODULE_79.BSS_START; @@ -3024,7 +3079,17 @@ SECTIONS { SDK_OVERLAY_MODULE_80_ID = 80; SDK_OVERLAY.MODULE_80.ID = 80; SDK_OVERLAY.MODULE_80.START = .; - FILE_2DF200.o (.text) /* 0x2DB200 */ + module_80.o (.text) + module_80.o (.rodata) + module_80.o (.init) + SDK_OVERLAY.MODULE_80.SINIT_START = .; + module_80.o (.ctor) + module_80.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_80.SINIT_END = .; + . = ALIGN(32); + module_80.o (.sdata) + module_80.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_80.END = .; SDK_OVERLAY.MODULE_80.SIZE = SDK_OVERLAY.MODULE_80.END - SDK_OVERLAY.MODULE_80.START; @@ -3034,7 +3099,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_80.BSS_START = .; - FILE_2DF200.o (.bss) + module_80.o (.bss) + module_80.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_80.BSS_END = .; SDK_OVERLAY.MODULE_80.BSS_SIZE = SDK_OVERLAY.MODULE_80.BSS_END - SDK_OVERLAY.MODULE_80.BSS_START; @@ -3045,7 +3111,17 @@ SECTIONS { SDK_OVERLAY_MODULE_81_ID = 81; SDK_OVERLAY.MODULE_81.ID = 81; SDK_OVERLAY.MODULE_81.START = .; - FILE_2E9A00.o (.text) /* 0x2E5A00 */ + module_81.o (.text) + module_81.o (.rodata) + module_81.o (.init) + SDK_OVERLAY.MODULE_81.SINIT_START = .; + module_81.o (.ctor) + module_81.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_81.SINIT_END = .; + . = ALIGN(32); + module_81.o (.sdata) + module_81.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_81.END = .; SDK_OVERLAY.MODULE_81.SIZE = SDK_OVERLAY.MODULE_81.END - SDK_OVERLAY.MODULE_81.START; @@ -3055,7 +3131,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_81.BSS_START = .; - FILE_2E9A00.o (.bss) + module_81.o (.bss) + module_81.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_81.BSS_END = .; SDK_OVERLAY.MODULE_81.BSS_SIZE = SDK_OVERLAY.MODULE_81.BSS_END - SDK_OVERLAY.MODULE_81.BSS_START; @@ -3066,7 +3143,17 @@ SECTIONS { SDK_OVERLAY_MODULE_82_ID = 82; SDK_OVERLAY.MODULE_82.ID = 82; SDK_OVERLAY.MODULE_82.START = .; - FILE_2EF000.o (.text) /* 0x2EB000 */ + module_82.o (.text) + module_82.o (.rodata) + module_82.o (.init) + SDK_OVERLAY.MODULE_82.SINIT_START = .; + module_82.o (.ctor) + module_82.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_82.SINIT_END = .; + . = ALIGN(32); + module_82.o (.sdata) + module_82.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_82.END = .; SDK_OVERLAY.MODULE_82.SIZE = SDK_OVERLAY.MODULE_82.END - SDK_OVERLAY.MODULE_82.START; @@ -3076,7 +3163,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_82.BSS_START = .; - FILE_2EF000.o (.bss) + module_82.o (.bss) + module_82.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_82.BSS_END = .; SDK_OVERLAY.MODULE_82.BSS_SIZE = SDK_OVERLAY.MODULE_82.BSS_END - SDK_OVERLAY.MODULE_82.BSS_START; @@ -3087,7 +3175,17 @@ SECTIONS { SDK_OVERLAY_MODULE_83_ID = 83; SDK_OVERLAY.MODULE_83.ID = 83; SDK_OVERLAY.MODULE_83.START = .; - FILE_2F1600.o (.text) /* 0x2ED600 */ + module_83.o (.text) + module_83.o (.rodata) + module_83.o (.init) + SDK_OVERLAY.MODULE_83.SINIT_START = .; + module_83.o (.ctor) + module_83.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_83.SINIT_END = .; + . = ALIGN(32); + module_83.o (.sdata) + module_83.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_83.END = .; SDK_OVERLAY.MODULE_83.SIZE = SDK_OVERLAY.MODULE_83.END - SDK_OVERLAY.MODULE_83.START; @@ -3097,7 +3195,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_83.BSS_START = .; - FILE_2F1600.o (.bss) + module_83.o (.bss) + module_83.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_83.BSS_END = .; SDK_OVERLAY.MODULE_83.BSS_SIZE = SDK_OVERLAY.MODULE_83.BSS_END - SDK_OVERLAY.MODULE_83.BSS_START; @@ -3108,7 +3207,17 @@ SECTIONS { SDK_OVERLAY_MODULE_84_ID = 84; SDK_OVERLAY.MODULE_84.ID = 84; SDK_OVERLAY.MODULE_84.START = .; - FILE_2FFA00.o (.text) /* 0x2FBA00 */ + module_84.o (.text) + module_84.o (.rodata) + module_84.o (.init) + SDK_OVERLAY.MODULE_84.SINIT_START = .; + module_84.o (.ctor) + module_84.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_84.SINIT_END = .; + . = ALIGN(32); + module_84.o (.sdata) + module_84.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_84.END = .; SDK_OVERLAY.MODULE_84.SIZE = SDK_OVERLAY.MODULE_84.END - SDK_OVERLAY.MODULE_84.START; @@ -3118,7 +3227,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_84.BSS_START = .; - FILE_2FFA00.o (.bss) + module_84.o (.bss) + module_84.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_84.BSS_END = .; SDK_OVERLAY.MODULE_84.BSS_SIZE = SDK_OVERLAY.MODULE_84.BSS_END - SDK_OVERLAY.MODULE_84.BSS_START; @@ -3129,7 +3239,17 @@ SECTIONS { SDK_OVERLAY_MODULE_85_ID = 85; SDK_OVERLAY.MODULE_85.ID = 85; SDK_OVERLAY.MODULE_85.START = .; - FILE_303400.o (.text) /* 0x2FF400 */ + module_85.o (.text) + module_85.o (.rodata) + module_85.o (.init) + SDK_OVERLAY.MODULE_85.SINIT_START = .; + module_85.o (.ctor) + module_85.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_85.SINIT_END = .; + . = ALIGN(32); + module_85.o (.sdata) + module_85.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_85.END = .; SDK_OVERLAY.MODULE_85.SIZE = SDK_OVERLAY.MODULE_85.END - SDK_OVERLAY.MODULE_85.START; @@ -3139,7 +3259,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_85.BSS_START = .; - FILE_303400.o (.bss) + module_85.o (.bss) + module_85.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_85.BSS_END = .; SDK_OVERLAY.MODULE_85.BSS_SIZE = SDK_OVERLAY.MODULE_85.BSS_END - SDK_OVERLAY.MODULE_85.BSS_START; @@ -3150,7 +3271,17 @@ SECTIONS { SDK_OVERLAY_MODULE_86_ID = 86; SDK_OVERLAY.MODULE_86.ID = 86; SDK_OVERLAY.MODULE_86.START = .; - FILE_30C600.o (.text) /* 0x308600 */ + module_86.o (.text) + module_86.o (.rodata) + module_86.o (.init) + SDK_OVERLAY.MODULE_86.SINIT_START = .; + module_86.o (.ctor) + module_86.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_86.SINIT_END = .; + . = ALIGN(32); + module_86.o (.sdata) + module_86.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_86.END = .; SDK_OVERLAY.MODULE_86.SIZE = SDK_OVERLAY.MODULE_86.END - SDK_OVERLAY.MODULE_86.START; @@ -3160,7 +3291,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_86.BSS_START = .; - FILE_30C600.o (.bss) + module_86.o (.bss) + module_86.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_86.BSS_END = .; SDK_OVERLAY.MODULE_86.BSS_SIZE = SDK_OVERLAY.MODULE_86.BSS_END - SDK_OVERLAY.MODULE_86.BSS_START; @@ -3975,17 +4107,105 @@ SECTIONS { WRITEW 75; WRITEW 0; - OVERLAY_TABLE(MODULE_76, 76) - OVERLAY_TABLE(MODULE_77, 77) - OVERLAY_TABLE(MODULE_78, 78) - OVERLAY_TABLE(MODULE_79, 79) - OVERLAY_TABLE(MODULE_80, 80) - OVERLAY_TABLE(MODULE_81, 81) - OVERLAY_TABLE(MODULE_82, 82) - OVERLAY_TABLE(MODULE_83, 83) - OVERLAY_TABLE(MODULE_84, 84) - OVERLAY_TABLE(MODULE_85, 85) - OVERLAY_TABLE(MODULE_86, 86) + WRITEW 76; + WRITEW ADDR(.MODULE_76); + WRITEW SDK_OVERLAY.MODULE_76.SIZE; + WRITEW SDK_OVERLAY.MODULE_76.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_76.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_76.SINIT_END; + WRITEW 76; + WRITEW 0; + + WRITEW 77; + WRITEW ADDR(.MODULE_77); + WRITEW SDK_OVERLAY.MODULE_77.SIZE; + WRITEW SDK_OVERLAY.MODULE_77.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_77.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_77.SINIT_END; + WRITEW 77; + WRITEW 0; + + WRITEW 78; + WRITEW ADDR(.MODULE_78); + WRITEW SDK_OVERLAY.MODULE_78.SIZE; + WRITEW SDK_OVERLAY.MODULE_78.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_78.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_78.SINIT_END; + WRITEW 78; + WRITEW 0; + + WRITEW 79; + WRITEW ADDR(.MODULE_79); + WRITEW SDK_OVERLAY.MODULE_79.SIZE; + WRITEW SDK_OVERLAY.MODULE_79.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_79.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_79.SINIT_END; + WRITEW 79; + WRITEW 0; + + WRITEW 80; + WRITEW ADDR(.MODULE_80); + WRITEW SDK_OVERLAY.MODULE_80.SIZE; + WRITEW SDK_OVERLAY.MODULE_80.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_80.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_80.SINIT_END; + WRITEW 80; + WRITEW 0; + + WRITEW 81; + WRITEW ADDR(.MODULE_81); + WRITEW SDK_OVERLAY.MODULE_81.SIZE; + WRITEW SDK_OVERLAY.MODULE_81.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_81.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_81.SINIT_END; + WRITEW 81; + WRITEW 0; + + WRITEW 82; + WRITEW ADDR(.MODULE_82); + WRITEW SDK_OVERLAY.MODULE_82.SIZE; + WRITEW SDK_OVERLAY.MODULE_82.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_82.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_82.SINIT_END; + WRITEW 82; + WRITEW 0; + + WRITEW 83; + WRITEW ADDR(.MODULE_83); + WRITEW SDK_OVERLAY.MODULE_83.SIZE; + WRITEW SDK_OVERLAY.MODULE_83.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_83.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_83.SINIT_END; + WRITEW 83; + WRITEW 0; + + WRITEW 84; + WRITEW ADDR(.MODULE_84); + WRITEW SDK_OVERLAY.MODULE_84.SIZE; + WRITEW SDK_OVERLAY.MODULE_84.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_84.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_84.SINIT_END; + WRITEW 84; + WRITEW 0; + + WRITEW 85; + WRITEW ADDR(.MODULE_85); + WRITEW SDK_OVERLAY.MODULE_85.SIZE; + WRITEW SDK_OVERLAY.MODULE_85.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_85.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_85.SINIT_END; + WRITEW 85; + WRITEW 0; + + WRITEW 86; + WRITEW ADDR(.MODULE_86); + WRITEW SDK_OVERLAY.MODULE_86.SIZE; + WRITEW SDK_OVERLAY.MODULE_86.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_86.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_86.SINIT_END; + WRITEW 86; + WRITEW 0; + } > arm9_table SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index a0f6e04f..49e17956 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -2,110 +2,112 @@ Static arm9 { Address 0x02000000 - Object main.o - Object FUN_02000DF4.o - Object unk_02000E0C.o - Object rom2.o - Object string_util.o - Object unk_020023C0.o - Object filesystem.o - Object unk_02006864.o - Object script.o - Object unk_02038C78.o - Object scrcmd.o - Object unk_02046030.o - Object unk_0208AC14.o - Object FUN_020910A4.o - Object unk_020910EC.o - Object unk_020AF030.o - Object FX_mtx22.o - Object FX_mtx33.o - Object FX_mtx43.o - Object FX_mtx44.o - Object FX_cp.o - Object FX_vec.o - Object FX_atan.o - Object FX.o - Object GX.o - Object GX_state.o - Object GX_vramcnt.o - Object GX_bgcnt.o - Object GX_g2.o - Object GX_g3b.o - Object GX_g3imm.o - Object GX_g3x.o - Object GX_g3_util.o - Object GX_load2d.o - Object GX_load3d.o - Object GX_g3.o - Object GX_asm.o - Object OS_irqHandler.o - Object OS_irqTable.o - Object OS_interrupt.o - Object OS_spinLock.o - Object OS_printf.o - Object OS_thread.o - Object OS_context.o - Object OS_emulator.o - Object OS_message.o - Object OS_mutex.o - Object OS_cache.o - Object OS_init.o - Object OS_arena.o - Object OS_alloc.o - Object OS_tcm.o - Object OS_protectionUnit.o - Object OS_protectionRegion.o - Object OS_exception.o - Object OS_timer.o - Object OS_tick.o - Object OS_alarm.o - Object OS_valarm.o - Object OS_system.o - Object OS_reset.o - Object OS_ownerInfo.o - Object OS_vramExclusive.o - Object OS_entropy.o - Object OS_terminate_proc.o - Object MI_wram.o - Object MI_dma.o - Object MI_dma_hblank.o - Object MI_dma_gxcommand.o - Object MI_memory.o - Object MI_swap.o - Object MI_uncompress.o - Object MI_dma_card.o - Object MI_init.o - Object SND_interface.o - Object SND_main.o - Object SND_command.o - Object SND_alarm.o - Object SND_work.o - Object SND_util.o - Object SND_bank.o - Object PXI_init.o - Object PXI_fifo.o - Object rom2_2.o - Object FS_command.o - Object FS_command_default.o - Object FS_archive.o - Object FS_file.o - Object FS_rom.o - Object FS_overlay.o - Object libdgt.o - Object libcp.o - Object libspi.o - Object libpm.o - Object librtc.o - Object libcard.o - Object libwm.o - Object libctrdg.o - Object libmath.o - Object libstd.o - Object libc.o - Object rom2_3.o - Object libmwcc.o - Object rom2_4.o + Object main.o + Object FUN_02000DF4.o + Object unk_02000E0C.o + Object rom2.o + Object string_util.o + Object unk_020023C0.o + Object filesystem.o + Object unk_02006864.o + Object script.o + Object unk_02038C78.o + Object scrcmd.o + Object unk_02046030.o + Object unk_0208AC14.o + Object FUN_020910A4.o + Object unk_020910EC.o + Object unk_020AF030.o + Object FX_mtx22.o + Object FX_mtx33.o + Object FX_mtx43.o + Object FX_mtx44.o + Object FX_cp.o + Object FX_vec.o + Object FX_atan.o + Object FX.o + Object GX.o + Object GX_state.o + Object GX_vramcnt.o + Object GX_bgcnt.o + Object GX_g2.o + Object GX_g3b.o + Object GX_g3imm.o + Object GX_g3x.o + Object GX_g3_util.o + Object GX_load2d.o + Object GX_load3d.o + Object GX_g3.o + Object GX_asm.o + Object OS_irqHandler.o + Object OS_irqTable.o + Object OS_interrupt.o + Object OS_spinLock.o + Object OS_printf.o + Object OS_thread.o + Object OS_context.o + Object OS_emulator.o + Object OS_message.o + Object OS_mutex.o + Object OS_cache.o + Object OS_init.o + Object OS_arena.o + Object OS_alloc.o + Object OS_tcm.o + Object OS_protectionUnit.o + Object OS_protectionRegion.o + Object OS_exception.o + Object OS_timer.o + Object OS_tick.o + Object OS_alarm.o + Object OS_valarm.o + Object OS_system.o + Object OS_reset.o + Object OS_ownerInfo.o + Object OS_vramExclusive.o + Object OS_entropy.o + Object OS_terminate_proc.o + Object MI_wram.o + Object MI_dma.o + Object MI_dma_hblank.o + Object MI_dma_gxcommand.o + Object MI_memory.o + Object MI_swap.o + Object MI_uncompress.o + Object MI_dma_card.o + Object MI_init.o + Object SND_interface.o + Object SND_main.o + Object SND_command.o + Object SND_alarm.o + Object SND_work.o + Object SND_util.o + Object SND_bank.o + Object PXI_init.o + Object PXI_fifo.o + Object rom2_2.o + Object FS_command.o + Object FS_command_default.o + Object FS_archive.o + Object FS_file.o + Object FS_rom.o + Object FS_overlay.o + Object DGT_hash1.o + Object DGT_hash2.o + Object DGT_sha1s_arm4cw.o + Object libcp.o + Object libspi.o + Object libpm.o + Object librtc.o + Object libcard.o + Object libwm.o + Object libctrdg.o + Object libmath.o + Object libstd.o + Object libc.o + Object rom2_3.o + Object libmwcc.o + Object rom2_4.o } Autoload ITCM @@ -297,270 +299,270 @@ Overlay MODULE_32 Overlay MODULE_33 { Address 0x02254840 - Object FILE_28DE00.o + Object module_33.o } Overlay MODULE_34 { Address 0x02254840 - Object FILE_28E200.o + Object module_34.o } Overlay MODULE_35 { Address 0x02254840 - Object FILE_28E800.o + Object module_35.o } Overlay MODULE_36 { Address 0x02254840 - Object FILE_28F200.o + Object module_36.o } Overlay MODULE_37 { Address 0x02254840 - Object FILE_290000.o + Object module_37.o } Overlay MODULE_38 { Address 0x02254840 - Object FILE_290600.o + Object module_38.o } Overlay MODULE_39 { Address 0x02254840 - Object FILE_291200.o + Object module_39.o } Overlay MODULE_40 { Address 0x02254840 - Object FILE_292000.o + Object module_40.o } Overlay MODULE_41 { Address 0x02254840 - Object FILE_292E00.o + Object module_41.o } Overlay MODULE_42 { Address 0x02254840 - Object FILE_294000.o + Object module_42.o } Overlay MODULE_43 { Address 0x02254840 - Object FILE_294A00.o + Object module_43.o } Overlay MODULE_44 { Address 0x02254840 - Object FILE_295400.o + Object module_44.o } Overlay MODULE_45 { Address 0x02254840 - Object FILE_295A00.o + Object module_45.o } Overlay MODULE_46 { Address 0x02254840 - Object FILE_296400.o + Object module_46.o } Overlay MODULE_47 { Address 0x02254840 - Object FILE_296800.o + Object module_47.o } Overlay MODULE_48 { Address 0x02254840 - Object FILE_297600.o + Object module_48.o } Overlay MODULE_49 { Address 0x02254840 - Object FILE_298000.o + Object module_49.o } Overlay MODULE_50 { Address 0x02254840 - Object FILE_298600.o + Object module_50.o } Overlay MODULE_51 { Address 0x02254840 - Object FILE_298A00.o + Object module_51.o } Overlay MODULE_52 { Address 0x021D74E0 - Object FILE_299A00.o + Object module_52.o } Overlay MODULE_53 { Address 0x021D74E0 - Object FILE_299E00.o + Object module_53.o } Overlay MODULE_54 { Address 0x021D74E0 - Object FILE_29C400.o + Object module_54.o } Overlay MODULE_55 { Address 0x021D74E0 - Object FILE_29E800.o + Object module_55.o } Overlay MODULE_56 { Address 0x02211E60 - Object FILE_2A1A00.o + Object module_56.o } Overlay MODULE_57 { Address 0x021D74E0 - Object FILE_2A6200.o + Object module_57.o } Overlay MODULE_58 { Address 0x021D9A20 - Object FILE_2A8800.o + Object module_58.o } Overlay MODULE_59 { Address 0x021D74E0 - Object FILE_2A9E00.o + Object module_59.o } Overlay MODULE_60 { Address 0x021D74E0 - Object FILE_2ACC00.o + Object module_60.o } Overlay MODULE_61 { Address 0x021D74E0 - Object FILE_2ADA00.o + Object module_61.o } Overlay MODULE_62 { Address 0x0222D5C0 - Object FILE_2AEC00.o + Object module_62.o } Overlay MODULE_63 { Address 0x021D74E0 - Object FILE_2B2A00.o + Object module_63.o } Overlay MODULE_64 { Address 0x021D74E0 - Object FILE_2B7600.o + Object module_64.o } Overlay MODULE_65 { Address 0x021D74E0 - Object FILE_2B9400.o + Object module_65.o } Overlay MODULE_66 { Address 0x021D74E0 - Object FILE_2BC400.o + Object module_66.o } Overlay MODULE_67 { Address 0x021D74E0 - Object FILE_2BEC00.o + Object module_67.o } Overlay MODULE_68 { Address 0x021D74E0 - Object FILE_2C1200.o + Object module_68.o } Overlay MODULE_69 { Address 0x0222D5C0 - Object FILE_2C2800.o + Object module_69.o } Overlay MODULE_70 { Address 0x021D74E0 - Object FILE_2C4C00.o + Object module_70.o } Overlay MODULE_71 { Address 0x0222D5C0 - Object FILE_2C5C00.o + Object module_71.o } Overlay MODULE_72 { Address 0x021D74E0 - Object FILE_2C9C00.o + Object module_72.o } Overlay MODULE_73 { Address 0x021D74E0 - Object FILE_2C9E00.o + Object module_73.o } Overlay MODULE_74 { Address 0x021D74E0 - Object FILE_2CEA00.o + Object module_74.o } Overlay MODULE_75 { Address 0x021E6BA0 - Object FILE_2CFE00.o + Object module_75.o } Overlay MODULE_76 { Address 0x021D74E0 - Object FILE_2D5C00.o + Object module_76.o } Overlay MODULE_77 { Address 0x021D74E0 - Object FILE_2D7C00.o + Object module_77.o } Overlay MODULE_78 { Address 0x021D74E0 - Object FILE_2D9800.o + Object module_78.o } Overlay MODULE_79 { Address 0x02211E60 - Object FILE_2D9E00.o + Object module_79.o } Overlay MODULE_80 { Address 0x0222D5C0 - Object FILE_2DF200.o + Object module_80.o } Overlay MODULE_81 { Address 0x02237E40 - Object FILE_2E9A00.o + Object module_81.o } Overlay MODULE_82 { Address 0x0222D5C0 - Object FILE_2EF000.o + Object module_82.o } Overlay MODULE_83 { Address 0x0222D5C0 - Object FILE_2F1600.o + Object module_83.o } Overlay MODULE_84 { Address 0x021D74E0 - Object FILE_2FFA00.o + Object module_84.o } Overlay MODULE_85 { Address 0x021D74E0 - Object FILE_303400.o + Object module_85.o } Overlay MODULE_86 { Address 0x021D74E0 - Object FILE_30C600.o + Object module_86.o } diff --git a/arm9/asm/secure.s b/arm9/asm/secure.s index 632f43bc..f97ccac8 100644 --- a/arm9/asm/secure.s +++ b/arm9/asm/secure.s @@ -3,7 +3,14 @@ .section .text -.incbin "baserom.nds", 0x4000, 0x19E +.incbin "baserom.nds", 0x4000, 0xC8 + non_word_aligned_thumb_func_start SVC_GetCRC16 +SVC_GetCRC16: ; 0x020000C8 + swi 14 + bx lr + thumb_func_end SVC_GetCRC16 + +.incbin "baserom.nds", 0x40CC, 0xD2 non_word_aligned_thumb_func_start SVC_Sqrt SVC_Sqrt: ; 0x0200019E diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index 1eda4b12..fb010491 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -127956,21 +127956,21 @@ FUN_02083BAC: ; 0x02083BAC add r0, r4, #0x0
mov r1, #0x1b
mov r2, #0x0
- bl FUN_0222F440
+ bl MOD70_0222F440
b _02083C14
_02083BF6:
bl FUN_02031190
ldr r1, _02083C20 ; =0x00002218
ldr r2, [r4, #0x50]
ldr r1, [r4, r1]
- bl FUN_0222F480
+ bl MOD70_0222F480
b _02083C14
_02083C06:
bl FUN_02031190
ldr r1, _02083C20 ; =0x00002218
ldr r2, [r4, #0x50]
ldr r1, [r4, r1]
- bl FUN_0222F480
+ bl MOD70_0222F480
_02083C14:
ldr r0, [r4, #0x50]
add r0, r0, #0x1
@@ -131937,8 +131937,8 @@ FUN_020859C0: ; 0x020859C0 lsl r2, r2, #0x12
bl FUN_0201681C
mov r0, #0x35
- bl FUN_02230F3C
- bl FUN_0222F7E0
+ bl MOD62_02230F3C
+ bl MOD62_0222F7E0
ldr r1, _02085BA0 ; =0x0000042C
add r0, r5, #0x0
mov r2, #0x35
@@ -131947,7 +131947,7 @@ FUN_020859C0: ; 0x020859C0 mov r1, #0x0
add r4, r0, #0x0
bl Call_FillMemWithValue
- bl FUN_0222E2BC
+ bl MOD62_0222E2BC
mov r1, #0x23
lsl r1, r1, #0x4
str r0, [r4, r1]
@@ -132083,8 +132083,8 @@ _02085A9A: add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
- bl FUN_02230F80
- bl FUN_0222E360
+ bl MOD62_02230F80
+ bl MOD62_0222E360
mov r0, #0x35
bl FUN_02006D98
mov r1, #0x69
@@ -132108,7 +132108,7 @@ _02085A9A: ldr r0, [r0, #0x0]
ldr r1, [r1, #0x0]
add r2, r5, #0x0
- bl FUN_0222ED34
+ bl MOD62_0222ED34
add r0, r4, #0x0
add r1, r4, #0x0
add r0, #0xe4
@@ -132116,20 +132116,20 @@ _02085A9A: ldr r0, [r0, #0x0]
ldr r1, [r1, #0x0]
add r2, r5, #0x0
- bl FUN_0222EDBC
+ bl MOD62_0222EDBC
add r0, r4, #0x0
add r0, #0xd4
- bl FUN_0222E7E8
+ bl MOD62_0222E7E8
bl FUN_0201CC08
mov r0, #0x4
bl FUN_0201CC24
add r0, r4, #0x0
- bl FUN_022300E4
+ bl MOD62_022300E4
ldr r0, _02085BAC ; =0x022310CD
add r1, r4, #0x0
bl FUN_02015F10
add r0, r4, #0x0
- bl FUN_0222DD1C
+ bl MOD62_0222DD1C
mov r1, #0x0
mov r0, #0x3b
add r2, r1, #0x0
@@ -132175,7 +132175,7 @@ _02085BE6: lsl r0, r0, #0x2
ldr r0, [r4, r0]
bl FUN_02006ED4
- bl FUN_0222E3A0
+ bl MOD62_0222E3A0
b _02085C02
_02085BF6:
bl FUN_0200E308
@@ -132292,7 +132292,7 @@ FUN_02085C08: ; 0x02085C08 ldr r0, [r4, r0]
bl FUN_02016A18
add r0, r4, #0x0
- bl FUN_0222DAEC
+ bl MOD62_0222DAEC
mov r0, #0x73
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -132306,17 +132306,17 @@ FUN_02085C08: ; 0x02085C08 ldr r0, [r4, r0]
bl FUN_02014C28
add r0, r4, #0x0
- bl FUN_0222DD38
+ bl MOD62_0222DD38
add r0, r4, #0x0
add r0, #0xd4
- bl FUN_0222E874
+ bl MOD62_0222E874
bl FUN_0201C29C
mov r0, #0x23
lsl r0, r0, #0x4
ldr r0, [r4, r0]
bl FUN_020223BC
mov r0, #0x35
- bl FUN_02230F70
+ bl MOD62_02230F70
add r0, r5, #0x0
bl FUN_0200627C
bl FUN_0201CD04
diff --git a/arm9/files/FILE_10C400.s b/arm9/files/FILE_10C400.s deleted file mode 100644 index 254620ef..00000000 --- a/arm9/files/FILE_10C400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x10C400, 0x20 - diff --git a/arm9/files/FILE_10C600.s b/arm9/files/FILE_10C600.s deleted file mode 100644 index cc95b047..00000000 --- a/arm9/files/FILE_10C600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x10C600, 0x20 - diff --git a/arm9/files/FILE_10C800.s b/arm9/files/FILE_10C800.s deleted file mode 100644 index 74fe3237..00000000 --- a/arm9/files/FILE_10C800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x10C800, 0x20 - diff --git a/arm9/files/FILE_10CA00.s b/arm9/files/FILE_10CA00.s deleted file mode 100644 index ecff1f01..00000000 --- a/arm9/files/FILE_10CA00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x10CA00, 0x20 - diff --git a/arm9/files/FILE_10CC00.s b/arm9/files/FILE_10CC00.s deleted file mode 100644 index b2a71be1..00000000 --- a/arm9/files/FILE_10CC00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x10CC00, 0x386E0 - diff --git a/arm9/files/FILE_145400.s b/arm9/files/FILE_145400.s deleted file mode 100644 index 69b7e8af..00000000 --- a/arm9/files/FILE_145400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x145400, 0x261A0 - diff --git a/arm9/files/FILE_16B600.s b/arm9/files/FILE_16B600.s deleted file mode 100644 index a6fe3459..00000000 --- a/arm9/files/FILE_16B600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x16B600, 0x18D80 - diff --git a/arm9/files/FILE_184400.s b/arm9/files/FILE_184400.s deleted file mode 100644 index ebfbae38..00000000 --- a/arm9/files/FILE_184400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x184400, 0x32E0 - diff --git a/arm9/files/FILE_187800.s b/arm9/files/FILE_187800.s deleted file mode 100644 index dc6a9524..00000000 --- a/arm9/files/FILE_187800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x187800, 0x1B760 - diff --git a/arm9/files/FILE_1A3000.s b/arm9/files/FILE_1A3000.s deleted file mode 100644 index e9931349..00000000 --- a/arm9/files/FILE_1A3000.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x1A3000, 0xA1A0 - diff --git a/arm9/files/FILE_1AD200.s b/arm9/files/FILE_1AD200.s deleted file mode 100644 index ab9aa578..00000000 --- a/arm9/files/FILE_1AD200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x1AD200, 0x20 - diff --git a/arm9/files/FILE_1AD400.s b/arm9/files/FILE_1AD400.s deleted file mode 100644 index f4cbb321..00000000 --- a/arm9/files/FILE_1AD400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x1AD400, 0x329E0 - diff --git a/arm9/files/FILE_1DFE00.s b/arm9/files/FILE_1DFE00.s deleted file mode 100644 index edd9bbad..00000000 --- a/arm9/files/FILE_1DFE00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x1DFE00, 0x19260 - diff --git a/arm9/files/FILE_1F9200.s b/arm9/files/FILE_1F9200.s deleted file mode 100644 index 4cc1228a..00000000 --- a/arm9/files/FILE_1F9200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x1F9200, 0x2EBE0 - diff --git a/arm9/files/FILE_227E00.s b/arm9/files/FILE_227E00.s deleted file mode 100644 index 103ad10a..00000000 --- a/arm9/files/FILE_227E00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x227E00, 0xF520 - diff --git a/arm9/files/FILE_237400.s b/arm9/files/FILE_237400.s deleted file mode 100644 index a912c8e4..00000000 --- a/arm9/files/FILE_237400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x237400, 0x4680 - diff --git a/arm9/files/FILE_23BC00.s b/arm9/files/FILE_23BC00.s deleted file mode 100644 index ee3f7e21..00000000 --- a/arm9/files/FILE_23BC00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x23BC00, 0x28500 - diff --git a/arm9/files/FILE_264200.s b/arm9/files/FILE_264200.s deleted file mode 100644 index d4a20793..00000000 --- a/arm9/files/FILE_264200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x264200, 0x6E80 - diff --git a/arm9/files/FILE_26B200.s b/arm9/files/FILE_26B200.s deleted file mode 100644 index 66491b3a..00000000 --- a/arm9/files/FILE_26B200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x26B200, 0x17CE0 - diff --git a/arm9/files/FILE_283000.s b/arm9/files/FILE_283000.s deleted file mode 100644 index 09f585cf..00000000 --- a/arm9/files/FILE_283000.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x283000, 0x100 - diff --git a/arm9/files/FILE_283200.s b/arm9/files/FILE_283200.s deleted file mode 100644 index 68180b84..00000000 --- a/arm9/files/FILE_283200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x283200, 0x2400 - diff --git a/arm9/files/FILE_285600.s b/arm9/files/FILE_285600.s deleted file mode 100644 index ca6a17ed..00000000 --- a/arm9/files/FILE_285600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x285600, 0x5C0 - diff --git a/arm9/files/FILE_285C00.s b/arm9/files/FILE_285C00.s deleted file mode 100644 index 62f45299..00000000 --- a/arm9/files/FILE_285C00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x285C00, 0xF00 - diff --git a/arm9/files/FILE_286C00.s b/arm9/files/FILE_286C00.s deleted file mode 100644 index 65aaf12c..00000000 --- a/arm9/files/FILE_286C00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x286C00, 0x1900 - diff --git a/arm9/files/FILE_288600.s b/arm9/files/FILE_288600.s deleted file mode 100644 index 57c96796..00000000 --- a/arm9/files/FILE_288600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x288600, 0x9A0 - diff --git a/arm9/files/FILE_289000.s b/arm9/files/FILE_289000.s deleted file mode 100644 index eeffd74a..00000000 --- a/arm9/files/FILE_289000.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x289000, 0x560 - diff --git a/arm9/files/FILE_289600.s b/arm9/files/FILE_289600.s deleted file mode 100644 index 2a60cc62..00000000 --- a/arm9/files/FILE_289600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x289600, 0x800 - diff --git a/arm9/files/FILE_289E00.s b/arm9/files/FILE_289E00.s deleted file mode 100644 index f133baff..00000000 --- a/arm9/files/FILE_289E00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x289E00, 0xBA0 - diff --git a/arm9/files/FILE_28AA00.s b/arm9/files/FILE_28AA00.s deleted file mode 100644 index 4fa54cf0..00000000 --- a/arm9/files/FILE_28AA00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28AA00, 0x1780 - diff --git a/arm9/files/FILE_28C200.s b/arm9/files/FILE_28C200.s deleted file mode 100644 index ae636e3f..00000000 --- a/arm9/files/FILE_28C200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28C200, 0x900 - diff --git a/arm9/files/FILE_28CC00.s b/arm9/files/FILE_28CC00.s deleted file mode 100644 index 1382f7cf..00000000 --- a/arm9/files/FILE_28CC00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28CC00, 0x600 - diff --git a/arm9/files/FILE_28D200.s b/arm9/files/FILE_28D200.s deleted file mode 100644 index 8639f01a..00000000 --- a/arm9/files/FILE_28D200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28D200, 0x600 - diff --git a/arm9/files/FILE_28D800.s b/arm9/files/FILE_28D800.s deleted file mode 100644 index 01333fec..00000000 --- a/arm9/files/FILE_28D800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28D800, 0x4A0 - diff --git a/arm9/files/FILE_28DE00.s b/arm9/files/FILE_28DE00.s deleted file mode 100644 index d75cd7de..00000000 --- a/arm9/files/FILE_28DE00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28DE00, 0x320 - diff --git a/arm9/files/FILE_28E200.s b/arm9/files/FILE_28E200.s deleted file mode 100644 index 78a01f74..00000000 --- a/arm9/files/FILE_28E200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28E200, 0x4C0 - diff --git a/arm9/files/FILE_28E800.s b/arm9/files/FILE_28E800.s deleted file mode 100644 index 37f22bb0..00000000 --- a/arm9/files/FILE_28E800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28E800, 0x9A0 - diff --git a/arm9/files/FILE_28F200.s b/arm9/files/FILE_28F200.s deleted file mode 100644 index 7fbec89b..00000000 --- a/arm9/files/FILE_28F200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x28F200, 0xCC0 - diff --git a/arm9/files/FILE_290000.s b/arm9/files/FILE_290000.s deleted file mode 100644 index 63a6e035..00000000 --- a/arm9/files/FILE_290000.s +++ /dev/null @@ -1,5 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x290000, 0x560 - .section .bss - .space 0x20 diff --git a/arm9/files/FILE_290600.s b/arm9/files/FILE_290600.s deleted file mode 100644 index 35fec2fd..00000000 --- a/arm9/files/FILE_290600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x290600, 0xB40 - diff --git a/arm9/files/FILE_291200.s b/arm9/files/FILE_291200.s deleted file mode 100644 index 9055004d..00000000 --- a/arm9/files/FILE_291200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x291200, 0xCC0 - diff --git a/arm9/files/FILE_292000.s b/arm9/files/FILE_292000.s deleted file mode 100644 index 27028058..00000000 --- a/arm9/files/FILE_292000.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x292000, 0xC60 - diff --git a/arm9/files/FILE_292E00.s b/arm9/files/FILE_292E00.s deleted file mode 100644 index f0c68d4e..00000000 --- a/arm9/files/FILE_292E00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x292E00, 0x1140 - diff --git a/arm9/files/FILE_294000.s b/arm9/files/FILE_294000.s deleted file mode 100644 index 920669f6..00000000 --- a/arm9/files/FILE_294000.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x294000, 0x900 - diff --git a/arm9/files/FILE_294A00.s b/arm9/files/FILE_294A00.s deleted file mode 100644 index ce644972..00000000 --- a/arm9/files/FILE_294A00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x294A00, 0x9C0 - diff --git a/arm9/files/FILE_295400.s b/arm9/files/FILE_295400.s deleted file mode 100644 index 7bc87c21..00000000 --- a/arm9/files/FILE_295400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x295400, 0x4A0 - diff --git a/arm9/files/FILE_295A00.s b/arm9/files/FILE_295A00.s deleted file mode 100644 index 25378684..00000000 --- a/arm9/files/FILE_295A00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x295A00, 0x940 - diff --git a/arm9/files/FILE_296400.s b/arm9/files/FILE_296400.s deleted file mode 100644 index 1f9defa1..00000000 --- a/arm9/files/FILE_296400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x296400, 0x320 - diff --git a/arm9/files/FILE_296800.s b/arm9/files/FILE_296800.s deleted file mode 100644 index 256bd99d..00000000 --- a/arm9/files/FILE_296800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x296800, 0xCA0 - diff --git a/arm9/files/FILE_297600.s b/arm9/files/FILE_297600.s deleted file mode 100644 index 664db335..00000000 --- a/arm9/files/FILE_297600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x297600, 0x8A0 - diff --git a/arm9/files/FILE_298000.s b/arm9/files/FILE_298000.s deleted file mode 100644 index b7181b03..00000000 --- a/arm9/files/FILE_298000.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x298000, 0x600 - diff --git a/arm9/files/FILE_298600.s b/arm9/files/FILE_298600.s deleted file mode 100644 index 2a12d4fc..00000000 --- a/arm9/files/FILE_298600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x298600, 0x320 - diff --git a/arm9/files/FILE_298A00.s b/arm9/files/FILE_298A00.s deleted file mode 100644 index 796aa1a3..00000000 --- a/arm9/files/FILE_298A00.s +++ /dev/null @@ -1,5 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x298A00, 0xFC0 - .section .bss - .space 0x20 diff --git a/arm9/files/FILE_299A00.s b/arm9/files/FILE_299A00.s deleted file mode 100644 index 07724718..00000000 --- a/arm9/files/FILE_299A00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x299A00, 0x400 - diff --git a/arm9/files/FILE_299E00.s b/arm9/files/FILE_299E00.s deleted file mode 100644 index 4de78184..00000000 --- a/arm9/files/FILE_299E00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x299E00, 0x2480 - diff --git a/arm9/files/FILE_29C400.s b/arm9/files/FILE_29C400.s deleted file mode 100644 index 51f17874..00000000 --- a/arm9/files/FILE_29C400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x29C400, 0x2380 - diff --git a/arm9/files/FILE_29E800.s b/arm9/files/FILE_29E800.s deleted file mode 100644 index 658eb523..00000000 --- a/arm9/files/FILE_29E800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x29E800, 0x3040 - diff --git a/arm9/files/FILE_2A1A00.s b/arm9/files/FILE_2A1A00.s deleted file mode 100644 index f1bae30a..00000000 --- a/arm9/files/FILE_2A1A00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2A1A00, 0x47A0 - diff --git a/arm9/files/FILE_2A6200.s b/arm9/files/FILE_2A6200.s deleted file mode 100644 index 868864db..00000000 --- a/arm9/files/FILE_2A6200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2A6200, 0x2540 - diff --git a/arm9/files/FILE_2A8800.s b/arm9/files/FILE_2A8800.s deleted file mode 100644 index 5c379955..00000000 --- a/arm9/files/FILE_2A8800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2A8800, 0x15A0 - diff --git a/arm9/files/FILE_2A9E00.s b/arm9/files/FILE_2A9E00.s deleted file mode 100644 index e89790e3..00000000 --- a/arm9/files/FILE_2A9E00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2A9E00, 0x2C20 - diff --git a/arm9/files/FILE_2ACC00.s b/arm9/files/FILE_2ACC00.s deleted file mode 100644 index 1b79ca62..00000000 --- a/arm9/files/FILE_2ACC00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2ACC00, 0xD00 - diff --git a/arm9/files/FILE_2ADA00.s b/arm9/files/FILE_2ADA00.s deleted file mode 100644 index 820b4821..00000000 --- a/arm9/files/FILE_2ADA00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2ADA00, 0x1080 - diff --git a/arm9/files/FILE_2AEC00.s b/arm9/files/FILE_2AEC00.s deleted file mode 100644 index 0a0062ff..00000000 --- a/arm9/files/FILE_2AEC00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2AEC00, 0x3DE0 - diff --git a/arm9/files/FILE_2B2A00.s b/arm9/files/FILE_2B2A00.s deleted file mode 100644 index c7542e17..00000000 --- a/arm9/files/FILE_2B2A00.s +++ /dev/null @@ -1,6 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2B2A00, 0x4AC0 - .section .bss - .space 0x20 - diff --git a/arm9/files/FILE_2B7600.s b/arm9/files/FILE_2B7600.s deleted file mode 100644 index f0f81a80..00000000 --- a/arm9/files/FILE_2B7600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2B7600, 0x1C40 - diff --git a/arm9/files/FILE_2B9400.s b/arm9/files/FILE_2B9400.s deleted file mode 100644 index e7245019..00000000 --- a/arm9/files/FILE_2B9400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2B9400, 0x3000 - diff --git a/arm9/files/FILE_2BC400.s b/arm9/files/FILE_2BC400.s deleted file mode 100644 index eb62b3a8..00000000 --- a/arm9/files/FILE_2BC400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2BC400, 0x2660 - diff --git a/arm9/files/FILE_2BEC00.s b/arm9/files/FILE_2BEC00.s deleted file mode 100644 index 8042a682..00000000 --- a/arm9/files/FILE_2BEC00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2BEC00, 0x2440 - diff --git a/arm9/files/FILE_2C1200.s b/arm9/files/FILE_2C1200.s deleted file mode 100644 index 332f0c01..00000000 --- a/arm9/files/FILE_2C1200.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2C1200, 0x1600 - diff --git a/arm9/files/FILE_2C2800.s b/arm9/files/FILE_2C2800.s deleted file mode 100644 index 6e38ff10..00000000 --- a/arm9/files/FILE_2C2800.s +++ /dev/null @@ -1,6 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2C2800, 0x23A0 - .section .bss - .space 0x20 - diff --git a/arm9/files/FILE_2C4C00.s b/arm9/files/FILE_2C4C00.s deleted file mode 100644 index 6764e3f8..00000000 --- a/arm9/files/FILE_2C4C00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2C4C00, 0xE20 - diff --git a/arm9/files/FILE_2C5C00.s b/arm9/files/FILE_2C5C00.s deleted file mode 100644 index d98bfcf3..00000000 --- a/arm9/files/FILE_2C5C00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2C5C00, 0x3EC0 - diff --git a/arm9/files/FILE_2C9C00.s b/arm9/files/FILE_2C9C00.s deleted file mode 100644 index 77531a9c..00000000 --- a/arm9/files/FILE_2C9C00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2C9C00, 0x20 - diff --git a/arm9/files/FILE_2C9E00.s b/arm9/files/FILE_2C9E00.s deleted file mode 100644 index 1da6375d..00000000 --- a/arm9/files/FILE_2C9E00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2C9E00, 0x4AE0 - diff --git a/arm9/files/FILE_2CEA00.s b/arm9/files/FILE_2CEA00.s deleted file mode 100644 index f1e5beab..00000000 --- a/arm9/files/FILE_2CEA00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2CEA00, 0x1220 - diff --git a/arm9/files/FILE_2CFE00.s b/arm9/files/FILE_2CFE00.s deleted file mode 100644 index ae6d4e43..00000000 --- a/arm9/files/FILE_2CFE00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2CFE00, 0x5DE0 - diff --git a/arm9/files/FILE_2D5C00.s b/arm9/files/FILE_2D5C00.s deleted file mode 100644 index 250d2a37..00000000 --- a/arm9/files/FILE_2D5C00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2D5C00, 0x1E20 - diff --git a/arm9/files/FILE_2D7C00.s b/arm9/files/FILE_2D7C00.s deleted file mode 100644 index 293a4962..00000000 --- a/arm9/files/FILE_2D7C00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2D7C00, 0x1BE0 - diff --git a/arm9/files/FILE_2D9800.s b/arm9/files/FILE_2D9800.s deleted file mode 100644 index 0c21e6e4..00000000 --- a/arm9/files/FILE_2D9800.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2D9800, 0x460 - diff --git a/arm9/files/FILE_2D9E00.s b/arm9/files/FILE_2D9E00.s deleted file mode 100644 index a358769d..00000000 --- a/arm9/files/FILE_2D9E00.s +++ /dev/null @@ -1,5 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2D9E00, 0x52C0 - .section .bss - .space 0x40 diff --git a/arm9/files/FILE_2DF200.s b/arm9/files/FILE_2DF200.s deleted file mode 100644 index 93f5cfda..00000000 --- a/arm9/files/FILE_2DF200.s +++ /dev/null @@ -1,6 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2DF200, 0xA720 - .section .bss - .space 0x160 - diff --git a/arm9/files/FILE_2E9A00.s b/arm9/files/FILE_2E9A00.s deleted file mode 100644 index 1b03c961..00000000 --- a/arm9/files/FILE_2E9A00.s +++ /dev/null @@ -1,5 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2E9A00, 0x5580 - .section .bss - .space 0xa0 diff --git a/arm9/files/FILE_2EF000.s b/arm9/files/FILE_2EF000.s deleted file mode 100644 index e29ca1e0..00000000 --- a/arm9/files/FILE_2EF000.s +++ /dev/null @@ -1,6 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2EF000, 0x2540 - .section .bss - .space 0x120 - diff --git a/arm9/files/FILE_2F1600.s b/arm9/files/FILE_2F1600.s deleted file mode 100644 index 7669a577..00000000 --- a/arm9/files/FILE_2F1600.s +++ /dev/null @@ -1,5 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2F1600, 0xE2A0 - .section .bss - .space 0x1980 diff --git a/arm9/files/FILE_2FFA00.s b/arm9/files/FILE_2FFA00.s deleted file mode 100644 index 9e8819b8..00000000 --- a/arm9/files/FILE_2FFA00.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x2FFA00, 0x3920 - diff --git a/arm9/files/FILE_303400.s b/arm9/files/FILE_303400.s deleted file mode 100644 index 52f17ff8..00000000 --- a/arm9/files/FILE_303400.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x303400, 0x9100 - diff --git a/arm9/files/FILE_30C600.s b/arm9/files/FILE_30C600.s deleted file mode 100644 index faf88157..00000000 --- a/arm9/files/FILE_30C600.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .section .text - .incbin "baserom.nds", 0x30C600, 0x820 - diff --git a/arm9/global.inc b/arm9/global.inc index a9bbc871..e418ef78 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3011,38 +3011,38 @@ .extern MOD05_021F61DC
.extern MOD05_021F61E8
.extern MOD07_02211E60
-.extern FUN_02213B08
-.extern FUN_02213D80
-.extern FUN_02213DBC
-.extern FUN_02213E24
+.extern MOD79_02213B08
+.extern MOD79_02213D80
+.extern MOD79_02213DBC
+.extern MOD79_02213E24
.extern MOD11_0222D5C0
-.extern FUN_0222DAEC
-.extern FUN_0222DD1C
-.extern FUN_0222DD38
-.extern FUN_0222E2BC
-.extern FUN_0222E360
-.extern FUN_0222E3A0
-.extern FUN_0222E7E8
-.extern FUN_0222E874
-.extern FUN_0222EC60
-.extern FUN_0222ED34
-.extern FUN_0222EDBC
-.extern FUN_0222F440
-.extern FUN_0222F480
-.extern FUN_0222F7E0
+.extern MOD62_0222DAEC
+.extern MOD62_0222DD1C
+.extern MOD62_0222DD38
+.extern MOD62_0222E2BC
+.extern MOD62_0222E360
+.extern MOD62_0222E3A0
+.extern MOD62_0222E7E8
+.extern MOD62_0222E874
+.extern MOD69_0222EC60
+.extern MOD62_0222ED34
+.extern MOD62_0222EDBC
+.extern MOD70_0222F440
+.extern MOD70_0222F480
+.extern MOD62_0222F7E0
.extern MOD12_0222F990
.extern MOD11_022300D4
.extern MOD11_022300DC
-.extern FUN_022300E4
+.extern MOD62_022300E4
.extern MOD11_022300E8
.extern MOD11_022300F4
.extern MOD11_02230100
.extern MOD11_0223010C
.extern MOD11_02230118
.extern MOD11_02230124
-.extern FUN_02230F3C
-.extern FUN_02230F70
-.extern FUN_02230F80
+.extern MOD62_02230F3C
+.extern MOD62_02230F70
+.extern MOD62_02230F80
.extern MOD11_02231344
.extern MOD11_02231350
.extern MOD11_0223135C
@@ -5801,6 +5801,175 @@ .extern MOD04_021D861C
.extern MOD04_021D8640
.extern MOD04_021D8678
+.extern FUN_02029B08
+.extern MOD04_021EB550
+.extern MOD04_021DD904
+.extern MOD04_021DD944
+.extern MOD04_021EB3B8
+.extern MOD04_021EB524
+.extern MOD04_021EB59C
+.extern MOD04_021EF820
+.extern strncat
+.extern fclose
+.extern fread
+.extern fseek
+.extern ftell
+.extern MOD04_021DD82C
+.extern MOD04_021DD844
+.extern MOD04_021DD860
+.extern MOD04_021EEFA8
+.extern MOD04_021EEFFC
+.extern MOD04_021EF06C
+.extern MOD04_021EF074
+.extern MOD04_021EF0E4
+.extern MOD04_021EFB28
+.extern MOD04_021EFB38
+.extern MOD04_021EFC24
+.extern MOD04_021EFC78
+.extern MOD04_021EFCE4
+.extern MOD04_021EFD80
+.extern MOD04_021EFD9C
+.extern MOD04_021EFDB8
+.extern MOD04_021EFF5C
+.extern MOD04_021F0130
+.extern MOD04_021F017C
+.extern MOD04_021F0208
+.extern MOD04_021F024C
+.extern MOD04_021F0250
+.extern MOD04_021F025C
+.extern rewind
+.extern strspn
+.extern FUN_0200B84C
+.extern FUN_02022840
+.extern FUN_02022854
+.extern FUN_02023830
+.extern FUN_02023834
+.extern FUN_02023A6C
+.extern FUN_02023A74
+.extern FUN_0202952C
+.extern FUN_0202ABDC
+.extern FUN_0202ABE4
+.extern FUN_0202ABEC
+.extern FUN_0202ABF8
+.extern FUN_0202AC08
+.extern FUN_0202AC10
+.extern FUN_0202AC18
+.extern FUN_0202E4F0
+.extern FUN_02033288
+.extern FUN_020332DC
+.extern FUN_020335E0
+.extern FUN_020337C8
+.extern FUN_02033EEC
+.extern FUN_0206B384
+.extern FUN_020888BC
+.extern FUN_020888CC
+.extern FUN_0200CA7C
+.extern FUN_02033F04
+.extern FUN_02068E1C
+.extern FUN_0202A524
+.extern FUN_0202A60C
+.extern FUN_0202A6B4
+.extern FUN_0202A754
+.extern FUN_0202A784
+.extern FUN_0202A838
+.extern MOD79_022122E4
+.extern MOD79_02212308
+.extern MOD79_022123A8
+.extern MOD79_02212474
+.extern MOD79_02212480
+.extern FUN_02015D88
+.extern FUN_02016444
+.extern FUN_02016454
+.extern FUN_0201AB1C
+.extern FUN_0201AB20
+.extern FUN_020224D8
+.extern FUN_0202251C
+.extern FUN_02023820
+.extern FUN_0202AC28
+.extern FUN_0202AC64
+.extern FUN_0202AC98
+.extern FUN_0202AD08
+.extern FUN_0202ADC8
+.extern FUN_0202ADF0
+.extern FUN_0202AE0C
+.extern FUN_0202AE4C
+.extern FUN_0202AE70
+.extern FUN_0202AE90
+.extern FUN_0202AEF4
+.extern FUN_0202AF24
+.extern FUN_0202AF50
+.extern FUN_0202AF60
+.extern FUN_0202BF7C
+.extern FUN_0202BF90
+.extern FUN_0202C028
+.extern FUN_0202C060
+.extern FUN_0202C094
+.extern FUN_0202C0B8
+.extern FUN_0202F10C
+.extern FUN_0202F124
+.extern FUN_02031C74
+.extern FUN_02031CA8
+.extern FUN_02032D44
+.extern FUN_02032D80
+.extern FUN_02032D9C
+.extern FUN_02033310
+.extern FUN_02033364
+.extern FUN_02068800
+.extern FUN_0206E6D8
+.extern FUN_02089F24
+.extern SetCustomAllocator
+.extern FUN_02008D04
+.extern FUN_02024DAC
+.extern FUN_020910EC
+.extern FUN_0209521C
+.extern FUN_020952AC
+.extern FUN_02009CDC
+.extern FUN_0201C348
+.extern CTRDG_CpuCopy16
+.extern CTRDG_CpuCopy32
+.extern CTRDG_CpuCopy8
+.extern CTRDG_Enable
+.extern CTRDG_GetAgbGameCode
+.extern CTRDG_GetAgbMakerCode
+.extern CTRDG_IdentifyAgbBackup
+.extern CTRDG_IsAgbCartridge
+.extern CTRDG_Read32
+.extern CTRDG_ReadAgbFlash
+.extern CTRDG_TerminateForPulledOut
+.extern CTRDG_WriteAndVerifyAgbFlashAsync
+.extern SVC_GetCRC16
+.extern MOD04_021DE330
+.extern MOD04_021DDB40
+.extern MOD04_021DDF40
+.extern MOD04_021DE2D0
+.extern MOD04_021DE308
+.extern MOD04_021DE364
+.extern MOD04_021DE3AC
+.extern MOD04_021DE3D0
+.extern MOD04_021DE404
+.extern MOD04_021DE45C
+.extern RTC_ConvertDayToDate
+.extern MOD04_021DD808
+.extern MOD04_021DD984
+.extern MOD04_021DD9DC
+.extern MOD04_021DDF4C
+.extern MOD04_021DE05C
+.extern MOD04_021DE1F8
+.extern MOD56_0221244C
+.extern MOD79_022122E4
+.extern MOD79_02212308
+.extern MOD79_022123A8
+.extern MOD79_02212474
+.extern MOD79_02212480
+.extern FUN_02029B40
+.extern FUN_02029C00
+.extern FUN_02088D1C
+.extern FUN_02088D20
+.extern FUN_02088D4C
+.extern FUN_02088D68
+.extern FUN_02088D84
+.extern FUN_02088DA0
+.extern FUN_02088DBC
.extern FUN_020294F4
.extern FUN_02021C38
.extern FUN_0202822C
diff --git a/arm9/macros.lcf.inc b/arm9/macros.lcf.inc deleted file mode 100644 index f58c2432..00000000 --- a/arm9/macros.lcf.inc +++ /dev/null @@ -1,9 +0,0 @@ -#define OVERLAY_TABLE(module, number) \ -WRITEW number; \ -WRITEW SDK_OVERLAY_##module##_START; \ -WRITEW SDK_OVERLAY_##module##_SIZE; \ -WRITEW SDK_OVERLAY_##module##_BSSSIZE; \ -WRITEW SDK_OVERLAY_##module##_STATIC_INIT_START; \ -WRITEW SDK_OVERLAY_##module##_STATIC_INIT_END; \ -WRITEW number; \ -WRITEW 0; diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 132857e1..eb42dcb1 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -6128,6 +6128,9 @@ MOD04_021DE308: ; 0x021DE308 bl MOD04_02207158 add sp, sp, #4 ldmfd sp!, {pc} + + arm_func_start MOD04_021DE330 +MOD04_021DE330: ; 0x021DE330 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, r1 @@ -21204,7 +21207,7 @@ _021EB430: mov r0, r5 mov r3, r4 mov r1, #0 - bl FUN_02213D80 + bl MOD79_02213D80 movs r5, r0 bpl _021EB46C bl MOD04_021EB25C @@ -21280,10 +21283,13 @@ MOD04_021EB524: ; 0x021EB524 addne sp, sp, #4 movne r0, #0 ldmneia sp!, {pc} - bl FUN_02213B08 + bl MOD79_02213B08 mov r0, #1 add sp, sp, #4 ldmfd sp!, {pc} + + arm_func_start MOD04_021EB550 +MOD04_021EB550: stmdb sp!, {lr} sub sp, sp, #4 ldr r0, _021EB598 ; =0x02210E44 @@ -21292,7 +21298,7 @@ MOD04_021EB524: ; 0x021EB524 addle sp, sp, #4 movle r0, #1 ldmleia sp!, {pc} - bl FUN_02213DBC + bl MOD79_02213DBC ldr r0, _021EB598 ; =0x02210E44 ldr r1, [r0] subs r1, r1, #1 @@ -21310,7 +21316,7 @@ _021EB598: .word 0x02210E44 MOD04_021EB59C: ; 0x021EB59C stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_02213E24 + bl MOD79_02213E24 ldr r1, _021EB5C4 ; =0x02210E44 mov r0, #1 ldr r2, [r1] diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index f1e9fefd..6470d422 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -586,7 +586,7 @@ _0222DA74: b _0222DAD4 _0222DA90: mov r1, #0 - bl FUN_0222EC60 + bl MOD69_0222EC60 ldr r0, [r4] add r0, r0, #1 str r0, [r4] diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s new file mode 100644 index 00000000..45257701 --- /dev/null +++ b/arm9/modules/76/asm/module_76.s @@ -0,0 +1,3226 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD76_021D74E0 +MOD76_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #2 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x43 + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0x62 + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #0x43 + bl FUN_02006268 + mov r2, #0x62 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + bl FUN_0200628C + str r0, [r4] + add r0, r4, #0 + bl MOD76_021D7638 + ldr r1, [r4] + add r0, r4, #0 + ldrh r1, [r1, #0x10] + mov r2, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD76_021D8C88 + add r0, r4, #0 + mov r1, #0 + bl MOD76_021D8354 + mov r0, #0 + str r0, [sp] + ldr r3, _021D7560 ; =0x0001020F + add r0, r4, #0 + mov r1, #0xc + mov r2, #1 + bl MOD76_021D7CC8 + mov r0, #6 + mov r1, #1 + lsl r0, r0, #6 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0xc8 + bl FUN_02019220 + add r0, r4, #0 + bl MOD76_021D8CD4 + ldr r0, _021D7564 ; =MOD76_021D76E8 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7560: .word 0x0001020F +_021D7564: .word MOD76_021D76E8 + thumb_func_end MOD76_021D74E0 + + thumb_func_start MOD76_021D7568 +MOD76_021D7568: ; 0x021D7568 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_02006278 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0xc + bhi _021D7606 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7584: ; jump table + .short _021D759E - _021D7584 - 2 ; case 0 + .short _021D75A6 - _021D7584 - 2 ; case 1 + .short _021D75AE - _021D7584 - 2 ; case 2 + .short _021D75B6 - _021D7584 - 2 ; case 3 + .short _021D75BE - _021D7584 - 2 ; case 4 + .short _021D75C6 - _021D7584 - 2 ; case 5 + .short _021D75CE - _021D7584 - 2 ; case 6 + .short _021D75D6 - _021D7584 - 2 ; case 7 + .short _021D75DE - _021D7584 - 2 ; case 8 + .short _021D75E6 - _021D7584 - 2 ; case 9 + .short _021D75EA - _021D7584 - 2 ; case 10 + .short _021D75F2 - _021D7584 - 2 ; case 11 + .short _021D75FC - _021D7584 - 2 ; case 12 +_021D759E: + bl MOD76_021D795C + str r0, [r4] + b _021D7606 +_021D75A6: + bl MOD76_021D7974 + str r0, [r4] + b _021D7606 +_021D75AE: + bl MOD76_021D7A94 + str r0, [r4] + b _021D7606 +_021D75B6: + bl MOD76_021D7AB4 + str r0, [r4] + b _021D7606 +_021D75BE: + bl MOD76_021D7ADC + str r0, [r4] + b _021D7606 +_021D75C6: + bl MOD76_021D7B2C + str r0, [r4] + b _021D7606 +_021D75CE: + bl MOD76_021D7B80 + str r0, [r4] + b _021D7606 +_021D75D6: + bl MOD76_021D7B98 + str r0, [r4] + b _021D7606 +_021D75DE: + bl MOD76_021D7BC8 + str r0, [r4] + b _021D7606 +_021D75E6: + mov r0, #1 + pop {r3, r4, r5, pc} +_021D75EA: + bl MOD76_021D8D44 + str r0, [r4] + b _021D7606 +_021D75F2: + bl MOD76_021D8D5C + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D75FC: + bl MOD76_021D8DEC + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7606: + add r0, r5, #0 + bl MOD76_021D882C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200BC1C + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD76_021D7568 + + thumb_func_start MOD76_021D761C +MOD76_021D761C: ; 0x021D761C + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + bl MOD76_021D76B8 + add r0, r4, #0 + bl FUN_0200627C + mov r0, #0x43 + bl FUN_020168D0 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD76_021D761C + + thumb_func_start MOD76_021D7638 +MOD76_021D7638: ; 0x021D7638 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D76AC ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76B0 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0x43 + bl FUN_02016B94 + str r0, [r4, #4] + mov r0, #0 + mov r1, #0x43 + bl FUN_02079A70 + bl MOD76_021D7710 + ldr r0, [r4, #4] + bl MOD76_021D7730 + add r0, r4, #0 + bl MOD76_021D7814 + add r0, r4, #0 + bl MOD76_021D8C4C + add r0, r4, #0 + bl MOD76_021D7900 + add r0, r4, #0 + bl MOD76_021D789C + add r0, r4, #0 + bl MOD76_021D7ECC + add r0, r4, #0 + bl MOD76_021D7BE0 + ldr r0, _021D76B4 ; =MOD76_021D76E8 + add r1, r4, #0 + bl FUN_02015F10 + pop {r4, pc} + .align 2, 0 +_021D76AC: .word 0xFFFFE0FF +_021D76B0: .word 0x04001000 +_021D76B4: .word MOD76_021D76E8 + thumb_func_end MOD76_021D7638 + + thumb_func_start MOD76_021D76B8 +MOD76_021D76B8: ; 0x021D76B8 + push {r4, lr} + add r4, r0, #0 + bl MOD76_021D7FAC + add r0, r4, #0 + bl MOD76_021D78E8 + ldr r0, [r4, #4] + bl MOD76_021D77E4 + add r0, r4, #0 + bl MOD76_021D7938 + add r0, r4, #0 + bl MOD76_021D87F8 + bl FUN_0201C29C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD76_021D76B8 + + thumb_func_start MOD76_021D76E8 +MOD76_021D76E8: ; 0x021D76E8 + push {r3, lr} + ldr r0, [r0, #4] + bl FUN_0201AB60 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r3, _021D7708 ; =0x027E0000 + ldr r1, _021D770C ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_021D7708: .word 0x027E0000 +_021D770C: .word 0x00003FF8 + thumb_func_end MOD76_021D76E8 + + thumb_func_start MOD76_021D7710 +MOD76_021D7710: ; 0x021D7710 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D772C ; =0x021D8F44 + add r3, sp, #0 + mov r2, #5 +_021D771A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D771A + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D772C: .word 0x021D8F44 + thumb_func_end MOD76_021D7710 + + thumb_func_start MOD76_021D7730 +MOD76_021D7730: ; 0x021D7730 + push {r4, r5, lr} + sub sp, #0x64 + ldr r5, _021D77D4 ; =0x021D8E4C + add r3, sp, #0x54 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D77D8 ; =0x021D8E88 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _021D77DC ; =0x021D8EC0 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _021D77E0 ; =0x021D8EA4 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x43 + bl FUN_02017F18 + add sp, #0x64 + pop {r4, r5, pc} + nop +_021D77D4: .word 0x021D8E4C +_021D77D8: .word 0x021D8E88 +_021D77DC: .word 0x021D8EC0 +_021D77E0: .word 0x021D8EA4 + thumb_func_end MOD76_021D7730 + + thumb_func_start MOD76_021D77E4 +MOD76_021D77E4: ; 0x021D77E4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x17 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + mov r0, #0x43 + add r1, r4, #0 + bl FUN_02016A8C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD76_021D77E4 + + thumb_func_start MOD76_021D7814 +MOD76_021D7814: ; 0x021D7814 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x43 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x71 + mov r1, #0xa + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x43 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x71 + mov r1, #0xb + mov r3, #2 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x43 + str r0, [sp, #4] + mov r0, #0x71 + mov r1, #0xc + add r3, r2, #0 + bl FUN_02006930 + mov r1, #7 + mov r0, #0 + lsl r1, r1, #6 + mov r2, #0x43 + bl FUN_02002EEC + mov r1, #0 + str r1, [sp] + mov r0, #0x43 + str r0, [sp, #4] + ldr r0, [r4, #4] + mov r2, #1 + mov r3, #0xc + bl FUN_0200CB00 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x43 + str r0, [sp, #4] + ldr r0, [r4, #4] + mov r1, #0 + mov r2, #0xa + mov r3, #0xd + bl FUN_0200CD68 + add sp, #0x10 + pop {r4, pc} + thumb_func_end MOD76_021D7814 + + thumb_func_start MOD76_021D789C +MOD76_021D789C: ; 0x021D789C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + ldr r4, _021D78E4 ; =0x021D8FC4 + mov r6, #0 + add r5, #8 +_021D78A8: + ldr r0, [r7, #4] + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02019150 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #0xf + blo _021D78A8 + add r0, r7, #0 + bl MOD76_021D7DAC + add r0, r7, #0 + add r0, #0xc8 + mov r1, #0xf + bl FUN_02019620 + add r7, #0xc8 + add r0, r7, #0 + mov r1, #0 + mov r2, #0xa + mov r3, #0xd + bl FUN_0200D0BC + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D78E4: .word 0x021D8FC4 + thumb_func_end MOD76_021D789C + + thumb_func_start MOD76_021D78E8 +MOD76_021D78E8: ; 0x021D78E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #8 +_021D78F0: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0xf + blo _021D78F0 + pop {r3, r4, r5, pc} + thumb_func_end MOD76_021D78E8 + + thumb_func_start MOD76_021D7900 +MOD76_021D7900: ; 0x021D7900 + push {r4, lr} + ldr r2, _021D7934 ; =0x0000024A + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x43 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0xf8 + str r0, [r1] + mov r0, #0x43 + bl FUN_0200AA80 + add r1, r4, #0 + add r1, #0xfc + str r0, [r1] + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0x43 + bl FUN_020219F4 + mov r1, #1 + lsl r1, r1, #8 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_021D7934: .word 0x0000024A + thumb_func_end MOD76_021D7900 + + thumb_func_start MOD76_021D7938 +MOD76_021D7938: ; 0x021D7938 + push {r4, lr} + add r4, r0, #0 + add r0, #0xf8 + ldr r0, [r0] + bl FUN_0200A8B8 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + bl FUN_0200AB18 + mov r0, #1 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD76_021D7938 + + thumb_func_start MOD76_021D795C +MOD76_021D795C: ; 0x021D795C + push {r4, lr} + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #1 + bne _021D7970 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + pop {r4, pc} +_021D7970: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD76_021D795C + + thumb_func_start MOD76_021D7974 +MOD76_021D7974: ; 0x021D7974 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D7A88 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x30 + tst r1, r0 + beq _021D799C + ldr r0, _021D7A8C ; =0x000005DD + bl FUN_020054C8 + ldr r2, [r5] + mov r0, #1 + ldrb r1, [r2, #0x14] + eor r0, r1 + strb r0, [r2, #0x14] + add r0, r5, #0 + bl MOD76_021D7BE0 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D799C: + add r0, #0xd4 + add r1, sp, #0 + ldr r0, [r5, r0] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02001204 + add r4, r0, #0 + ldr r2, [r5] + mov r0, #0x41 + add r1, r2, #0 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #0x12 + add r2, #0x10 + bl FUN_02001448 + ldr r2, [r5] + add r1, sp, #0 + ldrh r1, [r1, #2] + ldrh r2, [r2, #0x12] + add r0, r5, #0 + bl MOD76_021D8AC0 + ldr r0, [r5] + ldrh r1, [r0, #0x10] + add r0, sp, #0 + ldrh r0, [r0] + cmp r1, r0 + beq _021D79EE + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl MOD76_021D8C88 +_021D79EE: + add r0, r5, #0 + bl MOD76_021D8CD4 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _021D7A04 + add r0, r0, #1 + cmp r4, r0 + beq _021D7A82 + b _021D7A38 +_021D7A04: + ldr r0, _021D7A8C ; =0x000005DD + bl FUN_020054C8 + ldr r1, [r5] + add r0, r5, #0 + ldrh r1, [r1, #0x10] + mov r2, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD76_021D8C88 + add r0, r5, #0 + bl MOD76_021D8D24 + add r0, r5, #0 + mov r1, #2 + bl MOD76_021D853C + ldr r0, _021D7A90 ; =0x00000186 + mov r1, #1 + strb r1, [r5, r0] + mov r1, #3 + lsl r0, r1, #7 + str r1, [r5, r0] + mov r0, #2 + pop {r3, r4, r5, pc} +_021D7A38: + ldr r0, _021D7A8C ; =0x000005DD + bl FUN_020054C8 + ldr r1, [r5] + add r0, r5, #0 + ldrh r1, [r1, #0x10] + mov r2, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD76_021D8C88 + add r0, r5, #0 + bl MOD76_021D8D24 + add r0, r5, #0 + bl MOD76_021D85E4 + cmp r0, #4 + bhs _021D7A6A + add r0, r5, #0 + mov r1, #1 + bl MOD76_021D853C + mov r1, #0 + b _021D7A74 +_021D7A6A: + add r0, r5, #0 + mov r1, #4 + bl MOD76_021D853C + mov r1, #2 +_021D7A74: + ldr r0, _021D7A90 ; =0x00000186 + strb r1, [r5, r0] + mov r1, #3 + lsl r0, r1, #7 + str r1, [r5, r0] + mov r0, #2 + pop {r3, r4, r5, pc} +_021D7A82: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D7A88: .word 0x021C48B8 +_021D7A8C: .word 0x000005DD +_021D7A90: .word 0x00000186 + thumb_func_end MOD76_021D7974 + + thumb_func_start MOD76_021D7A94 +MOD76_021D7A94: ; 0x021D7A94 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D7AB0 ; =0x00000185 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0 + bne _021D7AAC + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + pop {r4, pc} +_021D7AAC: + mov r0, #2 + pop {r4, pc} + .align 2, 0 +_021D7AB0: .word 0x00000185 + thumb_func_end MOD76_021D7A94 + + thumb_func_start MOD76_021D7AB4 +MOD76_021D7AB4: ; 0x021D7AB4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x43 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, _021D7AD8 ; =0x021D9034 + mov r2, #1 + mov r3, #0xc + bl FUN_02002198 + mov r1, #0x43 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #4 + add sp, #4 + pop {r3, r4, pc} + nop +_021D7AD8: .word 0x021D9034 + thumb_func_end MOD76_021D7AB4 + + thumb_func_start MOD76_021D7ADC +MOD76_021D7ADC: ; 0x021D7ADC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x43 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x43 + bl FUN_020021AC + cmp r0, #0 + beq _021D7AFA + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _021D7B0A + b _021D7B1A +_021D7AFA: + ldr r1, _021D7B20 ; =0x00000186 + add r0, r4, #0 + ldrb r1, [r4, r1] + lsl r2, r1, #3 + ldr r1, _021D7B24 ; =0x021D8F1C + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} +_021D7B0A: + ldr r1, _021D7B20 ; =0x00000186 + add r0, r4, #0 + ldrb r1, [r4, r1] + lsl r2, r1, #3 + ldr r1, _021D7B28 ; =0x021D8F20 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} +_021D7B1A: + mov r0, #4 + pop {r4, pc} + nop +_021D7B20: .word 0x00000186 +_021D7B24: .word 0x021D8F1C +_021D7B28: .word 0x021D8F20 + thumb_func_end MOD76_021D7ADC + + thumb_func_start MOD76_021D7B2C +MOD76_021D7B2C: ; 0x021D7B2C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl MOD76_021D8514 + str r0, [sp] + ldr r1, [r4] + add r2, sp, #0 + ldr r0, [r1] + ldrb r1, [r1, #0x17] + add r1, #0x36 + bl FUN_02067830 + mov r0, #0 + str r0, [sp] + ldr r1, [r4] + add r2, sp, #0 + ldr r0, [r1] + ldrb r1, [r1, #0x17] + add r1, #0x3e + bl FUN_02067830 + add r0, r4, #0 + bl MOD76_021D8514 + mov r1, #0 + bl FUN_0206AB30 + str r0, [sp] + ldr r1, [r4] + add r2, sp, #0 + ldr r0, [r1] + ldrb r1, [r1, #0x17] + add r1, #0x3a + bl FUN_02067830 + ldr r0, [r4] + mov r1, #0 + strb r1, [r0, #0x16] + mov r0, #8 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD76_021D7B2C + + thumb_func_start MOD76_021D7B80 +MOD76_021D7B80: ; 0x021D7B80 + push {r4, lr} + mov r1, #6 + add r4, r0, #0 + bl MOD76_021D853C + mov r0, #6 + mov r1, #5 + lsl r0, r0, #6 + str r1, [r4, r0] + mov r0, #2 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD76_021D7B80 + + thumb_func_start MOD76_021D7B98 +MOD76_021D7B98: ; 0x021D7B98 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + ldrb r1, [r1, #0x17] + cmp r1, #4 + bhs _021D7BAE + mov r1, #0xa + bl MOD76_021D853C + mov r1, #4 + b _021D7BB6 +_021D7BAE: + mov r1, #7 + bl MOD76_021D853C + mov r1, #3 +_021D7BB6: + ldr r0, _021D7BC4 ; =0x00000186 + strb r1, [r4, r0] + mov r1, #3 + lsl r0, r1, #7 + str r1, [r4, r0] + mov r0, #2 + pop {r4, pc} + .align 2, 0 +_021D7BC4: .word 0x00000186 + thumb_func_end MOD76_021D7B98 + + thumb_func_start MOD76_021D7BC8 +MOD76_021D7BC8: ; 0x021D7BC8 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0x43 + bl FUN_02079A70 + mov r0, #6 + mov r1, #9 + lsl r0, r0, #6 + str r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD76_021D7BC8 + + thumb_func_start MOD76_021D7BE0 +MOD76_021D7BE0: ; 0x021D7BE0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD76_021D8514 + add r4, r0, #0 + ldr r0, [r5] + ldrb r0, [r0, #0x14] + cmp r0, #0 + ldr r0, [r5, #4] + bne _021D7C3A + mov r2, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_0201AEE4 + add r0, r5, #0 + add r0, #0x18 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x68 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0xb8 + bl FUN_0201958C + add r0, r5, #0 + add r0, #8 + bl FUN_02019220 + ldr r0, _021D7CC4 ; =0x0000FFFF + cmp r4, r0 + beq _021D7C2E + add r0, r5, #0 + add r1, r4, #0 + bl MOD76_021D800C + b _021D7CBC +_021D7C2E: + mov r1, #1 + add r0, r5, #0 + mvn r1, r1 + bl MOD76_021D800C + b _021D7CBC +_021D7C3A: + mov r1, #2 + add r3, r1, #0 + mov r2, #0 + add r3, #0xfe + bl FUN_0201AEE4 + add r0, r5, #0 + add r0, #8 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x28 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x38 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x48 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x58 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0xa8 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x78 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x88 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x98 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x18 + bl FUN_02019220 + ldr r0, _021D7CC4 ; =0x0000FFFF + cmp r4, r0 + beq _021D7CA6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD76_021D81AC + b _021D7CB0 +_021D7CA6: + mov r1, #1 + add r0, r5, #0 + mvn r1, r1 + bl MOD76_021D81AC +_021D7CB0: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C644 +_021D7CBC: + add r0, r5, #0 + bl MOD76_021D8A58 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7CC4: .word 0x0000FFFF + thumb_func_end MOD76_021D7BE0 + + thumb_func_start MOD76_021D7CC8 +MOD76_021D7CC8: ; 0x021D7CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [sp, #0x28] + add r4, r1, #0 + add r7, r3, #0 + str r2, [sp, #0x10] + cmp r0, #0 + beq _021D7CE4 + cmp r0, #1 + beq _021D7CE8 + cmp r0, #2 + beq _021D7D12 + b _021D7D3E +_021D7CE4: + mov r3, #0 + b _021D7D3E +_021D7CE8: + mov r1, #1 + lsl r1, r1, #8 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + add r1, r5, #0 + lsr r6, r0, #0x18 + add r1, #8 + lsl r0, r4, #4 + add r0, r1, r0 + bl FUN_0201AB0C + lsl r0, r0, #0x1b + lsr r0, r0, #0x18 + sub r0, r0, r6 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + b _021D7D3E +_021D7D12: + mov r1, #1 + lsl r1, r1, #8 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + add r1, r5, #0 + lsr r6, r0, #0x18 + add r1, #8 + lsl r0, r4, #4 + add r0, r1, r0 + bl FUN_0201AB0C + lsl r0, r0, #0x1b + lsr r0, r0, #0x18 + sub r1, r0, r6 + lsr r0, r1, #0x1f + add r0, r1, r0 + lsl r0, r0, #0x17 + lsr r3, r0, #0x18 +_021D7D3E: + mov r0, #0 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r7, [sp, #8] + add r1, r5, #0 + str r0, [sp, #0xc] + add r2, r2, #1 + add r1, #8 + lsl r0, r4, #4 + add r0, r1, r0 + ldr r1, [sp, #0x10] + ldr r2, [r5, r2] + bl FUN_0201BDE0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD76_021D7CC8 + + thumb_func_start MOD76_021D7D60 +MOD76_021D7D60: ; 0x021D7D60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r0, #0xf8 + ldr r0, [r0] + add r6, r2, #0 + add r7, r3, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + mov r1, #0 + add r2, r6, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xfc + ldr r0, [r0] + add r3, r7, #0 + bl FUN_0200AD38 + add r0, r5, #0 + mov r1, #1 + add r0, #0xfc + lsl r1, r1, #8 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD76_021D7D60 + + thumb_func_start MOD76_021D7DAC +MOD76_021D7DAC: ; 0x021D7DAC + push {r3, r4, lr} + sub sp, #4 + mov r1, #0x1a + add r2, r1, #0 + add r4, r0, #0 + add r0, #0xf8 + add r2, #0xe6 + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r0, #2 + mov r1, #0 + str r0, [sp] + ldr r3, _021D7E9C ; =0x000F0E00 + add r0, r4, #0 + add r2, r1, #0 + bl MOD76_021D7CC8 + mov r1, #0x1c + add r0, r4, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xe4 + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r0, #2 + str r0, [sp] + ldr r3, _021D7E9C ; =0x000F0E00 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD76_021D7CC8 + mov r1, #0x16 + add r0, r4, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xea + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r2, #0 + ldr r3, _021D7E9C ; =0x000F0E00 + add r0, r4, #0 + mov r1, #2 + str r2, [sp] + bl MOD76_021D7CC8 + mov r1, #0x17 + add r0, r4, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xe9 + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r2, #0 + ldr r3, _021D7E9C ; =0x000F0E00 + add r0, r4, #0 + mov r1, #3 + str r2, [sp] + bl MOD76_021D7CC8 + mov r1, #0x18 + add r0, r4, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xe8 + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r2, #0 + ldr r3, _021D7E9C ; =0x000F0E00 + add r0, r4, #0 + mov r1, #4 + str r2, [sp] + bl MOD76_021D7CC8 + mov r1, #0x19 + add r0, r4, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xe7 + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r2, #0 + ldr r3, _021D7EA0 ; =0x00010200 + add r0, r4, #0 + mov r1, #5 + str r2, [sp] + bl MOD76_021D7CC8 + mov r1, #0x1b + add r0, r4, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xe5 + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r0, #2 + str r0, [sp] + ldr r3, _021D7E9C ; =0x000F0E00 + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl MOD76_021D7CC8 + add sp, #4 + pop {r3, r4, pc} + nop +_021D7E9C: .word 0x000F0E00 +_021D7EA0: .word 0x00010200 + thumb_func_end MOD76_021D7DAC + + thumb_func_start MOD76_021D7EA4 +MOD76_021D7EA4: ; 0x021D7EA4 + push {r3, r4} + ldr r0, [r0] + ldr r1, _021D7EC8 ; =0x0000FFFF + ldr r4, [r0, #0xc] + mov r0, #1 + mov r3, #0 + lsl r0, r0, #8 +_021D7EB2: + ldrh r2, [r4] + cmp r2, r1 + beq _021D7EC0 + add r3, r3, #1 + add r4, r4, #2 + cmp r3, r0 + blo _021D7EB2 +_021D7EC0: + add r0, r3, #0 + pop {r3, r4} + bx lr + nop +_021D7EC8: .word 0x0000FFFF + thumb_func_end MOD76_021D7EA4 + + thumb_func_start MOD76_021D7ECC +MOD76_021D7ECC: ; 0x021D7ECC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + bl MOD76_021D7EA4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r0, #1 + mov r0, #0x61 + lsl r0, r0, #2 + strb r1, [r5, r0] + ldrb r0, [r5, r0] + mov r1, #0x43 + bl FUN_02012838 + mov r1, #0x42 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r2, #0x93 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #0x43 + bl FUN_0200A86C + add r7, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + mov r4, #0 + cmp r0, #0 + bls _021D7F50 + add r6, r4, #0 +_021D7F0E: + ldr r0, [r5] + ldr r0, [r0, #0xc] + ldrh r2, [r0, r6] + ldr r0, _021D7FA4 ; =0x0000FFFF + cmp r2, r0 + beq _021D7F2A + mov r0, #0x42 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r7, #0 + add r3, r2, #0 + bl FUN_02012880 + b _021D7F42 +_021D7F2A: + mov r0, #0x42 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xf8 + mov r2, #0x20 + add r3, r2, #0 + ldr r0, [r5, r0] + ldr r1, [r1] + sub r3, #0x22 + bl FUN_02012880 + b _021D7F50 +_021D7F42: + mov r0, #0x61 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r4, r4, #1 + add r6, r6, #2 + cmp r4, r0 + blo _021D7F0E +_021D7F50: + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r4, _021D7FA8 ; =0x021D8EFC + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0x42 + lsl r0, r0, #2 + ldr r1, [r5, r0] + add r0, #0x7c + str r1, [sp] + add r1, r5, #0 + add r1, #0xd8 + str r1, [sp, #0xc] + ldrb r1, [r5, r0] + add r0, sp, #0 + strh r1, [r0, #0x10] + str r5, [sp, #0x1c] + ldr r3, [r5] + add r0, r2, #0 + ldrh r1, [r3, #0x12] + ldrh r2, [r3, #0x10] + mov r3, #0x43 + bl FUN_020010A8 + mov r1, #0x41 + lsl r1, r1, #2 + str r0, [r5, r1] + add r5, #0xd8 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7FA4: .word 0x0000FFFF +_021D7FA8: .word 0x021D8EFC + thumb_func_end MOD76_021D7ECC + + thumb_func_start MOD76_021D7FAC +MOD76_021D7FAC: ; 0x021D7FAC + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4] + mov r0, #0x41 + add r1, r2, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, #0x12 + add r2, #0x10 + bl FUN_02001300 + mov r0, #0x42 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012870 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD76_021D7FAC + + thumb_func_start MOD76_021D7FD0 +MOD76_021D7FD0: ; 0x021D7FD0 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x13 + add r6, r2, #0 + bl FUN_02001470 + add r4, r0, #0 + cmp r6, #1 + beq _021D7FE8 + ldr r0, _021D8004 ; =0x000005DD + bl FUN_020054C8 +_021D7FE8: + ldr r0, [r4] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _021D7FFA + add r0, r4, #0 + add r1, r5, #0 + bl MOD76_021D800C + pop {r4, r5, r6, pc} +_021D7FFA: + add r0, r4, #0 + add r1, r5, #0 + bl MOD76_021D81AC + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8004: .word 0x000005DD + thumb_func_end MOD76_021D7FD0 + + thumb_func_start MOD76_021D8008 +MOD76_021D8008: ; 0x021D8008 + bx lr + .align 2, 0 + thumb_func_end MOD76_021D8008 + + thumb_func_start MOD76_021D800C +MOD76_021D800C: ; 0x021D800C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r0, #0xa8 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x78 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x88 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x98 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C644 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _021D8050 + b _021D815E +_021D8050: + add r0, r4, #0 + mov r1, #2 + bl FUN_0206AB18 + add r2, r0, #0 + cmp r2, #1 + bhi _021D8072 + mov r1, #0x21 + add r0, r5, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xdf + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200A8E0 + b _021D8080 +_021D8072: + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x1d + mov r3, #3 + bl MOD76_021D7D60 +_021D8080: + mov r0, #2 + str r0, [sp] + ldr r3, _021D81A4 ; =0x00010200 + add r0, r5, #0 + mov r1, #7 + mov r2, #0 + bl MOD76_021D7CC8 + add r0, r4, #0 + mov r1, #4 + bl FUN_0206AB18 + add r2, r0, #0 + bne _021D80B0 + mov r1, #0x21 + add r0, r5, #0 + add r2, r1, #0 + add r0, #0xf8 + add r2, #0xdf + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200A8E0 + b _021D80BE +_021D80B0: + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x1e + mov r3, #3 + bl MOD76_021D7D60 +_021D80BE: + mov r0, #2 + str r0, [sp] + ldr r3, _021D81A4 ; =0x00010200 + add r0, r5, #0 + mov r1, #8 + mov r2, #0 + bl MOD76_021D7CC8 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #0 + bl FUN_0206AB30 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x1f + mov r3, #2 + bl MOD76_021D7D60 + mov r0, #2 + str r0, [sp] + ldr r3, _021D81A4 ; =0x00010200 + add r0, r5, #0 + mov r1, #9 + mov r2, #0 + bl MOD76_021D7CC8 + ldr r2, _021D81A8 ; =0x0000024B + mov r0, #1 + mov r1, #0x1a + mov r3, #0x43 + bl FUN_0200A86C + mov r2, #1 + lsl r2, r2, #8 + ldr r2, [r5, r2] + add r1, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r2, #0 + ldr r3, _021D81A4 ; =0x00010200 + add r0, r5, #0 + mov r1, #0xa + str r2, [sp] + bl MOD76_021D7CC8 + add r0, r6, #0 + bl FUN_0200A8B8 + lsl r1, r4, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl MOD76_021D8BF8 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_0200C644 + add r0, r5, #0 + add r0, #0x28 + bl FUN_02019220 + add r0, r5, #0 + add r0, #0x38 + bl FUN_02019220 + add r0, r5, #0 + add r0, #0x48 + bl FUN_02019220 + add r0, r5, #0 + add r0, #0x58 + bl FUN_02019220 + b _021D817E +_021D815E: + add r0, r5, #0 + add r0, #0x28 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x38 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x48 + bl FUN_0201958C + add r0, r5, #0 + add r0, #0x58 + bl FUN_0201958C +_021D817E: + add r0, r5, #0 + add r0, #0xa8 + bl FUN_02019220 + add r0, r5, #0 + add r0, #0x78 + bl FUN_02019220 + add r0, r5, #0 + add r0, #0x88 + bl FUN_02019220 + add r5, #0x98 + add r0, r5, #0 + bl FUN_02019220 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021D81A4: .word 0x00010200 +_021D81A8: .word 0x0000024B + thumb_func_end MOD76_021D800C + + thumb_func_start MOD76_021D81AC +MOD76_021D81AC: ; 0x021D81AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + add r0, #0xb8 + mov r1, #0 + bl FUN_02019620 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + beq _021D8222 + add r0, r4, #0 + mov r1, #0xa + bl FUN_0206AB18 + bl FUN_0208315C + add r6, r0, #0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc5 + mov r3, #0x43 + bl FUN_0200A86C + mov r2, #1 + lsl r2, r2, #8 + ldr r2, [r5, r2] + add r1, r6, #0 + add r7, r0, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _021D8240 ; =0x00010200 + add r2, r2, #1 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0xb8 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_0200A8B8 + lsl r1, r4, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl MOD76_021D8300 + add r0, r5, #0 + add r0, #0x68 + bl FUN_02019220 + b _021D8232 +_021D8222: + add r0, r5, #0 + lsr r1, r1, #0x10 + bl MOD76_021D8300 + add r0, r5, #0 + add r0, #0x68 + bl FUN_0201958C +_021D8232: + add r5, #0xb8 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8240: .word 0x00010200 + thumb_func_end MOD76_021D81AC + + thumb_func_start MOD76_021D8244 +MOD76_021D8244: ; 0x021D8244 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #5 + lsl r6, r2, #1 + str r0, [sp] + add r4, r1, #0 + mov r0, #1 + add r7, r6, #0 + str r0, [sp, #4] + add r7, #0x22 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + lsl r3, r7, #0x18 + ldr r0, [r5, #4] + mov r1, #2 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r6, #0x23 + str r0, [sp, #8] + mov r0, #0x10 + add r2, r4, #1 + str r0, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r6, #0x18 + ldr r0, [r5, #4] + mov r1, #2 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r2, r4, #0 + str r0, [sp, #8] + mov r0, #0x10 + add r2, #0x20 + str r0, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r7, #0x18 + ldr r0, [r5, #4] + mov r1, #2 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x10 + add r4, #0x21 + str r0, [sp, #0xc] + lsl r2, r4, #0x10 + lsl r3, r6, #0x18 + ldr r0, [r5, #4] + mov r1, #2 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD76_021D8244 + + thumb_func_start MOD76_021D82D8 +MOD76_021D82D8: ; 0x021D82D8 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r4, #0 + mov r6, #0x12 +_021D82E0: + lsl r2, r4, #0x18 + add r0, r5, #0 + add r1, r6, #0 + lsr r2, r2, #0x18 + bl MOD76_021D8244 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #6 + blo _021D82E0 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_0201AC68 + pop {r4, r5, r6, pc} + thumb_func_end MOD76_021D82D8 + + thumb_func_start MOD76_021D8300 +MOD76_021D8300: ; 0x021D8300 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD76_021D82D8 + ldr r0, _021D8350 ; =0x0000FFFF + cmp r4, r0 + beq _021D8344 + add r0, r4, #0 + mov r1, #0xa + bl FUN_0206AB18 + bl FUN_02083114 + mov r1, #0xa + bl _s32_div_f + lsl r0, r0, #0x18 + asr r6, r0, #0x18 + mov r4, #0 + cmp r6, #0 + ble _021D8344 + mov r7, #0xe +_021D832E: + lsl r2, r4, #0x18 + add r0, r5, #0 + add r1, r7, #0 + lsr r2, r2, #0x18 + bl MOD76_021D8244 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r6 + blt _021D832E +_021D8344: + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_0201AC68 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8350: .word 0x0000FFFF + thumb_func_end MOD76_021D8300 + + thumb_func_start MOD76_021D8354 +MOD76_021D8354: ; 0x021D8354 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #0xa + bls _021D8360 + b _021D84D8 +_021D8360: + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D836C: ; jump table + .short _021D8382 - _021D836C - 2 ; case 0 + .short _021D839A - _021D836C - 2 ; case 1 + .short _021D83AE - _021D836C - 2 ; case 2 + .short _021D83C6 - _021D836C - 2 ; case 3 + .short _021D83F2 - _021D836C - 2 ; case 4 + .short _021D841E - _021D836C - 2 ; case 5 + .short _021D844A - _021D836C - 2 ; case 6 + .short _021D8476 - _021D836C - 2 ; case 7 + .short _021D848A - _021D836C - 2 ; case 8 + .short _021D84B6 - _021D836C - 2 ; case 9 + .short _021D84C6 - _021D836C - 2 ; case 10 +_021D8382: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + b _021D84D8 +_021D839A: + bl MOD76_021D8514 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AD5C + b _021D84D8 +_021D83AE: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + b _021D84D8 +_021D83C6: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD76_021D8514 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AD5C + b _021D84D8 +_021D83F2: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD76_021D8514 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AD5C + b _021D84D8 +_021D841E: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD76_021D8524 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AD5C + b _021D84D8 +_021D844A: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD76_021D8514 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AD5C + b _021D84D8 +_021D8476: + bl MOD76_021D8514 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AD5C + b _021D84D8 +_021D848A: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD76_021D8514 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AD5C + b _021D84D8 +_021D84B6: + ldr r2, [r4] + add r0, #0xfc + ldr r0, [r0] + ldr r2, [r2, #4] + mov r1, #2 + bl FUN_0200ABC0 + b _021D84D8 +_021D84C6: + bl MOD76_021D8524 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0 + bl FUN_0200AD5C +_021D84D8: + ldr r1, [r4] + add r0, r4, #0 + ldrb r2, [r1, #0x15] + add r0, #0xf8 + mov r1, #0x2c + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D8510 ; =0x021D8F6C + lsl r2, r5, #2 + add r1, r1, r3 + ldr r0, [r0] + ldr r1, [r2, r1] + bl FUN_0200A914 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + add r0, #0xfc + lsl r1, r1, #8 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + bl FUN_02021A20 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8510: .word 0x021D8F6C + thumb_func_end MOD76_021D8354 + + thumb_func_start MOD76_021D8514 +MOD76_021D8514: ; 0x021D8514 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldrh r1, [r0, #0x12] + ldrh r0, [r0, #0x10] + add r0, r1, r0 + lsl r0, r0, #1 + ldrh r0, [r2, r0] + bx lr + thumb_func_end MOD76_021D8514 + + thumb_func_start MOD76_021D8524 +MOD76_021D8524: ; 0x021D8524 + push {r3, lr} + ldr r1, [r0] + mov r2, #0 + ldr r0, [r1] + ldrb r1, [r1, #0x17] + add r1, #0x36 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD76_021D8524 + + thumb_func_start MOD76_021D853C +MOD76_021D853C: ; 0x021D853C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + add r5, r1, #0 + add r0, #0xc8 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + add r1, r5, #0 + bl MOD76_021D8354 + mov r0, #1 + bl FUN_02002B60 + mov r0, #0 + bl FUN_02002B7C + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02024FF4 + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + ldr r0, _021D858C ; =MOD76_021D8594 + mov r1, #1 + add r2, r1, #0 + str r0, [sp, #8] + add r2, #0xff + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0xc8 + bl FUN_0201BD84 + ldr r1, _021D8590 ; =0x00000185 + strb r0, [r4, r1] + add sp, #0xc + pop {r4, r5, pc} + nop +_021D858C: .word MOD76_021D8594 +_021D8590: .word 0x00000185 + thumb_func_end MOD76_021D853C + + thumb_func_start MOD76_021D8594 +MOD76_021D8594: ; 0x021D8594 + push {r3, lr} + cmp r1, #5 + bhi _021D85D6 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D85A6: ; jump table + .short _021D85D6 - _021D85A6 - 2 ; case 0 + .short _021D85B2 - _021D85A6 - 2 ; case 1 + .short _021D85B8 - _021D85A6 - 2 ; case 2 + .short _021D85BE - _021D85A6 - 2 ; case 3 + .short _021D85C6 - _021D85A6 - 2 ; case 4 + .short _021D85CE - _021D85A6 - 2 ; case 5 +_021D85B2: + bl FUN_02005514 + pop {r3, pc} +_021D85B8: + bl FUN_02005CBC + pop {r3, pc} +_021D85BE: + ldr r0, _021D85DC ; =0x000005E6 + bl FUN_020054C8 + b _021D85D6 +_021D85C6: + ldr r0, _021D85E0 ; =0x00000483 + bl FUN_02005C28 + b _021D85D6 +_021D85CE: + ldr r0, _021D85DC ; =0x000005E6 + bl FUN_02005508 + pop {r3, pc} +_021D85D6: + mov r0, #0 + pop {r3, pc} + nop +_021D85DC: .word 0x000005E6 +_021D85E0: .word 0x00000483 + thumb_func_end MOD76_021D8594 + + thumb_func_start MOD76_021D85E4 +MOD76_021D85E4: ; 0x021D85E4 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021D85EC: + ldr r0, [r5] + add r1, r4, #0 + ldr r0, [r0] + add r1, #0x36 + add r2, r6, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021D8608 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D85EC +_021D8608: + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD76_021D85E4 + + thumb_func_start MOD76_021D860C +MOD76_021D860C: ; 0x021D860C + push {r4, lr} + add r4, r0, #0 + mov r1, #3 + bl MOD76_021D853C + add r0, r4, #0 + bl MOD76_021D85E4 + ldr r1, [r4] + strb r0, [r1, #0x17] + mov r0, #6 + mov r1, #5 + lsl r0, r0, #6 + str r1, [r4, r0] + mov r0, #2 + pop {r4, pc} + thumb_func_end MOD76_021D860C + + thumb_func_start MOD76_021D862C +MOD76_021D862C: ; 0x021D862C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r0, #0xc8 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + mov r1, #0 + bl MOD76_021D8354 + mov r0, #0 + str r0, [sp] + ldr r3, _021D8678 ; =0x0001020F + add r0, r4, #0 + mov r1, #0xc + mov r2, #1 + bl MOD76_021D7CC8 + add r0, r4, #0 + add r0, #0xc8 + bl FUN_02019220 + ldr r1, [r4] + add r0, r4, #0 + ldrh r1, [r1, #0x10] + mov r2, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD76_021D8C88 + add r0, r4, #0 + mov r1, #1 + bl MOD76_021D8CB4 + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D8678: .word 0x0001020F + thumb_func_end MOD76_021D862C + + thumb_func_start MOD76_021D867C +MOD76_021D867C: ; 0x021D867C + ldr r0, [r0] + mov r1, #1 + strb r1, [r0, #0x16] + mov r0, #8 + bx lr + .align 2, 0 + thumb_func_end MOD76_021D867C + + thumb_func_start MOD76_021D8688 +MOD76_021D8688: ; 0x021D8688 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r0, #0xc8 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + mov r1, #0 + bl MOD76_021D8354 + mov r0, #0 + str r0, [sp] + ldr r3, _021D86D4 ; =0x0001020F + add r0, r4, #0 + mov r1, #0xc + mov r2, #1 + bl MOD76_021D7CC8 + add r0, r4, #0 + add r0, #0xc8 + bl FUN_02019220 + ldr r1, [r4] + add r0, r4, #0 + ldrh r1, [r1, #0x10] + mov r2, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD76_021D8C88 + add r0, r4, #0 + mov r1, #1 + bl MOD76_021D8CB4 + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D86D4: .word 0x0001020F + thumb_func_end MOD76_021D8688 + + thumb_func_start MOD76_021D86D8 +MOD76_021D86D8: ; 0x021D86D8 + mov r1, #6 + mov r2, #0xa + lsl r1, r1, #6 + str r2, [r0, r1] + mov r0, #0 + bx lr + thumb_func_end MOD76_021D86D8 + + thumb_func_start MOD76_021D86E4 +MOD76_021D86E4: ; 0x021D86E4 + push {r4, lr} + mov r1, #7 + add r4, r0, #0 + bl MOD76_021D853C + ldr r0, _021D86FC ; =0x00000186 + mov r1, #3 + strb r1, [r4, r0] + sub r0, r0, #6 + str r1, [r4, r0] + mov r0, #2 + pop {r4, pc} + .align 2, 0 +_021D86FC: .word 0x00000186 + thumb_func_end MOD76_021D86E4 + + thumb_func_start MOD76_021D8700 +MOD76_021D8700: ; 0x021D8700 + push {r4, lr} + mov r1, #8 + add r4, r0, #0 + bl MOD76_021D853C + mov r0, #6 + mov r1, #8 + lsl r0, r0, #6 + str r1, [r4, r0] + ldr r0, [r4] + mov r1, #1 + strb r1, [r0, #0x16] + mov r0, #2 + pop {r4, pc} + thumb_func_end MOD76_021D8700 + + thumb_func_start MOD76_021D871C +MOD76_021D871C: ; 0x021D871C + push {r4, lr} + mov r1, #4 + add r4, r0, #0 + bl MOD76_021D853C + ldr r1, _021D8734 ; =0x00000186 + mov r0, #2 + mov r2, #3 + strb r0, [r4, r1] + lsl r1, r2, #7 + str r2, [r4, r1] + pop {r4, pc} + .align 2, 0 +_021D8734: .word 0x00000186 + thumb_func_end MOD76_021D871C + + thumb_func_start MOD76_021D8738 +MOD76_021D8738: ; 0x021D8738 + push {r4, lr} + mov r1, #5 + add r4, r0, #0 + bl MOD76_021D853C + mov r1, #6 + lsl r0, r1, #6 + str r1, [r4, r0] + mov r0, #2 + pop {r4, pc} + thumb_func_end MOD76_021D8738 + + thumb_func_start MOD76_021D874C +MOD76_021D874C: ; 0x021D874C + mov r1, #6 + mov r2, #0xa + lsl r1, r1, #6 + str r2, [r0, r1] + mov r0, #0 + bx lr + thumb_func_end MOD76_021D874C + + thumb_func_start MOD76_021D8758 +MOD76_021D8758: ; 0x021D8758 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + ldr r3, _021D87EC ; =0x021D8E70 + add r2, sp, #0x34 + add r4, r0, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #0x40 + mov r1, #0x43 + bl FUN_0201C24C + mov r0, #0x43 + bl FUN_0200BB14 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_0200BB34 + mov r7, #0x45 + lsl r7, r7, #2 + add r2, sp, #0x14 + ldr r3, _021D87F0 ; =0x021D8EDC + str r0, [r4, r7] + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + ldr r5, _021D87F4 ; =0x021D8E5C + stmia r2!, {r0, r1} + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r6, #0 + str r0, [r3] + sub r0, r7, #4 + ldr r0, [r4, r0] + mov r3, #0x20 + bl FUN_0200BB6C + sub r1, r7, #4 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0xd + bl FUN_0200BBF0 + sub r1, r7, #4 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + add r2, sp, #0x34 + bl FUN_0200BF60 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_021D87EC: .word 0x021D8E70 +_021D87F0: .word 0x021D8EDC +_021D87F4: .word 0x021D8E5C + thumb_func_end MOD76_021D8758 + + thumb_func_start MOD76_021D87F8 +MOD76_021D87F8: ; 0x021D87F8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x46 + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #2 +_021D8804: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xd + blo _021D8804 + mov r1, #0x11 + lsl r1, r1, #4 + ldr r0, [r7, r1] + add r1, r1, #4 + ldr r1, [r7, r1] + bl FUN_0200C398 + mov r0, #0x11 + lsl r0, r0, #4 + ldr r0, [r7, r0] + bl FUN_0200BD04 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD76_021D87F8 + + thumb_func_start MOD76_021D882C +MOD76_021D882C: ; 0x021D882C + push {r3, r4, r5, r6, r7, lr} + mov r7, #1 + mov r6, #0x46 + add r5, r0, #0 + mov r4, #0 + lsl r7, r7, #0xc + lsl r6, r6, #2 +_021D883A: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_020201E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0xd + blo _021D883A + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD76_021D882C + + thumb_func_start MOD76_021D8854 +MOD76_021D8854: ; 0x021D8854 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _021D89D0 ; =0x0000B8A8 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #5 + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _021D89D4 ; =0x0000B8A9 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #8 + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _021D89D8 ; =0x0000B8AA + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #2 + bl FUN_0200C00C + ldr r4, _021D89DC ; =0x0000B8AC + mov r7, #0x45 + lsl r7, r7, #2 + add r6, r4, #6 +_021D88BC: + mov r0, #0x11 + str r4, [sp] + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r1, [r5, r7] + mov r2, #1 + mov r3, #0 + bl FUN_0206E130 + add r4, r4, #1 + cmp r4, r6 + bls _021D88BC + ldr r0, _021D89E0 ; =0x0000B8AB + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #1 + mov r3, #0 + bl FUN_0206E2AC + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, _021D89D0 ; =0x0000B8A8 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #9 + bl FUN_0200C06C + mov r1, #0x11 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + ldr r3, _021D89D4 ; =0x0000B8A9 + mov r2, #1 + bl FUN_0206E164 + mov r0, #0 + str r0, [sp] + ldr r0, _021D89D0 ; =0x0000B8A8 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #4 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, _021D89D4 ; =0x0000B8A9 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #7 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, _021D89D8 ; =0x0000B8AA + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #1 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, _021D89D0 ; =0x0000B8A8 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #3 + bl FUN_0200C13C + mov r0, #0 + str r0, [sp] + ldr r0, _021D89D4 ; =0x0000B8A9 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + mov r3, #6 + bl FUN_0200C13C + mov r3, #0 + mov r1, #0x11 + ldr r0, _021D89D8 ; =0x0000B8AA + str r3, [sp] + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x71 + bl FUN_0200C13C + mov r1, #0x11 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r2, _021D89E0 ; =0x0000B8AB + ldr r1, [r5, r1] + add r3, r2, #0 + bl FUN_0206E1D4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D89D0: .word 0x0000B8A8 +_021D89D4: .word 0x0000B8A9 +_021D89D8: .word 0x0000B8AA +_021D89DC: .word 0x0000B8AC +_021D89E0: .word 0x0000B8AB + thumb_func_end MOD76_021D8854 + + thumb_func_start MOD76_021D89E4 +MOD76_021D89E4: ; 0x021D89E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r2, #0 + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _021D8A00 + add r0, r1, #0 + mov r1, #3 + bl FUN_0206AB18 + add r6, r0, #0 + b _021D8A0C +_021D8A00: + add r0, r1, #0 + mov r1, #0xb + bl FUN_0206AB18 + add r6, r0, #0 + add r6, #0x12 +_021D8A0C: + bl FUN_0206E12C + add r7, r0, #0 + add r0, r6, #0 + bl FUN_0206E0F0 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, _021D8A54 ; =0x0000B8AC + mov r1, #0x11 + add r0, r4, r0 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + add r2, r7, #0 + bl FUN_0200C9D8 + add r0, r6, #0 + bl FUN_0206E114 + add r1, r0, #0 + add r0, r4, #6 + lsl r0, r0, #2 + add r2, r5, r0 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r2, r0] + add r1, r1, #2 + bl FUN_0200C66C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8A54: .word 0x0000B8AC + thumb_func_end MOD76_021D89E4 + + thumb_func_start MOD76_021D8A58 +MOD76_021D8A58: ; 0x021D8A58 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + mov r7, #0x20 + add r5, r6, #0 +_021D8A62: + mov r0, #0x13 + lsl r0, r0, #4 + lsl r2, r7, #0x10 + ldr r0, [r5, r0] + mov r1, #0x98 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r6] + mov r1, #0x61 + lsl r1, r1, #2 + ldrh r0, [r0, #0x12] + ldrb r1, [r6, r1] + add r0, r0, r4 + sub r1, r1, #1 + cmp r0, r1 + blo _021D8A92 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C644 + b _021D8AB4 +_021D8A92: + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_0200C644 + ldr r2, [r6] + add r0, r6, #0 + ldr r1, [r2, #0xc] + ldrh r2, [r2, #0x12] + add r2, r2, r4 + lsl r2, r2, #1 + ldrh r1, [r1, r2] + lsl r2, r4, #0x10 + lsr r2, r2, #0x10 + bl MOD76_021D89E4 +_021D8AB4: + add r4, r4, #1 + add r7, #0x10 + add r5, r5, #4 + cmp r4, #7 + blo _021D8A62 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD76_021D8A58 + + thumb_func_start MOD76_021D8AC0 +MOD76_021D8AC0: ; 0x021D8AC0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r2, [sp] + cmp r1, r2 + bhs _021D8B30 + ldr r0, [sp] + mov r6, #0 + add r0, r0, #6 + lsl r0, r0, #1 + add r4, r5, #0 + str r0, [sp, #4] + add r7, sp, #0xc +_021D8ADA: + mov r0, #0x13 + lsl r0, r0, #4 + add r1, sp, #0xc + ldr r0, [r4, r0] + add r1, #2 + add r2, sp, #0xc + bl FUN_0200C7A0 + mov r0, #0 + ldrsh r0, [r7, r0] + cmp r0, #0x20 + bne _021D8B10 + mov r0, #0x80 + strh r0, [r7] + ldr r0, [r5] + ldr r1, [r0, #0xc] + ldr r0, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, _021D8BF4 ; =0x0000FFFF + cmp r1, r0 + beq _021D8B14 + lsl r2, r6, #0x10 + add r0, r5, #0 + lsr r2, r2, #0x10 + bl MOD76_021D89E4 + b _021D8B14 +_021D8B10: + sub r0, #0x10 + strh r0, [r7] +_021D8B14: + mov r0, #0x13 + mov r1, #2 + mov r2, #0 + lsl r0, r0, #4 + ldrsh r1, [r7, r1] + ldrsh r2, [r7, r2] + ldr r0, [r4, r0] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #7 + blo _021D8ADA + b _021D8B94 +_021D8B30: + ldr r0, [sp] + cmp r1, r0 + bls _021D8BF0 + lsl r0, r0, #1 + mov r6, #0 + add r4, r5, #0 + str r0, [sp, #8] + add r7, sp, #0xc +_021D8B40: + mov r0, #0x13 + lsl r0, r0, #4 + add r1, sp, #0xc + ldr r0, [r4, r0] + add r1, #2 + add r2, sp, #0xc + bl FUN_0200C7A0 + mov r0, #0 + ldrsh r0, [r7, r0] + cmp r0, #0x80 + bne _021D8B76 + mov r0, #0x20 + strh r0, [r7] + ldr r0, [r5] + ldr r1, [r0, #0xc] + ldr r0, [sp, #8] + ldrh r1, [r0, r1] + ldr r0, _021D8BF4 ; =0x0000FFFF + cmp r1, r0 + beq _021D8B7A + lsl r2, r6, #0x10 + add r0, r5, #0 + lsr r2, r2, #0x10 + bl MOD76_021D89E4 + b _021D8B7A +_021D8B76: + add r0, #0x10 + strh r0, [r7] +_021D8B7A: + mov r0, #0x13 + mov r1, #2 + mov r2, #0 + lsl r0, r0, #4 + ldrsh r1, [r7, r1] + ldrsh r2, [r7, r2] + ldr r0, [r4, r0] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #7 + blo _021D8B40 +_021D8B94: + mov r6, #0 + add r4, r5, #0 + add r7, sp, #0xc +_021D8B9A: + mov r0, #0x13 + lsl r0, r0, #4 + add r1, sp, #0xc + ldr r0, [r4, r0] + add r1, #2 + add r2, sp, #0xc + bl FUN_0200C7A0 + mov r0, #0 + ldrsh r1, [r7, r0] + sub r1, #0x20 + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + strh r0, [r7] + mov r0, #0 + ldrsh r1, [r7, r0] + ldr r0, [sp] + add r0, r0, r1 + mov r1, #0x61 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + sub r1, r1, #1 + cmp r0, r1 + blt _021D8BDC + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + b _021D8BE8 +_021D8BDC: + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 +_021D8BE8: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #7 + blo _021D8B9A +_021D8BF0: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8BF4: .word 0x0000FFFF + thumb_func_end MOD76_021D8AC0 + + thumb_func_start MOD76_021D8BF8 +MOD76_021D8BF8: ; 0x021D8BF8 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl FUN_0206AB18 + add r4, r0, #0 + bl FUN_0206E2A8 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0206E278 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, _021D8C48 ; =0x0000B8AB + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + add r2, r6, #0 + bl FUN_0200C9D8 + add r0, r4, #0 + bl FUN_0206E290 + add r1, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r1, #2 + bl FUN_0200C66C + add sp, #8 + pop {r4, r5, r6, pc} + nop +_021D8C48: .word 0x0000B8AB + thumb_func_end MOD76_021D8BF8 + + thumb_func_start MOD76_021D8C4C +MOD76_021D8C4C: ; 0x021D8C4C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl MOD76_021D8758 + add r0, r6, #0 + bl MOD76_021D8854 + ldr r4, _021D8C84 ; =0x021D903C + mov r7, #0 + add r5, r6, #0 +_021D8C60: + mov r0, #0x11 + mov r1, #0x45 + lsl r0, r0, #4 + lsl r1, r1, #2 + ldr r0, [r6, r0] + ldr r1, [r6, r1] + add r2, r4, #0 + bl FUN_0200C154 + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r5, r1] + add r7, r7, #1 + add r4, #0x34 + add r5, r5, #4 + cmp r7, #0xd + blo _021D8C60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8C84: .word 0x021D903C + thumb_func_end MOD76_021D8C4C + + thumb_func_start MOD76_021D8C88 +MOD76_021D8C88: ; 0x021D8C88 + push {r3, r4, r5, lr} + add r3, r1, #0 + add r5, r0, #0 + add r4, r2, #0 + mov r0, #0x4a + lsl r2, r3, #4 + lsl r0, r0, #2 + add r2, #0x20 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + mov r1, #0xc4 + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_0200C66C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD76_021D8C88 + + thumb_func_start MOD76_021D8CB4 +MOD76_021D8CB4: ; 0x021D8CB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_0200C644 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_0200C644 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD76_021D8CB4 + + thumb_func_start MOD76_021D8CD4 +MOD76_021D8CD4: ; 0x021D8CD4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldrh r0, [r0, #0x12] + cmp r0, #0 + beq _021D8CEE + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + b _021D8CFA +_021D8CEE: + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 +_021D8CFA: + ldr r0, [r4] + ldrh r0, [r0, #0x12] + add r2, r0, #7 + mov r0, #0x61 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + cmp r2, r1 + bge _021D8D16 + sub r0, #0x60 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + pop {r4, pc} +_021D8D16: + sub r0, #0x60 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD76_021D8CD4 + + thumb_func_start MOD76_021D8D24 +MOD76_021D8D24: ; 0x021D8D24 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD76_021D8D24 + + thumb_func_start MOD76_021D8D44 +MOD76_021D8D44: ; 0x021D8D44 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0x43 + bl FUN_02079A70 + mov r0, #6 + mov r1, #0xb + lsl r0, r0, #6 + str r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD76_021D8D44 + + thumb_func_start MOD76_021D8D5C +MOD76_021D8D5C: ; 0x021D8D5C + push {r3, r4, lr} + sub sp, #4 + ldr r2, _021D8DE4 ; =0x021D8E48 + add r1, sp, #0 + ldrb r3, [r2] + add r4, r0, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + ldrb r2, [r2, #2] + strb r3, [r1, #1] + strb r2, [r1, #2] + bl MOD76_021D76B8 + ldr r0, [r4] + mov r1, #0x53 + ldr r0, [r0] + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4] + ldr r2, [r0, #8] + add r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #0 + add r0, #0x11 + strb r2, [r4, r0] + add r0, r1, #0 + add r0, #0x14 + strb r2, [r4, r0] + mov r0, #1 + add r1, #0x13 + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD76_021D8514 + mov r1, #0x59 + lsl r1, r1, #2 + strh r0, [r4, r1] + mov r2, #2 + sub r0, r1, #6 + strb r2, [r4, r0] + add r0, r1, #0 + mov r2, #1 + add r0, #0x14 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #0 + add r0, #0x10 + sub r1, #0x18 + str r2, [r4, r0] + add r0, r4, r1 + add r1, sp, #0 + bl FUN_0207B000 + mov r1, #0x53 + lsl r1, r1, #2 + ldr r0, _021D8DE8 ; =0x020FA6E8 + add r1, r4, r1 + mov r2, #0x43 + bl FUN_02006234 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xc + add sp, #4 + pop {r3, r4, pc} + nop +_021D8DE4: .word 0x021D8E48 +_021D8DE8: .word 0x020FA6E8 + thumb_func_end MOD76_021D8D5C + + thumb_func_start MOD76_021D8DEC +MOD76_021D8DEC: ; 0x021D8DEC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02006290 + cmp r0, #0 + beq _021D8E3E + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02006260 + add r0, r4, #0 + bl MOD76_021D7638 + ldr r1, [r4] + add r0, r4, #0 + ldrh r1, [r1, #0x10] + mov r2, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD76_021D8C88 + add r0, r4, #0 + mov r1, #0 + bl MOD76_021D8CB4 + add r0, r4, #0 + bl MOD76_021D8D24 + ldr r0, _021D8E44 ; =0x00000162 + ldr r1, [r4] + ldrb r2, [r4, r0] + add r0, #0x1e + strb r2, [r1, #0x17] + mov r1, #7 + str r1, [r4, r0] + mov r0, #0 + pop {r4, pc} +_021D8E3E: + mov r0, #0xc + pop {r4, pc} + nop +_021D8E44: .word 0x00000162 + thumb_func_end MOD76_021D8DEC + + .section .rodata + ; 0x021D8E48 + .incbin "baserom.nds", 0x2D7568, 0x498 diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s new file mode 100644 index 00000000..fdbd40cd --- /dev/null +++ b/arm9/modules/77/asm/module_77.s @@ -0,0 +1,3214 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD77_021D74E0 +MOD77_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D75D4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D75D8 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #3 + mov r1, #0x32 + lsl r2, r2, #7 + bl FUN_0201681C + ldr r1, _021D75DC ; =0x0000C32C + add r0, r4, #0 + mov r2, #0x32 + bl FUN_02006268 + ldr r2, _021D75DC ; =0x0000C32C + mov r1, #0 + add r5, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x32 + str r0, [r5] + ldr r0, _021D75E0 ; =0x020ECAC4 + ldrb r0, [r0] + cmp r0, #1 + bne _021D753E + mov r1, #1 + b _021D7540 +_021D753E: + mov r1, #0 +_021D7540: + ldr r0, _021D75E4 ; =0x0000C2F0 + str r1, [r5, r0] + add r0, r4, #0 + bl FUN_0200628C + add r4, r0, #0 + bl FUN_02029AFC + str r0, [r5, #4] + bl FUN_02029B38 + ldr r1, _021D75E8 ; =0x0000C314 + str r0, [r5, r1] + ldr r0, [r5, #4] + bl FUN_02029B3C + ldr r1, _021D75EC ; =0x0000C318 + str r0, [r5, r1] + ldr r0, [r5, #4] + bl FUN_02029C00 + ldr r1, _021D75F0 ; =0x0000C324 + str r0, [r5, r1] + add r0, r4, #0 + bl LoadPlayerDataAddress + str r0, [r5, #8] + bl MOD77_021D7C24 + bl MOD77_021D7C44 + ldr r0, [r5] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201B2EC + ldr r0, [r5] + bl FUN_02016B94 + ldr r1, _021D75F4 ; =0x0000C010 + str r0, [r5, r1] + bl FUN_0201E788 + bl FUN_0201BD5C + ldr r2, [r5] + mov r0, #8 + mov r1, #0x40 + bl FUN_0200AA90 + ldr r1, _021D75F8 ; =0x0000C070 + str r0, [r5, r1] + ldr r0, [r5] + bl FUN_0201EB64 + ldr r1, _021D75FC ; =0x0000C2CC + str r0, [r5, r1] + mov r0, #0 + add r1, #0x1c + str r0, [r5, r1] + ldr r0, _021D7600 ; =0x021C4918 + mov r1, #1 + strb r1, [r0, #5] + bl FUN_0201E7A0 + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r5, #0 + bl MOD77_021D7C64 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D75D4: .word 0xFFFFE0FF +_021D75D8: .word 0x04001000 +_021D75DC: .word 0x0000C32C +_021D75E0: .word 0x020ECAC4 +_021D75E4: .word 0x0000C2F0 +_021D75E8: .word 0x0000C314 +_021D75EC: .word 0x0000C318 +_021D75F0: .word 0x0000C324 +_021D75F4: .word 0x0000C010 +_021D75F8: .word 0x0000C070 +_021D75FC: .word 0x0000C2CC +_021D7600: .word 0x021C4918 + thumb_func_end MOD77_021D74E0 + + thumb_func_start MOD77_021D7604 +MOD77_021D7604: ; 0x021D7604 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + mov r7, #0 + cmp r1, #0x12 + bls _021D761A + b _021D7B66 +_021D761A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7626: ; jump table + .short _021D764C - _021D7626 - 2 ; case 0 + .short _021D76A8 - _021D7626 - 2 ; case 1 + .short _021D76B6 - _021D7626 - 2 ; case 2 + .short _021D76D6 - _021D7626 - 2 ; case 3 + .short _021D76FA - _021D7626 - 2 ; case 4 + .short _021D7744 - _021D7626 - 2 ; case 5 + .short _021D776C - _021D7626 - 2 ; case 6 + .short _021D77A2 - _021D7626 - 2 ; case 7 + .short _021D77DE - _021D7626 - 2 ; case 8 + .short _021D7838 - _021D7626 - 2 ; case 9 + .short _021D7886 - _021D7626 - 2 ; case 10 + .short _021D78DC - _021D7626 - 2 ; case 11 + .short _021D78EE - _021D7626 - 2 ; case 12 + .short _021D7916 - _021D7626 - 2 ; case 13 + .short _021D7964 - _021D7626 - 2 ; case 14 + .short _021D7A32 - _021D7626 - 2 ; case 15 + .short _021D7B0E - _021D7626 - 2 ; case 16 + .short _021D7B1C - _021D7626 - 2 ; case 17 + .short _021D7B3E - _021D7626 - 2 ; case 18 +_021D764C: + ldr r2, _021D7968 ; =0x0000013E + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + ldr r1, _021D796C ; =0x0000C060 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD77_021D8814 + add r0, r4, #0 + bl MOD77_021D7FAC + add r0, r7, #0 + ldr r1, _021D7970 ; =0x0000C2EC + add r3, r0, #0 + str r0, [r4, r1] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r2, [r4] + str r2, [sp, #8] + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + mov r0, #1 + str r0, [r5] + b _021D7B66 +_021D76A8: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7780 + mov r0, #2 + str r0, [r5] + b _021D7B66 +_021D76B6: + add r1, r7, #0 + mov r2, #1 + bl MOD77_021D8294 + cmp r0, #1 + bne _021D7780 + ldr r0, _021D7974 ; =0x0000C314 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D76D0 + mov r0, #3 + str r0, [r5] + b _021D7B66 +_021D76D0: + mov r0, #0xe + str r0, [r5] + b _021D7B66 +_021D76D6: + mov r1, #1 + add r2, r1, #0 + bl MOD77_021D8294 + cmp r0, #1 + bne _021D7780 + ldr r0, _021D7978 ; =0x021D8F64 + ldr r1, _021D797C ; =0x0000C024 + str r0, [sp] + ldr r2, _021D7980 ; =0x021D8F18 + ldr r3, _021D7984 ; =0x021D8FB4 + add r0, r4, #0 + add r1, r4, r1 + bl MOD77_021D8370 + mov r0, #4 + str r0, [r5] + b _021D7B66 +_021D76FA: + ldr r0, _021D7988 ; =0x0000C054 + ldr r0, [r4, r0] + bl FUN_02001204 + add r6, r0, #0 + sub r0, r7, #1 + cmp r6, r0 + beq _021D7780 + add r0, r4, #0 + bl MOD77_021D84D8 + ldr r0, _021D798C ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #2 + cmp r0, #4 + bhi _021D7732 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7728: ; jump table + .short _021D773E - _021D7728 - 2 ; case 0 + .short _021D7732 - _021D7728 - 2 ; case 1 + .short _021D7732 - _021D7728 - 2 ; case 2 + .short _021D7738 - _021D7728 - 2 ; case 3 + .short _021D773E - _021D7728 - 2 ; case 4 +_021D7732: + mov r0, #0xe + str r0, [r5] + b _021D7B66 +_021D7738: + mov r0, #5 + str r0, [r5] + b _021D7B66 +_021D773E: + mov r0, #0x11 + str r0, [r5] + b _021D7B66 +_021D7744: + mov r1, #2 + mov r2, #1 + bl MOD77_021D8294 + cmp r0, #1 + bne _021D7780 + ldr r0, [r4] + ldr r1, _021D7990 ; =0x021D8F38 + str r0, [sp] + ldr r0, _021D7994 ; =0x0000C010 + ldr r2, _021D7998 ; =0x000001D9 + ldr r0, [r4, r0] + mov r3, #7 + bl FUN_02002198 + ldr r1, _021D799C ; =0x0000C05C + str r0, [r4, r1] + mov r0, #6 + str r0, [r5] + b _021D7B66 +_021D776C: + ldr r0, _021D799C ; =0x0000C05C + ldr r1, [r4] + ldr r0, [r4, r0] + bl FUN_020021AC + cmp r0, #0 + beq _021D7782 + sub r1, r7, #2 + cmp r0, r1 + beq _021D779C +_021D7780: + b _021D7B66 +_021D7782: + ldr r0, _021D79A0 ; =0x0000C2F0 + ldr r1, [r4, r0] + cmp r1, #1 + bne _021D7796 + mov r1, #0x67 + add r0, #0x2c + str r1, [r4, r0] + mov r0, #9 + str r0, [r5] + b _021D7B66 +_021D7796: + mov r0, #7 + str r0, [r5] + b _021D7B66 +_021D779C: + mov r0, #3 + str r0, [r5] + b _021D7B66 +_021D77A2: + mov r1, #3 + mov r2, #1 + bl MOD77_021D8294 + cmp r0, #1 + bne _021D77EE + ldr r1, _021D79A4 ; =0x0000C31C + add r0, r7, #0 + str r0, [r4, r1] + bl FUN_02088DA0 + add r6, r0, #0 + add r0, r7, #0 + bl FUN_02088DBC + mov r1, #0x99 + lsl r1, r1, #2 + str r1, [sp] + ldr r1, _021D797C ; =0x0000C024 + str r6, [sp, #4] + str r0, [sp, #8] + ldr r2, _021D79A8 ; =0x021D8F20 + ldr r3, _021D79AC ; =0x021D8FD4 + add r0, r4, #0 + add r1, r4, r1 + bl MOD77_021D8418 + mov r0, #8 + str r0, [r5] + b _021D7B66 +_021D77DE: + ldr r0, _021D7988 ; =0x0000C054 + ldr r0, [r4, r0] + bl FUN_02001204 + add r6, r0, #0 + sub r0, r7, #1 + cmp r6, r0 + bne _021D77F0 +_021D77EE: + b _021D7B66 +_021D77F0: + add r0, r4, #0 + bl MOD77_021D84D8 + ldr r0, _021D798C ; =0x000005DC + bl FUN_020054C8 + sub r0, r7, #2 + cmp r6, r0 + beq _021D780A + add r0, r7, #0 + bl FUN_02088DA0 + ldrb r6, [r0, r6] +_021D780A: + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + beq _021D7832 + ldr r0, _021D79A4 ; =0x0000C31C + str r6, [r4, r0] + ldr r0, [r4, r0] + bl MOD77_021D8F04 + cmp r0, #1 + bne _021D7826 + mov r0, #9 + str r0, [r5] + b _021D7B66 +_021D7826: + ldr r0, _021D79B0 ; =0x0000C320 + mov r1, #0 + str r1, [r4, r0] + mov r0, #0xb + str r0, [r5] + b _021D7B66 +_021D7832: + mov r0, #3 + str r0, [r5] + b _021D7B66 +_021D7838: + mov r1, #4 + mov r2, #1 + bl MOD77_021D8294 + cmp r0, #1 + bne _021D792A + ldr r0, _021D79B0 ; =0x0000C320 + add r1, r7, #0 + str r1, [r4, r0] + sub r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02088D20 + add r6, r0, #0 + bl FUN_02088D4C + str r0, [sp, #0xc] + add r0, r6, #0 + bl FUN_02088DA0 + str r0, [sp, #0x10] + add r0, r6, #0 + bl FUN_02088DBC + ldr r1, [sp, #0xc] + ldr r2, _021D79A8 ; =0x021D8F20 + str r1, [sp] + ldr r1, [sp, #0x10] + ldr r3, _021D79AC ; =0x021D8FD4 + str r1, [sp, #4] + ldr r1, _021D797C ; =0x0000C024 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r4, r1 + bl MOD77_021D8418 + mov r0, #0xa + str r0, [r5] + b _021D7B66 +_021D7886: + ldr r0, _021D7988 ; =0x0000C054 + ldr r0, [r4, r0] + bl FUN_02001204 + add r6, r0, #0 + sub r0, r7, #1 + cmp r6, r0 + beq _021D792A + add r0, r4, #0 + bl MOD77_021D84D8 + ldr r0, _021D798C ; =0x000005DC + bl FUN_020054C8 + sub r0, r7, #2 + cmp r6, r0 + beq _021D78B6 + ldr r0, _021D79A4 ; =0x0000C31C + ldr r0, [r4, r0] + bl FUN_02088D20 + bl FUN_02088DA0 + ldrb r6, [r0, r6] +_021D78B6: + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + beq _021D78C8 + ldr r0, _021D79B0 ; =0x0000C320 + str r6, [r4, r0] + mov r0, #0xb + str r0, [r5] + b _021D7B66 +_021D78C8: + ldr r0, _021D79A0 ; =0x0000C2F0 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021D78D6 + mov r0, #3 + str r0, [r5] + b _021D7B66 +_021D78D6: + mov r0, #7 + str r0, [r5] + b _021D7B66 +_021D78DC: + ldr r2, _021D79A4 ; =0x0000C31C + ldr r1, [r4, r2] + add r2, r2, #4 + ldr r2, [r4, r2] + bl MOD77_021D85E0 + mov r0, #0xc + str r0, [r5] + b _021D7B66 +_021D78EE: + mov r1, #5 + mov r2, #1 + bl MOD77_021D8294 + cmp r0, #1 + bne _021D792A + ldr r0, [r4] + ldr r1, _021D7990 ; =0x021D8F38 + str r0, [sp] + ldr r0, _021D7994 ; =0x0000C010 + ldr r2, _021D7998 ; =0x000001D9 + ldr r0, [r4, r0] + mov r3, #7 + bl FUN_02002198 + ldr r1, _021D799C ; =0x0000C05C + str r0, [r4, r1] + mov r0, #0xd + str r0, [r5] + b _021D7B66 +_021D7916: + ldr r0, _021D799C ; =0x0000C05C + ldr r1, [r4] + ldr r0, [r4, r0] + bl FUN_020021AC + cmp r0, #0 + beq _021D792C + sub r1, r7, #2 + cmp r0, r1 + beq _021D7958 +_021D792A: + b _021D7B66 +_021D792C: + add r0, r4, #0 + bl MOD77_021D8698 + ldr r2, _021D79A4 ; =0x0000C31C + ldr r0, [r4, #4] + ldr r1, [r4, r2] + add r2, r2, #4 + ldr r2, [r4, r2] + bl FUN_02029B08 + ldr r0, _021D79A4 ; =0x0000C31C + add r1, r0, #0 + ldr r2, [r4, r0] + sub r1, #8 + str r2, [r4, r1] + add r1, r0, #4 + ldr r1, [r4, r1] + sub r0, r0, #4 + str r1, [r4, r0] + mov r0, #0xe + str r0, [r5] + b _021D7B66 +_021D7958: + add r0, r4, #0 + bl MOD77_021D8698 + mov r0, #3 + str r0, [r5] + b _021D7B66 +_021D7964: + ldr r1, _021D79A0 ; =0x0000C2F0 + b _021D79B4 + .align 2, 0 +_021D7968: .word 0x0000013E +_021D796C: .word 0x0000C060 +_021D7970: .word 0x0000C2EC +_021D7974: .word 0x0000C314 +_021D7978: .word 0x021D8F64 +_021D797C: .word 0x0000C024 +_021D7980: .word 0x021D8F18 +_021D7984: .word 0x021D8FB4 +_021D7988: .word 0x0000C054 +_021D798C: .word 0x000005DC +_021D7990: .word 0x021D8F38 +_021D7994: .word 0x0000C010 +_021D7998: .word 0x000001D9 +_021D799C: .word 0x0000C05C +_021D79A0: .word 0x0000C2F0 +_021D79A4: .word 0x0000C31C +_021D79A8: .word 0x021D8F20 +_021D79AC: .word 0x021D8FD4 +_021D79B0: .word 0x0000C320 +_021D79B4: + ldr r0, [r4, r1] + cmp r0, #1 + bne _021D79CA + add r0, r1, #0 + add r0, #0x34 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D79CA + add r0, r1, #4 + strh r7, [r4, r0] + b _021D79D0 +_021D79CA: + ldr r0, _021D7B74 ; =0x0000C2F4 + mov r1, #1 + strh r1, [r4, r0] +_021D79D0: + add r0, r4, #0 + bl MOD77_021D8914 + add r0, r4, #0 + bl MOD77_021D7DCC + add r0, r4, #0 + bl MOD77_021D8970 + add r0, r4, #0 + bl MOD77_021D89F4 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + ldr r0, _021D7B78 ; =0x0000C014 + mov r2, #0 + add r0, r4, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, _021D7B7C ; =0x0000C034 + ldr r2, _021D7B80 ; =0x000001D9 + add r0, r4, r0 + mov r1, #0 + mov r3, #7 + bl FUN_0200CCA4 + ldr r0, _021D7B84 ; =0x0000C314 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7A1A + add r0, r4, #0 + bl MOD77_021D8510 +_021D7A1A: + add r0, r4, #0 + bl MOD77_021D86B4 + ldr r0, _021D7B88 ; =0x0000C328 + mov r1, #0 + str r1, [r4, r0] + mov r1, #1 + sub r0, #0x40 + str r1, [r4, r0] + mov r0, #0xf + str r0, [r5] + b _021D7B66 +_021D7A32: + ldr r1, _021D7B8C ; =0x0000C2D8 + ldrh r6, [r4, r1] + bl MOD77_021D7E24 + ldr r0, _021D7B90 ; =0x021C48B8 + mov r3, #2 + ldr r1, [r0, #0x48] + add r0, r1, #0 + tst r0, r3 + bne _021D7A4E + ldr r0, _021D7B94 ; =0x0000C2F8 + ldr r2, [r4, r0] + tst r2, r3 + beq _021D7A94 +_021D7A4E: + ldr r0, _021D7B7C ; =0x0000C034 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _021D7B98 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + ldr r0, _021D7B78 ; =0x0000C014 + mov r2, #0 + add r0, r4, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, _021D7B84 ; =0x0000C314 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021D7A88 + mov r1, #2 + sub r0, #0x2c + str r1, [r4, r0] + mov r0, #3 + str r0, [r5] + b _021D7B66 +_021D7A88: + add r0, r4, #0 + bl MOD77_021D8698 + mov r0, #0x11 + str r0, [r5] + b _021D7B66 +_021D7A94: + lsl r2, r3, #9 + tst r2, r1 + beq _021D7AC0 + add r2, r0, #0 + add r2, #0x30 + ldr r2, [r4, r2] + cmp r2, #0 + bne _021D7AC0 + mov r1, #1 + add r0, #0x30 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD77_021D86B4 + ldr r0, _021D7B88 ; =0x0000C328 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021D7B66 + ldr r0, _021D7B98 ; =0x000005DD + bl FUN_020054C8 + b _021D7B66 +_021D7AC0: + ldr r0, _021D7B9C ; =0x00000403 + tst r0, r1 + beq _021D7ADA + ldr r0, _021D7B88 ; =0x0000C328 + ldr r2, [r4, r0] + cmp r2, #1 + bne _021D7ADA + mov r1, #0 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD77_021D86B4 + b _021D7B66 +_021D7ADA: + ldr r2, _021D7B90 ; =0x021C48B8 + add r0, r4, #0 + ldr r2, [r2, #0x44] + bl MOD77_021D8B20 + cmp r0, #1 + bne _021D7AFA + ldr r0, _021D7B88 ; =0x0000C328 + ldr r1, [r4, r0] + cmp r1, #1 + bne _021D7AFA + mov r1, #0 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD77_021D86B4 +_021D7AFA: + ldr r0, _021D7B8C ; =0x0000C2D8 + ldrh r0, [r4, r0] + cmp r6, r0 + beq _021D7B66 + mov r0, #0x10 + str r0, [r5] + ldr r0, _021D7B98 ; =0x000005DD + bl FUN_020054C8 + b _021D7B66 +_021D7B0E: + bl MOD77_021D8CF8 + cmp r0, #1 + bne _021D7B66 + mov r0, #0xf + str r0, [r5] + b _021D7B66 +_021D7B1C: + ldr r0, _021D7BA0 ; =0x0000C2EC + add r1, r7, #0 + str r7, [r4, r0] + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r7, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r3, r7, #0 + bl FUN_0200E1D0 + mov r0, #0x12 + str r0, [r5] + b _021D7B66 +_021D7B3E: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7B66 + ldr r0, _021D7BA4 ; =0x0000C2E8 + mov r1, #1 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD77_021D8248 + add r0, r4, #0 + bl MOD77_021D88D0 + ldr r0, _021D7BA8 ; =0x0000C060 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + add r0, r7, #0 + str r0, [r5] + mov r7, #1 +_021D7B66: + add r0, r4, #0 + bl MOD77_021D8D84 + add r0, r7, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D7B74: .word 0x0000C2F4 +_021D7B78: .word 0x0000C014 +_021D7B7C: .word 0x0000C034 +_021D7B80: .word 0x000001D9 +_021D7B84: .word 0x0000C314 +_021D7B88: .word 0x0000C328 +_021D7B8C: .word 0x0000C2D8 +_021D7B90: .word 0x021C48B8 +_021D7B94: .word 0x0000C2F8 +_021D7B98: .word 0x000005DD +_021D7B9C: .word 0x00000403 +_021D7BA0: .word 0x0000C2EC +_021D7BA4: .word 0x0000C2E8 +_021D7BA8: .word 0x0000C060 + thumb_func_end MOD77_021D7604 + + thumb_func_start MOD77_021D7BAC +MOD77_021D7BAC: ; 0x021D7BAC + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + mov r0, #4 + mov r1, #0 + ldr r5, [r4] + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + ldr r0, _021D7C14 ; =0x0000C2CC + ldr r0, [r4, r0] + bl FUN_0201EB70 + ldr r0, _021D7C18 ; =0x0000C070 + ldr r0, [r4, r0] + bl FUN_0200AB18 + bl FUN_0201B398 + ldr r0, _021D7C1C ; =0x0000C010 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r6, #0 + bl FUN_0200627C + add r0, r5, #0 + bl FUN_020168D0 + ldr r0, _021D7C20 ; =0x021C4918 + mov r1, #0 + strb r1, [r0, #5] + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D7C14: .word 0x0000C2CC +_021D7C18: .word 0x0000C070 +_021D7C1C: .word 0x0000C010 +_021D7C20: .word 0x021C4918 + thumb_func_end MOD77_021D7BAC + + thumb_func_start MOD77_021D7C24 +MOD77_021D7C24: ; 0x021D7C24 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7C40 ; =0x021D9084 + add r3, sp, #0 + mov r2, #5 +_021D7C2E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7C2E + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7C40: .word 0x021D9084 + thumb_func_end MOD77_021D7C24 + + thumb_func_start MOD77_021D7C44 +MOD77_021D7C44: ; 0x021D7C44 + push {r4, lr} + sub sp, #0x10 + ldr r4, _021D7C60 ; =0x021D8F54 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D7C60: .word 0x021D8F54 + thumb_func_end MOD77_021D7C44 + + thumb_func_start MOD77_021D7C64 +MOD77_021D7C64: ; 0x021D7C64 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + mov r2, #0 + str r0, [sp, #8] + str r2, [r0, #0xc] + str r2, [sp] + add r0, sp, #0x20 + str r0, [sp, #4] + ldr r3, [sp, #8] + mov r0, #0x66 + ldr r3, [r3] + mov r1, #0x12 + bl FUN_02006D18 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + mov r1, #6 + bl _u32_div_f + add r7, r0, #0 + ldr r0, [sp, #0x18] + mov r5, #1 + add r4, r0, #6 + cmp r7, #1 + ble _021D7CCA + ldr r6, [sp, #8] + add r6, #0xc +_021D7C9A: + ldrh r0, [r4] + cmp r0, #2 + beq _021D7CC2 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #8] + mov r2, #2 + mov r3, #4 + add r1, r0, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r1, #0xc] + bl MOD77_021D7D58 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] +_021D7CC2: + add r5, r5, #1 + add r4, r4, #6 + cmp r5, r7 + blt _021D7C9A +_021D7CCA: + ldr r0, [sp, #0x18] + bl FUN_02016A18 + mov r7, #1 + bl FUN_02088D1C + str r0, [sp, #0x10] + cmp r0, #1 + ble _021D7D52 + ldr r6, [sp, #8] + add r6, #0xc +_021D7CE0: + add r0, r7, #0 + bl FUN_02088D84 + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + ldr r3, [sp, #8] + mov r0, #0x66 + ldr r3, [r3] + mov r2, #0 + bl FUN_02006D18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + mov r5, #1 + lsr r0, r0, #2 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r4, r0, #4 + ldr r0, [sp, #0xc] + cmp r0, #1 + ble _021D7D44 +_021D7D10: + add r0, r7, #0 + bl FUN_02088D68 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [sp, #8] + mov r2, #0 + mov r3, #2 + add r1, r0, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r1, #0xc] + bl MOD77_021D7D58 + ldr r0, [r6] + add r5, r5, #1 + add r0, r0, #1 + str r0, [r6] + ldr r0, [sp, #0xc] + add r4, r4, #4 + cmp r5, r0 + blt _021D7D10 +_021D7D44: + ldr r0, [sp, #0x14] + bl FUN_02016A18 + ldr r0, [sp, #0x10] + add r7, r7, #1 + cmp r7, r0 + blt _021D7CE0 +_021D7D52: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD77_021D7C64 + + thumb_func_start MOD77_021D7D58 +MOD77_021D7D58: ; 0x021D7D58 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r5, _021D7DC8 ; =0x021D903C + add r7, r2, #0 + add r6, r3, #0 + add r4, r0, #0 + mov ip, r1 + add r3, sp, #0xc + mov r2, #4 +_021D7D6A: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7D6A + ldr r0, [r5] + mov r1, #0x30 + str r0, [r3] + mov r0, ip + add r5, r0, #0 + mul r5, r1 + add r0, r4, r5 + strh r7, [r0, #0x10] + strh r6, [r0, #0x12] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0xc + add r1, sp, #0 + str r7, [sp] + str r6, [sp, #4] + bl MOD77_021D8AA8 + add r3, r4, r5 + add r6, sp, #0xc + add r3, #0x14 + mov r2, #4 +_021D7D9C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7D9C + ldr r0, [r6] + add r2, sp, #0x38 + str r0, [r3] + ldrh r1, [r2, #0x10] + ldrh r2, [r2, #0x14] + ldr r0, [r4, #4] + bl FUN_02029B40 + add r2, r4, r5 + strh r0, [r2, #0x38] + add r0, sp, #0x38 + ldrh r1, [r0, #0x10] + strh r1, [r2, #0x3a] + ldrh r0, [r0, #0x14] + strh r0, [r2, #0x3c] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7DC8: .word 0x021D903C + thumb_func_end MOD77_021D7D58 + + thumb_func_start MOD77_021D7DCC +MOD77_021D7DCC: ; 0x021D7DCC + push {r4, r5, r6, r7} + ldr r1, [r0, #0xc] + mov r4, #0 + cmp r1, #0 + bls _021D7E0A + ldr r1, _021D7E10 ; =0x0000C318 + add r5, r0, #0 + mov r3, #3 + sub r2, r1, #4 +_021D7DDE: + ldrh r6, [r5, #0x3a] + ldr r7, [r0, r2] + cmp r7, r6 + bne _021D7E00 + ldrh r6, [r5, #0x3c] + ldr r7, [r0, r1] + cmp r7, r6 + bne _021D7E00 + strh r3, [r5, #0x38] + mov r6, #0x10 + ldrsh r7, [r5, r6] + ldr r6, _021D7E14 ; =0x0000C2B4 + str r7, [r0, r6] + mov r6, #0x12 + ldrsh r7, [r5, r6] + ldr r6, _021D7E18 ; =0x0000C2B8 + str r7, [r0, r6] +_021D7E00: + ldr r6, [r0, #0xc] + add r4, r4, #1 + add r5, #0x30 + cmp r4, r6 + blo _021D7DDE +_021D7E0A: + pop {r4, r5, r6, r7} + bx lr + nop +_021D7E10: .word 0x0000C318 +_021D7E14: .word 0x0000C2B4 +_021D7E18: .word 0x0000C2B8 + thumb_func_end MOD77_021D7DCC + + thumb_func_start MOD77_021D7E1C +MOD77_021D7E1C: ; 0x021D7E1C + ldr r3, _021D7E20 ; =FUN_02088D20 + bx r3 + .align 2, 0 +_021D7E20: .word FUN_02088D20 + thumb_func_end MOD77_021D7E1C + + thumb_func_start MOD77_021D7E24 +MOD77_021D7E24: ; 0x021D7E24 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, _021D7F2C ; =0x0000C2F8 + mov r1, #0 + str r1, [r4, r0] + ldr r1, _021D7F30 ; =0x021C48F8 + ldrh r2, [r1, #0x20] + cmp r2, #0 + beq _021D7E86 + ldrh r2, [r1, #0x1c] + cmp r2, #0xc8 + blo _021D7E54 + cmp r2, #0xf8 + bhi _021D7E54 + ldrh r1, [r1, #0x1e] + cmp r1, #0xa8 + blo _021D7E54 + cmp r1, #0xb8 + bhi _021D7E54 + mov r1, #2 + add sp, #0x18 + str r1, [r4, r0] + pop {r4, pc} +_021D7E54: + ldr r0, _021D7F34 ; =0x0000C2FC + mov r2, #0 + add r1, r0, #0 + str r2, [r4, r0] + add r1, #0xc + str r2, [r4, r1] + add r1, r0, #0 + add r1, #0x10 + str r2, [r4, r1] + add r1, r0, #0 + add r1, #0x14 + str r2, [r4, r1] + sub r1, r0, #4 + str r2, [r4, r1] + ldr r2, _021D7F30 ; =0x021C48F8 + add r1, r0, #4 + ldrh r3, [r2, #0x1c] + str r3, [r4, r1] + add r1, r0, #0 + ldrh r2, [r2, #0x1e] + add r1, #8 + add r0, #0x14 + str r2, [r4, r1] + mov r1, #4 + str r1, [r4, r0] +_021D7E86: + ldr r0, _021D7F30 ; =0x021C48F8 + ldrh r0, [r0, #0x22] + cmp r0, #0 + beq _021D7F02 + ldr r1, _021D7F34 ; =0x0000C2FC + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D7E9E + cmp r2, #1 + beq _021D7EBA + add sp, #0x18 + pop {r4, pc} +_021D7E9E: + add r0, r1, #0 + add r0, #0x14 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D7EAE + add r0, r2, #1 + str r0, [r4, r1] + b _021D7EBA +_021D7EAE: + add r0, r1, #0 + add r0, #0x14 + ldr r0, [r4, r0] + add r1, #0x14 + sub r0, r0, #1 + str r0, [r4, r1] +_021D7EBA: + add r0, sp, #0xc + mov r1, #0xc3 + str r0, [sp] + add r0, sp, #8 + lsl r1, r1, #8 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + add r2, sp, #0x14 + add r3, sp, #0x10 + bl MOD77_021D7F3C + ldr r1, [sp, #0x14] + ldr r0, [sp, #0xc] + orr r0, r1 + ldr r1, _021D7F2C ; =0x0000C2F8 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, [sp, #0x10] + add r0, #0x10 + str r2, [r4, r0] + ldr r2, [sp, #8] + add r0, r1, #0 + add r0, #0x14 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _021D7F30 ; =0x021C48F8 + add r0, #8 + ldrh r3, [r2, #0x1c] + add r1, #0xc + add sp, #0x18 + str r3, [r4, r0] + ldrh r0, [r2, #0x1e] + str r0, [r4, r1] + pop {r4, pc} +_021D7F02: + ldr r0, _021D7F38 ; =0x0000C310 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D7F10 + mov r1, #1 + sub r0, #0x18 + str r1, [r4, r0] +_021D7F10: + ldr r1, _021D7F34 ; =0x0000C2FC + mov r2, #0 + add r0, r1, #0 + str r2, [r4, r1] + add r0, #0xc + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r1, #0x14 + str r2, [r4, r1] + add sp, #0x18 + pop {r4, pc} + nop +_021D7F2C: .word 0x0000C2F8 +_021D7F30: .word 0x021C48F8 +_021D7F34: .word 0x0000C2FC +_021D7F38: .word 0x0000C310 + thumb_func_end MOD77_021D7E24 + + thumb_func_start MOD77_021D7F3C +MOD77_021D7F3C: ; 0x021D7F3C + push {r3, r4, r5, r6, r7, lr} + mov lr, r0 + ldr r0, _021D7FA4 ; =0x021C48F8 + mov ip, r1 + ldrh r5, [r0, #0x1c] + mov r1, #0 + add r7, r2, #0 + add r6, r3, #0 + ldr r0, _021D7FA8 ; =0x0000FFFF + add r2, r1, #0 + add r3, r1, #0 + add r4, r1, #0 + cmp r5, r0 + beq _021D7F6C + mov r0, lr + sub r3, r5, r0 + bpl _021D7F66 + sub r0, r1, #1 + eor r3, r0 + mov r1, #0x10 + b _021D7F6C +_021D7F66: + cmp r3, #0 + ble _021D7F6C + mov r1, #0x20 +_021D7F6C: + str r1, [r7] + mov r1, #0x3f + add r0, r3, #0 + and r0, r1 + str r0, [r6] + ldr r0, _021D7FA4 ; =0x021C48F8 + ldrh r3, [r0, #0x1e] + ldr r0, _021D7FA8 ; =0x0000FFFF + cmp r3, r0 + beq _021D7F94 + mov r0, ip + sub r4, r3, r0 + bpl _021D7F8E + sub r1, #0x40 + eor r4, r1 + mov r2, #0x80 + b _021D7F94 +_021D7F8E: + cmp r4, #0 + ble _021D7F94 + mov r2, #0x40 +_021D7F94: + ldr r0, [sp, #0x18] + add r1, r4, #0 + str r2, [r0] + mov r0, #0x3f + and r1, r0 + ldr r0, [sp, #0x1c] + str r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7FA4: .word 0x021C48F8 +_021D7FA8: .word 0x0000FFFF + thumb_func_end MOD77_021D7F3C + + thumb_func_start MOD77_021D7FAC +MOD77_021D7FAC: ; 0x021D7FAC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, _021D8208 ; =0x0000C010 + ldr r2, _021D820C ; =0x021D8F7C + ldr r0, [r5, r0] + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, _021D8208 ; =0x0000C010 + mov r1, #6 + ldr r0, [r5, r0] + bl FUN_02018744 + ldr r0, _021D8208 ; =0x0000C010 + ldr r2, _021D8210 ; =0x021D8F98 + ldr r0, [r5, r0] + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r2, _021D8208 ; =0x0000C010 + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x81 + mov r1, #5 + mov r3, #7 + bl FUN_0200687C + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5] + mov r1, #6 + str r0, [sp, #4] + mov r0, #0x81 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #7 + str r0, [sp, #0xc] + ldr r2, _021D8208 ; =0x0000C010 + mov r0, #0x81 + ldr r2, [r5, r2] + add r3, r1, #0 + bl FUN_020068C8 + ldr r0, [r5, #8] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r5] + mov r1, #6 + str r0, [sp, #4] + ldr r0, _021D8208 ; =0x0000C010 + ldr r2, _021D8214 ; =0x000001E2 + ldr r0, [r5, r0] + add r3, r1, #0 + bl FUN_0200CD68 + mov r0, #0 + str r0, [sp] + ldr r0, [r5] + ldr r2, _021D8218 ; =0x000001D9 + str r0, [sp, #4] + ldr r0, _021D8208 ; =0x0000C010 + mov r1, #6 + ldr r0, [r5, r0] + mov r3, #7 + bl FUN_0200CB00 + ldr r2, [r5] + mov r0, #4 + mov r1, #0x80 + bl FUN_02002ED0 + ldr r3, [r5] + mov r0, #6 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r1, _021D821C ; =0x00004753 + mov r0, #6 + bl FUN_02017FE4 + ldr r1, _021D8208 ; =0x0000C010 + ldr r2, _021D8220 ; =0x021D8F40 + ldr r0, [r5, r1] + add r1, r1, #4 + add r1, r5, r1 + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + ldr r0, _021D8224 ; =0x0000C014 + mov r2, #0 + add r0, r5, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, _021D8224 ; =0x0000C014 + ldr r2, _021D8214 ; =0x000001E2 + add r0, r5, r0 + mov r1, #0 + mov r3, #6 + bl FUN_0200D0BC + ldr r0, _021D8228 ; =0x0000C064 + mov r3, #0 + str r3, [r5, r0] + sub r0, #0x54 + ldr r0, [r5, r0] + ldr r2, _021D820C ; =0x021D8F7C + mov r1, #2 + bl FUN_02016C18 + ldr r0, _021D8208 ; =0x0000C010 + mov r1, #2 + ldr r0, [r5, r0] + bl FUN_02018744 + ldr r0, _021D8208 ; =0x0000C010 + ldr r2, _021D8210 ; =0x021D8F98 + ldr r0, [r5, r0] + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r2, _021D8208 ; =0x0000C010 + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x81 + mov r1, #5 + mov r3, #3 + bl FUN_0200687C + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5] + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x81 + mov r1, #6 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r2, _021D8208 ; =0x0000C010 + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x81 + mov r1, #7 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + ldr r0, [r5] + ldr r2, _021D8218 ; =0x000001D9 + str r0, [sp, #4] + ldr r0, _021D8208 ; =0x0000C010 + mov r1, #2 + ldr r0, [r5, r0] + mov r3, #7 + bl FUN_0200CB00 + ldr r2, [r5] + mov r0, #0 + mov r1, #0x80 + bl FUN_02002ED0 + ldr r3, [r5] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #2 + mov r1, #0 + bl FUN_02017FE4 + ldr r1, [r5] + mov r0, #0x10 + bl FUN_020219F4 + add r4, r0, #0 + ldr r1, [r5] + mov r0, #2 + bl FUN_02002C50 + ldr r1, _021D822C ; =0x00004E56 + add r0, sp, #0x10 + strh r1, [r0, #6] + ldr r1, _021D8230 ; =0x00003571 + mov r3, #0x82 + strh r1, [r0, #4] + ldr r1, _021D8234 ; =0x0000208C + strh r1, [r0, #2] + ldr r1, _021D8238 ; =0x00007FFF + strh r1, [r0] + mov r0, #2 + add r1, sp, #0x14 + add r1, #2 + add r2, r0, #0 + bl FUN_02017FB4 + mov r0, #2 + add r1, sp, #0x14 + add r2, r0, #0 + mov r3, #0x84 + bl FUN_02017FB4 + mov r0, #2 + add r1, sp, #0x10 + add r1, #2 + add r2, r0, #0 + mov r3, #0x86 + bl FUN_02017FB4 + mov r0, #2 + add r1, sp, #0x10 + add r2, r0, #0 + mov r3, #0x9e + bl FUN_02017FB4 + ldr r1, _021D8208 ; =0x0000C010 + ldr r2, _021D823C ; =0x021D8F30 + ldr r0, [r5, r1] + add r1, #0x24 + add r1, r5, r1 + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + ldr r0, _021D8240 ; =0x0000C034 + mov r2, #0 + add r0, r5, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, _021D8244 ; =0x0000C060 + mov r1, #0xc + ldr r0, [r5, r0] + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #2 + add r1, r4, #0 + mov r2, #0 + mov r3, #0x30 + bl FUN_02002F40 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8240 ; =0x0000C034 + str r1, [sp, #8] + add r0, r5, r0 + mov r1, #2 + add r2, r4, #0 + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #2 + bl FUN_02002CF8 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021D8208: .word 0x0000C010 +_021D820C: .word 0x021D8F7C +_021D8210: .word 0x021D8F98 +_021D8214: .word 0x000001E2 +_021D8218: .word 0x000001D9 +_021D821C: .word 0x00004753 +_021D8220: .word 0x021D8F40 +_021D8224: .word 0x0000C014 +_021D8228: .word 0x0000C064 +_021D822C: .word 0x00004E56 +_021D8230: .word 0x00003571 +_021D8234: .word 0x0000208C +_021D8238: .word 0x00007FFF +_021D823C: .word 0x021D8F30 +_021D8240: .word 0x0000C034 +_021D8244: .word 0x0000C060 + thumb_func_end MOD77_021D7FAC + + thumb_func_start MOD77_021D8248 +MOD77_021D8248: ; 0x021D8248 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D8288 ; =0x0000C034 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _021D828C ; =0x0000C014 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _021D8290 ; =0x0000C010 + mov r1, #2 + ldr r0, [r4, r0] + bl FUN_020178A0 + ldr r0, _021D8290 ; =0x0000C010 + mov r1, #6 + ldr r0, [r4, r0] + bl FUN_020178A0 + ldr r0, _021D8290 ; =0x0000C010 + mov r1, #3 + ldr r0, [r4, r0] + bl FUN_020178A0 + ldr r0, _021D8290 ; =0x0000C010 + mov r1, #7 + ldr r0, [r4, r0] + bl FUN_020178A0 + pop {r4, pc} + nop +_021D8288: .word 0x0000C034 +_021D828C: .word 0x0000C014 +_021D8290: .word 0x0000C010 + thumb_func_end MOD77_021D8248 + + thumb_func_start MOD77_021D8294 +MOD77_021D8294: ; 0x021D8294 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _021D8348 ; =0x0000C064 + add r6, r1, #0 + ldr r1, [r5, r0] + mov r4, #0 + cmp r1, #0 + beq _021D82B0 + cmp r1, #1 + beq _021D830A + cmp r1, #2 + beq _021D832A + b _021D8340 +_021D82B0: + mov r1, #0xd8 + str r1, [sp] + mov r1, #0x20 + sub r0, #0x50 + str r1, [sp, #4] + add r0, r5, r0 + mov r1, #0xf + add r2, r4, #0 + add r3, r4, #0 + bl FUN_020196F4 + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + ldr r2, _021D834C ; =0x0000C06C + add r1, r6, #0 + str r0, [r5, r2] + add r0, r2, #0 + sub r0, #0xc + ldr r0, [r5, r0] + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r0, [r5, #8] + bl FUN_02024FF4 + add r3, r4, #0 + str r3, [sp] + str r0, [sp, #4] + ldr r2, _021D8350 ; =0x0000C014 + str r3, [sp, #8] + add r0, r5, r2 + add r2, #0x58 + ldr r2, [r5, r2] + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _021D8354 ; =0x0000C068 + mov r2, #1 + str r0, [r5, r1] + sub r0, r1, #4 + str r2, [r5, r0] + b _021D8340 +_021D830A: + add r0, r0, #4 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D8340 + ldr r0, _021D834C ; =0x0000C06C + ldr r0, [r5, r0] + bl FUN_02021A20 + ldr r0, _021D8348 ; =0x0000C064 + mov r1, #2 + str r1, [r5, r0] + b _021D8340 +_021D832A: + cmp r2, #0 + bne _021D8338 + ldr r0, _021D8358 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021D8340 +_021D8338: + ldr r0, _021D8348 ; =0x0000C064 + mov r1, #0 + str r1, [r5, r0] + mov r4, #1 +_021D8340: + add r0, r4, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D8348: .word 0x0000C064 +_021D834C: .word 0x0000C06C +_021D8350: .word 0x0000C014 +_021D8354: .word 0x0000C068 +_021D8358: .word 0x021C48B8 + thumb_func_end MOD77_021D8294 + + thumb_func_start MOD77_021D835C +MOD77_021D835C: ; 0x021D835C + push {r3, lr} + cmp r2, #0 + bne _021D8368 + ldr r0, _021D836C ; =0x000005DC + bl FUN_020054C8 +_021D8368: + pop {r3, pc} + nop +_021D836C: .word 0x000005DC + thumb_func_end MOD77_021D835C + + thumb_func_start MOD77_021D8370 +MOD77_021D8370: ; 0x021D8370 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, _021D8400 ; =0x0000C010 + add r6, r3, #0 + ldr r0, [r5, r0] + str r1, [sp] + bl FUN_02019150 + ldrh r0, [r6, #0x10] + ldr r1, [r5] + bl FUN_02012838 + ldr r1, _021D8404 ; =0x0000C058 + mov r7, #0 + str r0, [r5, r1] + ldrh r0, [r6, #0x10] + cmp r0, #0 + ble _021D83B2 + ldr r4, [sp, #0x38] +_021D8398: + ldr r0, _021D8404 ; =0x0000C058 + ldr r1, _021D8408 ; =0x0000C060 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + ldrh r0, [r6, #0x10] + add r7, r7, #1 + add r4, #8 + cmp r7, r0 + blt _021D8398 +_021D83B2: + add r3, sp, #4 + 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} + ldr r0, _021D8404 ; =0x0000C058 + mov r1, #0 + ldr r0, [r5, r0] + str r0, [sp, #4] + ldr r0, [sp] + str r0, [sp, #0x10] + ldr r0, _021D840C ; =MOD77_021D835C + str r0, [sp, #8] + ldr r3, [r5] + add r0, r2, #0 + lsl r3, r3, #0x18 + add r2, r1, #0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + ldr r1, _021D8410 ; =0x0000C054 + ldr r2, _021D8414 ; =0x000001D9 + str r0, [r5, r1] + ldr r0, [sp, #0x10] + mov r1, #1 + mov r3, #7 + bl FUN_0200CCA4 + ldr r0, [sp] + bl FUN_020191D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021D8400: .word 0x0000C010 +_021D8404: .word 0x0000C058 +_021D8408: .word 0x0000C060 +_021D840C: .word MOD77_021D835C +_021D8410: .word 0x0000C054 +_021D8414: .word 0x000001D9 + thumb_func_end MOD77_021D8370 + + thumb_func_start MOD77_021D8418 +MOD77_021D8418: ; 0x021D8418 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r0, _021D84C4 ; =0x0000C010 + str r1, [sp] + ldr r0, [r5, r0] + str r3, [sp, #4] + ldr r7, [sp, #0x44] + ldr r6, [sp, #0x48] + bl FUN_02019150 + ldr r2, [sp, #0x40] + ldr r3, [r5] + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [sp, #8] + ldr r1, [r5] + add r0, r6, #0 + bl FUN_02012838 + ldr r1, _021D84C8 ; =0x0000C058 + mov r4, #0 + str r0, [r5, r1] + cmp r6, #0 + bls _021D8462 +_021D844E: + ldr r0, _021D84C8 ; =0x0000C058 + ldrb r2, [r7, r4] + ldr r0, [r5, r0] + ldr r1, [sp, #8] + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, r6 + blo _021D844E +_021D8462: + ldr r0, [sp, #8] + bl FUN_0200A8B8 + ldr r4, [sp, #4] + add r3, sp, #0xc + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + str r4, [sp, #4] + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + str r4, [sp, #4] + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + str r4, [sp, #4] + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, _021D84C8 ; =0x0000C058 + mov r1, #0 + ldr r0, [r5, r0] + str r4, [sp, #4] + str r0, [sp, #0xc] + add r0, sp, #0xc + strh r6, [r0, #0x10] + ldr r0, [sp] + str r0, [sp, #0x18] + ldr r0, _021D84CC ; =MOD77_021D835C + str r0, [sp, #0x10] + ldr r3, [r5] + add r0, r2, #0 + lsl r3, r3, #0x18 + add r2, r1, #0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + ldr r1, _021D84D0 ; =0x0000C054 + ldr r2, _021D84D4 ; =0x000001D9 + str r0, [r5, r1] + ldr r0, [sp, #0x18] + mov r1, #1 + mov r3, #7 + bl FUN_0200CCA4 + ldr r0, [sp] + bl FUN_020191D0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021D84C4: .word 0x0000C010 +_021D84C8: .word 0x0000C058 +_021D84CC: .word MOD77_021D835C +_021D84D0: .word 0x0000C054 +_021D84D4: .word 0x000001D9 + thumb_func_end MOD77_021D8418 + + thumb_func_start MOD77_021D84D8 +MOD77_021D84D8: ; 0x021D84D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D8504 ; =0x0000C024 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _021D8504 ; =0x0000C024 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _021D8508 ; =0x0000C054 + mov r1, #0 + ldr r0, [r4, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _021D850C ; =0x0000C058 + ldr r0, [r4, r0] + bl FUN_02012870 + pop {r4, pc} + .align 2, 0 +_021D8504: .word 0x0000C024 +_021D8508: .word 0x0000C054 +_021D850C: .word 0x0000C058 + thumb_func_end MOD77_021D84D8 + + thumb_func_start MOD77_021D8510 +MOD77_021D8510: ; 0x021D8510 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + ldr r1, _021D85C4 ; =0x0000C010 + add r6, r0, #0 + ldr r0, [r5, r1] + add r1, #0x34 + ldr r2, _021D85C8 ; =0x021D8F28 + add r1, r5, r1 + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x30 + str r0, [sp, #4] + ldr r0, _021D85CC ; =0x0000C044 + mov r2, #0 + add r0, r5, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, _021D85CC ; =0x0000C044 + ldr r2, _021D85D0 ; =0x000001D9 + add r0, r5, r0 + mov r1, #0 + mov r3, #7 + bl FUN_0200CCA4 + ldr r0, _021D85D4 ; =0x0000C070 + ldr r2, _021D85D8 ; =0x0000C314 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + mov r1, #0 + bl FUN_0200B4A0 + ldr r3, _021D85D8 ; =0x0000C314 + ldr r0, _021D85D4 ; =0x0000C070 + ldr r2, [r5, r3] + add r3, r3, #4 + ldr r0, [r5, r0] + ldr r3, [r5, r3] + mov r1, #1 + bl FUN_0200B4D8 + ldr r0, _021D85DC ; =0x0000C060 + mov r1, #0xd + ldr r0, [r5, r0] + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r0, _021D85D4 ; =0x0000C070 + add r1, r4, #0 + ldr r0, [r5, r0] + add r2, r6, #0 + bl FUN_0200B7B8 + mov r1, #0 + ldr r0, _021D85CC ; =0x0000C044 + str r1, [sp] + str r1, [sp, #4] + add r0, r5, r0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, _021D85CC ; =0x0000C044 + add r0, r5, r0 + bl FUN_020191D0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D85C4: .word 0x0000C010 +_021D85C8: .word 0x021D8F28 +_021D85CC: .word 0x0000C044 +_021D85D0: .word 0x000001D9 +_021D85D4: .word 0x0000C070 +_021D85D8: .word 0x0000C314 +_021D85DC: .word 0x0000C060 + thumb_func_end MOD77_021D8510 + + thumb_func_start MOD77_021D85E0 +MOD77_021D85E0: ; 0x021D85E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r1, [sp, #0xc] + ldr r1, [r5] + mov r0, #0x40 + add r4, r2, #0 + bl FUN_020219F4 + add r7, r0, #0 + ldr r1, [r5] + mov r0, #0x40 + bl FUN_020219F4 + ldr r1, _021D8688 ; =0x0000C010 + add r6, r0, #0 + ldr r0, [r5, r1] + add r1, #0x34 + ldr r2, _021D868C ; =0x021D8F28 + add r1, r5, r1 + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x30 + str r0, [sp, #4] + ldr r0, _021D8690 ; =0x0000C044 + mov r2, #0 + add r0, r5, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, _021D8690 ; =0x0000C044 + ldr r2, _021D8694 ; =0x000001D9 + add r0, r5, r0 + mov r1, #0 + mov r3, #7 + bl FUN_0200CCA4 + ldr r0, [r5] + add r1, r4, #0 + str r0, [sp] + ldr r0, [sp, #0xc] + add r2, r7, #0 + add r3, r6, #0 + bl MOD77_021D8E9C + cmp r4, #0 + beq _021D865C + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, _021D8690 ; =0x0000C044 + add r2, r6, #0 + add r0, r5, r0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 +_021D865C: + mov r1, #0 + ldr r0, _021D8690 ; =0x0000C044 + str r1, [sp] + str r1, [sp, #4] + add r0, r5, r0 + add r2, r7, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, _021D8690 ; =0x0000C044 + add r0, r5, r0 + bl FUN_020191D0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8688: .word 0x0000C010 +_021D868C: .word 0x021D8F28 +_021D8690: .word 0x0000C044 +_021D8694: .word 0x000001D9 + thumb_func_end MOD77_021D85E0 + + thumb_func_start MOD77_021D8698 +MOD77_021D8698: ; 0x021D8698 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D86B0 ; =0x0000C044 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _021D86B0 ; =0x0000C044 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 +_021D86B0: .word 0x0000C044 + thumb_func_end MOD77_021D8698 + + thumb_func_start MOD77_021D86B4 +MOD77_021D86B4: ; 0x021D86B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, _021D8808 ; =0x0000C328 + ldr r1, [r5, r0] + cmp r1, #0 + bne _021D870E + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x30 + str r0, [sp, #4] + ldr r0, _021D880C ; =0x0000C014 + mov r2, #0 + add r0, r5, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, _021D8810 ; =0x0000C060 + mov r1, #0xe + ldr r0, [r5, r0] + add r2, r4, #0 + bl FUN_0200A8E0 + mov r3, #0 + ldr r0, _021D880C ; =0x0000C014 + str r3, [sp] + str r3, [sp, #4] + add r0, r5, r0 + mov r1, #1 + add r2, r4, #0 + str r3, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021D870E: + add r2, r0, #0 + sub r2, #0x74 + ldr r3, [r5, r2] + mov r1, #0 + add r2, r3, #0 + sub r2, #0x30 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r3, #0x30 + str r2, [sp, #0x18] + lsl r2, r3, #0x10 + asr r2, r2, #0x10 + sub r0, #0x70 + str r2, [sp, #0x14] + ldr r2, [r5, r0] + str r1, [sp, #0x1c] + add r0, r2, #0 + sub r0, #0x30 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r2, #0x30 + str r0, [sp, #0x10] + lsl r0, r2, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [r5, #0xc] + cmp r0, #0 + bls _021D87FA + add r4, r5, #0 +_021D8748: + mov r0, #0x10 + ldrsh r2, [r4, r0] + ldr r0, [sp, #0x18] + cmp r2, r0 + ble _021D87EC + ldr r0, [sp, #0x14] + cmp r2, r0 + bge _021D87EC + mov r0, #0x12 + ldrsh r2, [r4, r0] + ldr r0, [sp, #0x10] + cmp r2, r0 + ble _021D87EC + ldr r0, [sp, #0xc] + cmp r2, r0 + bge _021D87EC + ldrh r0, [r4, #0x38] + cmp r0, #0 + beq _021D87EC + ldr r1, [r5] + mov r0, #0x40 + bl FUN_020219F4 + add r7, r0, #0 + ldr r1, [r5] + mov r0, #0x40 + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x30 + str r0, [sp, #4] + ldr r0, _021D880C ; =0x0000C014 + mov r2, #0 + add r0, r5, r0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + ldr r0, [r5] + add r2, r7, #0 + str r0, [sp] + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x3c] + add r3, r6, #0 + bl MOD77_021D8E9C + ldrh r0, [r4, #0x3c] + cmp r0, #0 + beq _021D87C8 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _021D880C ; =0x0000C014 + mov r1, #1 + add r0, r5, r0 + add r2, r6, #0 + mov r3, #0 + bl FUN_0201BD84 +_021D87C8: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _021D880C ; =0x0000C014 + mov r1, #1 + add r0, r5, r0 + add r2, r7, #0 + mov r3, #0 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + mov r1, #1 +_021D87EC: + ldr r0, [sp, #0x1c] + ldr r2, [r5, #0xc] + add r0, r0, #1 + add r4, #0x30 + str r0, [sp, #0x1c] + cmp r0, r2 + blo _021D8748 +_021D87FA: + cmp r1, #0 + bne _021D8804 + ldr r0, _021D8808 ; =0x0000C328 + mov r1, #0 + str r1, [r5, r0] +_021D8804: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8808: .word 0x0000C328 +_021D880C: .word 0x0000C014 +_021D8810: .word 0x0000C060 + thumb_func_end MOD77_021D86B4 + + thumb_func_start MOD77_021D8814 +MOD77_021D8814: ; 0x021D8814 + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4] + mov r0, #0x81 + mov r1, #0 + bl LoadFromNarc_2 + ldr r2, _021D88B4 ; =0x0000C0CC + str r0, [r4, r2] + add r0, r2, #0 + sub r1, r2, #4 + sub r0, #0x58 + add r0, r4, r0 + add r1, r4, r1 + add r2, r4, r2 + bl FUN_0201B234 + ldr r2, [r4] + mov r0, #0x81 + mov r1, #1 + bl LoadFromNarc_2 + ldr r2, _021D88B8 ; =0x0000C294 + str r0, [r4, r2] + add r0, r2, #0 + add r1, r2, #0 + sub r0, #0xc8 + sub r1, #0x14 + add r0, r4, r0 + add r1, r4, r1 + add r2, r4, r2 + bl FUN_0201B234 + ldr r2, [r4] + mov r0, #0x81 + mov r1, #2 + bl LoadFromNarc_2 + ldr r2, _021D88BC ; =0x0000C298 + str r0, [r4, r2] + add r0, r2, #0 + add r1, r2, #0 + sub r0, #0x78 + sub r1, #0x14 + add r0, r4, r0 + add r1, r4, r1 + add r2, r4, r2 + bl FUN_0201B234 + ldr r2, [r4] + mov r0, #0x81 + mov r1, #3 + bl LoadFromNarc_2 + ldr r2, _021D88C0 ; =0x0000C28C + str r0, [r4, r2] + add r1, r2, #0 + ldr r0, _021D88C4 ; =0x0000C124 + sub r1, #0x14 + add r0, r4, r0 + add r1, r4, r1 + add r2, r4, r2 + bl FUN_0201B234 + ldr r2, [r4] + mov r0, #0x81 + mov r1, #4 + bl LoadFromNarc_2 + ldr r2, _021D88C8 ; =0x0000C290 + str r0, [r4, r2] + add r1, r2, #0 + ldr r0, _021D88CC ; =0x0000C178 + sub r1, #0x14 + add r0, r4, r0 + add r1, r4, r1 + add r2, r4, r2 + bl FUN_0201B234 + pop {r4, pc} + .align 2, 0 +_021D88B4: .word 0x0000C0CC +_021D88B8: .word 0x0000C294 +_021D88BC: .word 0x0000C298 +_021D88C0: .word 0x0000C28C +_021D88C4: .word 0x0000C124 +_021D88C8: .word 0x0000C290 +_021D88CC: .word 0x0000C178 + thumb_func_end MOD77_021D8814 + + thumb_func_start MOD77_021D88D0 +MOD77_021D88D0: ; 0x021D88D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D8900 ; =0x0000C290 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021D8904 ; =0x0000C28C + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021D8908 ; =0x0000C298 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021D890C ; =0x0000C294 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021D8910 ; =0x0000C0CC + ldr r0, [r4, r0] + bl FUN_02016A18 + pop {r4, pc} + nop +_021D8900: .word 0x0000C290 +_021D8904: .word 0x0000C28C +_021D8908: .word 0x0000C298 +_021D890C: .word 0x0000C294 +_021D8910: .word 0x0000C0CC + thumb_func_end MOD77_021D88D0 + + thumb_func_start MOD77_021D8914 +MOD77_021D8914: ; 0x021D8914 + push {r4, r5} + ldr r1, _021D896C ; =0x0000C29C + mov r3, #0 + str r3, [r0, r1] + add r2, r1, #4 + str r3, [r0, r2] + add r2, r1, #0 + add r2, #8 + str r3, [r0, r2] + mov r2, #1 + add r4, r1, #0 + lsl r2, r2, #0xc + add r4, #0xc + str r2, [r0, r4] + add r4, r1, #0 + add r4, #0x10 + str r2, [r0, r4] + add r4, r1, #0 + add r4, #0x14 + str r2, [r0, r4] + mov r5, #0x69 + add r4, r1, #0 + lsl r5, r5, #6 + add r4, #0x18 + str r5, [r0, r4] + mov r5, #0x1f + add r4, r1, #0 + lsl r5, r5, #0xa + add r4, #0x1c + str r5, [r0, r4] + add r4, r1, #0 + add r4, #0x20 + str r3, [r0, r4] + add r3, r1, #0 + add r3, #0x24 + str r2, [r0, r3] + add r3, r1, #0 + add r3, #0x28 + str r2, [r0, r3] + add r1, #0x2c + str r2, [r0, r1] + pop {r4, r5} + bx lr + nop +_021D896C: .word 0x0000C29C + thumb_func_end MOD77_021D8914 + + thumb_func_start MOD77_021D8970 +MOD77_021D8970: ; 0x021D8970 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r6, _021D89E4 ; =0x021D8F48 + add r4, r0, #0 + ldmia r6!, {r0, r1} + add r5, sp, #8 + add r2, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r5] + add r7, sp, #0x14 + mov r3, #0 + str r3, [r7] + str r3, [r7, #4] + str r3, [r7, #8] + ldr r0, _021D89E8 ; =0x0000C2CC + str r3, [sp] + ldr r0, [r4, r0] + ldr r2, _021D89EC ; =0x000005C1 + str r0, [sp, #4] + add r0, r7, #0 + bl FUN_0201ED5C + ldr r2, _021D89E8 ; =0x0000C2CC + mov r1, #0x19 + ldr r2, [r4, r2] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + ldr r1, _021D89E8 ; =0x0000C2CC + mov r0, #0 + ldr r1, [r4, r1] + bl FUN_0201EE2C + ldr r0, _021D89E8 ; =0x0000C2CC + ldr r0, [r4, r0] + bl FUN_0201EB8C + ldr r0, _021D89F0 ; =0x0000C2F4 + ldrh r1, [r4, r0] + cmp r1, #0 + bne _021D89D0 + mov r1, #1 + sub r0, #0x1c + strh r1, [r4, r0] + b _021D89D6 +_021D89D0: + mov r1, #0 + sub r0, #0x1c + strh r1, [r4, r0] +_021D89D6: + add r0, r4, #0 + bl MOD77_021D8CF8 + cmp r0, #1 + bne _021D89D6 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D89E4: .word 0x021D8F48 +_021D89E8: .word 0x0000C2CC +_021D89EC: .word 0x000005C1 +_021D89F0: .word 0x0000C2F4 + thumb_func_end MOD77_021D8970 + + thumb_func_start MOD77_021D89F4 +MOD77_021D89F4: ; 0x021D89F4 + push {r4, lr} + ldr r3, _021D8A28 ; =0x0000C2DC + add r4, r0, #0 + mov r0, #0 + str r0, [r4, r3] + add r1, r3, #4 + str r0, [r4, r1] + add r1, r3, #0 + ldr r2, _021D8A2C ; =0xFFFFF001 + add r1, #8 + str r2, [r4, r1] + ldr r1, [r4, r3] + add r2, r3, #4 + add r3, #8 + ldr r2, [r4, r2] + ldr r3, [r4, r3] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl FUN_020B8418 + pop {r4, pc} + nop +_021D8A28: .word 0x0000C2DC +_021D8A2C: .word 0xFFFFF001 + thumb_func_end MOD77_021D89F4 + + thumb_func_start MOD77_021D8A30 +MOD77_021D8A30: ; 0x021D8A30 + push {r4, r5, lr} + sub sp, #0x24 + add r4, r1, #0 + ldr r1, [r4, #4] + ldr r3, _021D8AA4 ; =0x020FFA38 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + asr r1, r1, #4 + lsl r2, r1, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r5, r0, #0 + bl MTX_RotY33_ + ldr r0, [r4] + ldr r3, _021D8AA4 ; =0x020FFA38 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + 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 r0, r5, #0 + add r1, sp, #0 + add r2, r5, #0 + bl MTX_Concat33 + ldr r0, [r4, #8] + ldr r3, _021D8AA4 ; =0x020FFA38 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + 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 r0, r5, #0 + add r1, sp, #0 + add r2, r5, #0 + bl MTX_Concat33 + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D8AA4: .word 0x020FFA38 + thumb_func_end MOD77_021D8A30 + + thumb_func_start MOD77_021D8AA8 +MOD77_021D8AA8: ; 0x021D8AA8 + push {r4, r5, lr} + sub sp, #0x24 + add r4, r1, #0 + ldr r1, [r4] + ldr r3, _021D8B1C ; =0x020FFA38 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + asr r1, r1, #4 + lsl r2, r1, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r5, r0, #0 + bl MTX_RotY33_ + ldr r0, [r4, #4] + ldr r3, _021D8B1C ; =0x020FFA38 + neg r0, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + 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 r0, r5, #0 + add r1, sp, #0 + add r2, r5, #0 + bl MTX_Concat33 + ldr r0, [r4, #8] + ldr r3, _021D8B1C ; =0x020FFA38 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r2, r0, #1 + add r1, r2, #1 + lsl r1, r1, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0 + bl MTX_RotZ33_ + add r0, r5, #0 + add r1, sp, #0 + add r2, r5, #0 + bl MTX_Concat33 + add sp, #0x24 + pop {r4, r5, pc} + .align 2, 0 +_021D8B1C: .word 0x020FFA38 + thumb_func_end MOD77_021D8AA8 + + thumb_func_start MOD77_021D8B20 +MOD77_021D8B20: ; 0x021D8B20 + push {r3, r4, r5, r6, r7, lr} + add r3, r0, #0 + ldr r0, _021D8CD8 ; =0x0000C2B4 + add r7, r2, #0 + add r4, r0, #4 + ldr r4, [r3, r4] + ldr r2, [r3, r0] + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + lsl r2, r2, #0x10 + mov lr, r4 + mov r4, #1 + mov r6, #0 + asr r2, r2, #0x10 + tst r1, r4 + bne _021D8B4E + add r1, r0, #0 + add r1, #0x44 + ldr r4, [r3, r1] + mov r1, #1 + mov ip, r4 + tst r1, r4 + beq _021D8B72 +_021D8B4E: + ldr r1, _021D8CDC ; =0x0000C2F4 + ldrh r0, [r3, r1] + cmp r0, #1 + bne _021D8B6E + add r0, r1, #0 + sub r0, #0x1c + ldrh r0, [r3, r0] + cmp r0, #0 + bne _021D8B68 + mov r0, #1 + sub r1, #0x1c + strh r0, [r3, r1] + b _021D8B6E +_021D8B68: + mov r0, #0 + sub r1, #0x1c + strh r0, [r3, r1] +_021D8B6E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8B72: + add r1, r0, #0 + add r1, #0x24 + ldrh r1, [r3, r1] + cmp r1, #0 + bne _021D8BA4 + add r1, r0, #0 + add r1, #0x54 + ldr r1, [r3, r1] + cmp r1, #0 + bne _021D8B8E + add r0, #0x58 + ldr r0, [r3, r0] + cmp r0, #0 + beq _021D8B9C +_021D8B8E: + lsl r0, r1, #0x16 + ldr r1, _021D8CE0 ; =0x0000C30C + lsr r0, r0, #0x10 + ldr r1, [r3, r1] + lsl r1, r1, #0x16 + lsr r1, r1, #0x10 + b _021D8BC8 +_021D8B9C: + mov r0, #1 + lsl r0, r0, #9 + add r1, r0, #0 + b _021D8BC8 +_021D8BA4: + add r1, r0, #0 + add r1, #0x54 + ldr r1, [r3, r1] + cmp r1, #0 + bne _021D8BB6 + add r0, #0x58 + ldr r0, [r3, r0] + cmp r0, #0 + beq _021D8BC4 +_021D8BB6: + lsl r0, r1, #0x12 + ldr r1, _021D8CE0 ; =0x0000C30C + lsr r0, r0, #0x10 + ldr r1, [r3, r1] + lsl r1, r1, #0x12 + lsr r1, r1, #0x10 + b _021D8BC8 +_021D8BC4: + mov r0, #0x20 + add r1, r0, #0 +_021D8BC8: + mov r4, #0x20 + tst r4, r7 + bne _021D8BD6 + mov r5, ip + mov r4, #0x20 + tst r4, r5 + beq _021D8C02 +_021D8BD6: + ldr r6, _021D8CDC ; =0x0000C2F4 + ldrh r4, [r3, r6] + cmp r4, #1 + bne _021D8BEC + add r4, r6, #0 + sub r4, #0x3c + ldr r4, [r3, r4] + sub r6, #0x3c + add r4, r4, r0 + str r4, [r3, r6] + b _021D8C00 +_021D8BEC: + ldr r5, _021D8CE4 ; =0xFFFFD820 + mov r4, lr + cmp r4, r5 + bge _021D8C00 + add r4, r6, #0 + sub r4, #0x3c + ldr r4, [r3, r4] + sub r6, #0x3c + add r4, r4, r0 + str r4, [r3, r6] +_021D8C00: + mov r6, #1 +_021D8C02: + mov r4, #0x10 + tst r4, r7 + bne _021D8C12 + ldr r4, _021D8CE8 ; =0x0000C2F8 + ldr r5, [r3, r4] + mov r4, #0x10 + tst r4, r5 + beq _021D8C3E +_021D8C12: + ldr r5, _021D8CDC ; =0x0000C2F4 + ldrh r4, [r3, r5] + cmp r4, #1 + bne _021D8C28 + add r4, r5, #0 + sub r4, #0x3c + ldr r4, [r3, r4] + sub r5, #0x3c + sub r0, r4, r0 + str r0, [r3, r5] + b _021D8C3C +_021D8C28: + ldr r4, _021D8CEC ; =0xFFFFCC80 + mov r6, lr + cmp r6, r4 + ble _021D8C3C + add r4, r5, #0 + sub r4, #0x3c + ldr r4, [r3, r4] + sub r5, #0x3c + sub r0, r4, r0 + str r0, [r3, r5] +_021D8C3C: + mov r6, #1 +_021D8C3E: + mov r4, #0x40 + add r0, r7, #0 + tst r0, r4 + bne _021D8C4E + ldr r0, _021D8CE8 ; =0x0000C2F8 + ldr r0, [r3, r0] + tst r0, r4 + beq _021D8C88 +_021D8C4E: + ldr r4, _021D8CDC ; =0x0000C2F4 + ldrh r0, [r3, r4] + cmp r0, #1 + bne _021D8C74 + mov r0, #0x3e + add r5, r2, r1 + lsl r0, r0, #8 + cmp r5, r0 + bge _021D8C6E + add r0, r4, #0 + sub r0, #0x40 + ldr r0, [r3, r0] + sub r4, #0x40 + add r0, r0, r1 + str r0, [r3, r4] + b _021D8C86 +_021D8C6E: + sub r4, #0x40 + str r0, [r3, r4] + b _021D8C86 +_021D8C74: + ldr r0, _021D8CF0 ; =0x00002020 + cmp r2, r0 + bge _021D8C86 + add r0, r4, #0 + sub r0, #0x40 + ldr r0, [r3, r0] + sub r4, #0x40 + add r0, r0, r1 + str r0, [r3, r4] +_021D8C86: + mov r6, #1 +_021D8C88: + mov r4, #0x80 + add r0, r7, #0 + tst r0, r4 + bne _021D8C98 + ldr r0, _021D8CE8 ; =0x0000C2F8 + ldr r0, [r3, r0] + tst r0, r4 + beq _021D8CD2 +_021D8C98: + ldr r4, _021D8CDC ; =0x0000C2F4 + ldrh r0, [r3, r4] + cmp r0, #1 + bne _021D8CBC + ldr r0, _021D8CF4 ; =0xFFFFC200 + sub r2, r2, r1 + cmp r2, r0 + ble _021D8CB6 + add r0, r4, #0 + sub r0, #0x40 + ldr r0, [r3, r0] + sub r4, #0x40 + sub r0, r0, r1 + str r0, [r3, r4] + b _021D8CD0 +_021D8CB6: + sub r4, #0x40 + str r0, [r3, r4] + b _021D8CD0 +_021D8CBC: + mov r0, #0x13 + lsl r0, r0, #8 + cmp r2, r0 + ble _021D8CD0 + add r0, r4, #0 + sub r0, #0x40 + ldr r0, [r3, r0] + sub r4, #0x40 + sub r0, r0, r1 + str r0, [r3, r4] +_021D8CD0: + mov r6, #1 +_021D8CD2: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8CD8: .word 0x0000C2B4 +_021D8CDC: .word 0x0000C2F4 +_021D8CE0: .word 0x0000C30C +_021D8CE4: .word 0xFFFFD820 +_021D8CE8: .word 0x0000C2F8 +_021D8CEC: .word 0xFFFFCC80 +_021D8CF0: .word 0x00002020 +_021D8CF4: .word 0xFFFFC200 + thumb_func_end MOD77_021D8B20 + + thumb_func_start MOD77_021D8CF8 +MOD77_021D8CF8: ; 0x021D8CF8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D8D7C ; =0x0000C2CC + ldr r0, [r5, r0] + bl FUN_0201F010 + ldr r1, _021D8D80 ; =0x0000C2D8 + mov r4, #0 + ldrh r2, [r5, r1] + cmp r2, #0 + beq _021D8D42 + cmp r2, #1 + bne _021D8D70 + mov r2, #0x16 + lsl r2, r2, #0xe + cmp r0, r2 + ble _021D8D3A + mov r2, #2 + lsl r2, r2, #0xe + sub r0, r0, r2 + add r2, r1, #0 + sub r2, #0x18 + ldr r3, [r5, r2] + add r2, r1, #0 + sub r3, #0x80 + sub r2, #0x18 + str r3, [r5, r2] + add r2, r1, #0 + sub r2, #0x18 + ldr r2, [r5, r2] + sub r1, #0x14 + str r2, [r5, r1] + b _021D8D70 +_021D8D3A: + mov r0, #5 + lsl r0, r0, #0x10 + mov r4, #1 + b _021D8D70 +_021D8D42: + mov r2, #0x12 + lsl r2, r2, #0x10 + cmp r0, r2 + bge _021D8D6A + mov r2, #2 + lsl r2, r2, #0xe + add r0, r0, r2 + add r2, r1, #0 + sub r2, #0x18 + ldr r3, [r5, r2] + add r2, r1, #0 + add r3, #0x80 + sub r2, #0x18 + str r3, [r5, r2] + add r2, r1, #0 + sub r2, #0x18 + ldr r2, [r5, r2] + sub r1, #0x14 + str r2, [r5, r1] + b _021D8D70 +_021D8D6A: + mov r0, #0x4a + lsl r0, r0, #0xe + mov r4, #1 +_021D8D70: + ldr r1, _021D8D7C ; =0x0000C2CC + ldr r1, [r5, r1] + bl FUN_0201EFE0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8D7C: .word 0x0000C2CC +_021D8D80: .word 0x0000C2D8 + thumb_func_end MOD77_021D8CF8 + + thumb_func_start MOD77_021D8D84 +MOD77_021D8D84: ; 0x021D8D84 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + ldr r4, _021D8E74 ; =0x021D8FF4 + add r5, r0, #0 + add r3, sp, #0x4c + mov r2, #4 +_021D8D90: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D8D90 + ldr r0, [r4] + str r0, [r3] + ldr r0, _021D8E78 ; =0x0000C2E8 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D8E6E + cmp r0, #1 + beq _021D8DC2 + cmp r0, #2 + bne _021D8E6E + bl FUN_020222AC + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + ldr r0, _021D8E78 ; =0x0000C2E8 + mov r1, #0 + add sp, #0x70 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021D8DC2: + bl FUN_020222AC + bl FUN_0201EBA4 + ldr r1, _021D8E7C ; =0x0000C2B4 + add r0, sp, #0x4c + add r1, r5, r1 + bl MOD77_021D8A30 + ldr r3, _021D8E80 ; =0x0000C29C + ldr r0, _021D8E84 ; =0x0000C074 + add r1, r5, r3 + add r3, #0xc + add r0, r5, r0 + add r2, sp, #0x4c + add r3, r5, r3 + bl FUN_0201B26C + ldr r4, _021D8E88 ; =0x021D9060 + add r3, sp, #0x28 + mov r2, #4 +_021D8DEC: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D8DEC + ldr r0, [r4] + add r2, sp, #0x28 + str r0, [r3] + ldr r3, _021D8E8C ; =0x0000C220 + add r1, r3, #0 + add r0, r5, r3 + add r1, #0x7c + add r3, #0xa0 + add r1, r5, r1 + add r3, r5, r3 + bl FUN_0201B26C + ldr r4, _021D8E90 ; =0x021D9018 + add r3, sp, #4 + mov r2, #4 +_021D8E12: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D8E12 + ldr r0, [r4] + mov r7, #0 + str r0, [r3] + ldr r0, [r5, #0xc] + cmp r0, #0 + bls _021D8E66 + ldr r0, _021D8E94 ; =0x0000C0D0 + add r6, r5, #0 + add r0, r5, r0 + add r6, #0x14 + add r4, r5, #0 + str r0, [sp] +_021D8E32: + add r0, r6, #0 + add r1, sp, #0x4c + add r2, sp, #4 + bl MTX_Concat33 + ldrh r2, [r4, #0x38] + cmp r2, #0 + beq _021D8E5A + add r1, r2, #0 + mov r0, #0x54 + mul r1, r0 + ldr r0, [sp] + ldr r3, _021D8E98 ; =0x0000C2C0 + add r0, r0, r1 + ldr r1, _021D8E80 ; =0x0000C29C + add r2, sp, #4 + add r1, r5, r1 + add r3, r5, r3 + bl FUN_0201B26C +_021D8E5A: + ldr r0, [r5, #0xc] + add r7, r7, #1 + add r6, #0x30 + add r4, #0x30 + cmp r7, r0 + blo _021D8E32 +_021D8E66: + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 +_021D8E6E: + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8E74: .word 0x021D8FF4 +_021D8E78: .word 0x0000C2E8 +_021D8E7C: .word 0x0000C2B4 +_021D8E80: .word 0x0000C29C +_021D8E84: .word 0x0000C074 +_021D8E88: .word 0x021D9060 +_021D8E8C: .word 0x0000C220 +_021D8E90: .word 0x021D9018 +_021D8E94: .word 0x0000C0D0 +_021D8E98: .word 0x0000C2C0 + thumb_func_end MOD77_021D8D84 + + thumb_func_start MOD77_021D8E9C +MOD77_021D8E9C: ; 0x021D8E9C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + str r1, [sp] + add r6, r2, #0 + str r3, [sp, #4] + bl MOD77_021D7E1C + ldr r7, [sp, #0x20] + mov r2, #0x99 + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + add r3, r7, #0 + bl FUN_0200A86C + str r0, [sp, #8] + add r1, r5, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #8] + bl FUN_0200A8B8 + cmp r4, #0 + bne _021D8EDA + mov r5, #0 + mov r4, #1 + str r5, [sp] + b _021D8EDC +_021D8EDA: + mov r5, #1 +_021D8EDC: + add r0, r4, #0 + bl FUN_02088D4C + add r2, r0, #0 + mov r0, #0 + mov r1, #0x1a + add r3, r7, #0 + bl FUN_0200A86C + ldr r1, [sp] + ldr r2, [sp, #4] + add r4, r0, #0 + bl FUN_0200A8E0 + add r0, r4, #0 + bl FUN_0200A8B8 + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD77_021D8E9C + + thumb_func_start MOD77_021D8F04 +MOD77_021D8F04: ; 0x021D8F04 + push {r3, lr} + bl MOD77_021D7E1C + cmp r0, #0 + beq _021D8F12 + mov r0, #1 + pop {r3, pc} +_021D8F12: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD77_021D8F04 + + .section .rodata + ; 0x021D8F18 + .incbin "baserom.nds", 0x2D9638, 0x194 diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s new file mode 100644 index 00000000..03fb6972 --- /dev/null +++ b/arm9/modules/78/asm/module_78.s @@ -0,0 +1,444 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD78_021D74E0 +MOD78_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r2, #2 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x48 + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xa0 + mov r2, #0x48 + bl FUN_02006268 + mov r1, #0 + mov r2, #0xa0 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + bl FUN_0200628C + add r5, r0, #0 + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x9c + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x9d + strb r1, [r0] + mov r0, #0x48 + bl FUN_0201EB64 + str r0, [r4] + bl MOD78_021D7708 + add r0, r4, #0 + bl MOD78_021D778C + add r0, sp, #0xc + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [sp] + str r1, [sp, #4] + ldr r1, [r4] + ldr r2, _021D75C4 ; =0x021D789C + str r1, [sp, #8] + ldr r1, _021D75C8 ; =0x0029AEC1 + ldr r3, _021D75CC ; =0x000005C1 + bl FUN_0201ECA8 + ldr r0, [r4] + bl FUN_0201EB8C + mov r4, #0 + mov r7, #2 + mov r6, #4 +_021D7558: + ldr r2, [r5, #4] + mov r0, #6 + add r1, r4, #0 + mul r1, r0 + add r3, r2, r1 + ldrsh r1, [r2, r1] + ldrsh r2, [r3, r7] + ldrsh r3, [r3, r6] + add r0, r4, #0 + bl FUN_020B8418 + ldr r2, [r5, #4] + lsl r1, r4, #1 + add r1, r2, r1 + ldrh r1, [r1, #0x18] + add r0, r4, #0 + bl FUN_020B8404 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D7558 + ldr r2, [r5, #4] + ldrh r0, [r2, #0x20] + ldrh r1, [r2, #0x22] + ldr r2, [r2, #0x28] + bl FUN_020B83E0 + ldr r2, [r5, #4] + ldrh r0, [r2, #0x24] + ldrh r1, [r2, #0x26] + ldr r2, [r2, #0x2c] + bl FUN_020B83BC + ldr r3, [r5, #4] + ldr r0, [r3, #0x40] + str r0, [sp] + ldr r0, [r3, #0x44] + str r0, [sp, #4] + ldr r0, [r3, #0x30] + ldr r1, [r3, #0x34] + ldr r2, [r3, #0x38] + ldr r3, [r3, #0x3c] + bl FUN_020B8390 + mov r0, #0 + mov r1, #0x48 + bl FUN_02079A70 + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D75C4: .word 0x021D789C +_021D75C8: .word 0x0029AEC1 +_021D75CC: .word 0x000005C1 + thumb_func_end MOD78_021D74E0 + + thumb_func_start MOD78_021D75D0 +MOD78_021D75D0: ; 0x021D75D0 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r6, _021D76AC ; =0x021D78AC + add r2, r0, #0 + add r5, r1, #0 + add r4, sp, #0x18 + mov r3, #4 +_021D75DE: + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _021D75DE + ldr r0, [r6] + add r3, sp, #0xc + str r0, [r4] + ldr r4, _021D76B0 ; =0x021D787C + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + add r1, sp, #0 + str r0, [r3] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r2, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021D7614 + cmp r0, #1 + beq _021D7622 + b _021D7662 +_021D7614: + ldr r0, _021D76B4 ; =0x000006DC + bl FUN_020054C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7662 +_021D7622: + add r0, r4, #0 + add r0, #0x9d + ldrb r0, [r0] + cmp r0, #0 + bne _021D7654 + add r0, r4, #0 + add r0, #0x80 + ldr r2, [r0] + mov r0, #1 + ldr r1, [r2] + lsl r0, r0, #0xc + add r1, r1, r0 + ldr r0, [r2, #8] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + cmp r1, r0 + bne _021D7662 + add r1, r4, #0 + mov r0, #1 + add r1, #0x9d + strb r0, [r1] + mov r1, #0x48 + bl FUN_02079A70 + b _021D7662 +_021D7654: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7662 + add sp, #0x3c + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D7662: + mov r3, #1 + mov r2, #0 + lsl r3, r3, #0xc +_021D7668: + lsl r0, r2, #2 + add r0, r4, r0 + add r0, #0x80 + ldr r1, [r0] + ldr r5, [r1, #8] + ldr r0, [r1] + ldrh r5, [r5, #4] + add r0, r0, r3 + lsl r5, r5, #0xc + cmp r0, r5 + bge _021D7680 + str r0, [r1] +_021D7680: + add r0, r2, #1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #4 + blo _021D7668 + bl FUN_020222AC + bl FUN_0201EBA4 + add r0, r4, #4 + add r1, sp, #0 + add r2, sp, #0x18 + add r3, sp, #0xc + bl FUN_0201B26C + mov r0, #1 + add r1, r0, #0 + bl FUN_020222B4 + mov r0, #0 + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D76AC: .word 0x021D78AC +_021D76B0: .word 0x021D787C +_021D76B4: .word 0x000006DC + thumb_func_end MOD78_021D75D0 + + thumb_func_start MOD78_021D76B8 +MOD78_021D76B8: ; 0x021D76B8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + bl FUN_02006278 + add r6, r0, #0 + add r7, r6, #0 + mov r4, #0 + add r7, #0x70 +_021D76C8: + lsl r0, r4, #2 + add r5, r6, r0 + add r1, r5, #0 + add r1, #0x80 + ldr r1, [r1] + add r0, r7, #0 + bl thunk_FUN_020ae84c + ldr r0, [r5, #0x60] + bl FUN_02016A18 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D76C8 + ldr r0, [r6, #0x5c] + bl FUN_02016A18 + ldr r0, [r6] + bl FUN_0201EB70 + ldr r0, [sp] + bl FUN_0200627C + bl FUN_0201B398 + mov r0, #0x48 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD78_021D76B8 + + thumb_func_start MOD78_021D7708 +MOD78_021D7708: ; 0x021D7708 + push {r3, lr} + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7758 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D775C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + bl MOD78_021D776C + mov r0, #0x48 + bl FUN_0201B2EC + ldr r2, _021D7760 ; =0x04000060 + ldr r0, _021D7764 ; =0xFFFFCFFF + ldrh r1, [r2] + and r1, r0 + mov r0, #0x20 + orr r0, r1 + strh r0, [r2] + ldr r0, _021D7768 ; =0x021D7888 + bl G3X_SetEdgeColorTable + bl FUN_0201E7A0 + pop {r3, pc} + nop +_021D7758: .word 0xFFFFE0FF +_021D775C: .word 0x04001000 +_021D7760: .word 0x04000060 +_021D7764: .word 0xFFFFCFFF +_021D7768: .word 0x021D7888 + thumb_func_end MOD78_021D7708 + + thumb_func_start MOD78_021D776C +MOD78_021D776C: ; 0x021D776C + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7788 ; =0x021D78D0 + add r3, sp, #0 + mov r2, #5 +_021D7776: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7776 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7788: .word 0x021D78D0 + thumb_func_end MOD78_021D776C + + thumb_func_start MOD78_021D778C +MOD78_021D778C: ; 0x021D778C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x78 + mov r1, #0x48 + bl FUN_02006670 + str r0, [sp] + add r0, r5, #0 + add r0, #0x70 + mov r1, #0x48 + mov r2, #4 + bl FUN_02016B20 + add r1, r5, #0 + add r1, #0x9c + ldrb r2, [r1] + mov r1, #0xa + ldr r0, [sp] + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7878 ; =0x021D7900 + mov r2, #0x48 + ldrh r1, [r1, r3] + bl FUN_02006704 + add r1, r5, #0 + add r2, r5, #0 + str r0, [r5, #0x5c] + add r0, r5, #4 + add r1, #0x58 + add r2, #0x5c + bl FUN_0201B234 + ldr r0, [r5, #0x5c] + bl FUN_020BC0FC + str r0, [sp, #4] + ldr r0, [r5, #0x58] + mov r1, #0 + mov r2, #0x40 + bl FUN_020BC094 + ldr r0, [r5, #0x58] + mov r1, #0 + mov r2, #0x80 + bl FUN_020BC094 + mov r2, #2 + ldr r0, [r5, #0x58] + mov r1, #0 + lsl r2, r2, #8 + bl FUN_020BC094 + mov r2, #1 + ldr r0, [r5, #0x58] + mov r1, #0 + lsl r2, r2, #0xa + bl FUN_020BC094 + add r0, r5, #0 + str r0, [sp, #8] + add r0, #0x70 + mov r6, #0 + str r0, [sp, #8] +_021D780E: + add r1, r5, #0 + add r1, #0x9c + ldrb r3, [r1] + lsl r0, r6, #2 + add r4, r5, r0 + add r2, r3, #0 + mov r1, #0xa + mul r2, r1 + ldr r3, _021D7878 ; =0x021D7900 + lsl r1, r6, #1 + add r2, r3, r2 + add r1, r1, r2 + ldrh r1, [r1, #2] + ldr r0, [sp] + mov r2, #0x48 + bl FUN_02006704 + str r0, [r4, #0x60] + mov r1, #0 + bl FUN_020BC4C8 + add r7, r0, #0 + ldr r0, [sp, #8] + ldr r2, [r5, #0x58] + add r1, r7, #0 + bl FUN_020BB8D0 + add r1, r4, #0 + add r1, #0x80 + str r0, [r1] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + ldr r2, [r5, #0x58] + ldr r3, [sp, #4] + add r1, r7, #0 + bl FUN_020B8110 + add r4, #0x80 + ldr r1, [r4] + add r0, r5, #4 + bl FUN_020B7EFC + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021D780E + ldr r0, [sp] + bl FUN_020066F4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7878: .word 0x021D7900 + thumb_func_end MOD78_021D778C + + .section .rodata + ; 0x021D787C + .incbin "baserom.nds", 0x2D9B9C, 0x7C + + .section .data + ; 0x021D7900 + .incbin "baserom.nds", 0x2D9C20, 0x40 diff --git a/arm9/modules/79/asm/module_79_arm.s b/arm9/modules/79/asm/module_79_arm.s new file mode 100644 index 00000000..3b45bc8c --- /dev/null +++ b/arm9/modules/79/asm/module_79_arm.s @@ -0,0 +1,4890 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD79_0221248C +MOD79_0221248C: ; 0x0221248C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + bne _022124B8 + ldr r0, _02212544 ; =0x02216858 + ldr r1, _02212548 ; =0x0221686C + ldr r3, _0221254C ; =0x000001B7 + mov r2, #0 + bl __msl_assertion_failed +_022124B8: + cmp r5, #0 + bne _022124D4 + ldr r0, _02212550 ; =0x0221687C + ldr r1, _02212548 ; =0x0221686C + mov r2, #0 + mov r3, #0x1b8 + bl __msl_assertion_failed +_022124D4: + ldr r4, [r5] + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r3, [r7, #0x10] + ldr r0, [r7, #0xc] + sub r0, r0, r3 + cmp r0, #0 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r1, [r7, #4] + cmp r4, r0 + movge r4, r0 + mov r0, r6 + mov r2, r4 + add r1, r1, r3 + bl memcpy + mov r0, #0 + strb r0, [r6, r4] + str r4, [r5] + ldr r1, [r7, #0x10] + mov r0, #1 + add r1, r1, r4 + str r1, [r7, #0x10] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02212544: .word 0x02216858 +_02212548: .word 0x0221686C +_0221254C: .word 0x000001B7 +_02212550: .word 0x0221687C + arm_func_end MOD79_0221248C + + arm_func_start MOD79_02212554 +MOD79_02212554: ; 0x02212554 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r8, r0 + add r6, sp, #0 + add r5, sp, #4 + add r4, r8, #0x60 + mov r7, #0 + mvn sb, #0 +_02212574: + ldr r0, [r8, #0x48] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl MOD04_021EFF5C + cmp r0, sb + beq _0221259C + ldr r0, [sp, #4] + cmp r0, #0 + beq _022125C4 +_0221259C: + mov r0, #1 + str r0, [r8, #0xfc] + mov r0, #5 + str r0, [r8, #0x38] + ldr r0, [r8, #0x48] + bl MOD04_021EFB28 + str r0, [r8, #0x4c] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022125C4: + ldr r0, [sp] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r3, [r8, #0x60] + ldr r1, [r8, #0x54] + ldr r2, [r8, #0x5c] + mov r0, r8 + add r1, r1, r3 + sub r2, r2, r3 + bl MOD79_02212F68 + cmp r0, sb + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r1, [r4] + add r0, r1, r0 + str r0, [r4] + ldr r1, [r8, #0x60] + ldr r0, [r8, #0x5c] + cmp r1, r0 + blt _02212574 + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end MOD79_02212554 + + arm_func_start MOD79_0221262C +MOD79_0221262C: ; 0x0221262C + stmdb sp!, {r4, lr} + movs r4, r0 + bne _0221264C + ldr r0, _02212664 ; =0x02216888 + ldr r1, _02212668 ; =0x0221686C + mov r2, #0 + mov r3, #0x16c + bl __msl_assertion_failed +_0221264C: + mov r1, #0 + str r1, [r4, #0xc] + str r1, [r4, #0x10] + ldr r0, [r4, #4] + strb r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_02212664: .word 0x02216888 +_02212668: .word 0x0221686C + arm_func_end MOD79_0221262C + + arm_func_start MOD79_0221266C +MOD79_0221266C: ; 0x0221266C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r2, r1 + mov r4, r0 + ldr r1, _022126A0 ; =0x02216890 + add r0, sp, #0 + bl sprintf + add r1, sp, #0 + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022126A0: .word 0x02216890 + arm_func_end MOD79_0221266C + + arm_func_start MOD79_022126A4 +MOD79_022126A4: ; 0x022126A4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + movs r4, r0 + strb r1, [sp] + bne _022126CC + ldr r0, _022126F4 ; =0x02216888 + ldr r1, _022126F8 ; =0x0221686C + ldr r3, _022126FC ; =0x00000131 + mov r2, #0 + bl __msl_assertion_failed +_022126CC: + cmp r4, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r1, sp, #0 + mov r0, r4 + mov r2, #1 + bl MOD79_02212794 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022126F4: .word 0x02216888 +_022126F8: .word 0x0221686C +_022126FC: .word 0x00000131 + arm_func_end MOD79_022126A4 + + arm_func_start MOD79_02212700 +MOD79_02212700: ; 0x02212700 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r2 + mov r2, #0 + mov r5, r0 + bl MOD79_02212794 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _0221278C ; =0x02216894 + mov r0, r5 + mov r2, #2 + bl MOD79_02212794 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl MOD79_02212794 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _02212790 ; =0x02216898 + mov r0, r5 + mov r2, #2 + bl MOD79_02212794 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221278C: .word 0x02216894 +_02212790: .word 0x02216898 + arm_func_end MOD79_02212700 + + arm_func_start MOD79_02212794 +MOD79_02212794: ; 0x02212794 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + movs r7, r0 + mov r6, r1 + ldr r5, [r7] + bne _022127C4 + ldr r0, _02212A40 ; =0x02216888 + ldr r1, _02212A44 ; =0x0221686C + mov r2, #0 + mov r3, #0xb7 + bl __msl_assertion_failed +_022127C4: + cmp r6, #0 + bne _022127E0 + ldr r0, _02212A48 ; =0x0221689C + ldr r1, _02212A44 ; =0x0221686C + mov r2, #0 + mov r3, #0xb8 + bl __msl_assertion_failed +_022127E0: + ldr r0, [sp, #0x28] + cmp r0, #0 + bge _02212800 + ldr r0, _02212A4C ; =0x022168A4 + ldr r1, _02212A44 ; =0x0221686C + mov r2, #0 + mov r3, #0xb9 + bl __msl_assertion_failed +_02212800: + cmp r7, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, lr} + addeq sp, sp, #0x10 + bxeq lr + cmp r6, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, lr} + addeq sp, sp, #0x10 + bxeq lr + ldr r0, [sp, #0x28] + cmp r0, #0 + addlt sp, sp, #0xc + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, lr} + addlt sp, sp, #0x10 + bxlt lr + cmp r0, #0 + bne _02212860 + mov r0, r6 + bl strlen + str r0, [sp, #0x28] +_02212860: + ldr r0, [r7, #0x20] + cmp r0, #1 + bne _02212968 + ldr r0, [r5, #0x168] + cmp r0, #0 + bne _0221288C + ldr r0, _02212A50 ; =0x022168B4 + ldr r1, _02212A44 ; =0x0221686C + mov r2, #0 + mov r3, #0xce + bl __msl_assertion_failed +_0221288C: + ldr r2, [r7, #8] + ldr r1, [r7, #0xc] + add r0, sp, #8 + sub r1, r2, r1 + str r1, [sp, #8] + ldr r2, [r7, #4] + ldr r1, [r7, #0xc] + add r3, sp, #0x28 + add r1, r2, r1 + str r1, [sp] + str r0, [sp, #4] + ldr r4, [r5, #0x17c] + mov r0, r5 + mov r2, r6 + add r1, r5, #0x164 + .word 0xE12FFF34 + mov r4, r0 + cmp r4, #2 + bne _0221294C + ldr r0, [r7, #0x18] + cmp r0, #0 + beq _02212910 + ldr r0, [r7] + mov r1, #1 + str r1, [r0, #0xfc] + ldr r0, [r7] + mov r1, #2 + str r1, [r0, #0x38] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, lr} + add sp, sp, #0x10 + bx lr +_02212910: + ldr r1, [r7, #0x14] + mov r0, r7 + bl MOD79_02212CF0 + cmp r0, #0 + beq _0221295C + ldr r0, [r7] + mov r2, #1 + str r2, [r0, #0xfc] + ldr r1, [r7] + add sp, sp, #0xc + str r2, [r1, #0x38] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, lr} + add sp, sp, #0x10 + bx lr +_0221294C: + ldr r1, [r7, #0xc] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [r7, #0xc] +_0221295C: + cmp r4, #2 + beq _0221288C + b _02212A2C +_02212968: + ldr r2, [r7, #0xc] + ldr r1, [sp, #0x28] + ldr r0, [r7, #8] + add r4, r2, r1 + cmp r4, r0 + blt _02212A00 +_02212980: + ldr r0, [r7, #0x18] + cmp r0, #0 + beq _022129B8 + ldr r0, [r7] + mov r1, #1 + str r1, [r0, #0xfc] + ldr r0, [r7] + mov r1, #2 + str r1, [r0, #0x38] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, lr} + add sp, sp, #0x10 + bx lr +_022129B8: + ldr r1, [r7, #0x14] + mov r0, r7 + bl MOD79_02212CF0 + cmp r0, #0 + bne _022129F4 + ldr r0, [r7] + mov r2, #1 + str r2, [r0, #0xfc] + ldr r1, [r7] + add sp, sp, #0xc + str r2, [r1, #0x38] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, lr} + add sp, sp, #0x10 + bx lr +_022129F4: + ldr r0, [r7, #8] + cmp r4, r0 + bge _02212980 +_02212A00: + ldr r3, [r7, #4] + ldr r0, [r7, #0xc] + ldr r2, [sp, #0x28] + mov r1, r6 + add r0, r3, r0 + bl memcpy + str r4, [r7, #0xc] + ldr r1, [r7, #4] + ldr r0, [r7, #0xc] + mov r2, #0 + strb r2, [r1, r0] +_02212A2C: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02212A40: .word 0x02216888 +_02212A44: .word 0x0221686C +_02212A48: .word 0x0221689C +_02212A4C: .word 0x022168A4 +_02212A50: .word 0x022168B4 + arm_func_end MOD79_02212794 + + arm_func_start MOD79_02212A54 +MOD79_02212A54: ; 0x02212A54 + stmdb sp!, {r4, lr} + movs r4, r0 + bne _02212A74 + ldr r0, _02212AAC ; =0x02216888 + ldr r1, _02212AB0 ; =0x0221686C + mov r2, #0 + mov r3, #0x9b + bl __msl_assertion_failed +_02212A74: + cmp r4, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0x1c] + cmp r1, #0 + bne _02212A98 + bl MOD04_021DD82C +_02212A98: + mov r0, r4 + mov r1, #0 + mov r2, #0x24 + bl Call_FillMemWithValue + ldmia sp!, {r4, pc} + .align 2, 0 +_02212AAC: .word 0x02216888 +_02212AB0: .word 0x0221686C + arm_func_end MOD79_02212A54 + + arm_func_start MOD79_02212AB4 +MOD79_02212AB4: ; 0x02212AB4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _02212AE4 + ldr r0, _02212BB0 ; =0x022168F0 + ldr r1, _02212BB4 ; =0x0221686C + mov r2, #0 + mov r3, #0x74 + bl __msl_assertion_failed +_02212AE4: + cmp r6, #0 + bne _02212B00 + ldr r0, _02212BB8 ; =0x02216888 + ldr r1, _02212BB4 ; =0x0221686C + mov r2, #0 + mov r3, #0x75 + bl __msl_assertion_failed +_02212B00: + cmp r5, #0 + bne _02212B1C + ldr r0, _02212BBC ; =0x022168FC + ldr r1, _02212BB4 ; =0x0221686C + mov r2, #0 + mov r3, #0x76 + bl __msl_assertion_failed +_02212B1C: + cmp r4, #0 + bgt _02212B38 + ldr r0, _02212BC0 ; =0x02216908 + ldr r1, _02212BB4 ; =0x0221686C + mov r2, #0 + mov r3, #0x77 + bl __msl_assertion_failed +_02212B38: + cmp r7, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r6, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r5, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #0 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, pc} + str r7, [r6] + str r5, [r6, #4] + str r4, [r6, #8] + mov r2, #0 + str r2, [r6, #0xc] + str r2, [r6, #0x14] + mov r0, #1 + str r0, [r6, #0x18] + str r0, [r6, #0x1c] + str r2, [r6, #0x20] + ldr r1, [r6, #4] + strb r2, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02212BB0: .word 0x022168F0 +_02212BB4: .word 0x0221686C +_02212BB8: .word 0x02216888 +_02212BBC: .word 0x022168FC +_02212BC0: .word 0x02216908 + arm_func_end MOD79_02212AB4 + + arm_func_start MOD79_02212BC4 +MOD79_02212BC4: ; 0x02212BC4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _02212BF4 + ldr r0, _02212CDC ; =0x022168F0 + ldr r1, _02212CE0 ; =0x0221686C + mov r2, #0 + mov r3, #0x43 + bl __msl_assertion_failed +_02212BF4: + cmp r6, #0 + bne _02212C10 + ldr r0, _02212CE4 ; =0x02216888 + ldr r1, _02212CE0 ; =0x0221686C + mov r2, #0 + mov r3, #0x44 + bl __msl_assertion_failed +_02212C10: + cmp r5, #0 + bgt _02212C2C + ldr r0, _02212CE8 ; =0x02216914 + ldr r1, _02212CE0 ; =0x0221686C + mov r2, #0 + mov r3, #0x45 + bl __msl_assertion_failed +_02212C2C: + cmp r4, #0 + bgt _02212C48 + ldr r0, _02212CEC ; =0x02216924 + ldr r1, _02212CE0 ; =0x0221686C + mov r2, #0 + mov r3, #0x46 + bl __msl_assertion_failed +_02212C48: + cmp r7, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r6, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r5, #0 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, pc} + cmp r4, #0 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, pc} + str r7, [r6] + mov r2, #0 + str r2, [r6, #4] + str r2, [r6, #8] + str r2, [r6, #0xc] + str r2, [r6, #0x10] + str r4, [r6, #0x14] + str r2, [r6, #0x18] + str r2, [r6, #0x1c] + mov r0, r6 + mov r1, r5 + str r2, [r6, #0x20] + bl MOD79_02212CF0 + cmp r0, #0 + moveq r0, #0 + ldrne r0, [r6, #4] + movne r1, #0 + strneb r1, [r0] + movne r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02212CDC: .word 0x022168F0 +_02212CE0: .word 0x0221686C +_02212CE4: .word 0x02216888 +_02212CE8: .word 0x02216914 +_02212CEC: .word 0x02216924 + arm_func_end MOD79_02212BC4 + + arm_func_start MOD79_02212CF0 +MOD79_02212CF0: ; 0x02212CF0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + mov r4, r1 + bne _02212D18 + ldr r0, _02212D84 ; =0x02216888 + ldr r1, _02212D88 ; =0x0221686C + mov r2, #0 + mov r3, #0x20 + bl __msl_assertion_failed +_02212D18: + cmp r4, #0 + bgt _02212D34 + ldr r0, _02212D8C ; =0x02216924 + ldr r1, _02212D88 ; =0x0221686C + mov r2, #0 + mov r3, #0x21 + bl __msl_assertion_failed +_02212D34: + cmp r5, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + cmp r4, #0 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, pc} + ldr r1, [r5, #8] + ldr r0, [r5, #4] + add r4, r1, r4 + mov r1, r4 + bl MOD04_021DD844 + cmp r0, #0 + moveq r0, #0 + strne r0, [r5, #4] + strne r4, [r5, #8] + movne r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02212D84: .word 0x02216888 +_02212D88: .word 0x0221686C +_02212D8C: .word 0x02216924 + arm_func_end MOD79_02212CF0 + + arm_func_start MOD79_02212D90 +MOD79_02212D90: ; 0x02212D90 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + movs r4, r0 + bne _02212DB4 + ldr r0, _02212DF8 ; =0x02216938 + ldr r1, _02212DFC ; =0x02216944 + mov r2, #0 + mov r3, #0x5e + bl __msl_assertion_failed +_02212DB4: + ldr r0, [r4, #0x150] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x140] + bl MOD04_021EF06C + str r0, [sp] + ldr r0, [r4, #0x44] + str r0, [sp, #4] + ldr r0, [r4, #4] + ldr r1, [r4, #0x148] + ldr r2, [r4, #0x14c] + ldr r3, [r4, #0x144] + ldr ip, [r4, #0x150] + .word 0xE12FFF3C + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02212DF8: .word 0x02216938 +_02212DFC: .word 0x02216944 + arm_func_end MOD79_02212D90 + + arm_func_start MOD79_02212E00 +MOD79_02212E00: ; 0x02212E00 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + movs r6, r0 + mov r5, r1 + mov r4, r2 + bne _02212E2C + ldr r0, _02212E70 ; =0x02216938 + ldr r1, _02212E74 ; =0x02216944 + mov r2, #0 + mov r3, #0x45 + bl __msl_assertion_failed +_02212E2C: + ldr ip, [r6, #0x3c] + cmp ip, #0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r6, #0x100] + mov r2, r5 + str r0, [sp] + ldr r0, [r6, #0x104] + mov r3, r4 + str r0, [sp, #4] + ldr r0, [r6, #0x44] + str r0, [sp, #8] + ldr r0, [r6, #4] + ldr r1, [r6, #0x10] + .word 0xE12FFF3C + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02212E70: .word 0x02216938 +_02212E74: .word 0x02216944 + arm_func_end MOD79_02212E00 + + arm_func_start MOD79_02212E78 +MOD79_02212E78: ; 0x02212E78 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + bne _02212E9C + ldr r0, _02212EFC ; =0x02216938 + ldr r1, _02212F00 ; =0x02216944 + mov r2, #0 + mov r3, #0x1b + bl __msl_assertion_failed +_02212E9C: + ldr ip, [r5, #0x40] + cmp ip, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r5, #0xc] + cmp r0, #0 + movne r4, #0 + movne r3, r4 + ldreq r4, [r5, #0xc0] + ldreq r3, [r5, #0x100] + ldr r0, [r5, #0x44] + mov r2, r4 + str r0, [sp] + ldr r0, [r5, #4] + ldr r1, [r5, #0x38] + .word 0xE12FFF3C + cmp r4, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + cmp r0, #0 + moveq r0, #1 + streq r0, [r5, #0xd8] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02212EFC: .word 0x02216938 +_02212F00: .word 0x02216944 + arm_func_end MOD79_02212E78 + + arm_func_start MOD79_02212F04 +MOD79_02212F04: ; 0x02212F04 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r3, [r6, #0x5c] + mov r5, r1 + mov r4, r2 + cmp r3, #0 + mov r3, #0 + bne _02212F48 + bl MOD79_02212F68 + mov r3, r0 + mvn r0, #0 + cmp r3, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r3, r4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_02212F48: + add r0, r6, #0x50 + add r1, r5, r3 + sub r2, r4, r3 + bl MOD79_02212794 + cmp r0, #0 + moveq r0, #0 + movne r0, #2 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD79_02212F04 + + arm_func_start MOD79_02212F68 +MOD79_02212F68: ; 0x02212F68 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x48] + mov r3, #0 + bl MOD04_021EFC24 + mvn r1, #0 + cmp r0, r1 + bne _02212FD8 + ldr r0, [r4, #0x48] + bl MOD04_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _02212FB4 + mvn r1, #0x19 + cmp r0, r1 + beq _02212FB4 + mvn r1, #0x4b + cmp r0, r1 + bne _02212FBC +_02212FB4: + mov r0, #0 + ldmia sp!, {r4, pc} +_02212FBC: + mov r1, #1 + str r1, [r4, #0xfc] + mov r1, #5 + str r1, [r4, #0x38] + str r0, [r4, #0x4c] + mvn r0, #0 + ldmia sp!, {r4, pc} +_02212FD8: + ldr r1, [r4, #0x10] + cmp r1, #4 + ldreq r1, [r4, #0x148] + addeq r1, r1, r0 + streq r1, [r4, #0x148] + ldmia sp!, {r4, pc} + arm_func_end MOD79_02212F68 + + arm_func_start MOD79_02212FF0 +MOD79_02212FF0: ; 0x02212FF0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r5, r2 + ldr r2, [r5] + ldr r0, [r7, #0x134] + mov r6, r1 + cmp r0, #0 + sub r4, r2, #1 + beq _02213050 + bl MOD04_021F025C + ldr r1, _02213230 ; =0x02216958 + ldr r2, [r7, #0x138] + ldr r1, [r1] + add r1, r2, r1 + cmp r0, r1 + addlo sp, sp, #4 + movlo r0, #1 + ldmloia sp!, {r4, r5, r6, r7, pc} + ldr r1, _02213234 ; =0x0221695C + str r0, [r7, #0x138] + ldr r0, [r1] + cmp r4, r0 + movge r4, r0 +_02213050: + ldr r1, [r7, #0x84] + ldr r0, [r7, #0x80] + cmp r1, r0 + bge _02213098 + mov r1, r6 + mov r2, r5 + add r0, r7, #0x74 + bl MOD79_0221248C + ldr r1, [r7, #0x84] + ldr r0, [r7, #0x80] + add sp, sp, #4 + cmp r1, r0 + ldreq r0, [r7, #0xf8] + streq r0, [r7, #0x80] + ldreq r0, [r7, #0xf8] + streq r0, [r7, #0x84] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_02213098: + ldr r0, [r7, #0x48] + mov r1, r6 + mov r2, r4 + mov r3, #0 + bl MOD04_021EFC78 + mov r2, r0 + mvn r0, #0 + str r2, [sp] + cmp r2, r0 + bne _0221311C + ldr r0, [r7, #0x48] + bl MOD04_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _022130EC + mvn r1, #0x19 + cmp r0, r1 + beq _022130EC + mvn r1, #0x4b + cmp r0, r1 + bne _022130F8 +_022130EC: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_022130F8: + mov r2, #1 + str r2, [r7, #0xfc] + mov r1, #5 + str r1, [r7, #0x38] + str r0, [r7, #0x4c] + add sp, sp, #4 + str r2, [r7, #0x130] + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_0221311C: + cmp r2, #0 + moveq r0, #1 + streq r0, [r7, #0x130] + addeq sp, sp, #4 + moveq r0, #2 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r7, #0x168] + cmp r0, #0 + beq _0221320C + mov r1, r6 + add r0, r7, #0x98 + bl MOD79_02212794 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r7 + bl MOD79_02213238 + cmp r0, #0 + bne _02213188 + mov r0, #1 + str r0, [r7, #0xfc] + mov r0, #0x11 + str r0, [r7, #0x38] + add sp, sp, #4 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_02213188: + ldr r1, [r7, #0x80] + ldr r0, [r7, #0x84] + sub r0, r1, r0 + cmp r0, #0 + movle r0, #0 + strleb r0, [r6] + strle r0, [r5] + addle sp, sp, #4 + movle r0, #1 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r5] + add r2, sp, #0 + sub r3, r0, #1 + mov r1, r6 + add r0, r7, #0x74 + str r3, [sp] + bl MOD79_0221248C + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r1, [r7, #0x84] + ldr r0, [r7, #0x80] + cmp r1, r0 + ldreq r0, [r7, #0xf8] + streq r0, [r7, #0x80] + ldreq r0, [r7, #0xf8] + streq r0, [r7, #0x84] + ldr r2, [sp] + cmp r2, #0 + addle sp, sp, #4 + movle r0, #1 + ldmleia sp!, {r4, r5, r6, r7, pc} +_0221320C: + mov r0, #0 + strb r0, [r6, r2] + ldr r1, [sp] + str r1, [r5] + ldr r1, [sp] + cmp r1, #0 + movle r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02213230: .word 0x02216958 +_02213234: .word 0x0221695C + arm_func_end MOD79_02212FF0 + + arm_func_start MOD79_02213238 +MOD79_02213238: ; 0x02213238 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r1, #0 + mov r4, r0 + str r1, [sp, #8] + str r1, [sp, #0xc] + add r8, sp, #0xc + add r6, sp, #8 + add r5, r4, #0x74 + add r7, r4, #0x164 +_02213260: + ldr ip, [r4, #0xa8] + ldr r0, [r4, #0xa4] + ldr r2, [r4, #0x9c] + sub r0, r0, ip + str r0, [sp, #8] + ldr r3, [r4, #0x80] + ldr r0, [r4, #0x7c] + ldr r1, [r4, #0x78] + sub r0, r0, r3 + str r0, [sp, #0xc] + add r0, r1, r3 + str r0, [sp] + str r8, [sp, #4] + ldr sb, [r4, #0x180] + mov r0, r4 + mov r1, r7 + mov r3, r6 + add r2, r2, ip + .word 0xE12FFF39 + mov sb, r0 + cmp sb, #2 + bne _022132D4 + ldr r1, [r4, #0x88] + mov r0, r5 + bl MOD79_02212CF0 + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022132D4: + cmp sb, #2 + bne _022132E8 + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _02213260 +_022132E8: + ldr r1, [r4, #0xa8] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [r4, #0xa8] + ldr r1, [r4, #0x80] + ldr r0, [sp, #0xc] + add r0, r1, r0 + str r0, [r4, #0x80] + ldr r1, [r4, #0xa8] + cmp r1, #0xff + ble _02213348 + ldr r0, [r4, #0xa4] + subs r5, r0, r1 + bne _0221332C + add r0, r4, #0x98 + bl MOD79_0221262C + b _02213348 +_0221332C: + ldr r0, [r4, #0x9c] + mov r2, r5 + add r1, r0, r1 + bl memmove + mov r0, #0 + str r0, [r4, #0xa8] + str r5, [r4, #0xa4] +_02213348: + cmp sb, #3 + addne sp, sp, #0x14 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #0x11 + str r0, [r4, #0x38] + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end MOD79_02213238 + + arm_func_start MOD79_02213374 +MOD79_02213374: ; 0x02213374 + bx lr + arm_func_end MOD79_02213374 + + arm_func_start MOD79_02213378 +MOD79_02213378: ; 0x02213378 + bx lr + arm_func_end MOD79_02213378 + + arm_func_start MOD79_0221337C +MOD79_0221337C: ; 0x0221337C + bx lr + arm_func_end MOD79_0221337C + + arm_func_start MOD79_02213380 +MOD79_02213380: ; 0x02213380 + bx lr + arm_func_end MOD79_02213380 + + arm_func_start MOD79_02213384 +MOD79_02213384: ; 0x02213384 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02213400 ; =0x02217138 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _02213404 ; =MOD79_02213638 + bl MOD79_02213510 + ldr r5, _02213408 ; =0x0221712C + mov r6, #0 + ldr r0, [r5] + cmp r0, #0 + ble _022133D4 + ldr r4, _02213400 ; =0x02217138 +_022133B8: + ldr r0, [r4] + ldr r0, [r0, r6, lsl #2] + bl MOD04_021DD82C + ldr r0, [r5] + add r6, r6, #1 + cmp r6, r0 + blt _022133B8 +_022133D4: + ldr r0, _02213400 ; =0x02217138 + ldr r0, [r0] + bl MOD04_021DD82C + ldr r2, _02213400 ; =0x02217138 + mov r3, #0 + ldr r1, _02213408 ; =0x0221712C + ldr r0, _0221340C ; =0x02217130 + str r3, [r2] + str r3, [r1] + str r3, [r0] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02213400: .word 0x02217138 +_02213404: .word MOD79_02213638 +_02213408: .word 0x0221712C +_0221340C: .word 0x02217130 + arm_func_end MOD79_02213384 + + arm_func_start MOD79_02213410 +MOD79_02213410: ; 0x02213410 + stmdb sp!, {r4, lr} + movs r4, r0 + bne _02213430 + ldr r0, _022134FC ; =0x02216960 + ldr r1, _02213500 ; =0x0221696C + ldr r3, _02213504 ; =0x00000132 + mov r2, #0 + bl __msl_assertion_failed +_02213430: + ldr r0, [r4, #0x108] + cmp r0, #0 + bne _02213450 + ldr r0, _02213508 ; =0x02216980 + ldr r1, _02213500 ; =0x0221696C + ldr r3, _0221350C ; =0x00000133 + mov r2, #0 + bl __msl_assertion_failed +_02213450: + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0x14] + bl MOD04_021DD82C + ldr r1, [r4, #0x108] + mov r0, #0 + str r1, [r4, #0x14] + str r0, [r4, #0x108] + ldr r0, [r4, #0x18] + bl MOD04_021DD82C + mov r0, #0 + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + strh r0, [r4, #0x20] + ldr r0, [r4, #0x24] + bl MOD04_021DD82C + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD04_021EFD80 + ldr r0, [r4, #0x48] + bl MOD04_021EFD9C + mvn r1, #0 + add r0, r4, #0x50 + str r1, [r4, #0x48] + bl MOD79_0221262C + add r0, r4, #0x74 + bl MOD79_0221262C + add r0, r4, #0x98 + bl MOD79_0221262C + mov r0, #0 + str r0, [r4, #0xe4] + str r0, [r4, #0xe8] + str r0, [r4, #0xec] + str r0, [r4, #0xf0] + str r0, [r4, #0xf4] + str r0, [r4, #0xf8] + str r0, [r4, #0x130] + ldr r0, [r4, #0x10c] + add r0, r0, #1 + str r0, [r4, #0x10c] + ldmia sp!, {r4, pc} + .align 2, 0 +_022134FC: .word 0x02216960 +_02213500: .word 0x0221696C +_02213504: .word 0x00000132 +_02213508: .word 0x02216980 +_0221350C: .word 0x00000133 + arm_func_end MOD79_02213410 + + arm_func_start MOD79_02213510 +MOD79_02213510: ; 0x02213510 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, _02213580 ; =0x02217130 + mov r5, r0 + ldr r0, [r1] + cmp r0, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, pc} + bl MOD79_02213378 + ldr r7, _02213584 ; =0x0221712C + mov r4, #0 + ldr r0, [r7] + cmp r0, #0 + ble _02213574 + ldr r6, _02213588 ; =0x02217138 +_0221354C: + ldr r0, [r6] + ldr r0, [r0, r4, lsl #2] + ldr r1, [r0] + cmp r1, #0 + beq _02213564 + .word 0xE12FFF35 +_02213564: + ldr r0, [r7] + add r4, r4, #1 + cmp r4, r0 + blt _0221354C +_02213574: + bl MOD79_02213374 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02213580: .word 0x02217130 +_02213584: .word 0x0221712C +_02213588: .word 0x02217138 + arm_func_end MOD79_02213510 + + arm_func_start MOD79_0221358C +MOD79_0221358C: ; 0x0221358C + stmdb sp!, {r4, lr} + movs r4, r0 + bpl _022135AC + ldr r0, _0221361C ; =0x02216998 + ldr r1, _02213620 ; =0x0221696C + ldr r3, _02213624 ; =0x00000101 + mov r2, #0 + bl __msl_assertion_failed +_022135AC: + ldr r0, _02213628 ; =0x0221712C + ldr r0, [r0] + cmp r4, r0 + blt _022135D0 + ldr r0, _0221362C ; =0x022169A8 + ldr r1, _02213620 ; =0x0221696C + ldr r3, _02213630 ; =0x00000102 + mov r2, #0 + bl __msl_assertion_failed +_022135D0: + bl MOD79_02213378 + cmp r4, #0 + blt _022135EC + ldr r0, _02213628 ; =0x0221712C + ldr r0, [r0] + cmp r4, r0 + blt _022135F8 +_022135EC: + bl MOD79_02213374 + mov r0, #0 + ldmia sp!, {r4, pc} +_022135F8: + ldr r0, _02213634 ; =0x02217138 + ldr r0, [r0] + ldr r4, [r0, r4, lsl #2] + ldr r0, [r4] + cmp r0, #0 + moveq r4, #0 + bl MOD79_02213374 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221361C: .word 0x02216998 +_02213620: .word 0x0221696C +_02213624: .word 0x00000101 +_02213628: .word 0x0221712C +_0221362C: .word 0x022169A8 +_02213630: .word 0x00000102 +_02213634: .word 0x02217138 + arm_func_end MOD79_0221358C + + arm_func_start MOD79_02213638 +MOD79_02213638: ; 0x02213638 + stmdb sp!, {r4, lr} + movs r4, r0 + bne _02213658 + ldr r0, _02213800 ; =0x02216960 + ldr r1, _02213804 ; =0x0221696C + mov r2, #0 + mov r3, #0xb3 + bl __msl_assertion_failed +_02213658: + ldr r0, [r4, #4] + cmp r0, #0 + bge _02213678 + ldr r0, _02213808 ; =0x022169C4 + ldr r1, _02213804 ; =0x0221696C + mov r2, #0 + mov r3, #0xb4 + bl __msl_assertion_failed +_02213678: + ldr r0, _0221380C ; =0x0221712C + ldr r1, [r4, #4] + ldr r0, [r0] + cmp r1, r0 + blt _022136A0 + ldr r0, _02213810 ; =0x022169E0 + ldr r1, _02213804 ; =0x0221696C + mov r2, #0 + mov r3, #0xb5 + bl __msl_assertion_failed +_022136A0: + ldr r0, [r4] + cmp r0, #0 + bne _022136C0 + ldr r0, _02213814 ; =0x02216A08 + ldr r1, _02213804 ; =0x0221696C + mov r2, #0 + mov r3, #0xb6 + bl __msl_assertion_failed +_022136C0: + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #4] + cmp r1, #0 + movlt r0, #0 + ldmltia sp!, {r4, pc} + ldr r0, _0221380C ; =0x0221712C + ldr r0, [r0] + cmp r1, r0 + movge r0, #0 + ldmgeia sp!, {r4, pc} + bl MOD79_02213378 + ldr r0, [r4, #0x14] + bl MOD04_021DD82C + ldr r0, [r4, #0x18] + bl MOD04_021DD82C + ldr r0, [r4, #0x24] + bl MOD04_021DD82C + ldr r0, [r4, #0x28] + bl MOD04_021DD82C + ldr r0, [r4, #0x108] + bl MOD04_021DD82C + ldr r0, [r4, #0x15c] + bl MOD04_021DD82C + ldr r0, [r4, #0x48] + mvn r1, #0 + cmp r0, r1 + beq _02213754 + mov r1, #2 + bl MOD04_021EFD80 + ldr r0, [r4, #0x48] + bl MOD04_021EFD9C +_02213754: + add r0, r4, #0x50 + bl MOD79_02212A54 + add r0, r4, #0x74 + bl MOD79_02212A54 + add r0, r4, #0x98 + bl MOD79_02212A54 + add r0, r4, #0xbc + bl MOD79_02212A54 + ldr r0, [r4, #0x140] + cmp r0, #0 + beq _02213788 + mov r0, r4 + bl MOD79_022149E4 +_02213788: + ldr r0, [r4, #0x13c] + cmp r0, #0 + beq _022137B0 + bl MOD79_02215074 + cmp r0, #0 + beq _022137B0 + ldr r0, [r4, #0x13c] + bl MOD79_02215058 + mov r0, #0 + str r0, [r4, #0x13c] +_022137B0: + ldr r0, [r4, #0x16c] + cmp r0, #0 + beq _022137DC + ldr r2, [r4, #0x178] + cmp r2, #0 + beq _022137D4 + mov r0, r4 + add r1, r4, #0x164 + .word 0xE12FFF32 +_022137D4: + mov r0, #0 + str r0, [r4, #0x16c] +_022137DC: + mov r1, #0 + ldr r0, _02213818 ; =0x02217130 + str r1, [r4] + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bl MOD79_02213374 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02213800: .word 0x02216960 +_02213804: .word 0x0221696C +_02213808: .word 0x022169C4 +_0221380C: .word 0x0221712C +_02213810: .word 0x022169E0 +_02213814: .word 0x02216A08 +_02213818: .word 0x02217130 + arm_func_end MOD79_02213638 + + arm_func_start MOD79_0221381C +MOD79_0221381C: ; 0x0221381C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + bl MOD79_02213378 + bl MOD79_022139CC + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + bne _0221384C + bl MOD79_02213374 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_0221384C: + ldr r0, _022139C0 ; =0x02217138 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x184 + ldr r4, [r0, r5, lsl #2] + mov r0, r4 + bl Call_FillMemWithValue + mov r0, #1 + str r0, [r4] + ldr r0, _022139C4 ; =0x02217134 + str r5, [r4, #4] + ldr r2, [r0] + mov ip, #0 + add r1, r2, #1 + str r1, [r0] + str r2, [r4, #8] + str ip, [r4, #0xc] + str ip, [r4, #0x10] + str ip, [r4, #0x14] + str ip, [r4, #0x18] + str ip, [r4, #0x1c] + strh ip, [r4, #0x20] + str ip, [r4, #0x24] + str ip, [r4, #0x28] + str ip, [r4, #0x2c] + str ip, [r4, #0x30] + str ip, [r4, #0x34] + str ip, [r4, #0x38] + str ip, [r4, #0x3c] + str ip, [r4, #0x40] + str ip, [r4, #0x44] + mvn r0, #0 + str r0, [r4, #0x48] + str ip, [r4, #0x4c] + str ip, [r4, #0xe0] + str ip, [r4, #0xe4] + str ip, [r4, #0xe8] + str ip, [r4, #0xec] + str ip, [r4, #0xf0] + str ip, [r4, #0xf4] + str ip, [r4, #0xf8] + str ip, [r4, #0xfc] + str ip, [r4, #0x100] + str r0, [r4, #0x104] + str ip, [r4, #0x108] + str ip, [r4, #0x10c] + str ip, [r4, #0x110] + str ip, [r4, #0x12c] + str ip, [r4, #0x134] + str ip, [r4, #0x138] + str ip, [r4, #0x13c] + mov r0, #0x1f4 + str r0, [r4, #0x158] + add r0, r4, #0x100 + mov r1, #0x50 + strh r1, [r0, #0x60] + str ip, [r4, #0x15c] + mov r0, r4 + add r1, r4, #0x50 + mov r2, #0x800 + mov r3, #0x1000 + str ip, [r4, #0x164] + bl MOD79_02212BC4 + cmp r0, #0 + beq _02213964 + mov r2, #0x800 + mov r0, r4 + mov r3, r2 + add r1, r4, #0x74 + bl MOD79_02212BC4 +_02213964: + cmp r0, #0 + beq _02213980 + mov r0, r4 + add r1, r4, #0x98 + mov r2, #0x800 + mov r3, #0x400 + bl MOD79_02212BC4 +_02213980: + cmp r0, #0 + bne _022139A0 + mov r0, r4 + bl MOD79_02213638 + bl MOD79_02213374 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_022139A0: + ldr r0, _022139C8 ; =0x02217130 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bl MOD79_02213374 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022139C0: .word 0x02217138 +_022139C4: .word 0x02217134 +_022139C8: .word 0x02217130 + arm_func_end MOD79_0221381C + + arm_func_start MOD79_022139CC +MOD79_022139CC: ; 0x022139CC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r1, _02213AF4 ; =0x0221712C + mov r0, #0 + ldr r2, [r1] + cmp r2, #0 + ble _02213A10 + ldr r1, _02213AF8 ; =0x02217138 + ldr r3, [r1] +_022139F0: + ldr r1, [r3, r0, lsl #2] + ldr r1, [r1] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r0, r0, #1 + cmp r0, r2 + blt _022139F0 +_02213A10: + ldr r0, _02213AFC ; =0x02217130 + ldr r0, [r0] + cmp r0, r2 + beq _02213A34 + ldr r0, _02213B00 ; =0x02216A1C + ldr r1, _02213B04 ; =0x0221696C + mov r2, #0 + mov r3, #0x33 + bl __msl_assertion_failed +_02213A34: + ldr r1, _02213AF4 ; =0x0221712C + ldr r0, _02213AF8 ; =0x02217138 + ldr r7, [r1] + ldr r0, [r0] + add r6, r7, #4 + mov r1, r6, lsl #2 + bl MOD04_021DD844 + cmp r0, #0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r8, _02213AF8 ; =0x02217138 + mov r5, r7 + str r0, [r8] + cmp r7, r6 + bge _02213AE0 + mov sb, #0 + mov r4, #0x184 +_02213A7C: + mov r0, r4 + bl MOD04_021DD860 + ldr r1, [r8] + str r0, [r1, r5, lsl #2] + ldr r0, [r8] + ldr r0, [r0, r5, lsl #2] + cmp r0, #0 + bne _02213AD0 + sub r5, r5, #1 + cmp r5, r7 + blt _02213AC4 + ldr r4, _02213AF8 ; =0x02217138 +_02213AAC: + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + bl MOD04_021DD82C + sub r5, r5, #1 + cmp r5, r7 + bge _02213AAC +_02213AC4: + add sp, sp, #4 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02213AD0: + add r5, r5, #1 + str sb, [r0] + cmp r5, r6 + blt _02213A7C +_02213AE0: + ldr r1, _02213AF4 ; =0x0221712C + mov r0, r7 + str r6, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02213AF4: .word 0x0221712C +_02213AF8: .word 0x02217138 +_02213AFC: .word 0x02217130 +_02213B00: .word 0x02216A1C +_02213B04: .word 0x0221696C + arm_func_end MOD79_022139CC + + arm_func_start MOD79_02213B08 +MOD79_02213B08: ; 0x02213B08 + ldr ip, _02213B14 ; =MOD79_02213510 + ldr r0, _02213B18 ; =MOD79_02213E84 + bx ip + .align 2, 0 +_02213B14: .word MOD79_02213510 +_02213B18: .word MOD79_02213E84 + arm_func_end MOD79_02213B08 + + arm_func_start MOD79_02213B1C +MOD79_02213B1C: ; 0x02213B1C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + beq _02213B40 + ldrsb r0, [r8] + cmp r0, #0 + bne _02213B54 +_02213B40: + ldr r0, _02213D64 ; =0x02216A50 + ldr r1, _02213D68 ; =0x02216A44 + mov r2, #0 + mov r3, #0x128 + bl __msl_assertion_failed +_02213B54: + cmp r5, #0 + bge _02213B70 + ldr r0, _02213D6C ; =0x02216A60 + ldr r1, _02213D68 ; =0x02216A44 + ldr r3, _02213D70 ; =0x00000129 + mov r2, #0 + bl __msl_assertion_failed +_02213B70: + cmp r6, #0 + beq _02213B94 + cmp r5, #0 + bne _02213B94 + ldr r0, _02213D74 ; =0x02216A70 + ldr r1, _02213D68 ; =0x02216A44 + ldr r3, _02213D78 ; =0x0000012A + mov r2, #0 + bl __msl_assertion_failed +_02213B94: + cmp r8, #0 + beq _02213BA8 + ldrsb r0, [r8] + cmp r0, #0 + bne _02213BB0 +_02213BA8: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02213BB0: + cmp r5, #0 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + cmp r6, #0 + beq _02213BD0 + cmp r5, #0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_02213BD0: + ldr r0, _02213D7C ; =0x0221713C + ldr r0, [r0] + cmp r0, #0 + bne _02213BE4 + bl MOD79_02213E24 +_02213BE4: + bl MOD79_0221381C + movs r4, r0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r1, #0 + mov r0, r8 + str r1, [r4, #0xc] + bl MOD04_021F0208 + str r0, [r4, #0x14] + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _02213C24 + mov r0, r4 + bl MOD79_02213638 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02213C24: + cmp r7, #0 + beq _02213C60 + ldrsb r0, [r7] + cmp r0, #0 + beq _02213C60 + mov r0, r7 + bl MOD04_021F0208 + str r0, [r4, #0x28] + ldr r0, [r4, #0x28] + cmp r0, #0 + bne _02213C60 + mov r0, r4 + bl MOD79_02213638 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02213C60: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x20] + str r1, [r4, #0x13c] + str r0, [r4, #0x30] + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x28] + str r1, [r4, #0x3c] + str r0, [r4, #0x40] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c] + str r1, [r4, #0x44] + str r0, [r4, #0x134] + cmp r6, #0 + movne r0, #1 + moveq r0, #0 + str r0, [r4, #0xe0] + ldr r0, [r4, #0xe0] + cmp r0, #0 + beq _02213CC4 + mov r0, r4 + mov r2, r6 + mov r3, r5 + add r1, r4, #0xbc + bl MOD79_02212AB4 + b _02213CD8 +_02213CC4: + mov r2, #0x800 + mov r0, r4 + mov r3, r2 + add r1, r4, #0xbc + bl MOD79_02212BC4 +_02213CD8: + cmp r0, #0 + bne _02213CF0 + mov r0, r4 + bl MOD79_02213638 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02213CF0: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _02213D1C + mov r0, r4 + bl MOD79_02214A60 + cmp r0, #0 + bne _02213D1C + mov r0, r4 + bl MOD79_02213638 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02213D1C: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _02213D5C + mov r0, r4 + bl MOD79_02213E84 + cmp r0, #0 + bne _02213D54 + mov r5, #0xa +_02213D3C: + mov r0, r5 + bl MOD04_021F0250 + mov r0, r4 + bl MOD79_02213E84 + cmp r0, #0 + beq _02213D3C +_02213D54: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02213D5C: + ldr r0, [r4, #4] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02213D64: .word 0x02216A50 +_02213D68: .word 0x02216A44 +_02213D6C: .word 0x02216A60 +_02213D70: .word 0x00000129 +_02213D74: .word 0x02216A70 +_02213D78: .word 0x0000012A +_02213D7C: .word 0x0221713C + arm_func_end MOD79_02213B1C + + arm_func_start MOD79_02213D80 +MOD79_02213D80: ; 0x02213D80 + stmdb sp!, {lr} + sub sp, sp, #0x1c + mov ip, #0 + str ip, [sp] + str ip, [sp, #4] + str r1, [sp, #8] + str ip, [sp, #0xc] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + mov r1, ip + mov r2, ip + mov r3, ip + bl MOD79_02213B1C + add sp, sp, #0x1c + ldmia sp!, {pc} + arm_func_end MOD79_02213D80 + + arm_func_start MOD79_02213DBC +MOD79_02213DBC: ; 0x02213DBC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD79_02213378 + ldr r0, _02213E1C ; =0x0221713C + ldr r1, [r0] + subs r1, r1, #1 + str r1, [r0] + bne _02213E10 + bl MOD79_02213384 + ldr r0, _02213E20 ; =0x02217128 + ldr r0, [r0] + cmp r0, #0 + beq _02213E00 + bl MOD04_021DD82C + ldr r0, _02213E20 ; =0x02217128 + mov r1, #0 + str r1, [r0] +_02213E00: + bl MOD79_02213374 + bl MOD79_0221337C + add sp, sp, #4 + ldmia sp!, {pc} +_02213E10: + bl MOD79_02213374 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02213E1C: .word 0x0221713C +_02213E20: .word 0x02217128 + arm_func_end MOD79_02213DBC + + arm_func_start MOD79_02213E24 +MOD79_02213E24: ; 0x02213E24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD79_02213378 + ldr r0, _02213E78 ; =0x0221713C + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + cmp r1, #1 + bne _02213E6C + bl MOD79_02213380 + ldr r1, _02213E7C ; =0x0221695C + mov r3, #0x7d + ldr r0, _02213E80 ; =0x02216958 + mov r2, #0xfa + str r3, [r1] + str r2, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_02213E6C: + bl MOD79_02213374 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02213E78: .word 0x0221713C +_02213E7C: .word 0x0221695C +_02213E80: .word 0x02216958 + arm_func_end MOD79_02213E24 + + arm_func_start MOD79_02213E84 +MOD79_02213E84: ; 0x02213E84 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r4, r0 + bne _02213EA8 + ldr r0, _02213FE8 ; =0x02216A88 + ldr r1, _02213FEC ; =0x02216A44 + mov r2, #0 + mov r3, #0x5b + bl __msl_assertion_failed +_02213EA8: + ldr r0, [r4, #4] + bl MOD79_0221358C + cmp r0, r4 + beq _02213ECC + ldr r0, _02213FF0 ; =0x02216A94 + ldr r1, _02213FEC ; =0x02216A44 + mov r2, #0 + mov r3, #0x5c + bl __msl_assertion_failed +_02213ECC: + ldr r0, [r4, #0x12c] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + mov r0, #1 + str r0, [r4, #0x12c] + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _02213EFC + mov r0, r4 + bl MOD79_02216478 +_02213EFC: + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _02213F10 + mov r0, r4 + bl MOD79_0221621C +_02213F10: + ldr r0, [r4, #0x10] + cmp r0, #2 + bne _02213F24 + mov r0, r4 + bl MOD79_022160C0 +_02213F24: + ldr r0, [r4, #0x10] + cmp r0, #3 + bne _02213F38 + mov r0, r4 + bl MOD79_02215E40 +_02213F38: + ldr r0, [r4, #0x10] + cmp r0, #4 + bne _02213F4C + mov r0, r4 + bl MOD79_02215DA8 +_02213F4C: + ldr r0, [r4, #0x10] + cmp r0, #5 + bne _02213F60 + mov r0, r4 + bl MOD79_02215D28 +_02213F60: + ldr r0, [r4, #0x10] + cmp r0, #6 + bne _02213F74 + mov r0, r4 + bl MOD79_02215AA8 +_02213F74: + ldr r0, [r4, #0x10] + cmp r0, #7 + bne _02213F88 + mov r0, r4 + bl MOD79_02215174 +_02213F88: + ldr r0, [r4, #0x10] + cmp r0, #8 + bne _02213F9C + mov r0, r4 + bl MOD79_0221507C +_02213F9C: + ldr r0, [r4, #0x108] + cmp r0, #0 + beq _02213FB0 + mov r0, r4 + bl MOD79_02213410 +_02213FB0: + ldr r5, [r4, #0xfc] + cmp r5, #0 + moveq r0, #0 + streq r0, [r4, #0x12c] + beq _02213FDC + mov r0, r4 + bl MOD79_02213FF4 + mov r0, r4 + bl MOD79_02212E78 + mov r0, r4 + bl MOD79_02213638 +_02213FDC: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02213FE8: .word 0x02216A88 +_02213FEC: .word 0x02216A44 +_02213FF0: .word 0x02216A94 + arm_func_end MOD79_02213E84 + + arm_func_start MOD79_02213FF4 +MOD79_02213FF4: ; 0x02213FF4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr lr, [r0, #0xec] + ldr r3, _022140CC ; =0x51EB851F + mov r1, lr, lsr #0x1f + smull r2, ip, r3, lr + mov ip, ip, asr #5 + add ip, r1, ip + cmp ip, #5 + addls pc, pc, ip, lsl #2 + b _022140C4 +_02214020: ; jump table + b _022140C4 ; case 0 + b _02214038 ; case 1 + b _02214038 ; case 2 + b _02214038 ; case 3 + b _02214040 ; case 4 + b _022140BC ; case 5 +_02214038: + add sp, sp, #4 + ldmia sp!, {pc} +_02214040: + ldr r1, _022140D0 ; =0x00000191 + sub r1, lr, r1 + cmp r1, #9 + addls pc, pc, r1, lsl #2 + b _022140AC +_02214054: ; jump table + b _0221407C ; case 0 + b _022140AC ; case 1 + b _0221408C ; case 2 + b _0221409C ; case 3 + b _022140AC ; case 4 + b _022140AC ; case 5 + b _022140AC ; case 6 + b _022140AC ; case 7 + b _022140AC ; case 8 + b _0221409C ; case 9 +_0221407C: + mov r1, #9 + str r1, [r0, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} +_0221408C: + mov r1, #0xa + str r1, [r0, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} +_0221409C: + mov r1, #0xb + str r1, [r0, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} +_022140AC: + mov r1, #8 + str r1, [r0, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} +_022140BC: + mov r1, #0xc + str r1, [r0, #0x38] +_022140C4: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022140CC: .word 0x51EB851F +_022140D0: .word 0x00000191 + arm_func_end MOD79_02213FF4 + + arm_func_start MOD79_022140D4 +MOD79_022140D4: ; 0x022140D4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + movs sl, r0 + bne _022140F8 + ldr r0, _02214330 ; =0x02216AD0 + ldr r1, _02214334 ; =0x02216ADC + ldr r3, _02214338 ; =0x00000404 + mov r2, #0 + bl __msl_assertion_failed +_022140F8: + ldr r0, [sl, #0x13c] + cmp r0, #0 + bne _02214118 + ldr r0, _0221433C ; =0x02216AE8 + ldr r1, _02214334 ; =0x02216ADC + ldr r3, _02214340 ; =0x00000405 + mov r2, #0 + bl __msl_assertion_failed +_02214118: + ldr r0, [sl, #0x140] + cmp r0, #0 + bne _02214138 + ldr r0, _02214344 ; =0x02216AFC + ldr r1, _02214334 ; =0x02216ADC + ldr r3, _02214348 ; =0x00000406 + mov r2, #0 + bl __msl_assertion_failed +_02214138: + ldr r0, [sl, #0x13c] + ldr r0, [r0] + bl MOD04_021EF06C + mov r4, r0 + ldr r0, [sl, #0x140] + bl MOD04_021EF06C + cmp r4, r0 + beq _0221416C + ldr r0, _0221434C ; =0x02216B1C + ldr r1, _02214334 ; =0x02216ADC + ldr r3, _02214350 ; =0x00000407 + mov r2, #0 + bl __msl_assertion_failed +_0221416C: + ldr r0, [sl, #0x144] + cmp r0, #0 + bge _0221418C + ldr r0, _02214354 ; =0x02216B70 + ldr r1, _02214334 ; =0x02216ADC + ldr r3, _02214358 ; =0x00000408 + mov r2, #0 + bl __msl_assertion_failed +_0221418C: + ldr r0, [sl, #0x140] + bl MOD04_021EF06C + ldr r1, [sl, #0x144] + cmp r1, r0 + ble _022141B4 + ldr r0, _0221435C ; =0x02216B94 + ldr r1, _02214334 ; =0x02216ADC + ldr r3, _02214360 ; =0x00000409 + mov r2, #0 + bl __msl_assertion_failed +_022141B4: + ldr r0, [sl, #0x140] + add sb, sl, #0x140 + bl MOD04_021EF06C + ldr r1, [sl, #0x5c] + mov r7, r0 + cmp r1, #0 + beq _0221421C + mov r0, sl + bl MOD79_02212554 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sl, #0x60] + ldr r0, [sl, #0x5c] + cmp r1, r0 + addlt sp, sp, #4 + movlt r0, #2 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sl, #0x50 + bl MOD79_0221262C + ldr r0, [sl, #0x144] + cmp r0, r7 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0221421C: + ldr r1, [sb, #4] + cmp r1, r7 + bge _022142E0 + ldr r6, _02214364 ; =0x02216BE4 + ldr fp, _02214334 ; =0x02216ADC + mov r5, #0 + mov r4, #1 +_02214238: + ldr r0, [sb] + bl MOD04_021EEFFC + movs r8, r0 + bne _0221425C + ldr r3, _02214368 ; =0x0000042F + mov r0, r6 + mov r1, fp + mov r2, r5 + bl __msl_assertion_failed +_0221425C: + ldr r0, [sb, #4] + mov r1, sl + cmp r0, #0 + moveq r2, r4 + movne r2, r5 + mov r0, r8 + bl MOD79_02214378 + cmp r0, #0 + bne _022142B8 + ldr r0, [sl, #0xfc] + cmp r0, #0 + beq _02214298 + ldr r0, [sl, #0x38] + cmp r0, #0 + bne _022142AC +_02214298: + ldr r0, _0221436C ; =0x02216BF0 + ldr r1, _02214334 ; =0x02216ADC + ldr r3, _02214370 ; =0x0000043B + mov r2, #0 + bl __msl_assertion_failed +_022142AC: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022142B8: + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sb, #4] + add r0, r0, #1 + str r0, [sb, #4] + ldr r1, [sb, #4] + cmp r1, r7 + blt _02214238 +_022142E0: + ldr r0, [sl, #0x13c] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _02214318 + ldr r0, _02214374 ; =0x02216C1C + bl strlen + mov r2, r0 + ldr r1, _02214374 ; =0x02216C1C + mov r0, sl + bl MOD79_02212F04 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02214318: + ldr r0, [sl, #0x5c] + cmp r0, #0 + movne r0, #2 + moveq r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02214330: .word 0x02216AD0 +_02214334: .word 0x02216ADC +_02214338: .word 0x00000404 +_0221433C: .word 0x02216AE8 +_02214340: .word 0x00000405 +_02214344: .word 0x02216AFC +_02214348: .word 0x00000406 +_0221434C: .word 0x02216B1C +_02214350: .word 0x00000407 +_02214354: .word 0x02216B70 +_02214358: .word 0x00000408 +_0221435C: .word 0x02216B94 +_02214360: .word 0x00000409 +_02214364: .word 0x02216BE4 +_02214368: .word 0x0000042F +_0221436C: .word 0x02216BF0 +_02214370: .word 0x0000043B +_02214374: .word 0x02216C1C + arm_func_end MOD79_022140D4 + + arm_func_start MOD79_02214378 +MOD79_02214378: ; 0x02214378 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _02214554 ; =0x00000808 + sub sp, sp, ip + mov r6, r0 + ldr r3, [r6, #4] + mvn r0, #0 + mov r5, r1 + mov r4, r2 + cmp r3, r0 + bne _022144D8 + mov r2, #0 + str r2, [r6, #4] + ldr r0, [r5, #0x13c] + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _02214410 + ldr r0, [r6] + ldr r0, [r0] + cmp r0, #0 + beq _022143D8 + ldr r0, _02214558 ; =0x02216C48 + ldr r1, _0221455C ; =0x02216ADC + ldr r3, _02214560 ; =0x000003A9 + bl __msl_assertion_failed +_022143D8: + cmp r4, #0 + beq _022143F8 + ldr r1, [r6] + add r0, sp, #8 + ldr r2, [r1, #4] + ldr r1, _02214564 ; =0x02216C68 + bl sprintf + b _02214498 +_022143F8: + ldr r1, [r6] + add r0, sp, #8 + ldr r2, [r1, #4] + ldr r1, _02214568 ; =0x02216C6C + bl sprintf + b _02214498 +_02214410: + ldr r3, [r6] + ldr r1, [r3] + cmp r1, #0 + bne _02214440 + cmp r4, #0 + ldrne r2, _0221456C ; =0x02216C74 + ldr r3, [r3, #4] + ldreq r2, _02214570 ; =0x02216C9C + ldr r1, _02214574 ; =0x02216CC8 + add r0, sp, #8 + bl sprintf + b _02214498 +_02214440: + sub r0, r1, #1 + cmp r0, #1 + bhi _02214488 + cmp r1, #1 + ldreq r1, [r3, #0xc] + ldreq r0, [r3, #0x10] + ldrne r1, [r3, #0x10] + ldrne r0, [r3, #0x14] + cmp r4, #0 + str r1, [sp] + str r0, [sp, #4] + ldrne r2, _0221456C ; =0x02216C74 + ldr r3, [r3, #4] + ldreq r2, _02214570 ; =0x02216C9C + ldr r1, _02214578 ; =0x02216CF8 + add r0, sp, #8 + bl sprintf + b _02214498 +_02214488: + ldr r0, _0221457C ; =0x02216D4C + ldr r1, _0221455C ; =0x02216ADC + mov r3, #0x3dc + bl __msl_assertion_failed +_02214498: + add r0, sp, #8 + bl strlen + mov r2, r0 + add r1, sp, #8 + mov r0, r5 + bl MOD79_02212F04 + cmp r0, #0 + ldreq ip, _02214554 ; =0x00000808 + moveq r0, #0 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, #2 + ldreq ip, _02214554 ; =0x00000808 + moveq r0, #2 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, pc} +_022144D8: + ldr r0, [r6] + ldr r0, [r0] + cmp r0, #0 + bne _02214500 + mov r0, r6 + mov r1, r5 + bl MOD79_022147E8 + ldr ip, _02214554 ; =0x00000808 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, pc} +_02214500: + cmp r0, #1 + bne _02214520 + mov r0, r6 + mov r1, r5 + bl MOD79_0221467C + ldr ip, _02214554 ; =0x00000808 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, pc} +_02214520: + cmp r0, #2 + beq _0221453C + ldr r0, _02214580 ; =0x02216D50 + ldr r1, _0221455C ; =0x02216ADC + ldr r3, _02214584 ; =0x000003F5 + mov r2, #0 + bl __msl_assertion_failed +_0221453C: + mov r0, r6 + mov r1, r5 + bl MOD79_02214588 + ldr ip, _02214554 ; =0x00000808 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02214554: .word 0x00000808 +_02214558: .word 0x02216C48 +_0221455C: .word 0x02216ADC +_02214560: .word 0x000003A9 +_02214564: .word 0x02216C68 +_02214568: .word 0x02216C6C +_0221456C: .word 0x02216C74 +_02214570: .word 0x02216C9C +_02214574: .word 0x02216CC8 +_02214578: .word 0x02216CF8 +_0221457C: .word 0x02216D4C +_02214580: .word 0x02216D50 +_02214584: .word 0x000003F5 + arm_func_end MOD79_02214378 + + arm_func_start MOD79_02214588 +MOD79_02214588: ; 0x02214588 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, [r5, #4] + mov r4, r1 + cmp r0, #0 + bge _022145B8 + ldr r0, _02214668 ; =0x02216D74 + ldr r1, _0221466C ; =0x02216ADC + ldr r3, _02214670 ; =0x0000036E + mov r2, #0 + bl __msl_assertion_failed +_022145B8: + ldr r0, [r5] + ldr r1, [r0, #0xc] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r5, #4] + cmp r0, r1 + blt _022145F0 + ldr r0, _02214674 ; =0x02216D84 + ldr r1, _0221466C ; =0x02216ADC + ldr r3, _02214678 ; =0x00000375 + mov r2, #0 + bl __msl_assertion_failed +_022145F0: + ldr r1, [r5] + ldr r3, [r5, #4] + ldr r0, [r1, #0xc] + ldr r1, [r1, #8] + sub r2, r0, r3 + cmp r2, #0x8000 + movge r2, #0x8000 + mov r0, r4 + add r1, r1, r3 + bl MOD79_02212F68 + mvn r1, #0 + cmp r0, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r1, [r5, #4] + add r1, r1, r0 + str r1, [r5, #4] + ldr r2, [r5] + ldr r1, [r5, #4] + ldr r2, [r2, #0xc] + cmp r2, r1 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + cmp r0, #0 + bne _022145F0 + mov r0, #2 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02214668: .word 0x02216D74 +_0221466C: .word 0x02216ADC +_02214670: .word 0x0000036E +_02214674: .word 0x02216D84 +_02214678: .word 0x00000375 + arm_func_end MOD79_02214588 + + arm_func_start MOD79_0221467C +MOD79_0221467C: ; 0x0221467C + stmdb sp!, {r4, r5, lr} + ldr ip, _022147CC ; =0x00001004 + sub sp, sp, ip + mov r5, r0 + ldr r0, [r5, #4] + mov r4, r1 + cmp r0, #0 + bge _022146B0 + ldr r0, _022147D0 ; =0x02216D74 + ldr r1, _022147D4 ; =0x02216ADC + ldr r3, _022147D8 ; =0x00000336 + mov r2, #0 + bl __msl_assertion_failed +_022146B0: + ldr r1, [r5, #4] + ldr r0, [r5, #0xc] + cmp r1, r0 + blt _022146D4 + ldr r0, _022147DC ; =0x02216DB4 + ldr r1, _022147D4 ; =0x02216ADC + ldr r3, _022147E0 ; =0x00000337 + mov r2, #0 + bl __msl_assertion_failed +_022146D4: + ldr r0, [r5, #8] + bl ftell + ldr r1, [r5, #4] + cmp r1, r0 + beq _022146FC + ldr r0, _022147E4 ; =0x02216DDC + ldr r1, _022147D4 ; =0x02216ADC + mov r2, #0 + mov r3, #0x338 + bl __msl_assertion_failed +_022146FC: + ldr r3, [r5, #8] + add r0, sp, #0 + mov r1, #1 + mov r2, #0x1000 + bl fread + mov r2, r0 + cmp r2, #0 + bgt _0221473C + ldr ip, _022147CC ; =0x00001004 + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #0xe + str r0, [r4, #0x38] + add sp, sp, ip + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_0221473C: + ldr r0, [r5, #4] + add r0, r0, r2 + str r0, [r5, #4] + ldr r1, [r5, #4] + ldr r0, [r5, #0xc] + cmp r1, r0 + ble _02214778 + ldr ip, _022147CC ; =0x00001004 + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #0xe + str r0, [r4, #0x38] + add sp, sp, ip + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_02214778: + add r1, sp, #0 + mov r0, r4 + bl MOD79_02212F04 + cmp r0, #0 + ldreq ip, _022147CC ; =0x00001004 + moveq r0, #0 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r5, #4] + ldr r1, [r5, #0xc] + cmp r2, r1 + ldreq ip, _022147CC ; =0x00001004 + moveq r0, #1 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, pc} + cmp r0, #1 + beq _022146FC + mov r0, #2 + ldr ip, _022147CC ; =0x00001004 + add sp, sp, ip + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022147CC: .word 0x00001004 +_022147D0: .word 0x02216D74 +_022147D4: .word 0x02216ADC +_022147D8: .word 0x00000336 +_022147DC: .word 0x02216DB4 +_022147E0: .word 0x00000337 +_022147E4: .word 0x02216DDC + arm_func_end MOD79_0221467C + + arm_func_start MOD79_022147E8 +MOD79_022147E8: ; 0x022147E8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r0, [r4, #4] + mov sl, r1 + cmp r0, #0 + bge _02214818 + ldr r0, _022149BC ; =0x02216D74 + ldr r1, _022149C0 ; =0x02216ADC + ldr r3, _022149C4 ; =0x000002E7 + mov r2, #0 + bl __msl_assertion_failed +_02214818: + ldr r0, [r4] + ldr r1, [r0, #0xc] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #4] + cmp r0, r1 + blt _02214850 + ldr r0, _022149C8 ; =0x02216E14 + ldr r1, _022149C0 ; =0x02216ADC + ldr r3, _022149CC ; =0x000002EE + mov r2, #0 + bl __msl_assertion_failed +_02214850: + ldr r0, [sl, #0x13c] + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _02214968 + ldr r1, [r4] + ldr r0, [r1, #0x10] + cmp r0, #0 + beq _02214968 + ldr r0, _022149D0 ; =0x02216738 + ldr r7, [r1, #8] + ldrb r3, [r0] + ldrb r2, [r0, #1] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + strb r3, [sp] + strb r2, [sp, #1] + strb r1, [sp, #2] + strb r0, [sp, #3] + ldrsb r8, [r7] + mov sb, #0 + cmp r8, #0 + beq _0221495C + mov fp, sb + mov r4, #3 + mov r5, #0x2b +_022148B4: + ldr r0, _022149D4 ; =0x02216E40 + mov r1, r8 + bl strchr + cmp r0, #0 + beq _022148D8 + mov r1, r8 + add r0, sl, #0x50 + bl MOD79_022126A4 + b _0221494C +_022148D8: + cmp r8, #0x20 + bne _022148F0 + mov r1, r5 + add r0, sl, #0x50 + bl MOD79_022126A4 + b _0221494C +_022148F0: + mov r0, r8, asr #3 + add r0, r8, r0, lsr #28 + mov r6, r0, asr #4 + cmp r6, #0x10 + blt _02214918 + ldr r0, _022149D8 ; =0x02216E84 + ldr r1, _022149C0 ; =0x02216ADC + ldr r3, _022149DC ; =0x0000030D + mov r2, fp + bl __msl_assertion_failed +_02214918: + ldr r0, _022149E0 ; =0x02216E94 + mov r1, r8, lsr #0x1f + ldrsb r2, [r0, r6] + rsb r0, r1, r8, lsl #28 + add r1, r1, r0, ror #28 + ldr r0, _022149E0 ; =0x02216E94 + strb r2, [sp, #1] + ldrsb r2, [r0, r1] + add r1, sp, #0 + add r0, sl, #0x50 + strb r2, [sp, #2] + mov r2, r4 + bl MOD79_02212794 +_0221494C: + add sb, sb, #1 + ldrsb r8, [r7, sb] + cmp r8, #0 + bne _022148B4 +_0221495C: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02214968: + ldr r1, [r4] + ldr r0, [r4, #4] + ldr r2, [r1, #0xc] + ldr r1, [r1, #8] + sub r5, r2, r0 + mov r0, sl + mov r2, r5 + bl MOD79_02212F68 + mvn r1, #0 + cmp r0, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #4] + cmp r0, r5 + add r0, r1, r0 + str r0, [r4, #4] + moveq r0, #1 + movne r0, #2 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022149BC: .word 0x02216D74 +_022149C0: .word 0x02216ADC +_022149C4: .word 0x000002E7 +_022149C8: .word 0x02216E14 +_022149CC: .word 0x000002EE +_022149D0: .word 0x02216738 +_022149D4: .word 0x02216E40 +_022149D8: .word 0x02216E84 +_022149DC: .word 0x0000030D +_022149E0: .word 0x02216E94 + arm_func_end MOD79_022147E8 + + arm_func_start MOD79_022149E4 +MOD79_022149E4: ; 0x022149E4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0x140] + cmp r0, #0 + beq _02214A38 + bl MOD04_021EF06C + mov r4, r0 + cmp r4, #0 + mov r5, #0 + ble _02214A28 +_02214A0C: + ldr r0, [r6, #0x140] + mov r1, r5 + bl MOD04_021EEFFC + bl MOD79_02214BF4 + add r5, r5, #1 + cmp r5, r4 + blt _02214A0C +_02214A28: + ldr r0, [r6, #0x140] + bl MOD04_021EF074 + mov r0, #0 + str r0, [r6, #0x140] +_02214A38: + ldr r0, [r6, #0x13c] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r0, #0x10] + cmp r1, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl MOD79_02215058 + mov r0, #0 + str r0, [r6, #0x13c] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD79_022149E4 + + arm_func_start MOD79_02214A60 +MOD79_02214A60: ; 0x02214A60 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, [r4, #0x13c] + cmp r0, #0 + bne _02214A8C + ldr r0, _02214BE4 ; =0x02216AE8 + ldr r1, _02214BE8 ; =0x02216ADC + mov r2, #0 + mov r3, #0x278 + bl __msl_assertion_failed +_02214A8C: + ldr r0, [r4, #0x13c] + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, #0 + str r0, [r4, #0x144] + str r0, [r4, #0x148] + str r0, [r4, #0x14c] + ldr r0, [r4, #0x13c] + ldr r0, [r0, #4] + str r0, [r4, #0x150] + ldr r0, [r4, #0x13c] + ldr r0, [r0, #8] + str r0, [r4, #0x154] + ldr r0, [r4, #0x13c] + ldr r0, [r0] + bl MOD04_021EF06C + mov r7, r0 + mov r1, r7 + mov r0, #0x10 + mov r2, #0 + bl MOD04_021EF0E4 + str r0, [r4, #0x140] + ldr r0, [r4, #0x140] + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r7, #0 + mov r8, #0 + ble _02214B98 + add r6, sp, #0 + mov r5, r8 +_02214B14: + ldr r0, [r4, #0x13c] + mov r1, r8 + ldr r0, [r0] + bl MOD04_021EEFFC + str r5, [r6] + str r5, [r6, #4] + str r5, [r6, #8] + str r5, [r6, #0xc] + str r0, [sp] + mov r0, r6 + bl MOD79_02214C5C + cmp r0, #0 + bne _02214B80 + subs r8, r8, #1 + bmi _02214B68 +_02214B50: + ldr r0, [r4, #0x140] + mov r1, r8 + bl MOD04_021EEFFC + bl MOD79_02214BF4 + subs r8, r8, #1 + bpl _02214B50 +_02214B68: + ldr r0, [r4, #0x140] + bl MOD04_021EF074 + mov r0, #0 + add sp, sp, #0x10 + str r0, [r4, #0x140] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02214B80: + ldr r0, [r4, #0x140] + mov r1, r6 + bl MOD04_021EEFA8 + add r8, r8, #1 + cmp r8, r7 + blt _02214B14 +_02214B98: + ldr r0, [r4, #0x13c] + ldr r0, [r0] + bl MOD04_021EF06C + mov r5, r0 + ldr r0, [r4, #0x140] + bl MOD04_021EF06C + cmp r5, r0 + beq _02214BCC + ldr r0, _02214BEC ; =0x02216B1C + ldr r1, _02214BE8 ; =0x02216ADC + ldr r3, _02214BF0 ; =0x000002B1 + mov r2, #0 + bl __msl_assertion_failed +_02214BCC: + mov r0, r4 + bl MOD79_02214D0C + str r0, [r4, #0x14c] + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02214BE4: .word 0x02216AE8 +_02214BE8: .word 0x02216ADC +_02214BEC: .word 0x02216B1C +_02214BF0: .word 0x000002B1 + arm_func_end MOD79_02214A60 + + arm_func_start MOD79_02214BF4 +MOD79_02214BF4: ; 0x02214BF4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + cmp r0, #1 + bne _02214C30 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02214C24 + bl fclose +_02214C24: + mov r0, #0 + str r0, [r4, #8] + ldmia sp!, {r4, pc} +_02214C30: + cmp r0, #2 + ldmeqia sp!, {r4, pc} + ldr r0, _02214C50 ; =0x02216D4C + ldr r1, _02214C54 ; =0x02216ADC + ldr r3, _02214C58 ; =0x00000269 + mov r2, #0 + bl __msl_assertion_failed + ldmia sp!, {r4, pc} + .align 2, 0 +_02214C50: .word 0x02216D4C +_02214C54: .word 0x02216ADC +_02214C58: .word 0x00000269 + arm_func_end MOD79_02214BF4 + + arm_func_start MOD79_02214C5C +MOD79_02214C5C: ; 0x02214C5C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4] + mvn r0, #0 + ldr r1, [r1] + str r0, [r4, #4] + cmp r1, #0 + beq _02214CFC + cmp r1, #1 + bne _02214CD8 + ldr r0, [r4, #8] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r1, #0 + mov r2, #2 + bl fseek + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #8] + bl ftell + str r0, [r4, #0xc] + ldr r1, [r4, #0xc] + mvn r0, #0 + cmp r1, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #8] + bl rewind + b _02214CFC +_02214CD8: + cmp r1, #2 + beq _02214CFC + ldr r0, _02214D04 ; =0x02216D4C + ldr r1, _02214D08 ; =0x02216ADC + mov r2, #0 + mov r3, #0x244 + bl __msl_assertion_failed + mov r0, #0 + ldmia sp!, {r4, pc} +_02214CFC: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02214D04: .word 0x02216D4C +_02214D08: .word 0x02216ADC + arm_func_end MOD79_02214C5C + + arm_func_start MOD79_02214D0C +MOD79_02214D0C: ; 0x02214D0C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r4, [r5, #0x13c] + cmp r4, #0 + bne _02214D38 + ldr r0, _02214D74 ; =0x02216EA8 + ldr r1, _02214D78 ; =0x02216ADC + mov r2, #0 + mov r3, #0x20c + bl __msl_assertion_failed +_02214D38: + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02214D64 + mov r0, r5 + bl MOD79_02214D7C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02214D64: + mov r0, r5 + bl MOD79_02214F48 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02214D74: .word 0x02216EA8 +_02214D78: .word 0x02216ADC + arm_func_end MOD79_02214D0C + + arm_func_start MOD79_02214D7C +MOD79_02214D7C: ; 0x02214D7C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr r1, _02214F24 ; =0x0221714C + mov r8, r0 + ldr r0, [r1] + ldr r7, [r8, #0x13c] + cmp r0, #0 + mov r4, #0 + bne _02214DD4 + ldr r0, _02214F28 ; =0x02216EB0 + bl strlen + ldr r5, _02214F24 ; =0x0221714C + ldr r3, _02214F2C ; =0x02217148 + add sl, r0, #0x2f + ldr r2, _02214F30 ; =0x02217144 + add sb, r0, #0x4c + ldr r1, _02214F34 ; =0x02217140 + add r6, r0, #4 + str r0, [r5] + str sl, [r3] + str sb, [r2] + str r6, [r1] +_02214DD4: + ldr r0, [r7] + bl MOD04_021EF06C + mov r5, r0 + cmp r5, #0 + mov r6, #0 + ble _02214F10 + mov fp, r6 + mov sb, #0x1ec +_02214DF4: + ldr r0, [r7] + mov r1, r6 + bl MOD04_021EEFFC + mov sl, r0 + ldr r0, [sl] + cmp r0, #0 + bne _02214E34 + ldr r0, _02214F2C ; =0x02217148 + ldr r1, [r0] + ldr r0, [sl, #4] + add r4, r4, r1 + bl strlen + add r1, r4, r0 + ldr r0, [sl, #0xc] + add r4, r1, r0 + b _02214F04 +_02214E34: + cmp r0, #1 + bne _02214EA0 + ldr r0, _02214F30 ; =0x02217144 + ldr r1, [r0] + ldr r0, [sl, #4] + add r4, r4, r1 + bl strlen + add r4, r4, r0 + ldr r0, [sl, #0xc] + bl strlen + add r4, r4, r0 + ldr r0, [sl, #0x10] + bl strlen + add r4, r4, r0 + ldr r0, [r8, #0x140] + mov r1, r6 + bl MOD04_021EEFFC + movs sl, r0 + bne _02214E94 + ldr r0, _02214F38 ; =0x02216ED8 + ldr r1, _02214F3C ; =0x02216ADC + mov r2, fp + mov r3, sb + bl __msl_assertion_failed +_02214E94: + ldr r0, [sl, #0xc] + add r4, r4, r0 + b _02214F04 +_02214EA0: + cmp r0, #2 + bne _02214EE4 + ldr r0, _02214F30 ; =0x02217144 + ldr r1, [r0] + ldr r0, [sl, #4] + add r4, r4, r1 + bl strlen + add r4, r4, r0 + ldr r0, [sl, #0x10] + bl strlen + add r4, r4, r0 + ldr r0, [sl, #0x14] + bl strlen + add r1, r4, r0 + ldr r0, [sl, #0xc] + add r4, r1, r0 + b _02214F04 +_02214EE4: + ldr r0, _02214F40 ; =0x02216D4C + ldr r1, _02214F3C ; =0x02216ADC + ldr r3, _02214F44 ; =0x000001F9 + mov r2, #0 + bl __msl_assertion_failed + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02214F04: + add r6, r6, #1 + cmp r6, r5 + blt _02214DF4 +_02214F10: + ldr r0, _02214F34 ; =0x02217140 + ldr r0, [r0] + add r0, r4, r0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02214F24: .word 0x0221714C +_02214F28: .word 0x02216EB0 +_02214F2C: .word 0x02217148 +_02214F30: .word 0x02217144 +_02214F34: .word 0x02217140 +_02214F38: .word 0x02216ED8 +_02214F3C: .word 0x02216ADC +_02214F40: .word 0x02216D4C +_02214F44: .word 0x000001F9 + arm_func_end MOD79_02214D7C + + arm_func_start MOD79_02214F48 +MOD79_02214F48: ; 0x02214F48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr sl, [r0, #0x13c] + mov r6, #0 + ldr r0, [sl] + bl MOD04_021EF06C + movs r7, r0 + addeq sp, sp, #4 + moveq r0, r6 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r7, #0 + mov r8, r6 + ble _02214FE4 + ldr fp, _02214FF4 ; =0x02216EE0 + mov r5, r8 + mov r4, #0x1b0 +_02214F88: + ldr r0, [sl] + mov r1, r8 + bl MOD04_021EEFFC + mov sb, r0 + ldr r0, [sb] + cmp r0, #0 + beq _02214FB8 + ldr r1, _02214FF8 ; =0x02216ADC + mov r0, fp + mov r2, r5 + mov r3, r4 + bl __msl_assertion_failed +_02214FB8: + ldr r0, [sb, #4] + bl strlen + add r8, r8, #1 + ldr r1, [sb, #0xc] + add r2, r6, r0 + ldr r0, [sb, #0x14] + add r1, r2, r1 + add r0, r1, r0, lsl #1 + cmp r8, r7 + add r6, r0, #1 + blt _02214F88 +_02214FE4: + sub r0, r7, #1 + add r0, r6, r0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02214FF4: .word 0x02216EE0 +_02214FF8: .word 0x02216ADC + arm_func_end MOD79_02214F48 + + arm_func_start MOD79_02214FFC +MOD79_02214FFC: ; 0x02214FFC + stmdb sp!, {r4, lr} + ldr r4, [r0, #0x13c] + cmp r4, #0 + bne _02215020 + ldr r0, _02215040 ; =0x02216EA8 + ldr r1, _02215044 ; =0x02216ADC + ldr r3, _02215048 ; =0x00000192 + mov r2, #0 + bl __msl_assertion_failed +_02215020: + cmp r4, #0 + ldreq r0, _0221504C ; =0x02216EF8 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + ldrne r0, _02215050 ; =0x02216EFC + ldreq r0, _02215054 ; =0x02216F40 + ldmia sp!, {r4, pc} + .align 2, 0 +_02215040: .word 0x02216EA8 +_02215044: .word 0x02216ADC +_02215048: .word 0x00000192 +_0221504C: .word 0x02216EF8 +_02215050: .word 0x02216EFC +_02215054: .word 0x02216F40 + arm_func_end MOD79_02214FFC + + arm_func_start MOD79_02215058 +MOD79_02215058: ; 0x02215058 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + bl MOD04_021EF074 + mov r0, r4 + bl MOD04_021DD82C + ldmia sp!, {r4, pc} + arm_func_end MOD79_02215058 + + arm_func_start MOD79_02215074 +MOD79_02215074: ; 0x02215074 + ldr r0, [r0, #0x10] + bx lr + arm_func_end MOD79_02215074 + + arm_func_start MOD79_0221507C +MOD79_0221507C: ; 0x0221507C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _02215170 ; =0x00002008 + sub sp, sp, ip + mov r5, r0 + bl MOD04_021F025C + mov r4, r0 + mov r1, #0 + mov r8, #0x2000 + add r7, sp, #4 + add r6, sp, #0 + b _02215144 +_022150A8: + mov r0, r5 + mov r1, r7 + mov r2, r6 + str r8, [sp] + bl MOD79_02212FF0 + cmp r0, #3 + ldreq ip, _02215170 ; =0x00002008 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r0, #1 + ldreq ip, _02215170 ; =0x00002008 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r0, #2 + bne _0221511C + mov r0, #1 + str r0, [r5, #0xfc] + ldr r1, [r5, #0x104] + cmp r1, #0 + ldrle ip, _02215170 ; =0x00002008 + addle sp, sp, ip + ldmleia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r5, #0x100] + ldr ip, _02215170 ; =0x00002008 + cmp r0, r1 + movlt r0, #0xf + add sp, sp, ip + strlt r0, [r5, #0x38] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0221511C: + ldr r2, [sp] + mov r0, r5 + mov r1, r7 + bl MOD79_02215640 + cmp r0, #0 + ldreq ip, _02215170 ; =0x00002008 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl MOD04_021F025C + sub r1, r0, r4 +_02215144: + ldr r0, [r5, #0xfc] + cmp r0, #0 + ldrne ip, _02215170 ; =0x00002008 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r5, #0x158] + cmp r1, r0 + blo _022150A8 + ldr ip, _02215170 ; =0x00002008 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02215170: .word 0x00002008 + arm_func_end MOD79_0221507C + + arm_func_start MOD79_02215174 +MOD79_02215174: ; 0x02215174 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr ip, _02215618 ; =0x00001018 + sub sp, sp, ip + mov r3, #0x1000 + add r1, sp, #0x13 + add r2, sp, #4 + mov r6, r0 + str r3, [sp, #4] + bl MOD79_02212FF0 + mov r4, r0 + cmp r4, #3 + ldreq ip, _02215618 ; =0x00001018 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r4, #1 + bne _022151CC + ldr r1, [r6, #0x84] + ldr r0, [r6, #0x80] + cmp r1, r0 + ldreq ip, _02215618 ; =0x00001018 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022151CC: + cmp r4, #0 + bne _022151F4 + ldr r2, [sp, #4] + add r1, sp, #0x13 + add r0, r6, #0x74 + bl MOD79_02212794 + cmp r0, #0 + ldreq ip, _02215618 ; =0x00001018 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022151F4: + ldr r2, [r6, #0x84] + ldr r0, [r6, #0x78] + ldr r1, _0221561C ; =0x02216F64 + add r5, r0, r2 + mov r0, r5 + str r2, [r6, #0xf4] + bl strstr + cmp r0, #0 + bne _02215224 + ldr r1, _02215620 ; =0x02216F6C + mov r0, r5 + bl strstr +_02215224: + cmp r0, #0 + beq _022155E0 + mov r1, #0 + strb r1, [r0, #2] + ldr r7, [r6, #0x78] + add r3, r0, #2 + ldr r1, [r6, #0x80] + sub r2, r3, r7 + str r2, [r6, #0x80] + ldr r2, [r6, #0x78] + add r4, r0, #4 + sub r0, r3, r2 + str r0, [r6, #0xf8] + ldr r0, [r6, #0xf8] + sub r8, r4, r7 + str r0, [r6, #0x84] + ldr r2, [r6, #0xec] + ldr r3, _02215624 ; =0x51EB851F + mov r0, r2, lsr #0x1f + smull r2, r7, r3, r2 + mov r7, r7, asr #5 + add r7, r0, r7 + cmp r7, #1 + sub sl, r1, r8 + bne _022152DC + cmp sl, #0 + beq _022152B0 + ldr r0, [r6, #0x78] + mov r1, r4 + add r2, sl, #1 + bl memmove + str sl, [r6, #0x80] + mov r0, #0 + str r0, [r6, #0x84] + b _022152B8 +_022152B0: + add r0, r6, #0x74 + bl MOD79_0221262C +_022152B8: + mov r1, #0 + mov r3, #6 + mov r0, r6 + mov r2, r1 + str r3, [r6, #0x10] + bl MOD79_02212E00 + ldr ip, _02215618 ; =0x00001018 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022152DC: + cmp r7, #3 + bne _02215448 + ldr r0, [r6, #0x10c] + cmp r0, #0xa + ldrgt ip, _02215618 ; =0x00001018 + movgt r0, #1 + strgt r0, [r6, #0xfc] + movgt r0, #0xb + addgt sp, sp, ip + strgt r0, [r6, #0x38] + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _02215628 ; =0x02216F70 + mov r0, r5 + bl strstr + cmp r0, #0 + beq _02215448 + add r4, r0, #9 + ldr r1, _0221562C ; =0x0210430C + mov r2, #0 + b _02215330 +_0221532C: + add r4, r4, #1 +_02215330: + ldrsb r0, [r4] + cmp r0, #0 + blt _02215344 + cmp r0, #0x80 + blt _0221534C +_02215344: + mov r0, r2 + b _02215358 +_0221534C: + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + and r0, r0, #0x100 +_02215358: + cmp r0, #0 + bne _0221532C + mov r3, r4 + ldr r1, _0221562C ; =0x0210430C + mov r2, #0 + b _02215374 +_02215370: + add r3, r3, #1 +_02215374: + ldrsb r0, [r3] + cmp r0, #0 + beq _022153AC + cmp r0, #0 + blt _02215390 + cmp r0, #0x80 + blt _02215398 +_02215390: + mov r0, r2 + b _022153A4 +_02215398: + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + and r0, r0, #0x100 +_022153A4: + cmp r0, #0 + beq _02215370 +_022153AC: + mov r0, #0 + strb r0, [r3] + ldrsb r0, [r4] + cmp r0, #0x2f + bne _0221541C + ldr r0, [r6, #0x18] + bl strlen + mov r5, r0 + mov r0, r4 + bl strlen + add r1, r5, #0xe + add r0, r1, r0 + bl MOD04_021DD860 + str r0, [r6, #0x108] + ldr r0, [r6, #0x108] + ldr r1, _02215630 ; =0x02216F7C + cmp r0, #0 + moveq r0, #1 + streq r0, [r6, #0xfc] + streq r0, [r6, #0x38] + str r4, [sp] + ldrh r3, [r6, #0x20] + ldr r0, [r6, #0x108] + ldr r2, [r6, #0x18] + bl sprintf + ldr ip, _02215618 ; =0x00001018 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0221541C: + mov r0, r4 + bl MOD04_021F0208 + str r0, [r6, #0x108] + ldr r0, [r6, #0x108] + ldr ip, _02215618 ; =0x00001018 + cmp r0, #0 + moveq r0, #1 + streq r0, [r6, #0xfc] + add sp, sp, ip + streq r0, [r6, #0x38] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02215448: + ldr r1, _02215634 ; =0x02216F8C + mov r0, r5 + bl strstr + movs sb, r0 + beq _02215530 + ldr r7, _02215638 ; =0x0221673C + add r3, sp, #8 + mov r2, #5 +_02215468: + ldrb r1, [r7], #1 + ldrb r0, [r7], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02215468 + ldrb r1, [r7] + add r8, sb, #0x10 + add r0, sp, #8 + mov r7, r8 + strb r1, [r3] + bl strlen + b _022154A0 +_0221549C: + add r7, r7, #1 +_022154A0: + cmp r7, #0 + beq _022154CC + ldrsb r1, [r7] + cmp r1, #0 + beq _022154CC + cmp r1, #0xa + beq _022154CC + cmp r1, #0xd + beq _022154CC + cmp r1, #0x20 + bne _0221549C +_022154CC: + sub r2, r7, r8 + cmp r2, r0 + ldrgt ip, _02215618 ; =0x00001018 + movgt r0, #1 + strgt r0, [r6, #0xfc] + movgt r0, #0x10 + addgt sp, sp, ip + strgt r0, [r6, #0x38] + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r0, r2 + bne _02215524 + add r1, sp, #8 + mov r0, r8 + bl strncmp + cmp r0, #0 + ldrge ip, _02215618 ; =0x00001018 + movge r0, #1 + strge r0, [r6, #0xfc] + movge r0, #0x10 + addge sp, sp, ip + strge r0, [r6, #0x38] + ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02215524: + mov r0, r8 + bl atol + str r0, [r6, #0x104] +_02215530: + ldr r1, _0221563C ; =0x02216F9C + mov r0, r5 + bl strstr + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + str r0, [r6, #0x110] + ldr r0, [r6, #0x110] + cmp r0, #0 + movne r0, #0 + strneb r0, [r6, #0x114] + strne r0, [r6, #0x120] + strne r0, [r6, #0x124] + strne r0, [r6, #0x128] + ldr r0, [r6, #0xc] + sub r0, r0, #3 + cmp r0, #1 + ldrls ip, _02215618 ; =0x00001018 + movls r0, #1 + addls sp, sp, ip + strls r0, [r6, #0xfc] + ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, #8 + str r0, [r6, #0x10] + cmp sb, #0 + beq _022155B4 + ldr r0, [r6, #0x104] + cmp r0, #0 + ldreq ip, _02215618 ; =0x00001018 + moveq r0, #1 + addeq sp, sp, ip + streq r0, [r6, #0xfc] + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022155B4: + cmp sl, #0 + ldrle ip, _02215618 ; =0x00001018 + addle sp, sp, ip + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r6 + mov r1, r4 + mov r2, sl + bl MOD79_02215640 + ldr ip, _02215618 ; =0x00001018 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022155E0: + cmp r4, #2 + ldrne ip, _02215618 ; =0x00001018 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, #1 + str r0, [r6, #0xfc] + mov r0, #7 + str r0, [r6, #0x38] + ldr r0, [r6, #0x48] + bl MOD04_021EFB28 + str r0, [r6, #0x4c] + ldr ip, _02215618 ; =0x00001018 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02215618: .word 0x00001018 +_0221561C: .word 0x02216F64 +_02215620: .word 0x02216F6C +_02215624: .word 0x51EB851F +_02215628: .word 0x02216F70 +_0221562C: .word 0x0210430C +_02215630: .word 0x02216F7C +_02215634: .word 0x02216F8C +_02215638: .word 0x0221673C +_0221563C: .word 0x02216F9C + arm_func_end MOD79_02215174 + + arm_func_start MOD79_02215640 +MOD79_02215640: ; 0x02215640 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + movs r6, r0 + mov r5, r1 + mov r4, r2 + bne _0221566C + ldr r0, _02215884 ; =0x02216FB8 + ldr r1, _02215888 ; =0x02216FC4 + ldr r3, _0221588C ; =0x0000035D + mov r2, #0 + bl __msl_assertion_failed +_0221566C: + cmp r5, #0 + bne _02215688 + ldr r0, _02215890 ; =0x02216FD4 + ldr r1, _02215888 ; =0x02216FC4 + ldr r3, _02215894 ; =0x0000035E + mov r2, #0 + bl __msl_assertion_failed +_02215688: + cmp r4, #0 + bgt _022156A4 + ldr r0, _02215898 ; =0x02216FDC + ldr r1, _02215888 ; =0x02216FC4 + ldr r3, _0221589C ; =0x0000035F + mov r2, #0 + bl __msl_assertion_failed +_022156A4: + ldr r0, [r6, #0x110] + cmp r0, #0 + beq _0221586C + cmp r4, #0 + ble _02215860 + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + add r8, r6, #0x124 + mov sl, #0xa + mov r7, #0 + str r0, [sp] + mov fp, #3 +_022156D8: + ldr r0, [r6, #0x128] + cmp r0, #0 + bne _02215780 + mov r0, r5 + mov r1, sl + bl strchr + movs sb, r0 + beq _02215764 + mov r0, r6 + mov r1, r5 + sub r2, sb, r5 + bl MOD79_022158A8 + add r1, sb, #1 + sub r2, r1, r5 + mov r0, r6 + mov r5, r1 + sub r4, r4, r2 + bl MOD79_02215984 + str r0, [r6, #0x124] + ldr r1, [r6, #0x124] + mvn r0, #0 + cmp r1, r0 + bne _02215750 + mov r0, #1 + str r0, [r6, #0xfc] + mov r0, #7 + str r0, [r6, #0x38] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02215750: + cmp r1, #0 + ldrne r0, [sp] + streq fp, [r6, #0x128] + strne r0, [r6, #0x128] + b _02215858 +_02215764: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD79_022158A8 + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02215780: + cmp r0, #1 + bne _022157DC + ldr sb, [r6, #0x124] + mov r0, r6 + cmp sb, r4 + movge sb, r4 + mov r1, r5 + mov r2, sb + bl MOD79_022159E4 + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r8] + add r5, r5, sb + sub r0, r0, sb + str r0, [r8] + ldr r0, [r6, #0x124] + sub r4, r4, sb + cmp r0, #0 + ldreq r0, [sp, #4] + streq r0, [r6, #0x128] + b _02215858 +_022157DC: + cmp r0, #2 + bne _02215824 + mov r0, r5 + mov r1, sl + bl strchr + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + strb r7, [r6, #0x114] + str r7, [r6, #0x120] + add r0, r0, #1 + sub r1, r0, r5 + str r7, [r6, #0x124] + mov r5, r0 + str r7, [r6, #0x128] + sub r4, r4, r1 + b _02215858 +_02215824: + cmp r0, #3 + moveq r0, #1 + addeq sp, sp, #0xc + streq r0, [r6, #0xfc] + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _022158A0 ; =0x02216FE4 + ldr r1, _02215888 ; =0x02216FC4 + ldr r3, _022158A4 ; =0x000003E3 + mov r2, #0 + bl __msl_assertion_failed + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02215858: + cmp r4, #0 + bgt _022156D8 +_02215860: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0221586C: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD79_022159E4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02215884: .word 0x02216FB8 +_02215888: .word 0x02216FC4 +_0221588C: .word 0x0000035D +_02215890: .word 0x02216FD4 +_02215894: .word 0x0000035E +_02215898: .word 0x02216FDC +_0221589C: .word 0x0000035F +_022158A0: .word 0x02216FE4 +_022158A4: .word 0x000003E3 + arm_func_end MOD79_02215640 + + arm_func_start MOD79_022158A8 +MOD79_022158A8: ; 0x022158A8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r4, r0 + mov r7, r1 + mov r6, r2 + bne _022158D4 + ldr r0, _0221596C ; =0x02216FB8 + ldr r1, _02215970 ; =0x02216FC4 + ldr r3, _02215974 ; =0x00000333 + mov r2, #0 + bl __msl_assertion_failed +_022158D4: + cmp r7, #0 + bne _022158F0 + ldr r0, _02215978 ; =0x02216FD4 + ldr r1, _02215970 ; =0x02216FC4 + mov r2, #0 + mov r3, #0x334 + bl __msl_assertion_failed +_022158F0: + cmp r6, #0 + bge _0221590C + ldr r0, _0221597C ; =0x02216FE8 + ldr r1, _02215970 ; =0x02216FC4 + ldr r3, _02215980 ; =0x00000335 + mov r2, #0 + bl __msl_assertion_failed +_0221590C: + cmp r6, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r3, [r4, #0x120] + cmp r3, #0xa + addge sp, sp, #4 + ldmgeia sp!, {r4, r5, r6, r7, pc} + rsb r5, r3, #0xa + cmp r5, r6 + movge r5, r6 + add r0, r4, #0x114 + mov r1, r7 + mov r2, r5 + add r0, r0, r3 + bl memcpy + ldr r0, [r4, #0x120] + mov r1, #0 + add r0, r0, r5 + str r0, [r4, #0x120] + ldr r0, [r4, #0x120] + add r0, r4, r0 + strb r1, [r0, #0x114] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0221596C: .word 0x02216FB8 +_02215970: .word 0x02216FC4 +_02215974: .word 0x00000333 +_02215978: .word 0x02216FD4 +_0221597C: .word 0x02216FE8 +_02215980: .word 0x00000335 + arm_func_end MOD79_022158A8 + + arm_func_start MOD79_02215984 +MOD79_02215984: ; 0x02215984 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, [r0, #0x120] + add r4, r0, #0x114 + cmp r1, #0 + bne _022159B0 + ldr r0, _022159D4 ; =0x02216FF4 + ldr r1, _022159D8 ; =0x02216FC4 + ldr r3, _022159DC ; =0x00000321 + mov r2, #0 + bl __msl_assertion_failed +_022159B0: + ldr r1, _022159E0 ; =0x02216FF8 + add r2, sp, #0 + mov r0, r4 + bl sscanf + cmp r0, #1 + mvnne r0, #0 + ldreq r0, [sp] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022159D4: .word 0x02216FF4 +_022159D8: .word 0x02216FC4 +_022159DC: .word 0x00000321 +_022159E0: .word 0x02216FF8 + arm_func_end MOD79_02215984 + + arm_func_start MOD79_022159E4 +MOD79_022159E4: ; 0x022159E4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x100] + mov lr, #0 + add r0, r0, r2 + str r0, [r4, #0x100] + ldr r3, [r4, #0x100] + ldr r0, [r4, #0x104] + mov ip, lr + cmp r3, r0 + beq _02215A1C + ldr r0, [r4, #0x130] + cmp r0, #0 + beq _02215A24 +_02215A1C: + mov r0, #1 + str r0, [r4, #0xfc] +_02215A24: + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _02215A50 + add r0, r4, #0xbc + bl MOD79_02212794 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr lr, [r4, #0xc0] + ldr ip, [r4, #0xc8] + b _02215A90 +_02215A50: + cmp r0, #1 + bne _02215A84 + cmp r2, #0 + beq _02215A78 + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #0xd + str r0, [r4, #0x38] + mov r0, #0 + ldmia sp!, {r4, pc} +_02215A78: + mov lr, r1 + mov ip, r2 + b _02215A90 +_02215A84: + cmp r0, #2 + moveq lr, r1 + moveq ip, r2 +_02215A90: + mov r0, r4 + mov r1, lr + mov r2, ip + bl MOD79_02212E00 + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end MOD79_022159E4 + + arm_func_start MOD79_02215AA8 +MOD79_02215AA8: ; 0x02215AA8 + stmdb sp!, {r4, r5, lr} + ldr ip, _02215BD0 ; =0x00000404 + sub sp, sp, ip + mov r3, #0x400 + add r1, sp, #4 + add r2, sp, #0 + mov r4, r0 + str r3, [sp] + bl MOD79_02212FF0 + mov r5, r0 + cmp r5, #3 + ldreq ip, _02215BD0 ; =0x00000404 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, pc} + cmp r5, #1 + bne _02215B00 + ldr r1, [r4, #0x84] + ldr r0, [r4, #0x80] + cmp r1, r0 + ldreq ip, _02215BD0 ; =0x00000404 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, pc} +_02215B00: + cmp r5, #0 + bne _02215B28 + ldr r2, [sp] + add r1, sp, #4 + add r0, r4, #0x74 + bl MOD79_02212794 + cmp r0, #0 + ldreq ip, _02215BD0 ; =0x00000404 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, pc} +_02215B28: + ldr r0, [r4, #0x78] + ldr r1, _02215BD4 ; =0x02216FFC + bl strstr + cmp r0, #0 + beq _02215B98 + mov r1, #0 + strb r1, [r0] + ldr r1, [r4, #0x78] + sub r5, r0, r1 + add r1, r5, #1 + mov r0, r4 + str r1, [r4, #0xf8] + bl MOD79_02215BD8 + cmp r0, #0 + ldreq ip, _02215BD0 ; =0x00000404 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, pc} + add r3, r5, #2 + mov r1, #0 + str r3, [r4, #0x84] + mov r3, #7 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl MOD79_02212E00 + ldr ip, _02215BD0 ; =0x00000404 + add sp, sp, ip + ldmia sp!, {r4, r5, pc} +_02215B98: + cmp r5, #2 + ldrne ip, _02215BD0 ; =0x00000404 + addne sp, sp, ip + ldmneia sp!, {r4, r5, pc} + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #7 + str r0, [r4, #0x38] + ldr r0, [r4, #0x48] + bl MOD04_021EFB28 + str r0, [r4, #0x4c] + ldr ip, _02215BD0 ; =0x00000404 + add sp, sp, ip + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02215BD0: .word 0x00000404 +_02215BD4: .word 0x02216FFC + arm_func_end MOD79_02215AA8 + + arm_func_start MOD79_02215BD8 +MOD79_02215BD8: ; 0x02215BD8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + movs r4, r0 + bne _02215BFC + ldr r0, _02215D0C ; =0x02216FB8 + ldr r1, _02215D10 ; =0x02216FC4 + ldr r3, _02215D14 ; =0x0000024E + mov r2, #0 + bl __msl_assertion_failed +_02215BFC: + ldr r0, [r4, #0x80] + cmp r0, #0 + bgt _02215C1C + ldr r0, _02215D18 ; =0x02217000 + ldr r1, _02215D10 ; =0x02216FC4 + ldr r3, _02215D1C ; =0x0000024F + mov r2, #0 + bl __msl_assertion_failed +_02215C1C: + add r1, sp, #0x10 + str r1, [sp] + add r0, sp, #0x14 + str r0, [sp, #4] + ldr r0, [r4, #0x78] + ldr r1, _02215D20 ; =0x02217020 + add r2, sp, #8 + add r3, sp, #0xc + bl sscanf + mov r3, #0 + mov ip, #1 + ldr r2, _02215D24 ; =0x0210430C + b _02215C5C +_02215C50: + ldr r1, [sp, #0x14] + add r1, r1, #1 + str r1, [sp, #0x14] +_02215C5C: + ldr lr, [r4, #0x78] + ldr r1, [sp, #0x14] + ldrsb lr, [lr, r1] + cmp lr, #0 + beq _02215CA0 + mov r1, ip + cmp lr, #0 + blt _02215C84 + cmp lr, #0x80 + movlt r1, r3 +_02215C84: + cmp r1, #0 + movne r1, r3 + moveq r1, lr, lsl #1 + ldreqh r1, [r2, r1] + andeq r1, r1, #0x100 + cmp r1, #0 + bne _02215C50 +_02215CA0: + cmp r0, #3 + bne _02215CC8 + ldr r1, [sp, #8] + cmp r1, #1 + blt _02215CC8 + ldr r0, [sp, #0x10] + cmp r0, #0x64 + blt _02215CC8 + cmp r0, #0x258 + blt _02215CE4 +_02215CC8: + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #7 + str r0, [r4, #0x38] + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, pc} +_02215CE4: + str r1, [r4, #0xe4] + ldr r1, [sp, #0xc] + mov r0, #1 + str r1, [r4, #0xe8] + ldr r1, [sp, #0x10] + str r1, [r4, #0xec] + ldr r1, [sp, #0x14] + str r1, [r4, #0xf0] + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + .align 2, 0 +_02215D0C: .word 0x02216FB8 +_02215D10: .word 0x02216FC4 +_02215D14: .word 0x0000024E +_02215D18: .word 0x02217000 +_02215D1C: .word 0x0000024F +_02215D20: .word 0x02217020 +_02215D24: .word 0x0210430C + arm_func_end MOD79_02215BD8 + + arm_func_start MOD79_02215D28 +MOD79_02215D28: ; 0x02215D28 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + mov r2, #0 + ldr r0, [r4, #0x48] + add r1, sp, #0 + mov r3, r2 + bl MOD04_021EFF5C + mvn r1, #0 + cmp r0, r1 + bne _02215D78 + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #5 + str r0, [r4, #0x38] + ldr r0, [r4, #0x48] + bl MOD04_021EFB28 + add sp, sp, #8 + str r0, [r4, #0x4c] + ldmia sp!, {r4, pc} +_02215D78: + ldr r0, [sp] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r1, #0 + mov r3, #6 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl MOD79_02212E00 + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end MOD79_02215D28 + + arm_func_start MOD79_02215DA8 +MOD79_02215DA8: ; 0x02215DA8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6, #0x148] + bl MOD79_022140D4 + movs r5, r0 + bne _02215DF8 + ldr r0, [r6, #0xfc] + cmp r0, #0 + beq _02215DD8 + ldr r0, [r6, #0x38] + cmp r0, #0 + bne _02215DEC +_02215DD8: + ldr r0, _02215E38 ; =0x02217030 + ldr r1, _02215E3C ; =0x02216FC4 + mov r2, #0 + mov r3, #0x200 + bl __msl_assertion_failed +_02215DEC: + mov r0, r6 + bl MOD79_022149E4 + ldmia sp!, {r4, r5, r6, pc} +_02215DF8: + ldr r0, [r6, #0x148] + cmp r4, r0 + beq _02215E0C + mov r0, r6 + bl MOD79_02212D90 +_02215E0C: + cmp r5, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl MOD79_022149E4 + mov r1, #0 + mov r3, #5 + mov r0, r6 + mov r2, r1 + str r3, [r6, #0x10] + bl MOD79_02212E00 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02215E38: .word 0x02217030 +_02215E3C: .word 0x02216FC4 + arm_func_end MOD79_02215DA8 + + arm_func_start MOD79_02215E40 +MOD79_02215E40: ; 0x02215E40 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + ldr r0, [r5, #0x5c] + cmp r0, #0 + bne _02216020 + ldr r0, [r5, #0x13c] + add r4, r5, #0x50 + cmp r0, #0 + ldrne r1, _02216080 ; =0x0221705C + bne _02215E7C + ldr r0, [r5, #0xc] + cmp r0, #3 + ldreq r1, _02216084 ; =0x02217064 + ldrne r1, _02216088 ; =0x0221706C +_02215E7C: + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 + ldr r0, [r5, #0x15c] + cmp r0, #0 + bne _02215EA4 + ldr r0, _0221608C ; =0x02217128 + ldr r0, [r0] + cmp r0, #0 + beq _02215EB8 +_02215EA4: + ldr r1, [r5, #0x14] + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 + b _02215EC8 +_02215EB8: + ldr r1, [r5, #0x24] + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 +_02215EC8: + ldr r1, _02216090 ; =0x02217074 + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 + ldrh r0, [r5, #0x20] + cmp r0, #0x50 + bne _02215EF8 + ldr r2, [r5, #0x18] + ldr r1, _02216094 ; =0x02217080 + mov r0, r4 + bl MOD79_02212700 + b _02215F40 +_02215EF8: + ldr r1, _02216098 ; =0x02217088 + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 + ldr r1, [r5, #0x18] + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 + mov r0, r4 + mov r1, #0x3a + bl MOD79_022126A4 + ldrh r1, [r5, #0x20] + mov r0, r4 + bl MOD79_0221266C + mov r0, r4 + ldr r1, _0221609C ; =0x02216FFC + mov r2, #2 + bl MOD79_02212794 +_02215F40: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _02215F5C + ldr r1, _022160A0 ; =0x02217090 + bl strstr + cmp r0, #0 + bne _02215F6C +_02215F5C: + ldr r1, _022160A0 ; =0x02217090 + ldr r2, _022160A4 ; =0x0221709C + mov r0, r4 + bl MOD79_02212700 +_02215F6C: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _02215F8C + ldr r1, _022160A8 ; =0x022170AC + ldr r2, _022160AC ; =0x022170B8 + mov r0, r4 + bl MOD79_02212700 + b _02215F9C +_02215F8C: + ldr r1, _022160A8 ; =0x022170AC + ldr r2, _022160B0 ; =0x022170C4 + mov r0, r4 + bl MOD79_02212700 +_02215F9C: + ldr r0, [r5, #0x13c] + cmp r0, #0 + beq _02215FE0 + ldr r2, [r5, #0x14c] + ldr r1, _022160B4 ; =0x022170CC + add r0, sp, #0 + bl sprintf + ldr r1, _022160B8 ; =0x022170D0 + add r2, sp, #0 + mov r0, r4 + bl MOD79_02212700 + mov r0, r5 + bl MOD79_02214FFC + mov r2, r0 + ldr r1, _022160BC ; =0x022170E0 + mov r0, r4 + bl MOD79_02212700 +_02215FE0: + ldr r1, [r5, #0x28] + cmp r1, #0 + beq _02215FF8 + mov r0, r4 + mov r2, #0 + bl MOD79_02212794 +_02215FF8: + ldr r1, _0221609C ; =0x02216FFC + mov r0, r4 + mov r2, #2 + bl MOD79_02212794 + add r0, r5, #0x50 + cmp r4, r0 + beq _02216020 + ldr r1, [r4, #4] + ldr r2, [r4, #0xc] + bl MOD79_02212794 +_02216020: + mov r0, r5 + bl MOD79_02212554 + cmp r0, #0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, pc} + ldr r1, [r5, #0x60] + ldr r0, [r5, #0x5c] + cmp r1, r0 + addlt sp, sp, #0x14 + ldmltia sp!, {r4, r5, pc} + add r0, r5, #0x50 + bl MOD79_0221262C + ldr r0, [r5, #0x13c] + mov r1, #0 + cmp r0, #0 + movne r0, #4 + strne r0, [r5, #0x10] + moveq r0, #5 + streq r0, [r5, #0x10] + mov r0, r5 + mov r2, r1 + bl MOD79_02212E00 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02216080: .word 0x0221705C +_02216084: .word 0x02217064 +_02216088: .word 0x0221706C +_0221608C: .word 0x02217128 +_02216090: .word 0x02217074 +_02216094: .word 0x02217080 +_02216098: .word 0x02217088 +_0221609C: .word 0x02216FFC +_022160A0: .word 0x02217090 +_022160A4: .word 0x0221709C +_022160A8: .word 0x022170AC +_022160AC: .word 0x022170B8 +_022160B0: .word 0x022170C4 +_022160B4: .word 0x022170CC +_022160B8: .word 0x022170D0 +_022160BC: .word 0x022170E0 + arm_func_end MOD79_02215E40 + + arm_func_start MOD79_022160C0 +MOD79_022160C0: ; 0x022160C0 + stmdb sp!, {r4, lr} + ldr ip, _02216208 ; =0x00000408 + sub sp, sp, ip + mov r4, r0 + ldr r1, [r4, #0x168] + cmp r1, #0 + bne _02216130 + ldr r0, [r4, #0x14] + ldr r1, _0221620C ; =0x022170F0 + mov r2, #8 + bl strncmp + cmp r0, #0 + ldreq ip, _02216208 ; =0x00000408 + moveq r0, #1 + streq r0, [r4, #0xfc] + moveq r0, #0x11 + addeq sp, sp, ip + streq r0, [r4, #0x38] + ldmeqia sp!, {r4, pc} + mov r1, #0 + mov r3, #3 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl MOD79_02212E00 + ldr ip, _02216208 ; =0x00000408 + add sp, sp, ip + ldmia sp!, {r4, pc} +_02216130: + ldr r1, [r4, #0x170] + cmp r1, #0 + beq _0221615C + mov r1, #0 + mov r3, #3 + mov r2, r1 + str r3, [r4, #0x10] + bl MOD79_02212E00 + ldr ip, _02216208 ; =0x00000408 + add sp, sp, ip + ldmia sp!, {r4, pc} +_0221615C: + ldr r1, [r4, #0x16c] + cmp r1, #0 + bne _0221619C + ldr r2, [r4, #0x174] + add r1, r4, #0x164 + .word 0xE12FFF32 + cmp r0, #3 + bne _0221619C + ldr r0, _02216210 ; =0x02216FE4 + ldr r1, _02216214 ; =0x02216FC4 + ldr r3, _02216218 ; =0x00000146 + mov r2, #0 + bl __msl_assertion_failed + ldr ip, _02216208 ; =0x00000408 + add sp, sp, ip + ldmia sp!, {r4, pc} +_0221619C: + ldr r1, [r4, #0x60] + ldr r0, [r4, #0x5c] + cmp r1, r0 + bge _022161E4 + mov r0, r4 + bl MOD79_02212554 + cmp r0, #0 + ldreq ip, _02216208 ; =0x00000408 + addeq sp, sp, ip + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0x60] + ldr r0, [r4, #0x5c] + cmp r1, r0 + ldrlt ip, _02216208 ; =0x00000408 + addlt sp, sp, ip + ldmltia sp!, {r4, pc} + add r0, r4, #0x50 + bl MOD79_0221262C +_022161E4: + mov r3, #0x400 + add r1, sp, #4 + add r2, sp, #0 + mov r0, r4 + str r3, [sp] + bl MOD79_02212FF0 + ldr ip, _02216208 ; =0x00000408 + add sp, sp, ip + ldmia sp!, {r4, pc} + .align 2, 0 +_02216208: .word 0x00000408 +_0221620C: .word 0x022170F0 +_02216210: .word 0x02216FE4 +_02216214: .word 0x02216FC4 +_02216218: .word 0x00000146 + arm_func_end MOD79_022160C0 + + arm_func_start MOD79_0221621C +MOD79_0221621C: ; 0x0221621C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r1, [r4, #0x48] + mvn r0, #0 + cmp r1, r0 + bne _022163D4 + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl MOD04_021EFDB8 + str r0, [r4, #0x48] + ldr r0, [r4, #0x48] + mvn r1, #0 + cmp r0, r1 + bne _02216280 + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #5 + str r0, [r4, #0x38] + ldr r0, [r4, #0x48] + bl MOD04_021EFB28 + add sp, sp, #0x10 + str r0, [r4, #0x4c] + ldmia sp!, {r4, pc} +_02216280: + mov r1, #0 + bl MOD04_021F017C + cmp r0, #0 + bne _022162B4 + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #5 + str r0, [r4, #0x38] + ldr r0, [r4, #0x48] + bl MOD04_021EFB28 + add sp, sp, #0x10 + str r0, [r4, #0x4c] + ldmia sp!, {r4, pc} +_022162B4: + ldr r0, [r4, #0x134] + cmp r0, #0 + beq _022162D0 + ldr r1, _0221646C ; =0x0221695C + ldr r0, [r4, #0x48] + ldr r1, [r1] + bl MOD04_021F0130 +_022162D0: + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + mov r0, #2 + strb r0, [sp, #1] + ldr r0, [r4, #0x15c] + cmp r0, #0 + beq _02216318 + add r0, r4, #0x100 + ldrh r0, [r0, #0x60] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #2] + b _02216368 +_02216318: + ldr r0, _02216470 ; =0x02217128 + ldr r0, [r0] + cmp r0, #0 + beq _0221634C + ldr r0, _02216474 ; =0x02217124 + ldrh r0, [r0] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #2] + b _02216368 +_0221634C: + ldrh r0, [r4, #0x20] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #2] +_02216368: + ldr r0, [r4, #0x1c] + add r1, sp, #0 + str r0, [sp, #4] + ldr r0, [r4, #0x48] + mov r2, #8 + bl MOD04_021EFCE4 + mvn r1, #0 + cmp r0, r1 + bne _022163D4 + ldr r0, [r4, #0x48] + bl MOD04_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _022163D4 + mvn r1, #0x19 + cmp r0, r1 + beq _022163D4 + mvn r1, #0x4b + cmp r0, r1 + beq _022163D4 + mov r1, #1 + str r1, [r4, #0xfc] + mov r1, #6 + str r1, [r4, #0x38] + add sp, sp, #0x10 + str r0, [r4, #0x4c] + ldmia sp!, {r4, pc} +_022163D4: + ldr r0, [r4, #0x48] + add r2, sp, #8 + add r3, sp, #0xc + mov r1, #0 + bl MOD04_021EFF5C + cmp r0, #0 + movgt r1, #1 + movle r1, #0 + mvn r0, #0 + cmp r1, r0 + beq _0221640C + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0221643C +_0221640C: + mov r0, #1 + str r0, [r4, #0xfc] + mov r0, #6 + cmp r1, #0 + addne sp, sp, #0x10 + str r0, [r4, #0x38] + ldmneia sp!, {r4, pc} + ldr r0, [r4, #0x48] + bl MOD04_021EFB28 + add sp, sp, #0x10 + str r0, [r4, #0x4c] + ldmia sp!, {r4, pc} +_0221643C: + ldr r0, [sp, #8] + cmp r0, #0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, pc} + mov r1, #0 + mov r3, #2 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl MOD79_02212E00 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221646C: .word 0x0221695C +_02216470: .word 0x02217128 +_02216474: .word 0x02217124 + arm_func_end MOD79_0221621C + + arm_func_start MOD79_02216478 +MOD79_02216478: ; 0x02216478 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #0 + mov r4, r0 + mov r2, r1 + bl MOD79_02212E00 + bl MOD04_021F024C + mov r0, r4 + bl MOD79_02216548 + cmp r0, #0 + moveq r0, #1 + streq r0, [r4, #0xfc] + moveq r0, #3 + addeq sp, sp, #4 + streq r0, [r4, #0x38] + ldmeqia sp!, {r4, r5, pc} + ldr r5, [r4, #0x15c] + cmp r5, #0 + bne _022164D4 + ldr r0, _02216544 ; =0x02217128 + ldr r5, [r0] + cmp r5, #0 + ldreq r5, [r4, #0x18] +_022164D4: + mov r0, r5 + bl MOD04_021EFB38 + str r0, [r4, #0x1c] + ldr r1, [r4, #0x1c] + mvn r0, #0 + cmp r1, r0 + bne _02216524 + mov r0, r5 + bl FUN_0209A6EC + cmp r0, #0 + moveq r0, #1 + streq r0, [r4, #0xfc] + moveq r0, #4 + addeq sp, sp, #4 + streq r0, [r4, #0x38] + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [r4, #0x1c] +_02216524: + mov r1, #0 + mov r3, #1 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl MOD79_02212E00 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02216544: .word 0x02217128 + arm_func_end MOD79_02216478 + + arm_func_start MOD79_02216548 +MOD79_02216548: ; 0x02216548 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + movs r7, r0 + bne _0221656C + ldr r0, _02216704 ; =0x02216FB8 + ldr r1, _02216708 ; =0x02216FC4 + mov r2, #0 + mov r3, #0x25 + bl __msl_assertion_failed +_0221656C: + cmp r7, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r7, #0x14] + cmp r0, #0 + bne _0221659C + ldr r0, _0221670C ; =0x022170FC + ldr r1, _02216708 ; =0x02216FC4 + mov r2, #0 + mov r3, #0x2b + bl __msl_assertion_failed +_0221659C: + ldr r6, [r7, #0x14] + cmp r6, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r1, _02216710 ; =0x0221710C + mov r0, r6 + mov r2, #7 + bl strncmp + cmp r0, #0 + addeq r6, r6, #7 + moveq r4, #0 + beq _022165FC + ldr r1, _02216714 ; =0x022170F0 + mov r0, r6 + mov r2, #8 + bl strncmp + cmp r0, #0 + addeq r6, r6, #8 + moveq r4, #1 + beq _022165FC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022165FC: + ldr r1, _02216718 ; =0x02217114 + mov r0, r6 + bl strspn + mov r8, r0 + ldrsb r5, [r6, r8] + mov r1, #0 + mov r0, r6 + strb r1, [r6, r8] + add sb, r6, r8 + bl MOD04_021F0208 + str r0, [r7, #0x18] + ldr r0, [r7, #0x18] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + strb r5, [sb] + ldrsb r0, [r6, r8]! + cmp r0, #0x3a + bne _02216688 + add r6, r6, #1 + mov r0, r6 + bl atol + strh r0, [r7, #0x20] + ldrh r0, [r7, #0x20] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02216670: + ldrsb r0, [r6, #1]! + cmp r0, #0 + beq _0221669C + cmp r0, #0x2f + bne _02216670 + b _0221669C +_02216688: + cmp r4, #0 + ldrne r0, _0221671C ; =0x000001BB + strneh r0, [r7, #0x20] + moveq r0, #0x50 + streqh r0, [r7, #0x20] +_0221669C: + ldrsb r0, [r6] + cmp r0, #0 + ldreq r6, _02216720 ; =0x02217118 + mov r0, r6 + bl MOD04_021F0208 + str r0, [r7, #0x24] + ldr r6, [r7, #0x24] + mov r1, #0x20 + mov r0, r6 + bl strchr + cmp r0, #0 + beq _022166F0 + mov r5, #0x2b + mov r4, #0x20 +_022166D4: + strb r5, [r0] + ldr r6, [r7, #0x24] + mov r1, r4 + mov r0, r6 + bl strchr + cmp r0, #0 + bne _022166D4 +_022166F0: + cmp r6, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02216704: .word 0x02216FB8 +_02216708: .word 0x02216FC4 +_0221670C: .word 0x022170FC +_02216710: .word 0x0221710C +_02216714: .word 0x022170F0 +_02216718: .word 0x02217114 +_0221671C: .word 0x000001BB +_02216720: .word 0x02217118 + arm_func_end MOD79_02216548 + ; 0x02216724 + + .section .rodata + ; 0x02216738 + .incbin "baserom.nds", 0x2DE6D8, 0x10 + + .section .data + ; 0x0221686C + .incbin "baserom.nds", 0x2DE80C, 0x8B4 diff --git a/arm9/modules/79/asm/module_79_thumb.s b/arm9/modules/79/asm/module_79_thumb.s new file mode 100644 index 00000000..26c700af --- /dev/null +++ b/arm9/modules/79/asm/module_79_thumb.s @@ -0,0 +1,851 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD79_02211E60 +MOD79_02211E60: ; 0x02211E60 + lsl r1, r0, #0x10 + orr r1, r0 + ldr r0, _02211E6C ; =0x02217120 + str r1, [r0] + bx lr + nop +_02211E6C: .word 0x02217120 + thumb_func_end MOD79_02211E60 + + thumb_func_start MOD79_02211E70 +MOD79_02211E70: ; 0x02211E70 + ldr r1, _02211E8C ; =0x02217120 + mov r0, #0x45 + ldr r2, [r1] + add r3, r2, #0 + mul r3, r0 + ldr r0, _02211E90 ; =0x00001111 + add r2, r3, r0 + ldr r0, _02211E94 ; =0x7FFFFFFF + and r0, r2 + str r0, [r1] + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .align 2, 0 +_02211E8C: .word 0x02217120 +_02211E90: .word 0x00001111 +_02211E94: .word 0x7FFFFFFF + thumb_func_end MOD79_02211E70 + + thumb_func_start MOD79_02211E98 +MOD79_02211E98: ; 0x02211E98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0 + add r5, r2, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #8 + add r7, r1, #0 + str r3, [sp] + str r0, [sp, #0x10] + bl MOD79_02211FA4 + ldr r1, [sp, #0x30] + add r0, r0, #1 + cmp r1, r0 + bge _02211EC2 + add sp, #0x18 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_02211EC2: + ldr r1, [sp, #0x10] + mov r0, #0xa + bl MOD04_021DD944 + add r6, r0, #0 + bne _02211ED4 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02211ED4: + lsr r0, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x14] + add r0, r0, r1 + lsr r1, r4, #0x10 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #8] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r0, r0, r1 + lsr r1, r4, #8 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r0, r0, r1 + lsl r1, r4, #0x18 + lsr r4, r1, #0x18 + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + add r0, r0, r1 + str r0, [sp, #0x14] + mov r0, #0 + cmp r5, #0 + ble _02211F20 +_02211F12: + ldrb r2, [r7, r0] + ldr r1, [sp, #0x14] + add r0, r0, #1 + add r1, r1, r2 + str r1, [sp, #0x14] + cmp r0, r5 + blt _02211F12 +_02211F20: + ldr r0, [sp, #0x14] + bl MOD79_02211E60 + bl MOD79_02211E70 + eor r0, r4 + strb r0, [r6, #4] + bl MOD79_02211E70 + ldr r1, [sp, #0xc] + eor r0, r1 + strb r0, [r6, #5] + bl MOD79_02211E70 + ldr r1, [sp, #8] + eor r0, r1 + strb r0, [r6, #6] + bl MOD79_02211E70 + ldr r1, [sp, #4] + mov r4, #0 + eor r0, r1 + strb r0, [r6, #7] + cmp r5, #0 + ble _02211F64 +_02211F52: + bl MOD79_02211E70 + ldrb r1, [r7, r4] + eor r1, r0 + add r0, r6, r4 + add r4, r4, #1 + strb r1, [r0, #8] + cmp r4, r5 + blt _02211F52 +_02211F64: + ldr r1, _02211FA0 ; =0x4A3B2C1D + ldr r0, [sp, #0x14] + add r5, #8 + eor r1, r0 + lsr r0, r1, #0x18 + strb r0, [r6] + lsr r0, r1, #0x10 + strb r0, [r6, #1] + lsr r0, r1, #8 + strb r0, [r6, #2] + strb r1, [r6, #3] + ldr r1, [sp] + add r0, r6, #0 + add r2, r5, #0 + mov r3, #2 + bl MOD04_021EF820 + ldr r0, [sp, #0x10] + bl MOD79_02211FA4 + ldr r1, [sp] + mov r2, #0 + strb r2, [r1, r0] + mov r0, #0xa + add r1, r6, #0 + bl MOD04_021DD904 + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02211FA0: .word 0x4A3B2C1D + thumb_func_end MOD79_02211E98 + + thumb_func_start MOD79_02211FA4 +MOD79_02211FA4: ; 0x02211FA4 + push {r3, r4, r5, lr} + mov r1, #3 + add r5, r0, #0 + bl _u32_div_f + cmp r1, #0 + beq _02211FB6 + mov r4, #1 + b _02211FB8 +_02211FB6: + mov r4, #0 +_02211FB8: + add r0, r5, #0 + mov r1, #3 + bl _u32_div_f + add r0, r0, r4 + lsl r0, r0, #2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD79_02211FA4 + + thumb_func_start MOD79_02211FC8 +MOD79_02211FC8: ; 0x02211FC8 + add r0, #8 + cmp r0, #7 + bhi _02212022 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02211FDA: ; jump table + .short _02211FEA - _02211FDA - 2 ; case 0 + .short _02212022 - _02211FDA - 2 ; case 1 + .short _02211FF2 - _02211FDA - 2 ; case 2 + .short _02211FFA - _02211FDA - 2 ; case 3 + .short _02212002 - _02211FDA - 2 ; case 4 + .short _0221200A - _02211FDA - 2 ; case 5 + .short _02212012 - _02211FDA - 2 ; case 6 + .short _0221201A - _02211FDA - 2 ; case 7 +_02211FEA: + ldr r0, _0221202C ; =0x02216760 + mov r1, #0 + str r1, [r0, #8] + bx lr +_02211FF2: + ldr r0, _0221202C ; =0x02216760 + mov r1, #1 + str r1, [r0, #8] + bx lr +_02211FFA: + ldr r0, _0221202C ; =0x02216760 + mov r1, #2 + str r1, [r0, #8] + bx lr +_02212002: + ldr r0, _0221202C ; =0x02216760 + mov r1, #3 + str r1, [r0, #8] + bx lr +_0221200A: + ldr r0, _0221202C ; =0x02216760 + mov r1, #4 + str r1, [r0, #8] + bx lr +_02212012: + ldr r0, _0221202C ; =0x02216760 + mov r1, #5 + str r1, [r0, #8] + bx lr +_0221201A: + ldr r0, _0221202C ; =0x02216760 + mov r1, #6 + str r1, [r0, #8] + bx lr +_02212022: + ldr r0, _0221202C ; =0x02216760 + mov r1, #0 + str r1, [r0, #8] + bx lr + nop +_0221202C: .word 0x02216760 + thumb_func_end MOD79_02211FC8 + + thumb_func_start MOD79_02212030 +MOD79_02212030: ; 0x02212030 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r4, r1, #0 + mov r3, #0 + ldr r1, _022122B8 ; =0x02216760 + mvn r3, r3 + str r3, [r1, #4] + ldr r3, [r1] + add r6, r0, #0 + cmp r3, #1 + bne _02212048 + b _022122B2 +_02212048: + cmp r2, #0 + beq _0221204E + b _02212202 +_0221204E: + cmp r3, #4 + beq _0221205A + cmp r3, #6 + beq _02212126 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221205A: + cmp r4, #0x20 + bne _0221211E + ldr r5, [r1, #0x28] + ldr r3, _022122BC ; =0x02216724 + add r5, #0x14 + add r2, sp, #4 + mov r1, #0x11 +_02212068: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02212068 + add r3, sp, #0x14 + ldr r2, _022122C0 ; =0x02216794 + add r3, #1 + mov r1, #0x15 +_0221207C: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + bne _0221207C + add r0, sp, #0x14 + add r0, #1 + add r1, r6, #0 + add r2, r4, #0 + bl strncat + add r0, sp, #0x14 + add r0, #1 + bl strlen + add r1, sp, #0x14 + add r2, r0, #0 + add r0, r5, #0 + add r1, #1 + bl MATH_CalcSHA1 + ldr r0, _022122B8 ; =0x02216760 + ldr r1, _022122C4 ; =0x022167AC + ldr r0, [r0, #0x24] + bl strcat + mov r2, #0 + ldr r4, _022122B8 ; =0x02216760 + add r3, r2, #0 + add r1, sp, #4 + mov r7, #0xf +_022120BC: + ldrb r0, [r5, r2] + asr r0, r0, #4 + ldrsb r6, [r1, r0] + ldr r0, [r4, #0x28] + strb r6, [r0, r3] + ldrb r0, [r5, r2] + ldr r6, [r4, #0x28] + add r2, r2, #1 + and r0, r7 + ldrsb r0, [r1, r0] + add r6, r6, r3 + add r3, r3, #2 + strb r0, [r6, #1] + cmp r2, #0x14 + blt _022120BC + ldr r0, _022122B8 ; =0x02216760 + mov r2, #0 + ldr r1, [r0, #0x28] + add r1, #0x28 + strb r2, [r1] + ldr r0, [r0, #0x24] + ldr r1, _022122C8 ; =0x022167B4 + bl strcat + ldr r3, _022122B8 ; =0x02216760 + ldr r0, [r3, #0x30] + str r0, [sp] + ldr r0, [r3, #0x10] + ldr r1, [r3, #0x14] + ldr r2, [r3, #0x18] + ldr r3, [r3, #0x2c] + bl MOD79_02211E98 + cmp r0, #0 + beq _02212114 + cmp r0, #1 + beq _0221210A + cmp r0, #2 + bne _02212114 +_0221210A: + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212114: + ldr r0, _022122B8 ; =0x02216760 + mov r1, #5 + str r1, [r0] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221211E: + mov r0, #1 + str r0, [r1] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212126: + cmp r4, #0x16 + bne _022121D0 + ldr r1, _022122CC ; =0x022167BC + mov r2, #0x16 + bl strncmp + cmp r0, #0 + bne _02212144 + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + mov r1, #0x1a + str r1, [r0, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212144: + ldr r1, _022122D0 ; =0x022167D4 + add r0, r6, #0 + mov r2, #0x16 + bl strncmp + cmp r0, #0 + bne _02212160 + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + mov r1, #0x1b + str r1, [r0, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212160: + ldr r1, _022122D4 ; =0x022167EC + add r0, r6, #0 + mov r2, #0x16 + bl strncmp + cmp r0, #0 + bne _0221217C + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + mov r1, #0x1c + str r1, [r0, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221217C: + ldr r1, _022122D8 ; =0x02216804 + add r0, r6, #0 + mov r2, #0x16 + bl strncmp + cmp r0, #0 + bne _02212198 + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + mov r1, #0x1d + str r1, [r0, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212198: + ldr r1, _022122DC ; =0x0221681C + add r0, r6, #0 + mov r2, #0x16 + bl strncmp + cmp r0, #0 + bne _022121B4 + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + mov r1, #0x1e + str r1, [r0, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_022121B4: + ldr r1, _022122E0 ; =0x02216834 + add r0, r6, #0 + mov r2, #0x16 + bl strncmp + cmp r0, #0 + bne _022121D0 + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + mov r1, #0x1f + str r1, [r0, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_022121D0: + ldr r0, _022122B8 ; =0x02216760 + ldr r2, [r0, #0x20] + cmp r4, r2 + ldr r0, [r0, #0x1c] + bgt _022121EA + add r1, r6, #0 + add r2, r4, #0 + bl memcpy + ldr r0, _022122B8 ; =0x02216760 + mov r1, #7 + str r1, [r0] + b _022121FA +_022121EA: + add r1, r6, #0 + bl memcpy + ldr r0, _022122B8 ; =0x02216760 + mov r1, #1 + str r1, [r0] + mov r1, #0x20 + str r1, [r0, #8] +_022121FA: + ldr r0, _022122B8 ; =0x02216760 + add sp, #0x4c + str r4, [r0, #0xc] + pop {r4, r5, r6, r7, pc} +_02212202: + mov r0, #1 + str r0, [r1] + cmp r2, #0x13 + bhi _022122B2 + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02212216: ; jump table + .short _022122B2 - _02212216 - 2 ; case 0 + .short _0221223E - _02212216 - 2 ; case 1 + .short _02212246 - _02212216 - 2 ; case 2 + .short _0221224E - _02212216 - 2 ; case 3 + .short _02212256 - _02212216 - 2 ; case 4 + .short _0221225E - _02212216 - 2 ; case 5 + .short _02212266 - _02212216 - 2 ; case 6 + .short _0221226E - _02212216 - 2 ; case 7 + .short _02212276 - _02212216 - 2 ; case 8 + .short _0221227E - _02212216 - 2 ; case 9 + .short _02212286 - _02212216 - 2 ; case 10 + .short _0221228E - _02212216 - 2 ; case 11 + .short _02212296 - _02212216 - 2 ; case 12 + .short _022122B2 - _02212216 - 2 ; case 13 + .short _022122B2 - _02212216 - 2 ; case 14 + .short _0221229E - _02212216 - 2 ; case 15 + .short _022122A6 - _02212216 - 2 ; case 16 + .short _022122B2 - _02212216 - 2 ; case 17 + .short _022122B2 - _02212216 - 2 ; case 18 + .short _022122AE - _02212216 - 2 ; case 19 +_0221223E: + mov r0, #8 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212246: + mov r0, #9 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221224E: + mov r0, #0xa + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212256: + mov r0, #0xb + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221225E: + mov r0, #0xc + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212266: + mov r0, #0xd + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221226E: + mov r0, #0xe + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212276: + mov r0, #0xf + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221227E: + mov r0, #0x10 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212286: + mov r0, #0x11 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221228E: + mov r0, #0x12 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02212296: + mov r0, #0x13 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0221229E: + mov r0, #0x16 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_022122A6: + mov r0, #0x17 + str r0, [r1, #8] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_022122AE: + mov r0, #0x19 + str r0, [r1, #8] +_022122B2: + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_022122B8: .word 0x02216760 +_022122BC: .word 0x02216724 +_022122C0: .word 0x02216794 +_022122C4: .word 0x022167AC +_022122C8: .word 0x022167B4 +_022122CC: .word 0x022167BC +_022122D0: .word 0x022167D4 +_022122D4: .word 0x022167EC +_022122D8: .word 0x02216804 +_022122DC: .word 0x0221681C +_022122E0: .word 0x02216834 + thumb_func_end MOD79_02212030 + + thumb_func_start MOD79_022122E4 +MOD79_022122E4: ; 0x022122E4 + push {r3, lr} + ldr r0, _02212304 ; =0x02216760 + mov r1, #2 + str r1, [r0] + sub r1, r1, #3 + str r1, [r0, #4] + mov r0, #0 + bl MOD04_021EB59C + cmp r0, #0 + bne _02212300 + ldr r0, _02212304 ; =0x02216760 + mov r1, #1 + str r1, [r0] +_02212300: + pop {r3, pc} + nop +_02212304: .word 0x02216760 + thumb_func_end MOD79_022122E4 + + thumb_func_start MOD79_02212308 +MOD79_02212308: ; 0x02212308 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r1, _02212398 ; =0x02216760 + add r4, r3, #0 + ldr r3, [r1] + add r7, r0, #0 + cmp r3, #2 + beq _0221231C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0221231C: + str r5, [r1, #0x10] + str r2, [r1, #0x14] + str r4, [r1, #0x18] + ldr r2, [sp, #0x18] + add r4, #8 + str r2, [r1, #0x1c] + ldr r2, [sp, #0x1c] + str r2, [r1, #0x20] + bl strlen + add r6, r0, #0 + add r0, r4, #0 + bl MOD79_02211FA4 + add r1, r0, #0 + add r6, #0x45 + mov r0, #0xa + add r1, r6, r1 + bl MOD04_021DD944 + ldr r1, _02212398 ; =0x02216760 + cmp r0, #0 + str r0, [r1, #0x24] + bne _02212350 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_02212350: + ldr r1, _0221239C ; =0x0221684C + add r2, r7, #0 + add r3, r5, #0 + bl sprintf + ldr r0, _02212398 ; =0x02216760 + ldr r5, [r0, #0x24] + add r0, r5, #0 + bl strlen + add r6, r0, #0 + ldr r0, _022123A0 ; =0x022167AC + bl strlen + add r1, r5, r6 + add r1, r1, r0 + ldr r0, _02212398 ; =0x02216760 + str r1, [r0, #0x28] + ldr r0, _022123A4 ; =0x022167B4 + bl strlen + ldr r1, _02212398 ; =0x02216760 + ldr r2, [r1, #0x28] + add r2, #0x28 + add r0, r2, r0 + str r0, [r1, #0x2c] + add r0, r4, #0 + bl MOD79_02211FA4 + add r1, r0, #1 + ldr r0, _02212398 ; =0x02216760 + str r1, [r0, #0x30] + mov r1, #3 + str r1, [r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02212398: .word 0x02216760 +_0221239C: .word 0x0221684C +_022123A0: .word 0x022167AC +_022123A4: .word 0x022167B4 + thumb_func_end MOD79_02212308 + + thumb_func_start MOD79_022123A8 +MOD79_022123A8: ; 0x022123A8 + push {r3, lr} + ldr r1, _02212440 ; =0x02216760 + ldr r0, [r1] + cmp r0, #7 + bhi _02212438 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022123BE: ; jump table + .short _02212438 - _022123BE - 2 ; case 0 + .short _02212438 - _022123BE - 2 ; case 1 + .short _02212438 - _022123BE - 2 ; case 2 + .short _022123CE - _022123BE - 2 ; case 3 + .short _022123F4 - _022123BE - 2 ; case 4 + .short _02212404 - _022123BE - 2 ; case 5 + .short _0221242A - _022123BE - 2 ; case 6 + .short _02212438 - _022123BE - 2 ; case 7 +_022123CE: + ldr r0, [r1, #0x24] + ldr r1, _02212444 ; =MOD79_02212030 + ldr r2, _02212448 ; =0x02216760 + bl MOD04_021EB3B8 + ldr r1, _02212440 ; =0x02216760 + str r0, [r1, #4] + bl MOD79_02211FC8 + ldr r0, _02212440 ; =0x02216760 + ldr r1, [r0, #4] + cmp r1, #0 + blt _022123EE + mov r1, #4 + str r1, [r0] + b _02212438 +_022123EE: + mov r1, #1 + str r1, [r0] + b _02212438 +_022123F4: + bl MOD04_021EB524 + cmp r0, #0 + bne _02212438 + ldr r0, _02212440 ; =0x02216760 + mov r1, #1 + str r1, [r0] + b _02212438 +_02212404: + ldr r0, [r1, #0x24] + ldr r1, _02212444 ; =MOD79_02212030 + ldr r2, _02212448 ; =0x02216760 + bl MOD04_021EB3B8 + ldr r1, _02212440 ; =0x02216760 + str r0, [r1, #4] + bl MOD79_02211FC8 + ldr r0, _02212440 ; =0x02216760 + ldr r1, [r0, #4] + cmp r1, #0 + blt _02212424 + mov r1, #6 + str r1, [r0] + b _02212438 +_02212424: + mov r1, #1 + str r1, [r0] + b _02212438 +_0221242A: + bl MOD04_021EB524 + cmp r0, #0 + bne _02212438 + ldr r0, _02212440 ; =0x02216760 + mov r1, #1 + str r1, [r0] +_02212438: + ldr r0, _02212440 ; =0x02216760 + ldr r0, [r0] + pop {r3, pc} + nop +_02212440: .word 0x02216760 +_02212444: .word MOD79_02212030 +_02212448: .word 0x02216760 + thumb_func_end MOD79_022123A8 + + thumb_func_start MOD79_0221244C +MOD79_0221244C: ; 0x0221244C + push {r3, lr} + ldr r0, _02212470 ; =0x02216760 + ldr r1, [r0, #0x24] + cmp r1, #0 + beq _02212464 + mov r0, #0xa + mov r2, #0 + bl MOD04_021DD904 + ldr r0, _02212470 ; =0x02216760 + mov r1, #0 + str r1, [r0, #0x24] +_02212464: + bl MOD04_021EB550 + ldr r0, _02212470 ; =0x02216760 + mov r1, #1 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_02212470: .word 0x02216760 + thumb_func_end MOD79_0221244C + + thumb_func_start MOD79_02212474 +MOD79_02212474: ; 0x02212474 + ldr r0, _0221247C ; =0x02216760 + ldr r0, [r0, #8] + bx lr + nop +_0221247C: .word 0x02216760 + thumb_func_end MOD79_02212474 + + thumb_func_start MOD79_02212480 +MOD79_02212480: ; 0x02212480 + ldr r0, _02212488 ; =0x02216760 + ldr r0, [r0, #0xc] + bx lr + nop +_02212488: .word 0x02216760 + thumb_func_end MOD79_02212480 + + .section .rodata + ; 0x02216724 + .incbin "baserom.nds", 0x2DE6C4, 0x14 + + .section .data + ; 0x02216760 + .incbin "baserom.nds", 0x2DE700, 0x10C + + .section .bss + ; 0x2217120 + .space 0x40 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s new file mode 100644 index 00000000..45c6e1e3 --- /dev/null +++ b/arm9/modules/80/asm/module_80.s @@ -0,0 +1,19283 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD80_0222D5C0 +MOD80_0222D5C0: ; 0x0222D5C0 + push {r3, r4} + ldr r3, _0222D5D8 ; =0x02237CE0 + mov r4, #1 + str r4, [r3] + mov r4, #0 + str r4, [r3, #4] + str r0, [r3, #8] + str r1, [r3, #0xc] + str r2, [r3, #0x10] + pop {r3, r4} + bx lr + nop +_0222D5D8: .word 0x02237CE0 + thumb_func_end MOD80_0222D5C0 + + thumb_func_start MOD80_0222D5DC +MOD80_0222D5DC: ; 0x0222D5DC + push {r3, lr} + ldr r1, _0222D8D4 ; =0x02237CE0 + ldr r0, [r1] + cmp r0, #0x16 + bls _0222D5E8 + b _0222DB8A +_0222D5E8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D5F4: ; jump table + .short _0222DB8A - _0222D5F4 - 2 ; case 0 + .short _0222DB8A - _0222D5F4 - 2 ; case 1 + .short _0222D622 - _0222D5F4 - 2 ; case 2 + .short _0222DB7E - _0222D5F4 - 2 ; case 3 + .short _0222D6D0 - _0222D5F4 - 2 ; case 4 + .short _0222DB7E - _0222D5F4 - 2 ; case 5 + .short _0222D756 - _0222D5F4 - 2 ; case 6 + .short _0222DB7E - _0222D5F4 - 2 ; case 7 + .short _0222D7D6 - _0222D5F4 - 2 ; case 8 + .short _0222DB7E - _0222D5F4 - 2 ; case 9 + .short _0222D86A - _0222D5F4 - 2 ; case 10 + .short _0222DB7E - _0222D5F4 - 2 ; case 11 + .short _0222D8EA - _0222D5F4 - 2 ; case 12 + .short _0222DB7E - _0222D5F4 - 2 ; case 13 + .short _0222D970 - _0222D5F4 - 2 ; case 14 + .short _0222DB7E - _0222D5F4 - 2 ; case 15 + .short _0222D9E8 - _0222D5F4 - 2 ; case 16 + .short _0222DB7E - _0222D5F4 - 2 ; case 17 + .short _0222DABA - _0222D5F4 - 2 ; case 18 + .short _0222DB7E - _0222D5F4 - 2 ; case 19 + .short _0222DB0E - _0222D5F4 - 2 ; case 20 + .short _0222DB7E - _0222D5F4 - 2 ; case 21 + .short _0222DB8A - _0222D5F4 - 2 ; case 22 +_0222D622: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D630 + cmp r0, #7 + beq _0222D648 + pop {r3, pc} +_0222D630: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222D8D4 ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D648: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + ldr r2, _0222D8D8 ; =0x02237E00 + str r1, [r0] + ldrb r2, [r2, #0x1c] + cmp r2, #0xe + bhi _0222D6C2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0222D662: ; jump table + .short _0222D6C2 - _0222D662 - 2 ; case 0 + .short _0222D680 - _0222D662 - 2 ; case 1 + .short _0222D686 - _0222D662 - 2 ; case 2 + .short _0222D68C - _0222D662 - 2 ; case 3 + .short _0222D6C2 - _0222D662 - 2 ; case 4 + .short _0222D6C2 - _0222D662 - 2 ; case 5 + .short _0222D6C2 - _0222D662 - 2 ; case 6 + .short _0222D692 - _0222D662 - 2 ; case 7 + .short _0222D6A4 - _0222D662 - 2 ; case 8 + .short _0222D6AA - _0222D662 - 2 ; case 9 + .short _0222D6B0 - _0222D662 - 2 ; case 10 + .short _0222D6B6 - _0222D662 - 2 ; case 11 + .short _0222D698 - _0222D662 - 2 ; case 12 + .short _0222D69E - _0222D662 - 2 ; case 13 + .short _0222D6BC - _0222D662 - 2 ; case 14 +_0222D680: + mov r1, #0 + str r1, [r0, #4] + b _0222D6CA +_0222D686: + sub r1, #0x1b + str r1, [r0, #4] + b _0222D6CA +_0222D68C: + sub r1, #0x1a + str r1, [r0, #4] + b _0222D6CA +_0222D692: + sub r1, #0x17 + str r1, [r0, #4] + b _0222D6CA +_0222D698: + sub r1, #0x1c + str r1, [r0, #4] + b _0222D6CA +_0222D69E: + sub r1, #0x1d + str r1, [r0, #4] + b _0222D6CA +_0222D6A4: + sub r1, #0x1e + str r1, [r0, #4] + b _0222D6CA +_0222D6AA: + sub r1, #0x1f + str r1, [r0, #4] + b _0222D6CA +_0222D6B0: + sub r1, #0x20 + str r1, [r0, #4] + b _0222D6CA +_0222D6B6: + sub r1, #0x21 + str r1, [r0, #4] + b _0222D6CA +_0222D6BC: + sub r1, #0x18 + str r1, [r0, #4] + b _0222D6CA +_0222D6C2: + mov r1, #0xc + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222D6CA: + bl MOD56_0221244C + pop {r3, pc} +_0222D6D0: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D6DE + cmp r0, #7 + beq _0222D6F6 + pop {r3, pc} +_0222D6DE: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222D8D4 ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D6F6: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r2, #0x16 + ldr r1, _0222D8D8 ; =0x02237E00 + str r2, [r0] + ldrb r1, [r1, #0x1c] + cmp r1, #5 + bgt _0222D720 + cmp r1, #0 + blt _0222D748 + add r3, r1, r1 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0222D714: ; jump table + .short _0222D748 - _0222D714 - 2 ; case 0 + .short _0222D726 - _0222D714 - 2 ; case 1 + .short _0222D72C - _0222D714 - 2 ; case 2 + .short _0222D732 - _0222D714 - 2 ; case 3 + .short _0222D748 - _0222D714 - 2 ; case 4 + .short _0222D738 - _0222D714 - 2 ; case 5 +_0222D720: + cmp r1, #0xe + beq _0222D73E + b _0222D748 +_0222D726: + mov r1, #0 + str r1, [r0, #4] + b _0222D750 +_0222D72C: + sub r2, #0x1b + str r2, [r0, #4] + b _0222D750 +_0222D732: + sub r2, #0x1a + str r2, [r0, #4] + b _0222D750 +_0222D738: + sub r2, #0x19 + str r2, [r0, #4] + b _0222D750 +_0222D73E: + mov r1, #1 + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D750 +_0222D748: + mov r1, #0xc + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222D750: + bl MOD56_0221244C + pop {r3, pc} +_0222D756: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D764 + cmp r0, #7 + beq _0222D77C + pop {r3, pc} +_0222D764: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222D8D4 ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D77C: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212480 + mov r1, #0x49 + lsl r1, r1, #2 + cmp r0, r1 + bne _0222D796 + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0 + str r1, [r0, #4] + b _0222D7D0 +_0222D796: + ldr r0, _0222D8DC ; =0x02237DE0 + ldr r0, [r0, #0x40] + ldrb r0, [r0] + cmp r0, #3 + beq _0222D7B4 + cmp r0, #5 + beq _0222D7AA + cmp r0, #0xe + beq _0222D7BE + b _0222D7C8 +_0222D7AA: + mov r1, #2 + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D7D0 +_0222D7B4: + mov r1, #3 + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D7D0 +_0222D7BE: + mov r1, #1 + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D7D0 +_0222D7C8: + mov r1, #0xc + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222D7D0: + bl MOD56_0221244C + pop {r3, pc} +_0222D7D6: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D7E4 + cmp r0, #7 + beq _0222D7FC + pop {r3, pc} +_0222D7E4: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222D8D4 ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D7FC: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212480 + mov r1, #0x49 + lsl r1, r1, #2 + cmp r0, r1 + bne _0222D816 + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #1 + str r1, [r0, #4] + b _0222D864 +_0222D816: + ldr r0, _0222D8DC ; =0x02237DE0 + ldr r0, [r0, #0x40] + ldrb r0, [r0] + cmp r0, #5 + bgt _0222D830 + cmp r0, #3 + blt _0222D85C + beq _0222D840 + cmp r0, #4 + beq _0222D84A + cmp r0, #5 + beq _0222D836 + b _0222D85C +_0222D830: + cmp r0, #0xe + beq _0222D852 + b _0222D85C +_0222D836: + mov r1, #2 + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D864 +_0222D840: + mov r1, #3 + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D864 +_0222D84A: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0 + str r1, [r0, #4] + b _0222D864 +_0222D852: + mov r1, #1 + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D864 +_0222D85C: + mov r1, #0xc + ldr r0, _0222D8D4 ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222D864: + bl MOD56_0221244C + pop {r3, pc} +_0222D86A: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D878 + cmp r0, #7 + beq _0222D890 + pop {r3, pc} +_0222D878: + ldr r0, _0222D8D4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222D8D4 ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D890: + ldr r1, _0222D8D4 ; =0x02237CE0 + mov r2, #0x16 + ldr r0, _0222D8D8 ; =0x02237E00 + str r2, [r1] + ldrb r0, [r0, #0x1c] + cmp r0, #5 + bgt _0222D8AE + cmp r0, #1 + blt _0222D8CC + beq _0222D8B4 + cmp r0, #3 + beq _0222D8C0 + cmp r0, #5 + beq _0222D8BA + b _0222D8CC +_0222D8AE: + cmp r0, #0xe + beq _0222D8C6 + b _0222D8CC +_0222D8B4: + mov r0, #0 + str r0, [r1, #4] + b _0222D8E4 +_0222D8BA: + sub r2, #0x19 + str r2, [r1, #4] + b _0222D8E4 +_0222D8C0: + sub r2, #0x1a + str r2, [r1, #4] + b _0222D8E4 +_0222D8C6: + sub r2, #0x18 + str r2, [r1, #4] + b _0222D8E4 +_0222D8CC: + mov r1, #0xc + ldr r0, _0222D8D4 ; =0x02237CE0 + b _0222D8E0 + nop +_0222D8D4: .word 0x02237CE0 +_0222D8D8: .word 0x02237E00 +_0222D8DC: .word 0x02237DE0 +_0222D8E0: + mvn r1, r1 + str r1, [r0, #4] +_0222D8E4: + bl MOD56_0221244C + pop {r3, pc} +_0222D8EA: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D8F8 + cmp r0, #7 + beq _0222D910 + pop {r3, pc} +_0222D8F8: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222DB8C ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D910: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r2, #0x16 + ldr r1, _0222DB90 ; =0x02237E00 + str r2, [r0] + ldrb r1, [r1, #0x1c] + cmp r1, #5 + bgt _0222D93A + cmp r1, #0 + blt _0222D962 + add r3, r1, r1 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0222D92E: ; jump table + .short _0222D962 - _0222D92E - 2 ; case 0 + .short _0222D940 - _0222D92E - 2 ; case 1 + .short _0222D94C - _0222D92E - 2 ; case 2 + .short _0222D952 - _0222D92E - 2 ; case 3 + .short _0222D962 - _0222D92E - 2 ; case 4 + .short _0222D946 - _0222D92E - 2 ; case 5 +_0222D93A: + cmp r1, #0xe + beq _0222D958 + b _0222D962 +_0222D940: + mov r1, #0 + str r1, [r0, #4] + b _0222D96A +_0222D946: + sub r2, #0x19 + str r2, [r0, #4] + b _0222D96A +_0222D94C: + sub r2, #0x1b + str r2, [r0, #4] + b _0222D96A +_0222D952: + sub r2, #0x1a + str r2, [r0, #4] + b _0222D96A +_0222D958: + mov r1, #1 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D96A +_0222D962: + mov r1, #0xc + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222D96A: + bl MOD56_0221244C + pop {r3, pc} +_0222D970: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D97E + cmp r0, #7 + beq _0222D996 + pop {r3, pc} +_0222D97E: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222DB8C ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D996: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212480 + mov r1, #0x49 + lsl r1, r1, #2 + cmp r0, r1 + blo _0222D9BA + bl MOD79_02212480 + mov r1, #0x49 + lsl r1, r1, #2 + bl _u32_div_f + ldr r1, _0222DB8C ; =0x02237CE0 + str r0, [r1, #4] + b _0222D9E2 +_0222D9BA: + cmp r0, #0 + bne _0222D9C6 + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0 + str r1, [r0, #4] + b _0222D9E2 +_0222D9C6: + ldr r0, _0222DB94 ; =0x02237DE0 + ldr r0, [r0, #0x40] + ldrb r0, [r0] + cmp r0, #0xe + bne _0222D9DA + mov r1, #1 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222D9E2 +_0222D9DA: + mov r1, #0xc + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222D9E2: + bl MOD56_0221244C + pop {r3, pc} +_0222D9E8: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D9F6 + cmp r0, #7 + beq _0222DA0E + pop {r3, pc} +_0222D9F6: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222DB8C ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222DA0E: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212480 + mov r1, #0x49 + lsl r1, r1, #2 + cmp r0, r1 + bne _0222DA28 + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0 + str r1, [r0, #4] + b _0222DAB4 +_0222DA28: + ldr r0, _0222DB94 ; =0x02237DE0 + ldr r0, [r0, #0x40] + ldrb r0, [r0] + cmp r0, #0xe + bhi _0222DAAC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222DA3E: ; jump table + .short _0222DAAC - _0222DA3E - 2 ; case 0 + .short _0222DAAC - _0222DA3E - 2 ; case 1 + .short _0222DA5C - _0222DA3E - 2 ; case 2 + .short _0222DAAC - _0222DA3E - 2 ; case 3 + .short _0222DAAC - _0222DA3E - 2 ; case 4 + .short _0222DAAC - _0222DA3E - 2 ; case 5 + .short _0222DAAC - _0222DA3E - 2 ; case 6 + .short _0222DAAC - _0222DA3E - 2 ; case 7 + .short _0222DA7A - _0222DA3E - 2 ; case 8 + .short _0222DA84 - _0222DA3E - 2 ; case 9 + .short _0222DA8E - _0222DA3E - 2 ; case 10 + .short _0222DA98 - _0222DA3E - 2 ; case 11 + .short _0222DA66 - _0222DA3E - 2 ; case 12 + .short _0222DA70 - _0222DA3E - 2 ; case 13 + .short _0222DAA2 - _0222DA3E - 2 ; case 14 +_0222DA5C: + mov r1, #4 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DA66: + mov r1, #5 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DA70: + mov r1, #6 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DA7A: + mov r1, #7 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DA84: + mov r1, #8 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DA8E: + mov r1, #9 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DA98: + mov r1, #0xa + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DAA2: + mov r1, #1 + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] + b _0222DAB4 +_0222DAAC: + mov r1, #0xc + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222DAB4: + bl MOD56_0221244C + pop {r3, pc} +_0222DABA: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222DAC8 + cmp r0, #7 + beq _0222DAE0 + pop {r3, pc} +_0222DAC8: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222DB8C ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222DAE0: + ldr r1, _0222DB8C ; =0x02237CE0 + mov r2, #0x16 + ldr r0, _0222DB90 ; =0x02237E00 + str r2, [r1] + ldrb r0, [r0, #0x1c] + cmp r0, #1 + beq _0222DAF8 + cmp r0, #2 + beq _0222DB04 + cmp r0, #0xe + beq _0222DAFE + b _0222DB08 +_0222DAF8: + mov r0, #0 + str r0, [r1, #4] + b _0222DB08 +_0222DAFE: + sub r2, #0x18 + str r2, [r1, #4] + b _0222DB08 +_0222DB04: + sub r2, #0x1b + str r2, [r1, #4] +_0222DB08: + bl MOD56_0221244C + pop {r3, pc} +_0222DB0E: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222DB1C + cmp r0, #7 + beq _0222DB34 + pop {r3, pc} +_0222DB1C: + ldr r0, _0222DB8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + bl MOD79_02212474 + bl MOD80_0222DF38 + ldr r1, _0222DB8C ; =0x02237CE0 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222DB34: + ldr r1, _0222DB8C ; =0x02237CE0 + mov r2, #0x16 + ldr r0, _0222DB90 ; =0x02237E00 + str r2, [r1] + ldrb r0, [r0, #0x1c] + cmp r0, #7 + bgt _0222DB52 + cmp r0, #1 + blt _0222DB70 + beq _0222DB58 + cmp r0, #6 + beq _0222DB5E + cmp r0, #7 + beq _0222DB64 + b _0222DB70 +_0222DB52: + cmp r0, #0xe + beq _0222DB6A + b _0222DB70 +_0222DB58: + mov r0, #0 + str r0, [r1, #4] + b _0222DB78 +_0222DB5E: + mov r0, #1 + str r0, [r1, #4] + b _0222DB78 +_0222DB64: + mov r0, #2 + str r0, [r1, #4] + b _0222DB78 +_0222DB6A: + sub r2, #0x18 + str r2, [r1, #4] + b _0222DB78 +_0222DB70: + mov r1, #0xc + ldr r0, _0222DB8C ; =0x02237CE0 + mvn r1, r1 + str r1, [r0, #4] +_0222DB78: + bl MOD56_0221244C + pop {r3, pc} +_0222DB7E: + mov r0, #0x16 + str r0, [r1] + sub r0, #0x22 + str r0, [r1, #4] + bl MOD56_0221244C +_0222DB8A: + pop {r3, pc} + .align 2, 0 +_0222DB8C: .word 0x02237CE0 +_0222DB90: .word 0x02237E00 +_0222DB94: .word 0x02237DE0 + thumb_func_end MOD80_0222D5DC + + thumb_func_start MOD80_0222DB98 +MOD80_0222DB98: ; 0x0222DB98 + ldr r1, _0222DBB4 ; =0x02237CE0 + ldr r0, [r1] + cmp r0, #1 + beq _0222DBA6 + cmp r0, #0x16 + beq _0222DBAA + b _0222DBB0 +_0222DBA6: + mov r0, #1 + bx lr +_0222DBAA: + mov r0, #1 + str r0, [r1] + bx lr +_0222DBB0: + mov r0, #0 + bx lr + .align 2, 0 +_0222DBB4: .word 0x02237CE0 + thumb_func_end MOD80_0222DB98 + + thumb_func_start MOD80_0222DBB8 +MOD80_0222DBB8: ; 0x0222DBB8 + ldr r0, _0222DBC0 ; =0x02237CE0 + ldr r0, [r0, #4] + bx lr + nop +_0222DBC0: .word 0x02237CE0 + thumb_func_end MOD80_0222DBB8 + + thumb_func_start MOD80_0222DBC4 +MOD80_0222DBC4: ; 0x0222DBC4 + push {r3, lr} + add r1, r0, #0 + mov r2, #0x49 + ldr r0, _0222DC04 ; =0x02237CF4 + lsl r2, r2, #2 + bl memcpy + bl MOD79_022122E4 + mov r0, #2 + str r0, [sp] + mov r2, #0x49 + ldr r0, _0222DC08 ; =0x02237680 + ldr r1, _0222DC04 ; =0x02237CF4 + ldr r3, _0222DC0C ; =0x02237E1C + lsl r2, r2, #2 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DBF4 + ldr r0, _0222DC10 ; =0x02237CE0 + mov r1, #2 + str r1, [r0] + pop {r3, pc} +_0222DBF4: + ldr r0, _0222DC10 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + .align 2, 0 +_0222DC04: .word 0x02237CF4 +_0222DC08: .word 0x02237680 +_0222DC0C: .word 0x02237E1C +_0222DC10: .word 0x02237CE0 + thumb_func_end MOD80_0222DBC4 + + thumb_func_start MOD80_0222DC14 +MOD80_0222DC14: ; 0x0222DC14 + push {r3, lr} + ldr r0, _0222DC54 ; =0x02237CEC + ldr r2, _0222DC58 ; =0x02237CF4 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r2] + str r0, [r2, #4] + bl MOD79_022122E4 + mov r0, #2 + str r0, [sp] + ldr r0, _0222DC5C ; =0x022376CC + ldr r1, _0222DC58 ; =0x02237CF4 + ldr r3, _0222DC60 ; =0x02237E1C + mov r2, #8 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DC42 + ldr r0, _0222DC64 ; =0x02237CE0 + mov r1, #4 + str r1, [r0] + pop {r3, pc} +_0222DC42: + ldr r0, _0222DC64 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + nop +_0222DC54: .word 0x02237CEC +_0222DC58: .word 0x02237CF4 +_0222DC5C: .word 0x022376CC +_0222DC60: .word 0x02237E1C +_0222DC64: .word 0x02237CE0 + thumb_func_end MOD80_0222DC14 + + thumb_func_start MOD80_0222DC68 +MOD80_0222DC68: ; 0x0222DC68 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _0222DCA8 ; =0x02237DE0 + str r4, [r0, #0x40] + bl MOD79_022122E4 + mov r0, #0x49 + lsl r0, r0, #2 + str r0, [sp] + ldr r0, _0222DCAC ; =0x0223771C + ldr r1, _0222DCB0 ; =0x02237CF4 + mov r2, #0 + add r3, r4, #0 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DC96 + ldr r0, _0222DCB4 ; =0x02237CE0 + mov r1, #6 + str r1, [r0] + add sp, #4 + pop {r3, r4, pc} +_0222DC96: + ldr r0, _0222DCB4 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222DCA8: .word 0x02237DE0 +_0222DCAC: .word 0x0223771C +_0222DCB0: .word 0x02237CF4 +_0222DCB4: .word 0x02237CE0 + thumb_func_end MOD80_0222DC68 + + thumb_func_start MOD80_0222DCB8 +MOD80_0222DCB8: ; 0x0222DCB8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _0222DCF8 ; =0x02237DE0 + str r4, [r0, #0x40] + bl MOD79_022122E4 + mov r0, #0x49 + lsl r0, r0, #2 + str r0, [sp] + ldr r0, _0222DCFC ; =0x02237764 + ldr r1, _0222DD00 ; =0x02237CF4 + mov r2, #0 + add r3, r4, #0 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DCE6 + ldr r0, _0222DD04 ; =0x02237CE0 + mov r1, #8 + str r1, [r0] + add sp, #4 + pop {r3, r4, pc} +_0222DCE6: + ldr r0, _0222DD04 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222DCF8: .word 0x02237DE0 +_0222DCFC: .word 0x02237764 +_0222DD00: .word 0x02237CF4 +_0222DD04: .word 0x02237CE0 + thumb_func_end MOD80_0222DCB8 + + thumb_func_start MOD80_0222DD08 +MOD80_0222DD08: ; 0x0222DD08 + push {r3, lr} + bl MOD79_022122E4 + mov r0, #2 + str r0, [sp] + ldr r0, _0222DD3C ; =0x022377B0 + ldr r1, _0222DD40 ; =0x02237CF4 + ldr r3, _0222DD44 ; =0x02237E1C + mov r2, #0 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DD2A + ldr r0, _0222DD48 ; =0x02237CE0 + mov r1, #0xa + str r1, [r0] + pop {r3, pc} +_0222DD2A: + ldr r0, _0222DD48 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + nop +_0222DD3C: .word 0x022377B0 +_0222DD40: .word 0x02237CF4 +_0222DD44: .word 0x02237E1C +_0222DD48: .word 0x02237CE0 + thumb_func_end MOD80_0222DD08 + + thumb_func_start MOD80_0222DD4C +MOD80_0222DD4C: ; 0x0222DD4C + push {r3, lr} + bl MOD79_022122E4 + mov r0, #2 + str r0, [sp] + ldr r0, _0222DD80 ; =0x022377FC + ldr r1, _0222DD84 ; =0x02237CF4 + ldr r3, _0222DD88 ; =0x02237E1C + mov r2, #0 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DD6E + ldr r0, _0222DD8C ; =0x02237CE0 + mov r1, #0xc + str r1, [r0] + pop {r3, pc} +_0222DD6E: + ldr r0, _0222DD8C ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + nop +_0222DD80: .word 0x022377FC +_0222DD84: .word 0x02237CF4 +_0222DD88: .word 0x02237E1C +_0222DD8C: .word 0x02237CE0 + thumb_func_end MOD80_0222DD4C + + thumb_func_start MOD80_0222DD90 +MOD80_0222DD90: ; 0x0222DD90 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0222DDF4 ; =0x02237DE0 + add r6, r2, #0 + str r6, [r0, #0x40] + add r4, r1, #0 + bl MOD79_022122E4 + ldrb r0, [r5] + ldr r1, _0222DDF8 ; =0x02237CF4 + mov r2, #7 + strb r0, [r1] + ldrb r0, [r5, #1] + add r3, r6, #0 + strb r0, [r1, #1] + ldrb r0, [r5, #2] + strb r0, [r1, #2] + ldrb r0, [r5, #3] + strb r0, [r1, #3] + ldrb r0, [r5, #4] + strb r0, [r1, #4] + ldrb r0, [r5, #5] + strb r0, [r1, #5] + ldr r0, _0222DDFC ; =0x02237CE0 + strb r4, [r0, #0x1a] + mov r0, #0x49 + lsl r0, r0, #2 + mul r0, r4 + str r0, [sp] + ldr r0, _0222DE00 ; =0x02237848 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DDE0 + ldr r0, _0222DDFC ; =0x02237CE0 + mov r1, #0xe + str r1, [r0] + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0222DDE0: + ldr r0, _0222DDFC ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0222DDF4: .word 0x02237DE0 +_0222DDF8: .word 0x02237CF4 +_0222DDFC: .word 0x02237CE0 +_0222DE00: .word 0x02237848 + thumb_func_end MOD80_0222DD90 + + thumb_func_start MOD80_0222DE04 +MOD80_0222DE04: ; 0x0222DE04 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0222DE58 ; =0x02237DE0 + add r6, r2, #0 + add r4, r1, #0 + str r6, [r0, #0x40] + bl MOD79_022122E4 + mov r2, #0x49 + ldr r0, _0222DE5C ; =0x02237CF4 + add r1, r4, #0 + lsl r2, r2, #2 + bl memcpy + ldr r0, _0222DE58 ; =0x02237DE0 + mov r2, #0x49 + str r5, [r0, #0x38] + lsl r2, r2, #2 + str r2, [sp] + ldr r0, _0222DE60 ; =0x02237894 + ldr r1, _0222DE5C ; =0x02237CF4 + add r2, r2, #4 + add r3, r6, #0 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DE46 + ldr r0, _0222DE64 ; =0x02237CE0 + mov r1, #0x10 + str r1, [r0] + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0222DE46: + ldr r0, _0222DE64 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222DE58: .word 0x02237DE0 +_0222DE5C: .word 0x02237CF4 +_0222DE60: .word 0x02237894 +_0222DE64: .word 0x02237CE0 + thumb_func_end MOD80_0222DE04 + + thumb_func_start MOD80_0222DE68 +MOD80_0222DE68: ; 0x0222DE68 + push {r3, lr} + ldr r0, _0222DEA8 ; =0x02237CEC + ldr r2, _0222DEAC ; =0x02237CF4 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r2] + str r0, [r2, #4] + bl MOD79_022122E4 + mov r0, #2 + str r0, [sp] + ldr r0, _0222DEB0 ; =0x022378E4 + ldr r1, _0222DEAC ; =0x02237CF4 + ldr r3, _0222DEB4 ; =0x02237E1C + mov r2, #8 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DE96 + ldr r0, _0222DEB8 ; =0x02237CE0 + mov r1, #0x12 + str r1, [r0] + pop {r3, pc} +_0222DE96: + ldr r0, _0222DEB8 ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + nop +_0222DEA8: .word 0x02237CEC +_0222DEAC: .word 0x02237CF4 +_0222DEB0: .word 0x022378E4 +_0222DEB4: .word 0x02237E1C +_0222DEB8: .word 0x02237CE0 + thumb_func_end MOD80_0222DE68 + + thumb_func_start MOD80_0222DEBC +MOD80_0222DEBC: ; 0x0222DEBC + push {r3, lr} + bl MOD79_022122E4 + mov r0, #2 + str r0, [sp] + ldr r0, _0222DEF0 ; =0x02237938 + ldr r1, _0222DEF4 ; =0x02237CF4 + ldr r3, _0222DEF8 ; =0x02237E1C + mov r2, #0 + bl MOD80_0222DF00 + cmp r0, #0 + beq _0222DEDE + ldr r0, _0222DEFC ; =0x02237CE0 + mov r1, #0x14 + str r1, [r0] + pop {r3, pc} +_0222DEDE: + ldr r0, _0222DEFC ; =0x02237CE0 + mov r1, #0x16 + str r1, [r0] + sub r1, #0x23 + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + nop +_0222DEF0: .word 0x02237938 +_0222DEF4: .word 0x02237CF4 +_0222DEF8: .word 0x02237E1C +_0222DEFC: .word 0x02237CE0 + thumb_func_end MOD80_0222DEBC + + thumb_func_start MOD80_0222DF00 +MOD80_0222DF00: ; 0x0222DF00 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + ldr r1, [sp, #0x18] + str r3, [sp] + str r1, [sp, #4] + add r4, r2, #0 + ldr r1, _0222DF34 ; =0x02237CE0 + add r2, r5, #0 + ldr r1, [r1, #8] + add r3, r4, #0 + bl MOD79_02212308 + cmp r0, #0 + beq _0222DF26 + cmp r0, #1 + beq _0222DF2C + cmp r0, #2 + b _0222DF2C +_0222DF26: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222DF2C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0222DF34: .word 0x02237CE0 + thumb_func_end MOD80_0222DF00 + + thumb_func_start MOD80_0222DF38 +MOD80_0222DF38: ; 0x0222DF38 + push {r4, lr} + cmp r0, #0x20 + bhi _0222DFB0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222DF4A: ; jump table + .short _0222DF8C - _0222DF4A - 2 ; case 0 + .short _0222DF8C - _0222DF4A - 2 ; case 1 + .short _0222DF92 - _0222DF4A - 2 ; case 2 + .short _0222DF8C - _0222DF4A - 2 ; case 3 + .short _0222DF8C - _0222DF4A - 2 ; case 4 + .short _0222DF8C - _0222DF4A - 2 ; case 5 + .short _0222DF8C - _0222DF4A - 2 ; case 6 + .short _0222DFB0 - _0222DF4A - 2 ; case 7 + .short _0222DF92 - _0222DF4A - 2 ; case 8 + .short _0222DF8C - _0222DF4A - 2 ; case 9 + .short _0222DF8C - _0222DF4A - 2 ; case 10 + .short _0222DF98 - _0222DF4A - 2 ; case 11 + .short _0222DF9E - _0222DF4A - 2 ; case 12 + .short _0222DF9E - _0222DF4A - 2 ; case 13 + .short _0222DF8C - _0222DF4A - 2 ; case 14 + .short _0222DFAA - _0222DF4A - 2 ; case 15 + .short _0222DFA4 - _0222DF4A - 2 ; case 16 + .short _0222DFA4 - _0222DF4A - 2 ; case 17 + .short _0222DFA4 - _0222DF4A - 2 ; case 18 + .short _0222DFA4 - _0222DF4A - 2 ; case 19 + .short _0222DF8C - _0222DF4A - 2 ; case 20 + .short _0222DF8C - _0222DF4A - 2 ; case 21 + .short _0222DF8C - _0222DF4A - 2 ; case 22 + .short _0222DF8C - _0222DF4A - 2 ; case 23 + .short _0222DFB0 - _0222DF4A - 2 ; case 24 + .short _0222DF92 - _0222DF4A - 2 ; case 25 + .short _0222DFA4 - _0222DF4A - 2 ; case 26 + .short _0222DFA4 - _0222DF4A - 2 ; case 27 + .short _0222DFA4 - _0222DF4A - 2 ; case 28 + .short _0222DFA4 - _0222DF4A - 2 ; case 29 + .short _0222DFAA - _0222DF4A - 2 ; case 30 + .short _0222DFA4 - _0222DF4A - 2 ; case 31 + .short _0222DF8C - _0222DF4A - 2 ; case 32 +_0222DF8C: + mov r4, #0xc + mvn r4, r4 + b _0222DFB4 +_0222DF92: + mov r4, #0xc + mvn r4, r4 + b _0222DFB4 +_0222DF98: + mov r4, #0xe + mvn r4, r4 + b _0222DFB4 +_0222DF9E: + mov r4, #0xe + mvn r4, r4 + b _0222DFB4 +_0222DFA4: + mov r4, #1 + mvn r4, r4 + b _0222DFB4 +_0222DFAA: + mov r4, #1 + mvn r4, r4 + b _0222DFB4 +_0222DFB0: + mov r4, #0xc + mvn r4, r4 +_0222DFB4: + mov r0, #0xc + mvn r0, r0 + cmp r4, r0 + beq _0222DFCC + bl FUN_020A71F8 + cmp r0, #9 + beq _0222DFC8 + mov r4, #0xd + mvn r4, r4 +_0222DFC8: + bl MOD04_021DD6F0 +_0222DFCC: + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD80_0222DF38 + + thumb_func_start MOD80_0222DFD0 +MOD80_0222DFD0: ; 0x0222DFD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _0222DFE4 + cmp r0, #1 + beq _0222E0E2 + b _0222E0F8 +_0222DFE4: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _0222E100 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _0222E104 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r2, #7 + mov r0, #3 + mov r1, #0x3e + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222E108 ; =0x00001044 + add r0, r6, #0 + mov r2, #0x3e + bl FUN_02006268 + ldr r2, _0222E108 ; =0x00001044 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x3e + bl FUN_02016B94 + str r0, [r4, #4] + ldr r0, _0222E10C ; =0x02237E24 + add r2, sp, #0 + ldr r3, _0222E110 ; =0x02236E50 + str r4, [r0, #4] + add r7, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r7, #0 + bl FUN_02016BBC + mov r0, #0xb + mov r1, #0x40 + mov r2, #0x3e + bl FUN_0200AA90 + mov r1, #0xb3 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r2, _0222E114 ; =0x0000024F + mov r0, #0 + mov r1, #0x1a + mov r3, #0x3e + bl FUN_0200A86C + ldr r1, _0222E118 ; =0x00000B34 + mov r2, #0x25 + str r0, [r4, r1] + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #4 + mov r3, #0x3e + bl FUN_0200A86C + ldr r1, _0222E11C ; =0x00000B3C + ldr r2, _0222E120 ; =0x00000265 + str r0, [r4, r1] + mov r0, #0 + mov r1, #0x1a + mov r3, #0x3e + bl FUN_0200A86C + mov r1, #0x2d + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r2, _0222E124 ; =0x0000016A + mov r0, #0 + mov r1, #0x1a + mov r3, #0x3e + bl FUN_0200A86C + ldr r1, _0222E128 ; =0x00000B38 + str r0, [r4, r1] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + add r1, r6, #0 + bl MOD80_0222E338 + add r0, r4, #0 + bl MOD80_0222E7C8 + ldr r1, _0222E12C ; =0x00000449 + mov r0, #4 + mov r2, #1 + bl FUN_0200433C + ldr r1, _0222E130 ; =0x00020020 + mov r0, #0x3e + bl FUN_02016998 + str r0, [r4, #0x48] + add r0, #0x1f + mov r1, #0x1f + bic r0, r1 + mov r1, #2 + lsl r1, r1, #0x10 + mov r2, #0 + bl tempName_NNS_FndCreateExpHeapEx + str r0, [r4, #0x4c] + mov r0, #1 + str r0, [r5] + b _0222E0F8 +_0222E0E2: + bl FUN_02088858 + bl FUN_020888BC + bl FUN_0202E49C + mov r0, #0 + str r0, [r5] + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222E0F8: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E100: .word 0xFFFFE0FF +_0222E104: .word 0x04001000 +_0222E108: .word 0x00001044 +_0222E10C: .word 0x02237E24 +_0222E110: .word 0x02236E50 +_0222E114: .word 0x0000024F +_0222E118: .word 0x00000B34 +_0222E11C: .word 0x00000B3C +_0222E120: .word 0x00000265 +_0222E124: .word 0x0000016A +_0222E128: .word 0x00000B38 +_0222E12C: .word 0x00000449 +_0222E130: .word 0x00020020 + thumb_func_end MOD80_0222DFD0 + + thumb_func_start MOD80_0222E134 +MOD80_0222E134: ; 0x0222E134 + push {r4, r5, r6, lr} + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + bl MOD04_021DD984 + bl MOD80_0222D5DC + ldr r1, [r5] + cmp r1, #5 + bhi _0222E224 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E158: ; jump table + .short _0222E164 - _0222E158 - 2 ; case 0 + .short _0222E180 - _0222E158 - 2 ; case 1 + .short _0222E1A4 - _0222E158 - 2 ; case 2 + .short _0222E1B2 - _0222E158 - 2 ; case 3 + .short _0222E1C6 - _0222E158 - 2 ; case 4 + .short _0222E220 - _0222E158 - 2 ; case 5 +_0222E164: + bl FUN_0202E4C8 + cmp r0, #0 + beq _0222E224 + ldr r1, [r4, #0x4c] + ldr r0, _0222E240 ; =0x02237E24 + str r1, [r0] + ldr r0, _0222E244 ; =MOD80_0222E750 + ldr r1, _0222E248 ; =MOD80_0222E778 + bl MOD04_021DD968 + mov r0, #1 + str r0, [r5] + b _0222E224 +_0222E180: + ldr r3, [r4, #0x14] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222E24C ; =0x02237984 + add r0, r4, #0 + ldr r2, [r2, r6] + blx r2 + str r0, [r5] + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0222E224 + add r0, r4, #0 + bl MOD80_0222E7F0 + b _0222E224 +_0222E1A4: + bl FUN_0200E308 + cmp r0, #0 + beq _0222E224 + mov r0, #3 + str r0, [r5] + b _0222E224 +_0222E1B2: + ldr r3, [r4, #0x14] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222E250 ; =0x02237988 + add r0, r4, #0 + ldr r2, [r2, r6] + blx r2 + str r0, [r5] + b _0222E224 +_0222E1C6: + bl FUN_0200E308 + cmp r0, #0 + beq _0222E224 + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0222E20A + add r0, r4, #0 + bl MOD80_0222E7C8 + ldr r0, [r4] + ldr r0, [r0, #0x1c] + bl FUN_020239CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD80_02235850 + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + add r0, r4, #0 + mov r2, #0 + bl MOD80_02235B90 + add r0, r4, #0 + bl MOD80_0222F338 + add r0, r4, #0 + mov r1, #0 + add r0, #0xac + str r1, [r0] +_0222E20A: + ldr r3, [r4, #0x14] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222E254 ; =0x0223798C + ldr r1, [r5] + ldr r2, [r2, r6] + add r0, r4, #0 + blx r2 + str r0, [r5] + b _0222E224 +_0222E220: + mov r0, #1 + pop {r4, r5, r6, pc} +_0222E224: + add r0, r4, #0 + bl MOD80_0222E85C + add r0, r4, #0 + bl MOD80_0222E87C + ldr r0, _0222E258 ; =0x00000B84 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222E23C + bl FUN_0201FDEC +_0222E23C: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222E240: .word 0x02237E24 +_0222E244: .word MOD80_0222E750 +_0222E248: .word MOD80_0222E778 +_0222E24C: .word 0x02237984 +_0222E250: .word 0x02237988 +_0222E254: .word 0x0223798C +_0222E258: .word 0x00000B84 + thumb_func_end MOD80_0222E134 + + thumb_func_start MOD80_0222E25C +MOD80_0222E25C: ; 0x0222E25C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x48] + bl FUN_02016A18 + bl FUN_020888CC + bl FUN_02088868 + add r0, r4, #0 + bl MOD80_0222E7F0 + ldr r0, _0222E2D4 ; =0x00000B38 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x2d + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0222E2D8 ; =0x00000B3C + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0222E2DC ; =0x00000B34 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200AB18 + add r0, r4, #0 + bl MOD80_0222E398 + bl FUN_0202E4F0 + ldr r0, [r4, #4] + bl FUN_02016A18 + ldr r0, [r4] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x3e + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E2D4: .word 0x00000B38 +_0222E2D8: .word 0x00000B3C +_0222E2DC: .word 0x00000B34 + thumb_func_end MOD80_0222E25C + + thumb_func_start MOD80_0222E2E0 +MOD80_0222E2E0: ; 0x0222E2E0 + push {r4, lr} + ldr r1, _0222E30C ; =0x00001014 + add r4, r0, #0 + ldr r1, [r4, r1] + cmp r1, #0 + beq _0222E2F4 + blx r1 + ldr r0, _0222E30C ; =0x00001014 + mov r1, #0 + str r1, [r4, r0] +_0222E2F4: + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _0222E310 ; =0x027E0000 + ldr r1, _0222E314 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + nop +_0222E30C: .word 0x00001014 +_0222E310: .word 0x027E0000 +_0222E314: .word 0x00003FF8 + thumb_func_end MOD80_0222E2E0 + + thumb_func_start MOD80_0222E318 +MOD80_0222E318: ; 0x0222E318 + push {r4, lr} + sub sp, #0x28 + ldr r4, _0222E334 ; =0x02236E70 + add r3, sp, #0 + mov r2, #5 +_0222E322: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222E322 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_0222E334: .word 0x02236E70 + thumb_func_end MOD80_0222E318 + + thumb_func_start MOD80_0222E338 +MOD80_0222E338: ; 0x0222E338 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl FUN_0200628C + mov r1, #0 + str r0, [r4] + add r0, r4, #0 + add r2, r1, #0 + str r1, [r4, #0x14] + bl MOD80_0222E7A8 + add r1, r4, #0 + mov r0, #0 + add r1, #0xb4 + strh r0, [r1] + ldr r1, _0222E390 ; =0x00000B22 + mov r3, #3 + strh r0, [r4, r1] + add r2, r1, #2 + strb r3, [r4, r2] + add r2, r1, #3 + strb r0, [r4, r2] + add r2, r1, #4 + strb r0, [r4, r2] + add r1, r1, #6 + strh r0, [r4, r1] + ldr r2, _0222E394 ; =0x00000FEC + add r1, r4, #0 + strh r0, [r4, r2] + mov r3, #0x12 + add r1, #0xb8 + strh r3, [r1] + add r1, r2, #0 + add r1, #0x1c + strh r0, [r4, r1] + add r1, r2, #0 + add r1, #0x1e + strh r0, [r4, r1] + add r1, r2, #2 + strh r0, [r4, r1] + sub r2, #0x14 + str r0, [r4, r2] + pop {r4, pc} + .align 2, 0 +_0222E390: .word 0x00000B22 +_0222E394: .word 0x00000FEC + thumb_func_end MOD80_0222E338 + + thumb_func_start MOD80_0222E398 +MOD80_0222E398: ; 0x0222E398 + bx lr + .align 2, 0 + thumb_func_end MOD80_0222E398 + + thumb_func_start MOD80_0222E39C +MOD80_0222E39C: ; 0x0222E39C + push {r4, lr} + sub sp, #0x10 + ldr r4, _0222E3C8 ; =0x02236E60 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x3e + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0222E3C8: .word 0x02236E60 + thumb_func_end MOD80_0222E39C + + thumb_func_start MOD80_0222E3CC +MOD80_0222E3CC: ; 0x0222E3CC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7e + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x3e + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + ldr r1, _0222E5C8 ; =0x00000B88 + mov r0, #0x4e + add r1, r5, r1 + mov r2, #0x3e + bl FUN_02008C9C + ldr r1, _0222E5CC ; =0x00000B84 + mov r2, #1 + str r0, [r5, r1] + add r0, r1, #4 + add r0, r5, r0 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r7, #0xcb + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #4 +_0222E414: + mov r0, #3 + add r1, r6, #0 + mov r2, #0x3e + bl FUN_02008DEC + str r0, [r4, r7] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0222E414 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0xcb + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x68 + mov r2, #0x12 + bl FUN_02008F34 + mov r1, #0x33 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x3e + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x68 + mov r2, #9 + bl FUN_02008FEC + ldr r1, _0222E5D0 ; =0x00000CC4 + mov r2, #0x13 + str r0, [r5, r1] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x3e + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x68 + mov r3, #1 + bl FUN_020090AC + ldr r1, _0222E5D4 ; =0x00000CC8 + mov r2, #0x14 + str r0, [r5, r1] + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x3e + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x68 + mov r3, #1 + bl FUN_020090AC + ldr r1, _0222E5D8 ; =0x00000CCC + mov r3, #1 + str r0, [r5, r1] + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x3e + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x68 + mov r2, #0x20 + bl FUN_02008F34 + mov r1, #0xcd + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #9 + str r0, [sp, #8] + mov r0, #0x3e + sub r1, #0x1c + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x68 + mov r2, #8 + mov r3, #0 + bl FUN_02008FEC + ldr r1, _0222E5DC ; =0x00000CD4 + mov r3, #1 + str r0, [r5, r1] + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x3e + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x68 + mov r2, #0x21 + bl FUN_020090AC + ldr r1, _0222E5E0 ; =0x00000CD8 + mov r3, #1 + str r0, [r5, r1] + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x3e + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x68 + mov r2, #0x22 + bl FUN_020090AC + ldr r1, _0222E5E4 ; =0x00000CDC + str r0, [r5, r1] + sub r1, #0x1c + ldr r0, [r5, r1] + bl FUN_02009A50 + mov r0, #0xcd + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02009A50 + ldr r0, _0222E5D0 ; =0x00000CC4 + ldr r0, [r5, r0] + bl FUN_02009CF0 + ldr r0, _0222E5DC ; =0x00000CD4 + ldr r0, [r5, r0] + bl FUN_02009CF0 + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0x13 + add r2, sp, #0x18 + mov r3, #0x3e + bl FUN_02006C08 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + mov r1, #0x60 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp, #0x18] + mov r1, #0x60 + ldr r0, [r0, #0xc] + add r2, r1, #0 + bl GX_LoadOBJPltt + ldr r0, [sp, #0x18] + mov r7, #0x1f + ldr r4, [r0, #0xc] + mov r3, #0 + add r5, r7, #0 +_0222E570: + ldrh r2, [r4] + mov r0, #0x1f + add r3, r3, #1 + add r1, r2, #0 + and r1, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + asr r0, r2, #0xa + add r6, r0, #0 + and r6, r7 + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r2, r2, #5 + add r6, r2, #0 + and r6, r5 + lsr r2, r6, #0x1f + add r2, r6, r2 + asr r0, r0, #1 + asr r2, r2, #1 + lsl r0, r0, #0xa + lsl r2, r2, #5 + orr r0, r2 + orr r0, r1 + strh r0, [r4] + add r4, r4, #2 + cmp r3, #0x30 + blt _0222E570 + ldr r0, [sp, #0x18] + mov r1, #0x60 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp, #0x18] + mov r1, #0xc0 + ldr r0, [r0, #0xc] + mov r2, #0x60 + bl GX_LoadOBJPltt + ldr r0, [sp, #0x14] + bl FUN_02016A18 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222E5C8: .word 0x00000B88 +_0222E5CC: .word 0x00000B84 +_0222E5D0: .word 0x00000CC4 +_0222E5D4: .word 0x00000CC8 +_0222E5D8: .word 0x00000CCC +_0222E5DC: .word 0x00000CD4 +_0222E5E0: .word 0x00000CD8 +_0222E5E4: .word 0x00000CDC + thumb_func_end MOD80_0222E3CC + + thumb_func_start MOD80_0222E5E8 +MOD80_0222E5E8: ; 0x0222E5E8 + push {r3, r4} + ldr r4, _0222E610 ; =0x00000B84 + ldr r1, [r1, r4] + str r1, [r0] + str r2, [r0, #4] + mov r2, #0 + mov r1, #1 + str r2, [r0, #0x10] + lsl r1, r1, #0xc + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + strh r2, [r0, #0x20] + mov r1, #1 + str r1, [r0, #0x24] + str r3, [r0, #0x28] + mov r1, #0x3e + str r1, [r0, #0x2c] + pop {r3, r4} + bx lr + .align 2, 0 +_0222E610: .word 0x00000B84 + thumb_func_end MOD80_0222E5E8 + + thumb_func_start MOD80_0222E614 +MOD80_0222E614: ; 0x0222E614 + push {r3, r4, lr} + sub sp, #0x2c + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r2, #0xcb + str r1, [sp, #0x10] + lsl r2, r2, #4 + ldr r0, [r4, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r4, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r4, r0] + str r0, [sp, #0x1c] + add r0, r2, #0 + add r0, #0xc + ldr r0, [r4, r0] + add r2, #0x40 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r4, r2 + add r2, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + mov r1, #1 + mov r3, #0xcb + str r1, [sp] + sub r0, r1, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r4, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r4, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r4, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r4, r3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02008AA4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x2c + pop {r3, r4, pc} + thumb_func_end MOD80_0222E614 + + thumb_func_start MOD80_0222E6A8 +MOD80_0222E6A8: ; 0x0222E6A8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + ldr r5, _0222E6D8 ; =0x02236E48 + add r4, sp, #4 + ldrh r6, [r5] + add r3, sp, #4 + strh r6, [r4] + ldrh r6, [r5, #2] + strh r6, [r4, #2] + ldrh r6, [r5, #4] + ldrh r5, [r5, #6] + strh r6, [r4, #4] + strh r5, [r4, #6] + strb r1, [r4, #2] + strh r2, [r4, #6] + mov r1, #0x3e + str r1, [sp] + add r1, r3, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_02002198 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222E6D8: .word 0x02236E48 + thumb_func_end MOD80_0222E6A8 + + thumb_func_start MOD80_0222E6DC +MOD80_0222E6DC: ; 0x0222E6DC + str r1, [r0, #0x2c] + str r2, [r0, #0x30] + bx lr + .align 2, 0 + thumb_func_end MOD80_0222E6DC + + thumb_func_start MOD80_0222E6E4 +MOD80_0222E6E4: ; 0x0222E6E4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + add r5, r2, #0 + cmp r1, #0 + ble _0222E702 + lsl r0, r1, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0222E710 +_0222E702: + lsl r0, r1, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0222E710: + bl _ffix + str r0, [sp] + cmp r5, #0 + ble _0222E72C + lsl r0, r5, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0222E73A +_0222E72C: + lsl r0, r5, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0222E73A: + bl _ffix + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD80_0222E6E4 + + thumb_func_start MOD80_0222E750 +MOD80_0222E750: ; 0x0222E750 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl OS_DisableInterrupts + add r6, r0, #0 + ldr r0, _0222E774 ; =0x02237E24 + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + bl tempName_NNS_FndAllocFromExpHeapEx + add r4, r0, #0 + add r0, r6, #0 + bl OS_RestoreInterrupts + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222E774: .word 0x02237E24 + thumb_func_end MOD80_0222E750 + + thumb_func_start MOD80_0222E778 +MOD80_0222E778: ; 0x0222E778 + push {r3, r4, r5, lr} + add r5, r1, #0 + beq _0222E794 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0222E798 ; =0x02237E24 + add r1, r5, #0 + ldr r0, [r0] + bl FUN_020ADDF0 + add r0, r4, #0 + bl OS_RestoreInterrupts +_0222E794: + pop {r3, r4, r5, pc} + nop +_0222E798: .word 0x02237E24 + thumb_func_end MOD80_0222E778 + + thumb_func_start MOD80_0222E79C +MOD80_0222E79C: ; 0x0222E79C + push {r3, lr} + bl MOD04_021DDB08 + mov r1, #3 + sub r0, r1, r0 + pop {r3, pc} + thumb_func_end MOD80_0222E79C + + thumb_func_start MOD80_0222E7A8 +MOD80_0222E7A8: ; 0x0222E7A8 + str r1, [r0, #0x18] + str r2, [r0, #0x24] + bx lr + .align 2, 0 + thumb_func_end MOD80_0222E7A8 + + thumb_func_start MOD80_0222E7B0 +MOD80_0222E7B0: ; 0x0222E7B0 + ldr r1, [r0, #0x14] + str r1, [r0, #0x20] + ldr r1, [r0, #0x18] + str r1, [r0, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD80_0222E7B0 + + thumb_func_start MOD80_0222E7BC +MOD80_0222E7BC: ; 0x0222E7BC + ldr r0, [r0] + ldr r3, _0222E7C4 ; =FUN_02024FF4 + ldr r0, [r0, #0x24] + bx r3 + .align 2, 0 +_0222E7C4: .word FUN_02024FF4 + thumb_func_end MOD80_0222E7BC + + thumb_func_start MOD80_0222E7C8 +MOD80_0222E7C8: ; 0x0222E7C8 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222E318 + bl MOD80_0222E39C + add r0, r4, #0 + bl MOD80_0222E3CC + add r0, r4, #0 + bl MOD80_0222E614 + ldr r0, _0222E7EC ; =MOD80_0222E2E0 + add r1, r4, #0 + bl FUN_02015F10 + pop {r4, pc} + nop +_0222E7EC: .word MOD80_0222E2E0 + thumb_func_end MOD80_0222E7C8 + + thumb_func_start MOD80_0222E7F0 +MOD80_0222E7F0: ; 0x0222E7F0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl MOD80_02235D10 + mov r0, #0x33 + lsl r0, r0, #6 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0xcd + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009C0C + ldr r0, _0222E850 ; =0x00000CC4 + ldr r0, [r6, r0] + bl FUN_02009E04 + ldr r0, _0222E854 ; =0x00000CD4 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r7, #0xcb + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0222E824: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222E824 + ldr r0, _0222E858 ; =0x00000B84 + ldr r0, [r6, r0] + bl FUN_0201FD58 + ldr r0, _0222E858 ; =0x00000B84 + mov r1, #0 + str r1, [r6, r0] + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E850: .word 0x00000CC4 +_0222E854: .word 0x00000CD4 +_0222E858: .word 0x00000B84 + thumb_func_end MOD80_0222E7F0 + + thumb_func_start MOD80_0222E85C +MOD80_0222E85C: ; 0x0222E85C + ldrh r1, [r0, #0x3a] + cmp r1, #0 + beq _0222E866 + sub r1, r1, #1 + strh r1, [r0, #0x3a] +_0222E866: + bx lr + thumb_func_end MOD80_0222E85C + + thumb_func_start MOD80_0222E868 +MOD80_0222E868: ; 0x0222E868 + ldr r1, _0222E878 ; =0x0000100A + mov r2, #1 + strh r2, [r0, r1] + mov r2, #0 + sub r1, r1, #2 + strh r2, [r0, r1] + bx lr + nop +_0222E878: .word 0x0000100A + thumb_func_end MOD80_0222E868 + + thumb_func_start MOD80_0222E87C +MOD80_0222E87C: ; 0x0222E87C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222E8B4 ; =0x0000100A + ldrh r1, [r4, r0] + cmp r1, #0 + beq _0222E8B0 + ldr r0, [r4] + sub r1, r1, #1 + ldr r0, [r0, #0xc] + bl FUN_0206B4E4 + ldr r1, _0222E8B8 ; =0x00001008 + ldrh r2, [r4, r1] + add r0, r2, r0 + strh r0, [r4, r1] + add r0, r1, #2 + ldrh r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #2 + strh r2, [r4, r0] + ldrh r0, [r4, r0] + cmp r0, #0x13 + bne _0222E8B0 + mov r2, #0 + add r0, r1, #2 + strh r2, [r4, r0] +_0222E8B0: + pop {r4, pc} + nop +_0222E8B4: .word 0x0000100A +_0222E8B8: .word 0x00001008 + thumb_func_end MOD80_0222E87C + + thumb_func_start MOD80_0222E8BC +MOD80_0222E8BC: ; 0x0222E8BC + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222E8D0 ; =0x00000E98 + mov r1, #1 + add r0, r4, r0 + bl FUN_0200D858 + ldr r1, _0222E8D4 ; =0x00000FD8 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_0222E8D0: .word 0x00000E98 +_0222E8D4: .word 0x00000FD8 + thumb_func_end MOD80_0222E8BC + + thumb_func_start MOD80_0222E8D8 +MOD80_0222E8D8: ; 0x0222E8D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222E8F0 ; =0x00000FD8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222E8EE + bl FUN_0200DBFC + ldr r0, _0222E8F0 ; =0x00000FD8 + mov r1, #0 + str r1, [r4, r0] +_0222E8EE: + pop {r4, pc} + .align 2, 0 +_0222E8F0: .word 0x00000FD8 + thumb_func_end MOD80_0222E8D8 + + thumb_func_start MOD80_0222E8F4 +MOD80_0222E8F4: ; 0x0222E8F4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_0222EDE0 + ldr r0, [r4, #4] + bl MOD80_0222EA04 + add r0, r4, #0 + bl MOD80_0222EB6C + add r0, r4, #0 + bl MOD80_0222EC98 + add r0, r4, #0 + bl MOD80_0222EC24 + add r0, r4, #0 + bl MOD80_02236D84 + add r0, r4, #0 + bl MOD80_0222F20C + ldr r1, _0222E9B0 ; =0x00000449 + mov r0, #4 + mov r2, #1 + bl FUN_0200433C + ldrh r0, [r4, #0x34] + cmp r0, #0 + bne _0222E968 + add r0, r4, #0 + bl MOD80_0222EB40 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #1 + strh r0, [r4, #0x34] + ldr r0, [r4] + ldr r0, [r0, #0x1c] + bl FUN_020239CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD80_02235900 + b _0222E9A2 +_0222E968: + ldr r0, _0222E9B4 ; =0x0000100C + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222E988 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _0222E99E +_0222E988: + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 +_0222E99E: + mov r0, #5 + str r0, [r4, #0x2c] +_0222E9A2: + ldr r0, _0222E9B4 ; =0x0000100C + mov r1, #0 + str r1, [r4, r0] + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + nop +_0222E9B0: .word 0x00000449 +_0222E9B4: .word 0x0000100C + thumb_func_end MOD80_0222E8F4 + + thumb_func_start MOD80_0222E9B8 +MOD80_0222E9B8: ; 0x0222E9B8 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222E79C + bl FUN_02033EEC + ldr r1, [r4, #0x2c] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _0222E9D4 ; =0x022379FC + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0222E9D4: .word 0x022379FC + thumb_func_end MOD80_0222E9B8 + + thumb_func_start MOD80_0222E9D8 +MOD80_0222E9D8: ; 0x0222E9D8 + push {r4, lr} + add r4, r0, #0 + bl FUN_02033ED0 + add r0, r4, #0 + bl MOD80_0222EC88 + add r0, r4, #0 + bl MOD80_0222EE08 + add r0, r4, #0 + bl MOD80_0222ED9C + ldr r0, [r4, #4] + bl MOD80_0222EB14 + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_0222E9D8 + + thumb_func_start MOD80_0222EA04 +MOD80_0222EA04: ; 0x0222EA04 + push {r4, r5, lr} + sub sp, #0x9c + ldr r5, _0222EAFC ; =0x02236EA4 + add r3, sp, #0x8c + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0222EB00 ; =0x02236F04 + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _0222EB04 ; =0x02236EE8 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _0222EB08 ; =0x02236F20 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _0222EB0C ; =0x02236F3C + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _0222EB10 ; =0x02236ECC + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x9c + pop {r4, r5, pc} + nop +_0222EAFC: .word 0x02236EA4 +_0222EB00: .word 0x02236F04 +_0222EB04: .word 0x02236EE8 +_0222EB08: .word 0x02236F20 +_0222EB0C: .word 0x02236F3C +_0222EB10: .word 0x02236ECC + thumb_func_end MOD80_0222EA04 + + thumb_func_start MOD80_0222EB14 +MOD80_0222EB14: ; 0x0222EB14 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_0222EB14 + + thumb_func_start MOD80_0222EB40 +MOD80_0222EB40: ; 0x0222EB40 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, _0222EB68 ; =0x00000D5C + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r4, pc} + .align 2, 0 +_0222EB68: .word 0x00000D5C + thumb_func_end MOD80_0222EB40 + + thumb_func_start MOD80_0222EB6C +MOD80_0222EB6C: ; 0x0222EB6C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x60 + str r0, [sp] + mov r0, #0x3e + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #4 + add r3, r2, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + str r0, [sp] + mov r0, #3 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0xe + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x1e + add r2, r4, #0 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x1d + add r2, r4, #0 + mov r3, #2 + bl FUN_020068C8 + add r0, r5, #0 + bl MOD80_0222F338 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD80_0222EB6C + + thumb_func_start MOD80_0222EC24 +MOD80_0222EC24: ; 0x0222EC24 + push {r4, lr} + sub sp, #0x30 + mov r2, #0xcf + add r4, r0, #0 + lsl r2, r2, #4 + add r0, sp, #0 + add r1, r4, #0 + add r2, r4, r2 + mov r3, #1 + bl MOD80_0222E5E8 + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + lsl r1, r0, #2 + ldr r0, _0222EC7C ; =0x02236E98 + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + lsl r1, r0, #2 + ldr r0, _0222EC80 ; =0x02236E9A + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _0222EC84 ; =0x00000D5C + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0222EC84 ; =0x00000D5C + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_02020130 + add sp, #0x30 + pop {r4, pc} + nop +_0222EC7C: .word 0x02236E98 +_0222EC80: .word 0x02236E9A +_0222EC84: .word 0x00000D5C + thumb_func_end MOD80_0222EC24 + + thumb_func_start MOD80_0222EC88 +MOD80_0222EC88: ; 0x0222EC88 + ldr r1, _0222EC90 ; =0x00000D5C + ldr r3, _0222EC94 ; =FUN_0201FFC8 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_0222EC90: .word 0x00000D5C +_0222EC94: .word FUN_0201FFC8 + thumb_func_end MOD80_0222EC88 + + thumb_func_start MOD80_0222EC98 +MOD80_0222EC98: ; 0x0222EC98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r3, #1 + add r7, r0, #0 + str r3, [sp] + mov r0, #0x1c + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + ldr r1, _0222ED88 ; =0x00000EB8 + str r0, [sp, #0x10] + ldr r0, [r7, #4] + add r1, r7, r1 + mov r2, #0 + bl FUN_02019064 + ldr r0, _0222ED88 ; =0x00000EB8 + mov r1, #0 + add r0, r7, r0 + bl FUN_02019620 + mov r0, #2 + str r0, [sp] + mov r3, #0 + mov r2, #0xb5 + ldr r0, _0222ED8C ; =0x000F0400 + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, _0222ED88 ; =0x00000EB8 + str r3, [sp, #0xc] + lsl r2, r2, #4 + ldr r2, [r7, r2] + add r0, r7, r0 + mov r1, #1 + bl FUN_0201BDE0 + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _0222ED90 ; =0x00000ED8 + mov r6, #0x61 + mov r4, #6 + add r5, r7, r0 +_0222ECF2: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r7, #4] + add r1, r5, #0 + mov r2, #1 + mov r3, #9 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x14] + add r6, #0x1e + add r0, r0, #1 + add r4, r4, #5 + add r5, #0x10 + str r0, [sp, #0x14] + cmp r0, #3 + blt _0222ECF2 + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + ldr r1, _0222ED94 ; =0x00000E98 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x60 + str r0, [sp, #0x10] + ldr r0, [r7, #4] + add r1, r7, r1 + mov r2, #0 + bl FUN_02019064 + ldr r0, _0222ED94 ; =0x00000E98 + mov r1, #0xf + add r0, r7, r0 + bl FUN_02019620 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x96 + ldr r1, _0222ED98 ; =0x00000FB8 + str r0, [sp, #0x10] + ldr r0, [r7, #4] + add r1, r7, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + ldr r0, _0222ED98 ; =0x00000FB8 + mov r1, #0xf + add r0, r7, r0 + bl FUN_02019620 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222ED88: .word 0x00000EB8 +_0222ED8C: .word 0x000F0400 +_0222ED90: .word 0x00000ED8 +_0222ED94: .word 0x00000E98 +_0222ED98: .word 0x00000FB8 + thumb_func_end MOD80_0222EC98 + + thumb_func_start MOD80_0222ED9C +MOD80_0222ED9C: ; 0x0222ED9C + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _0222EDD0 ; =0x00000FB8 + add r0, r6, r0 + bl FUN_02019178 + ldr r0, _0222EDD4 ; =0x00000E98 + add r0, r6, r0 + bl FUN_02019178 + ldr r0, _0222EDD8 ; =0x00000ED8 + mov r4, #0 + add r5, r6, r0 +_0222EDB6: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #3 + blt _0222EDB6 + ldr r0, _0222EDDC ; =0x00000EB8 + add r0, r6, r0 + bl FUN_02019178 + pop {r4, r5, r6, pc} + nop +_0222EDD0: .word 0x00000FB8 +_0222EDD4: .word 0x00000E98 +_0222EDD8: .word 0x00000ED8 +_0222EDDC: .word 0x00000EB8 + thumb_func_end MOD80_0222ED9C + + thumb_func_start MOD80_0222EDE0 +MOD80_0222EDE0: ; 0x0222EDE0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _0222EE04 ; =0x00000B4C + str r0, [r4, r1] + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #0x27 + bl FUN_0200A914 + mov r1, #0xb5 + lsl r1, r1, #4 + str r0, [r4, r1] + pop {r4, pc} + nop +_0222EE04: .word 0x00000B4C + thumb_func_end MOD80_0222EDE0 + + thumb_func_start MOD80_0222EE08 +MOD80_0222EE08: ; 0x0222EE08 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222EE20 ; =0x00000B4C + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0xb5 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + .align 2, 0 +_0222EE20: .word 0x00000B4C + thumb_func_end MOD80_0222EE08 + + thumb_func_start MOD80_0222EE24 +MOD80_0222EE24: ; 0x0222EE24 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222EE60 ; =0x00000FEC + ldrh r0, [r4, r0] + cmp r0, #0 + beq _0222EE5A + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #7 + mov r2, #0xb + bl MOD80_0222E7A8 + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #9 + str r0, [r4, #0x2c] +_0222EE5A: + mov r0, #3 + pop {r4, pc} + nop +_0222EE60: .word 0x00000FEC + thumb_func_end MOD80_0222EE24 + + thumb_func_start MOD80_0222EE64 +MOD80_0222EE64: ; 0x0222EE64 + push {r3, lr} + mov r1, #0xa + mov r2, #2 + bl MOD80_0222E6DC + mov r0, #3 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD80_0222EE64 + + thumb_func_start MOD80_0222EE74 +MOD80_0222EE74: ; 0x0222EE74 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r4, #0x2c] + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD80_0222EE74 + + thumb_func_start MOD80_0222EE98 +MOD80_0222EE98: ; 0x0222EE98 + push {r4, lr} + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _0222EEA8 + mov r0, #5 + str r0, [r4, #0x2c] +_0222EEA8: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_0222EE98 + + thumb_func_start MOD80_0222EEAC +MOD80_0222EEAC: ; 0x0222EEAC + push {r4, lr} + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _0222EEBC + mov r0, #5 + str r0, [r4, #0x2c] +_0222EEBC: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_0222EEAC + + thumb_func_start MOD80_0222EEC0 +MOD80_0222EEC0: ; 0x0222EEC0 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EEF4 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #4 + mov r2, #1 + mov r3, #0 + bl MOD80_0222F250 + add r0, r4, #0 + mov r1, #0xa + mov r2, #6 + bl MOD80_0222E6DC + ldr r0, _0222EEF8 ; =0x00000D5C + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020200BC + add r0, r4, #0 + bl MOD80_0222E868 + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222EEF4: .word 0x00000F0F +_0222EEF8: .word 0x00000D5C + thumb_func_end MOD80_0222EEC0 + + thumb_func_start MOD80_0222EEFC +MOD80_0222EEFC: ; 0x0222EEFC + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F084 ; =0x021C48B8 + mov r2, #2 + ldr r1, [r1, #0x48] + add r4, r0, #0 + tst r2, r1 + beq _0222EF36 + bl MOD80_0222E7BC + add r2, r0, #0 + ldr r0, _0222F088 ; =0x00000F0F + mov r1, #7 + str r0, [sp] + add r0, r4, #0 + mov r3, #0 + bl MOD80_0222F2A8 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0xc + bl MOD80_0222E6DC + ldr r0, _0222F08C ; =0x00000D5C + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200BC + b _0222F07C +_0222EF36: + mov r2, #1 + tst r2, r1 + beq _0222F002 + add r1, r4, #0 + add r1, #0xb4 + ldrh r1, [r1] + cmp r1, #0 + beq _0222EF50 + cmp r1, #1 + beq _0222EFBE + cmp r1, #2 + beq _0222EFD2 + b _0222F07C +_0222EF50: + ldrh r1, [r4, #0x36] + cmp r1, #0 + bne _0222EF6A + mov r1, #5 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #9 + str r0, [r4, #0x2c] + ldr r0, _0222F090 ; =0x000005DC + bl FUN_020054C8 + b _0222F07C +_0222EF6A: + ldrh r1, [r4, #0x3a] + cmp r1, #0 + bne _0222EF8C + mov r1, #7 + mov r2, #0xb + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r4, #0x1c] + mov r0, #9 + str r0, [r4, #0x2c] + ldr r0, _0222F094 ; =0x00000708 + strh r0, [r4, #0x3a] + ldr r0, _0222F090 ; =0x000005DC + bl FUN_020054C8 + b _0222F07C +_0222EF8C: + ldr r0, _0222F08C ; =0x00000D5C + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200BC + ldr r0, _0222F088 ; =0x00000F0F + mov r1, #0x22 + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + mov r3, #0 + bl MOD80_0222F250 + add r0, r4, #0 + mov r1, #0xb + mov r2, #5 + bl MOD80_0222E6DC + ldr r0, _0222F098 ; =0x000005F3 + bl FUN_020054C8 + ldr r0, _0222F09C ; =0x00000FDC + mov r1, #0 + str r1, [r4, r0] + b _0222F07C +_0222EFBE: + mov r1, #4 + mov r2, #0 + bl MOD80_0222E7A8 + mov r0, #9 + str r0, [r4, #0x2c] + ldr r0, _0222F090 ; =0x000005DC + bl FUN_020054C8 + b _0222F07C +_0222EFD2: + bl MOD80_0222E7BC + add r2, r0, #0 + ldr r0, _0222F088 ; =0x00000F0F + mov r1, #7 + str r0, [sp] + add r0, r4, #0 + mov r3, #0 + bl MOD80_0222F2A8 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0xc + bl MOD80_0222E6DC + ldr r0, _0222F08C ; =0x00000D5C + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200BC + ldr r0, _0222F090 ; =0x000005DC + bl FUN_020054C8 + b _0222F07C +_0222F002: + mov r0, #0x40 + tst r0, r1 + beq _0222F040 + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + cmp r0, #0 + beq _0222F07C + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xb4 + strh r1, [r0] + ldr r0, _0222F090 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + ldr r1, _0222F0A0 ; =0x02236E98 + ldr r2, _0222F0A4 ; =0x02236E9A + lsl r3, r0, #2 + ldr r0, _0222F08C ; =0x00000D5C + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldr r0, [r4, r0] + bl MOD80_0222E6E4 + b _0222F07C +_0222F040: + mov r0, #0x80 + tst r0, r1 + beq _0222F07C + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + cmp r0, #2 + bhs _0222F07C + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb4 + strh r1, [r0] + ldr r0, _0222F090 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0xb4 + ldrh r0, [r0] + ldr r1, _0222F0A0 ; =0x02236E98 + ldr r2, _0222F0A4 ; =0x02236E9A + lsl r3, r0, #2 + ldr r0, _0222F08C ; =0x00000D5C + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldr r0, [r4, r0] + bl MOD80_0222E6E4 +_0222F07C: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F084: .word 0x021C48B8 +_0222F088: .word 0x00000F0F +_0222F08C: .word 0x00000D5C +_0222F090: .word 0x000005DC +_0222F094: .word 0x00000708 +_0222F098: .word 0x000005F3 +_0222F09C: .word 0x00000FDC +_0222F0A0: .word 0x02236E98 +_0222F0A4: .word 0x02236E9A + thumb_func_end MOD80_0222EEFC + + thumb_func_start MOD80_0222F0A8 +MOD80_0222F0A8: ; 0x0222F0A8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0x1c] + bl FUN_020239CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD80_02235A10 + mov r0, #8 + str r0, [r4, #0x2c] + ldr r0, _0222F0CC ; =0x00000FEC + mov r1, #0 + strh r1, [r4, r0] + mov r0, #3 + pop {r4, pc} + nop +_0222F0CC: .word 0x00000FEC + thumb_func_end MOD80_0222F0A8 + + thumb_func_start MOD80_0222F0D0 +MOD80_0222F0D0: ; 0x0222F0D0 + ldr r1, _0222F0E0 ; =0x00000FEC + ldrh r1, [r0, r1] + cmp r1, #0 + beq _0222F0DC + mov r1, #9 + str r1, [r0, #0x2c] +_0222F0DC: + mov r0, #3 + bx lr + .align 2, 0 +_0222F0E0: .word 0x00000FEC + thumb_func_end MOD80_0222F0D0 + + thumb_func_start MOD80_0222F0E4 +MOD80_0222F0E4: ; 0x0222F0E4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _0222F10A + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _0222F122 +_0222F10A: + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 +_0222F122: + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD80_0222F0E4 + + thumb_func_start MOD80_0222F12C +MOD80_0222F12C: ; 0x0222F12C + push {r4, lr} + add r4, r0, #0 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #4] + add r2, #0xf5 + bl MOD80_0222E6A8 + ldr r1, _0222F148 ; =0x00000FCC + str r0, [r4, r1] + mov r0, #0xd + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F148: .word 0x00000FCC + thumb_func_end MOD80_0222F12C + + thumb_func_start MOD80_0222F14C +MOD80_0222F14C: ; 0x0222F14C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F1AC ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F1A8 + sub r1, r1, #1 + cmp r0, r1 + ldr r0, _0222F1B0 ; =0x00000FB8 + bne _0222F18A + add r0, r4, r0 + mov r1, #1 + bl FUN_0200D0E0 + ldr r0, _0222F1B0 ; =0x00000FB8 + add r0, r4, r0 + bl FUN_02019570 + ldr r0, _0222F1B4 ; =0x00000D5C + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020200BC + mov r0, #5 + str r0, [r4, #0x2c] + b _0222F1A8 +_0222F18A: + add r0, r4, r0 + mov r1, #1 + bl FUN_0200D0E0 + ldr r0, _0222F1B0 ; =0x00000FB8 + add r0, r4, r0 + bl FUN_02019570 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #7 + str r0, [r4, #0x2c] +_0222F1A8: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F1AC: .word 0x00000FCC +_0222F1B0: .word 0x00000FB8 +_0222F1B4: .word 0x00000D5C + thumb_func_end MOD80_0222F14C + + thumb_func_start MOD80_0222F1B8 +MOD80_0222F1B8: ; 0x0222F1B8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F1D2 + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_0222F1D2: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_0222F1B8 + + thumb_func_start MOD80_0222F1D8 +MOD80_0222F1D8: ; 0x0222F1D8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F204 + ldr r0, _0222F208 ; =0x00000FDC + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0x2d + ble _0222F204 + mov r1, #0 + str r1, [r4, r0] + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_0222F204: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F208: .word 0x00000FDC + thumb_func_end MOD80_0222F1D8 + + thumb_func_start MOD80_0222F20C +MOD80_0222F20C: ; 0x0222F20C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldrh r1, [r7, #0x36] + mov r0, #0xc + ldr r2, _0222F240 ; =0x02236EB4 + mul r0, r1 + add r4, r2, r0 + ldr r0, _0222F244 ; =0x00000ED8 + mov r6, #0 + add r5, r7, r0 +_0222F220: + ldr r1, _0222F248 ; =0x00000B34 + ldr r2, [r4] + ldr r1, [r7, r1] + ldr r3, _0222F24C ; =0x00000F0F + add r0, r5, #0 + bl MOD80_0222F300 + add r0, r5, #0 + bl FUN_020191D0 + add r6, r6, #1 + add r4, r4, #4 + add r5, #0x10 + cmp r6, #3 + blt _0222F220 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F240: .word 0x02236EB4 +_0222F244: .word 0x00000ED8 +_0222F248: .word 0x00000B34 +_0222F24C: .word 0x00000F0F + thumb_func_end MOD80_0222F20C + + thumb_func_start MOD80_0222F250 +MOD80_0222F250: ; 0x0222F250 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r2, _0222F29C ; =0x00000B34 + add r5, r0, #0 + ldr r0, [r5, r2] + add r2, #0x18 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r0, _0222F2A0 ; =0x00000E98 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _0222F2A0 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, _0222F2A0 ; =0x00000E98 + ldr r2, _0222F2A4 ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222F29C: .word 0x00000B34 +_0222F2A0: .word 0x00000E98 +_0222F2A4: .word 0x00000B4C + thumb_func_end MOD80_0222F250 + + thumb_func_start MOD80_0222F2A8 +MOD80_0222F2A8: ; 0x0222F2A8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r2, _0222F2F4 ; =0x00000B34 + add r5, r0, #0 + ldr r0, [r5, r2] + add r2, #0x18 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r0, _0222F2F8 ; =0x00000FB8 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _0222F2F8 ; =0x00000FB8 + mov r1, #0 + add r0, r5, r0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, _0222F2F8 ; =0x00000FB8 + ldr r2, _0222F2FC ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222F2F4: .word 0x00000B34 +_0222F2F8: .word 0x00000FB8 +_0222F2FC: .word 0x00000B4C + thumb_func_end MOD80_0222F2A8 + + thumb_func_start MOD80_0222F300 +MOD80_0222F300: ; 0x0222F300 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, r1, #0 + add r4, r3, #0 + add r1, r2, #0 + bl FUN_0200A914 + lsl r1, r4, #0x18 + add r6, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + str r3, [sp, #8] + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD80_0222F300 + + thumb_func_start MOD80_0222F338 +MOD80_0222F338: ; 0x0222F338 + push {r4, lr} + sub sp, #0x10 + ldr r4, [r0, #4] + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #5 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #0x2a + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0xf + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x1f + add r2, r4, #0 + mov r3, #5 + bl FUN_020068C8 + add sp, #0x10 + pop {r4, pc} + thumb_func_end MOD80_0222F338 + + thumb_func_start MOD80_0222F394 +MOD80_0222F394: ; 0x0222F394 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_0222F7F0 + ldr r0, [r4, #4] + bl MOD80_0222F494 + add r0, r4, #0 + bl MOD80_0222F5A8 + add r0, r4, #0 + bl MOD80_0222F6EC + add r0, r4, #0 + bl MOD80_0222F690 + add r0, r4, #0 + add r0, #0xd4 + bl FUN_020690E4 + str r0, [sp] + mov r0, #7 + lsl r0, r0, #6 + ldr r2, _0222F448 ; =0x00000B34 + add r0, r4, r0 + str r0, [sp, #4] + add r1, r2, #4 + ldr r0, [r4, r2] + sub r2, r2, #4 + ldr r3, _0222F44C ; =0x00000F08 + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r3, r4, r3 + bl MOD80_0222FBC0 + ldr r0, _0222F448 ; =0x00000B34 + ldr r1, _0222F450 ; =0x00000F58 + mov r2, #0x1e + lsl r2, r2, #4 + ldr r0, [r4, r0] + add r1, r4, r1 + add r2, r4, r2 + bl MOD80_0222FD28 + ldr r1, _0222F454 ; =0x000001C7 + ldrsb r0, [r4, r1] + add r1, r1, #1 + ldrsb r1, [r4, r1] + bl MOD80_02234668 + mov r1, #0x71 + lsl r1, r1, #2 + ldrsh r2, [r4, r1] + ldr r3, _0222F458 ; =0x00000F78 + add r1, r1, #2 + str r2, [sp] + ldrsb r1, [r4, r1] + ldr r2, _0222F448 ; =0x00000B34 + add r3, r4, r3 + str r1, [sp, #4] + str r0, [sp, #8] + add r1, r2, #4 + ldr r0, [r4, r2] + sub r2, r2, #4 + ldr r1, [r4, r1] + ldr r2, [r4, r2] + bl MOD80_02234048 + add r0, r4, #0 + add r0, #0xd4 + bl MOD80_0222FD88 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + nop +_0222F448: .word 0x00000B34 +_0222F44C: .word 0x00000F08 +_0222F450: .word 0x00000F58 +_0222F454: .word 0x000001C7 +_0222F458: .word 0x00000F78 + thumb_func_end MOD80_0222F394 + + thumb_func_start MOD80_0222F45C +MOD80_0222F45C: ; 0x0222F45C + push {r3, lr} + ldr r1, [r0, #0x2c] + lsl r2, r1, #2 + ldr r1, _0222F46C ; =0x02237A40 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_0222F46C: .word 0x02237A40 + thumb_func_end MOD80_0222F45C + + thumb_func_start MOD80_0222F470 +MOD80_0222F470: ; 0x0222F470 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222F6DC + add r0, r4, #0 + bl MOD80_0222F830 + add r0, r4, #0 + bl MOD80_0222F7B8 + ldr r0, [r4, #4] + bl MOD80_0222F57C + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD80_0222F470 + + thumb_func_start MOD80_0222F494 +MOD80_0222F494: ; 0x0222F494 + push {r4, r5, lr} + sub sp, #0x8c + ldr r5, _0222F568 ; =0x02236FC8 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x70 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _0222F56C ; =0x02236FAC + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _0222F570 ; =0x02236F90 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _0222F574 ; =0x02236F74 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _0222F578 ; =0x02236F58 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + add sp, #0x8c + pop {r4, r5, pc} + nop +_0222F568: .word 0x02236FC8 +_0222F56C: .word 0x02236FAC +_0222F570: .word 0x02236F90 +_0222F574: .word 0x02236F74 +_0222F578: .word 0x02236F58 + thumb_func_end MOD80_0222F494 + + thumb_func_start MOD80_0222F57C +MOD80_0222F57C: ; 0x0222F57C + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_0222F57C + + thumb_func_start MOD80_0222F5A8 +MOD80_0222F5A8: ; 0x0222F5A8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x60 + str r0, [sp] + mov r0, #0x3e + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #7 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #5 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x11 + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x19 + add r2, r4, #0 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #0x2a + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0xf + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x1f + add r2, r4, #0 + mov r3, #5 + bl FUN_020068C8 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD80_0222F5A8 + + thumb_func_start MOD80_0222F690 +MOD80_0222F690: ; 0x0222F690 + push {r4, lr} + sub sp, #0x30 + mov r2, #0xcf + add r4, r0, #0 + lsl r2, r2, #4 + add r0, sp, #0 + add r1, r4, #0 + add r2, r4, r2 + mov r3, #1 + bl MOD80_0222E5E8 + mov r0, #0x32 + lsl r0, r0, #0xe + str r0, [sp, #8] + mov r0, #0x3a + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _0222F6D8 ; =0x00000E6C + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0222F6D8 ; =0x00000E6C + mov r1, #0x25 + ldr r0, [r4, r0] + bl FUN_02020130 + bl FUN_02033E74 + add sp, #0x30 + pop {r4, pc} + nop +_0222F6D8: .word 0x00000E6C + thumb_func_end MOD80_0222F690 + + thumb_func_start MOD80_0222F6DC +MOD80_0222F6DC: ; 0x0222F6DC + ldr r1, _0222F6E4 ; =0x00000E6C + ldr r3, _0222F6E8 ; =FUN_0201FFC8 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_0222F6E4: .word 0x00000E6C +_0222F6E8: .word FUN_0201FFC8 + thumb_func_end MOD80_0222F6DC + + thumb_func_start MOD80_0222F6EC +MOD80_0222F6EC: ; 0x0222F6EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp, #0x14] + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, _0222F7A8 ; =0x00000E98 + ldr r1, [sp, #0x14] + ldr r0, [r0, #4] + add r1, r1, r2 + mov r2, #0 + bl FUN_02019064 + ldr r1, _0222F7A8 ; =0x00000E98 + ldr r0, [sp, #0x14] + add r0, r0, r1 + mov r1, #0 + bl FUN_02019620 + mov r0, #0xf + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x5e + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, _0222F7AC ; =0x00000ED8 + ldr r1, [sp, #0x14] + ldr r0, [r0, #4] + add r1, r1, r2 + mov r2, #0 + mov r3, #0x15 + bl FUN_02019064 + ldr r1, _0222F7B0 ; =0x00000F08 + ldr r0, [sp, #0x14] + ldr r4, _0222F7B4 ; =0x02236FE4 + mov r6, #0x86 + mov r7, #0 + add r5, r0, r1 +_0222F754: + ldr r0, [r4, #4] + add r1, r5, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4, #8] + mov r2, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r3, [r4] + ldr r0, [r0, #4] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + add r7, r7, #1 + mul r0, r1 + add r6, r6, r0 + add r4, #0x10 + add r5, #0x10 + cmp r7, #0xa + blt _0222F754 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F7A8: .word 0x00000E98 +_0222F7AC: .word 0x00000ED8 +_0222F7B0: .word 0x00000F08 +_0222F7B4: .word 0x02236FE4 + thumb_func_end MOD80_0222F6EC + + thumb_func_start MOD80_0222F7B8 +MOD80_0222F7B8: ; 0x0222F7B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0222F7E4 ; =0x00000E98 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _0222F7E8 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _0222F7EC ; =0x00000F08 + mov r4, #0 + add r5, r5, r0 +_0222F7D2: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0xa + blt _0222F7D2 + pop {r3, r4, r5, pc} + nop +_0222F7E4: .word 0x00000E98 +_0222F7E8: .word 0x00000ED8 +_0222F7EC: .word 0x00000F08 + thumb_func_end MOD80_0222F7B8 + + thumb_func_start MOD80_0222F7F0 +MOD80_0222F7F0: ; 0x0222F7F0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _0222F82C ; =0x00000B4C + str r0, [r5, r1] + sub r1, #0x18 + ldr r0, [r5, r1] + mov r1, #0x27 + bl FUN_0200A914 + mov r1, #0xb5 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r4, #0 + mov r7, #0x14 + add r6, r1, #4 +_0222F816: + add r0, r7, #0 + mov r1, #0x3e + bl FUN_020219F4 + str r0, [r5, r6] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xa + blt _0222F816 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F82C: .word 0x00000B4C + thumb_func_end MOD80_0222F7F0 + + thumb_func_start MOD80_0222F830 +MOD80_0222F830: ; 0x0222F830 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r6, _0222F85C ; =0x00000B54 + mov r4, #0 + add r5, r7, #0 +_0222F83A: + ldr r0, [r5, r6] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xa + blt _0222F83A + ldr r0, _0222F860 ; =0x00000B4C + ldr r0, [r7, r0] + bl FUN_02021A20 + mov r0, #0xb5 + lsl r0, r0, #4 + ldr r0, [r7, r0] + bl FUN_02021A20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F85C: .word 0x00000B54 +_0222F860: .word 0x00000B4C + thumb_func_end MOD80_0222F830 + + thumb_func_start MOD80_0222F864 +MOD80_0222F864: ; 0x0222F864 + mov r1, #1 + str r1, [r0, #0x2c] + mov r0, #3 + bx lr + thumb_func_end MOD80_0222F864 + + thumb_func_start MOD80_0222F86C +MOD80_0222F86C: ; 0x0222F86C + push {r4, lr} + sub sp, #8 + ldr r1, _0222F8C0 ; =0x021C48B8 + mov r2, #1 + ldr r3, [r1, #0x48] + add r4, r0, #0 + add r1, r3, #0 + tst r1, r2 + beq _0222F8A2 + ldr r1, _0222F8C4 ; =0x00000F0F + mov r3, #0 + str r1, [sp] + add r1, r4, #0 + add r1, #0xd4 + str r1, [sp, #4] + mov r1, #5 + bl MOD80_0222FB3C + add r0, r4, #0 + mov r1, #3 + mov r2, #7 + bl MOD80_0222E6DC + ldr r0, _0222F8C8 ; =0x000005DC + bl FUN_020054C8 + b _0222F8B8 +_0222F8A2: + mov r1, #2 + tst r3, r1 + beq _0222F8B8 + str r1, [r4, #0x2c] + add r1, r2, #0 + mov r2, #0 + bl MOD80_0222E7A8 + ldr r0, _0222F8C8 ; =0x000005DC + bl FUN_020054C8 +_0222F8B8: + mov r0, #3 + add sp, #8 + pop {r4, pc} + nop +_0222F8C0: .word 0x021C48B8 +_0222F8C4: .word 0x00000F0F +_0222F8C8: .word 0x000005DC + thumb_func_end MOD80_0222F86C + + thumb_func_start MOD80_0222F8CC +MOD80_0222F8CC: ; 0x0222F8CC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #6 + mov r1, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD80_0222F8CC + + thumb_func_start MOD80_0222F8F4 +MOD80_0222F8F4: ; 0x0222F8F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _0222F910 ; =0x0000014E + mov r1, #0xf + bl MOD80_0222E6A8 + ldr r1, _0222F914 ; =0x00000FCC + str r0, [r4, r1] + mov r0, #6 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + nop +_0222F910: .word 0x0000014E +_0222F914: .word 0x00000FCC + thumb_func_end MOD80_0222F8F4 + + thumb_func_start MOD80_0222F918 +MOD80_0222F918: ; 0x0222F918 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F960 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F95C + sub r1, r1, #1 + cmp r0, r1 + bne _0222F942 + ldr r0, _0222F964 ; =0x00000E98 + mov r1, #0 + add r0, r4, r0 + str r1, [r4, #0x2c] + bl FUN_0200D0E0 + b _0222F956 +_0222F942: + mov r0, #2 + str r0, [r4, #0x2c] + ldr r0, _0222F968 ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #7 + mov r2, #8 + bl MOD80_0222E7A8 +_0222F956: + add r0, r4, #0 + bl MOD80_0222FE18 +_0222F95C: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F960: .word 0x00000FCC +_0222F964: .word 0x00000E98 +_0222F968: .word 0x0000100C + thumb_func_end MOD80_0222F918 + + thumb_func_start MOD80_0222F96C +MOD80_0222F96C: ; 0x0222F96C + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + add r2, sp, #8 + strb r0, [r2, #8] + mov r0, #1 + strb r0, [r2, #9] + mov r0, #2 + strb r0, [r2, #0xa] + ldrb r3, [r2, #0xb] + mov r1, #0xf + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0x30 + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0xc0 + bic r3, r1 + mov r1, #0x3e + strb r3, [r2, #0xb] + bl FUN_02012838 + ldr r1, _0222F9FC ; =0x00000FC8 + mov r2, #0x36 + str r0, [r4, r1] + ldr r0, [r4, r1] + ldr r1, _0222FA00 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl FUN_02012880 + ldr r0, _0222F9FC ; =0x00000FC8 + ldr r1, _0222FA00 ; =0x00000B34 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x37 + mov r3, #2 + bl FUN_02012880 + ldr r0, _0222F9FC ; =0x00000FC8 + mov r2, #0x1f + ldr r1, [r4, r0] + sub r0, #0xf0 + str r1, [sp, #8] + add r0, r4, r0 + mov r1, #0 + mov r3, #0xb + str r0, [sp, #0xc] + bl FUN_0200CCA4 + mov r0, #0x3e + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #8 + mov r1, #9 + add r3, r2, #0 + bl FUN_02001C14 + mov r1, #0xfd + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #8 + str r0, [r4, #0x2c] + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + nop +_0222F9FC: .word 0x00000FC8 +_0222FA00: .word 0x00000B34 + thumb_func_end MOD80_0222F96C + + thumb_func_start MOD80_0222FA04 +MOD80_0222FA04: ; 0x0222FA04 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02001C78 + cmp r0, #1 + beq _0222FA26 + cmp r0, #2 + beq _0222FAA4 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0222FAA4 + b _0222FAD6 +_0222FA26: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0222FADC ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _0222FAE0 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + add r4, r5, #0 + add r4, #0xd4 + add r0, r4, #0 + bl MOD80_022331F8 + cmp r0, #0 + beq _0222FA80 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_0206B9AC + cmp r0, #6 + bne _0222FA80 + ldr r0, _0222FAE4 ; =0x00000F0F + mov r1, #0x24 + str r0, [sp] + add r0, r5, #0 + mov r2, #1 + mov r3, #0 + str r4, [sp, #4] + bl MOD80_0222FB3C + add r0, r5, #0 + mov r1, #3 + mov r2, #1 + bl MOD80_0222E6DC + add sp, #8 + mov r0, #3 + pop {r3, r4, r5, pc} +_0222FA80: + ldr r0, _0222FAE4 ; =0x00000F0F + mov r1, #6 + str r0, [sp] + add r0, r5, #0 + mov r2, #1 + mov r3, #0 + str r4, [sp, #4] + bl MOD80_0222FB3C + add r0, r5, #0 + mov r1, #3 + mov r2, #5 + bl MOD80_0222E6DC + add r0, r5, #0 + bl MOD80_0222FE18 + b _0222FAD6 +_0222FAA4: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0222FADC ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _0222FAE0 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + mov r0, #2 + str r0, [r5, #0x2c] + add r0, r5, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + add r0, r5, #0 + bl MOD80_0222FE18 +_0222FAD6: + mov r0, #3 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222FADC: .word 0x00000FC8 +_0222FAE0: .word 0x00000ED8 +_0222FAE4: .word 0x00000F0F + thumb_func_end MOD80_0222FA04 + + thumb_func_start MOD80_0222FAE8 +MOD80_0222FAE8: ; 0x0222FAE8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222FB02 + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_0222FB02: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_0222FAE8 + + thumb_func_start MOD80_0222FB08 +MOD80_0222FB08: ; 0x0222FB08 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222FB34 + ldr r0, _0222FB38 ; =0x00000FDC + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0x2d + ble _0222FB34 + mov r1, #0 + str r1, [r4, r0] + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_0222FB34: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222FB38: .word 0x00000FDC + thumb_func_end MOD80_0222FB08 + + thumb_func_start MOD80_0222FB3C +MOD80_0222FB3C: ; 0x0222FB3C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [sp, #0x24] + add r6, r1, #0 + add r4, r2, #0 + bl FUN_020690E4 + add r2, r0, #0 + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200AC60 + ldr r0, _0222FBB4 ; =0x00000B34 + add r1, r6, #0 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0xb3 + add r6, r0, #0 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0x1c + ldr r1, [r5, r1] + add r2, r6, #0 + bl FUN_0200B7B8 + ldr r0, _0222FBB8 ; =0x00000E98 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _0222FBB8 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, _0222FBB8 ; =0x00000E98 + ldr r2, _0222FBBC ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222FBB4: .word 0x00000B34 +_0222FBB8: .word 0x00000E98 +_0222FBBC: .word 0x00000B4C + thumb_func_end MOD80_0222FB3C + + thumb_func_start MOD80_0222FBC0 +MOD80_0222FBC0: ; 0x0222FBC0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + str r1, [sp, #8] + mov r0, #0x16 + mov r1, #0x3e + add r7, r2, #0 + add r6, r3, #0 + ldr r4, [sp, #0x4c] + bl FUN_020219F4 + str r0, [sp, #0x1c] + mov r0, #0x12 + mov r1, #0x3e + bl FUN_020219F4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x1c] + mov r1, #0x76 + bl FUN_020672BC + mov r2, #0 + ldrsh r0, [r4, r2] + mov r1, #6 + str r0, [sp, #0x10] + mov r0, #2 + ldrsb r0, [r4, r0] + str r0, [sp, #0x14] + mov r0, #3 + ldrsb r4, [r4, r0] + ldr r0, [sp, #0x48] + bl FUN_020672BC + str r0, [sp, #0x30] + add r0, r5, #0 + mov r1, #0x46 + bl FUN_0200A914 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + ldr r2, _0222FD1C ; =0x022373C0 + lsl r0, r0, #2 + str r0, [sp, #0xc] + ldr r1, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r2, r1] + bl FUN_0200A914 + str r0, [sp, #0x28] + mov r0, #0 + str r0, [sp] + mov r0, #1 + mov r1, #3 + str r0, [sp, #4] + add r0, r7, #0 + add r2, r4, #0 + add r3, r1, #0 + bl FUN_0200AD38 + add r0, r7, #0 + add r1, r5, #0 + mov r2, #0x66 + mov r3, #0x3e + bl FUN_0200A9C4 + str r0, [sp, #0x24] + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + bl FUN_0200A914 + ldr r1, [sp, #0x30] + str r0, [sp, #0x2c] + lsl r1, r1, #0x10 + ldr r0, [sp, #0x18] + lsr r1, r1, #0x10 + mov r2, #0x3e + bl FUN_0206E768 + mov r4, #0 + add r5, r6, #0 + add r7, r4, #0 +_0222FC64: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02019620 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #5 + blt _0222FC64 + mov r2, #0 + ldr r0, _0222FD20 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x1c] + add r0, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + ldr r0, [sp, #0x14] + cmp r0, #3 + beq _0222FCA2 + mov r3, #0 + ldr r1, _0222FD24 ; =0x02237A34 + ldr r0, [sp, #0xc] + str r3, [sp] + ldr r0, [r1, r0] + ldr r1, [sp, #0x28] + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #0x46 + bl MOD80_02236D50 +_0222FCA2: + mov r2, #0 + ldr r0, _0222FD20 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r6, #0 + ldr r1, [sp, #0x2c] + add r0, #0x10 + add r3, r2, #0 + bl MOD80_02236D50 + mov r0, #2 + str r0, [sp] + ldr r0, _0222FD20 ; =0x000F0200 + mov r2, #0 + str r0, [sp, #4] + add r0, r6, #0 + ldr r1, [sp, #0x24] + add r0, #0x20 + add r3, r2, #0 + bl MOD80_02236D50 + mov r2, #0 + ldr r0, _0222FD20 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r6, #0 + ldr r1, [sp, #0x20] + add r0, #0x30 + add r3, r2, #0 + bl MOD80_02236D50 + mov r2, #0 + ldr r0, _0222FD20 ; =0x000F0200 + str r2, [sp] + add r6, #0x40 + str r0, [sp, #4] + ldr r1, [sp, #0x18] + add r0, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x24] + bl FUN_02021A20 + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222FD1C: .word 0x022373C0 +_0222FD20: .word 0x000F0200 +_0222FD24: .word 0x02237A34 + thumb_func_end MOD80_0222FBC0 + + thumb_func_start MOD80_0222FD28 +MOD80_0222FD28: ; 0x0222FD28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + add r5, r1, #0 + mov r0, #0x10 + mov r1, #0x3e + add r7, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0x30 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02021E28 + mov r2, #0 + ldr r0, _0222FD84 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + mov r2, #0 + ldr r0, _0222FD84 ; =0x000F0200 + str r2, [sp] + add r5, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD80_02236D50 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222FD84: .word 0x000F0200 + thumb_func_end MOD80_0222FD28 + + thumb_func_start MOD80_0222FD88 +MOD80_0222FD88: ; 0x0222FD88 + push {r4, r5, r6, lr} + sub sp, #0x30 + mov r1, #0x32 + add r5, r0, #0 + mov r0, #0x3e + lsl r1, r1, #6 + bl FUN_02016998 + add r4, r0, #0 + add r0, sp, #0x20 + add r1, r5, #0 + mov r2, #2 + bl FUN_02068B68 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl FUN_020671BC + add r6, r0, #0 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r3, #0 + str r3, [sp] + mov r1, #0xa + str r1, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r6, [sp, #0x10] + str r3, [sp, #0x14] + mov r1, #2 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + add r1, sp, #0x20 + ldrh r0, [r1] + ldrh r1, [r1, #2] + mov r2, #0x3e + bl FUN_020124B4 + mov r1, #0x32 + add r0, r4, #0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r1, #0x4a + mov r2, #0x32 + add r0, r4, #0 + lsl r1, r1, #8 + lsl r2, r2, #6 + bl GX_LoadOBJ + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3e + mov r3, #0x1a + str r0, [sp, #4] + add r1, sp, #0x20 + ldrh r0, [r1] + ldrh r1, [r1, #4] + mov r2, #1 + lsl r3, r3, #4 + bl FUN_02006930 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x30 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD80_0222FD88 + + thumb_func_start MOD80_0222FE18 +MOD80_0222FE18: ; 0x0222FE18 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _0222FE54 ; =0x000001C7 + add r4, r0, #0 + ldrsb r0, [r4, r1] + add r1, r1, #1 + ldrsb r1, [r4, r1] + bl MOD80_02234668 + mov r1, #0x71 + lsl r1, r1, #2 + ldrsh r2, [r4, r1] + add r1, r1, #2 + ldr r3, _0222FE58 ; =0x00000F78 + str r2, [sp] + ldrsb r1, [r4, r1] + ldr r2, _0222FE5C ; =0x00000B34 + add r3, r4, r3 + str r1, [sp, #4] + str r0, [sp, #8] + add r1, r2, #4 + ldr r0, [r4, r2] + sub r2, r2, #4 + ldr r1, [r4, r1] + ldr r2, [r4, r2] + bl MOD80_02234048 + add sp, #0xc + pop {r3, r4, pc} + nop +_0222FE54: .word 0x000001C7 +_0222FE58: .word 0x00000F78 +_0222FE5C: .word 0x00000B34 + thumb_func_end MOD80_0222FE18 + + thumb_func_start MOD80_0222FE60 +MOD80_0222FE60: ; 0x0222FE60 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_0223022C + ldr r0, [r4, #4] + bl MOD80_0222FF6C + add r0, r4, #0 + bl MOD80_02230054 + add r0, r4, #0 + bl MOD80_02230128 + add r0, r4, #0 + bl MOD80_022300CC + add r0, r4, #0 + add r0, #0xc4 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + add r5, r1, #0 + mul r5, r0 + add r0, #0xd4 + add r0, r4, r0 + add r0, r0, r5 + bl FUN_020690E4 + str r0, [sp] + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + ldr r2, _0222FF24 ; =0x00000B34 + add r0, r0, r5 + str r0, [sp, #4] + add r1, r2, #4 + ldr r0, [r4, r2] + sub r2, r2, #4 + ldr r3, _0222FF28 ; =0x00000F08 + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r3, r4, r3 + bl MOD80_0222FBC0 + add r3, r4, #0 + add r3, #0xc4 + ldr r0, _0222FF24 ; =0x00000B34 + mov r2, #0xc1 + ldr r5, [r3] + mov r3, #0x49 + ldr r1, _0222FF2C ; =0x00000F58 + lsl r2, r2, #2 + lsl r3, r3, #2 + ldr r0, [r4, r0] + add r2, r4, r2 + mul r3, r5 + add r1, r4, r1 + add r2, r2, r3 + bl MOD80_0222FD28 + add r0, r4, #0 + mov r1, #0x7e + add r0, #0xc4 + lsl r1, r1, #2 + add r2, r4, r1 + ldr r0, [r0] + sub r1, #0xd4 + mul r1, r0 + add r0, r2, r1 + bl MOD80_0222FD88 + ldr r0, _0222FF24 ; =0x00000B34 + ldr r1, _0222FF30 ; =0x00000F78 + ldr r0, [r4, r0] + add r1, r4, r1 + bl MOD80_02230550 + add r0, r4, #0 + bl MOD80_0223043C + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #2 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222FF24: .word 0x00000B34 +_0222FF28: .word 0x00000F08 +_0222FF2C: .word 0x00000F58 +_0222FF30: .word 0x00000F78 + thumb_func_end MOD80_0222FE60 + + thumb_func_start MOD80_0222FF34 +MOD80_0222FF34: ; 0x0222FF34 + push {r3, lr} + ldr r1, [r0, #0x2c] + lsl r2, r1, #2 + ldr r1, _0222FF44 ; =0x02237A64 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_0222FF44: .word 0x02237A64 + thumb_func_end MOD80_0222FF34 + + thumb_func_start MOD80_0222FF48 +MOD80_0222FF48: ; 0x0222FF48 + push {r4, lr} + add r4, r0, #0 + bl MOD80_02230118 + add r0, r4, #0 + bl MOD80_022302C4 + add r0, r4, #0 + bl MOD80_022301F4 + ldr r0, [r4, #4] + bl MOD80_02230030 + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD80_0222FF48 + + thumb_func_start MOD80_0222FF6C +MOD80_0222FF6C: ; 0x0222FF6C + push {r3, r4, r5, lr} + sub sp, #0x70 + ldr r5, _02230020 ; =0x022370D8 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x54 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _02230024 ; =0x022370BC + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _02230028 ; =0x022370A0 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _0223002C ; =0x02237084 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + add sp, #0x70 + pop {r3, r4, r5, pc} + nop +_02230020: .word 0x022370D8 +_02230024: .word 0x022370BC +_02230028: .word 0x022370A0 +_0223002C: .word 0x02237084 + thumb_func_end MOD80_0222FF6C + + thumb_func_start MOD80_02230030 +MOD80_02230030: ; 0x02230030 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_02230030 + + thumb_func_start MOD80_02230054 +MOD80_02230054: ; 0x02230054 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #0x1a + add r5, r0, #0 + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + ldr r4, [r5, #4] + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x11 + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0x60 + str r0, [sp] + mov r0, #0x3e + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #7 + add r3, r2, #0 + bl FUN_02006930 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD80_02230054 + + thumb_func_start MOD80_022300CC +MOD80_022300CC: ; 0x022300CC + push {r4, lr} + sub sp, #0x30 + mov r2, #0xcf + add r4, r0, #0 + lsl r2, r2, #4 + add r0, sp, #0 + add r1, r4, #0 + add r2, r4, r2 + mov r3, #1 + bl MOD80_0222E5E8 + mov r0, #0x32 + lsl r0, r0, #0xe + str r0, [sp, #8] + mov r0, #0x3a + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _02230114 ; =0x00000E6C + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, _02230114 ; =0x00000E6C + mov r1, #0x25 + ldr r0, [r4, r0] + bl FUN_02020130 + bl FUN_02033E74 + add sp, #0x30 + pop {r4, pc} + nop +_02230114: .word 0x00000E6C + thumb_func_end MOD80_022300CC + + thumb_func_start MOD80_02230118 +MOD80_02230118: ; 0x02230118 + ldr r1, _02230120 ; =0x00000E6C + ldr r3, _02230124 ; =FUN_0201FFC8 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_02230120: .word 0x00000E6C +_02230124: .word FUN_0201FFC8 + thumb_func_end MOD80_02230118 + + thumb_func_start MOD80_02230128 +MOD80_02230128: ; 0x02230128 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp, #0x14] + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, _022301E4 ; =0x00000E98 + ldr r1, [sp, #0x14] + ldr r0, [r0, #4] + add r1, r1, r2 + mov r2, #0 + bl FUN_02019064 + ldr r1, _022301E4 ; =0x00000E98 + ldr r0, [sp, #0x14] + add r0, r0, r1 + mov r1, #0 + bl FUN_02019620 + mov r0, #0xf + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x5e + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, _022301E8 ; =0x00000ED8 + ldr r1, [sp, #0x14] + ldr r0, [r0, #4] + add r1, r1, r2 + mov r2, #0 + mov r3, #0x15 + bl FUN_02019064 + ldr r1, _022301EC ; =0x00000F08 + ldr r0, [sp, #0x14] + ldr r4, _022301F0 ; =0x022370F4 + mov r6, #0x86 + mov r7, #0 + add r5, r0, r1 +_02230190: + ldr r0, [r4, #4] + add r1, r5, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4, #8] + mov r2, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r3, [r4] + ldr r0, [r0, #4] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + add r7, r7, #1 + mul r0, r1 + add r6, r6, r0 + add r4, #0x10 + add r5, #0x10 + cmp r7, #0xa + blo _02230190 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022301E4: .word 0x00000E98 +_022301E8: .word 0x00000ED8 +_022301EC: .word 0x00000F08 +_022301F0: .word 0x022370F4 + thumb_func_end MOD80_02230128 + + thumb_func_start MOD80_022301F4 +MOD80_022301F4: ; 0x022301F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02230220 ; =0x00000E98 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02230224 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02230228 ; =0x00000F08 + mov r4, #0 + add r5, r5, r0 +_0223020E: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0xa + blo _0223020E + pop {r3, r4, r5, pc} + nop +_02230220: .word 0x00000E98 +_02230224: .word 0x00000ED8 +_02230228: .word 0x00000F08 + thumb_func_end MOD80_022301F4 + + thumb_func_start MOD80_0223022C +MOD80_0223022C: ; 0x0223022C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0x7e + add r0, #0xc4 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r0, [r0] + sub r1, #0xd4 + mul r1, r0 + add r4, r2, r1 + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _022302B0 ; =0x00000B4C + str r0, [r5, r1] + sub r1, #0x1c + ldr r0, [r5, r1] + bl FUN_0200B84C + ldr r0, _022302B4 ; =0x0000011E + ldrb r2, [r4, r0] + cmp r2, #0 + beq _02230268 + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #8 + bl FUN_0200B4A0 +_02230268: + ldr r2, _022302B8 ; =0x0000011F + ldrb r3, [r4, r2] + cmp r3, #0 + beq _02230280 + mov r0, #0xb3 + sub r2, r2, #1 + lsl r0, r0, #4 + ldrb r2, [r4, r2] + ldr r0, [r5, r0] + mov r1, #9 + bl FUN_0200B4D8 +_02230280: + mov r1, #0xb3 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x4f + mov r3, #0x3e + bl FUN_0200A9C4 + ldr r1, _022302BC ; =0x00000B54 + mov r2, #0x50 + str r0, [r5, r1] + add r0, r1, #0 + sub r0, #0x24 + sub r1, #0x20 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + mov r3, #0x3e + bl FUN_0200A9C4 + ldr r1, _022302C0 ; =0x00000B58 + str r0, [r5, r1] + pop {r3, r4, r5, pc} + nop +_022302B0: .word 0x00000B4C +_022302B4: .word 0x0000011E +_022302B8: .word 0x0000011F +_022302BC: .word 0x00000B54 +_022302C0: .word 0x00000B58 + thumb_func_end MOD80_0223022C + + thumb_func_start MOD80_022302C4 +MOD80_022302C4: ; 0x022302C4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022302E4 ; =0x00000B54 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _022302E8 ; =0x00000B58 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _022302EC ; =0x00000B4C + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + nop +_022302E4: .word 0x00000B54 +_022302E8: .word 0x00000B58 +_022302EC: .word 0x00000B4C + thumb_func_end MOD80_022302C4 + + thumb_func_start MOD80_022302F0 +MOD80_022302F0: ; 0x022302F0 + mov r1, #1 + str r1, [r0, #0x2c] + mov r0, #3 + bx lr + thumb_func_end MOD80_022302F0 + + thumb_func_start MOD80_022302F8 +MOD80_022302F8: ; 0x022302F8 + push {r3, r4, r5, lr} + ldr r1, _02230388 ; =0x021C48B8 + mov r2, #1 + ldr r1, [r1, #0x48] + add r4, r0, #0 + add r3, r1, #0 + tst r3, r2 + beq _02230326 + ldr r1, _0223038C ; =0x00000F0F + mov r3, #0 + str r1, [sp] + mov r1, #0x10 + bl MOD80_022304F8 + add r0, r4, #0 + mov r1, #3 + mov r2, #4 + bl MOD80_0222E6DC + ldr r0, _02230390 ; =0x000005DC + bl FUN_020054C8 + b _02230384 +_02230326: + mov r3, #2 + add r5, r1, #0 + tst r5, r3 + beq _02230340 + mov r1, #4 + mov r2, #0 + str r3, [r4, #0x2c] + bl MOD80_0222E7A8 + ldr r0, _02230390 ; =0x000005DC + bl FUN_020054C8 + b _02230384 +_02230340: + mov r0, #0x10 + tst r0, r1 + beq _02230362 + add r0, r4, #0 + add r0, #0xb6 + ldrh r0, [r0] + cmp r0, #0 + bne _02230384 + add r0, r4, #0 + add r0, #0xb6 + strh r2, [r0] + mov r0, #6 + str r0, [r4, #0x2c] + ldr r0, _02230390 ; =0x000005DC + bl FUN_020054C8 + b _02230384 +_02230362: + mov r0, #0x20 + tst r0, r1 + beq _02230384 + add r0, r4, #0 + add r0, #0xb6 + ldrh r0, [r0] + cmp r0, #0 + beq _02230384 + add r0, r4, #0 + mov r1, #0 + add r0, #0xb6 + strh r1, [r0] + mov r0, #6 + str r0, [r4, #0x2c] + ldr r0, _02230390 ; =0x000005DC + bl FUN_020054C8 +_02230384: + mov r0, #3 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230388: .word 0x021C48B8 +_0223038C: .word 0x00000F0F +_02230390: .word 0x000005DC + thumb_func_end MOD80_022302F8 + + thumb_func_start MOD80_02230394 +MOD80_02230394: ; 0x02230394 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _022303D0 ; =0x00000B34 + ldr r1, _022303D4 ; =0x00000F78 + ldr r0, [r4, r0] + add r1, r4, r1 + bl MOD80_02230550 + add r0, r4, #0 + bl MOD80_0223043C + mov r1, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + nop +_022303D0: .word 0x00000B34 +_022303D4: .word 0x00000F78 + thumb_func_end MOD80_02230394 + + thumb_func_start MOD80_022303D8 +MOD80_022303D8: ; 0x022303D8 + push {r4, lr} + add r4, r0, #0 + mov r2, #0x73 + ldr r0, [r4, #4] + mov r1, #0xf + lsl r2, r2, #2 + bl MOD80_0222E6A8 + ldr r1, _022303F4 ; =0x00000FCC + str r0, [r4, r1] + mov r0, #5 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_022303F4: .word 0x00000FCC + thumb_func_end MOD80_022303D8 + + thumb_func_start MOD80_022303F8 +MOD80_022303F8: ; 0x022303F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02230438 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02230432 + sub r1, r1, #1 + cmp r0, r1 + bne _02230424 + mov r0, #2 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD80_0222E7A8 + b _02230432 +_02230424: + mov r0, #2 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #5 + mov r2, #6 + bl MOD80_0222E7A8 +_02230432: + mov r0, #3 + pop {r4, pc} + nop +_02230438: .word 0x00000FCC + thumb_func_end MOD80_022303F8 + + thumb_func_start MOD80_0223043C +MOD80_0223043C: ; 0x0223043C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + add r0, #0xb6 + ldrh r0, [r0] + cmp r0, #0 + bne _0223048C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x68 + mov r1, #0x1b + bl FUN_020068C8 + ldr r2, _022304BC ; =0x00000B34 + ldr r0, _022304C0 ; =0x00000F98 + mov r3, #0xba + ldr r1, [r4, r2] + add r2, r2, #4 + lsl r3, r3, #2 + add r0, r4, r0 + ldr r2, [r4, r2] + add r3, r4, r3 + add r4, #0xc4 + ldr r5, [r4] + mov r4, #0x49 + lsl r4, r4, #2 + mul r4, r5 + add r3, r3, r4 + bl MOD80_022305A8 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0223048C: + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x68 + mov r1, #0x1c + bl FUN_020068C8 + ldr r2, _022304C4 ; =0x00000B54 + ldr r0, _022304C0 ; =0x00000F98 + ldr r1, [r4, r2] + add r2, r2, #4 + ldr r2, [r4, r2] + add r0, r4, r0 + bl MOD80_02230614 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022304BC: .word 0x00000B34 +_022304C0: .word 0x00000F98 +_022304C4: .word 0x00000B54 + thumb_func_end MOD80_0223043C + + thumb_func_start MOD80_022304C8 +MOD80_022304C8: ; 0x022304C8 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0223043C + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_022304C8 + + thumb_func_start MOD80_022304D8 +MOD80_022304D8: ; 0x022304D8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _022304F2 + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_022304F2: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_022304D8 + + thumb_func_start MOD80_022304F8 +MOD80_022304F8: ; 0x022304F8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r2, _02230544 ; =0x00000B34 + add r5, r0, #0 + ldr r0, [r5, r2] + add r2, #0x18 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r0, _02230548 ; =0x00000E98 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _02230548 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, _02230548 ; =0x00000E98 + ldr r2, _0223054C ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02230544: .word 0x00000B34 +_02230548: .word 0x00000E98 +_0223054C: .word 0x00000B4C + thumb_func_end MOD80_022304F8 + + thumb_func_start MOD80_02230550 +MOD80_02230550: ; 0x02230550 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + mov r1, #0x4a + bl FUN_0200A914 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0x4e + bl FUN_0200A914 + add r6, r0, #0 + mov r2, #0 + ldr r0, _022305A4 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #2 + bl MOD80_02236D50 + mov r0, #1 + str r0, [sp] + ldr r0, _022305A4 ; =0x000F0200 + add r5, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + mov r3, #2 + bl MOD80_02236D50 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_022305A4: .word 0x000F0200 + thumb_func_end MOD80_02230550 + + thumb_func_start MOD80_022305A8 +MOD80_022305A8: ; 0x022305A8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + mov r1, #0 + add r5, r0, #0 + add r7, r2, #0 + add r4, r3, #0 + bl FUN_02019620 + mov r0, #3 + str r0, [sp] + ldr r0, _02230610 ; =0x000F0200 + mov r3, #0 + str r0, [sp, #4] + ldrsh r2, [r4, r3] + add r0, r5, #0 + add r1, r7, #0 + bl MOD80_02233EA4 + mov r0, #3 + str r0, [sp] + mov r0, #0x46 + str r0, [sp, #4] + ldr r0, _02230610 ; =0x000F0200 + mov r2, #2 + str r0, [sp, #8] + ldrsb r2, [r4, r2] + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD80_02233EF4 + mov r0, #3 + mov r1, #4 + ldrsb r0, [r4, r0] + ldrsb r1, [r4, r1] + bl MOD80_02234668 + add r2, r0, #0 + mov r0, #0x13 + str r0, [sp] + ldr r0, _02230610 ; =0x000F0200 + add r1, r6, #0 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r5, #0 + mov r3, #0 + bl MOD80_02233F5C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02230610: .word 0x000F0200 + thumb_func_end MOD80_022305A8 + + thumb_func_start MOD80_02230614 +MOD80_02230614: ; 0x02230614 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + mov r1, #0 + add r6, r0, #0 + add r4, r2, #0 + bl FUN_02019620 + cmp r5, #0 + beq _0223063A + mov r2, #0 + ldr r0, _02230658 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r6, #0 + add r1, r5, #0 + mov r3, #3 + bl MOD80_02236D50 +_0223063A: + cmp r4, #0 + beq _02230652 + mov r0, #0 + str r0, [sp] + ldr r0, _02230658 ; =0x000F0200 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #8 + mov r3, #0x13 + bl MOD80_02236D50 +_02230652: + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02230658: .word 0x000F0200 + thumb_func_end MOD80_02230614 + + thumb_func_start MOD80_0223065C +MOD80_0223065C: ; 0x0223065C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_02230AC0 + ldr r0, [r4, #4] + bl MOD80_02230760 + add r0, r4, #0 + bl MOD80_02230840 + add r0, r4, #0 + bl MOD80_02230944 + add r0, r4, #0 + bl MOD80_022308EC + ldr r1, _02230708 ; =0x00000B34 + ldr r0, _0223070C ; =0x00000F08 + ldr r1, [r4, r1] + add r0, r4, r0 + bl MOD80_022318D4 + mov r0, #0 + str r0, [sp] + ldr r0, _02230710 ; =0x00010200 + ldr r2, _02230714 ; =0x00000B38 + str r0, [sp, #4] + ldr r1, [r4, r2] + sub r2, #0x16 + ldr r0, _02230718 ; =0x00000F18 + ldrsh r2, [r4, r2] + add r0, r4, r0 + mov r3, #2 + bl MOD80_02233EA4 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02230710 ; =0x00010200 + ldr r2, _02230708 ; =0x00000B34 + str r0, [sp, #8] + ldr r1, [r4, r2] + sub r2, #0x10 + ldr r0, _0223071C ; =0x00000F38 + ldrsb r2, [r4, r2] + add r0, r4, r0 + mov r3, #1 + bl MOD80_02233EF4 + ldr r1, _02230720 ; =0x00000B25 + ldrsb r0, [r4, r1] + add r1, r1, #1 + ldrsb r1, [r4, r1] + bl MOD80_02234668 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02230710 ; =0x00010200 + ldr r1, _02230708 ; =0x00000B34 + str r0, [sp, #4] + ldr r0, _02230724 ; =0x00000F58 + ldr r1, [r4, r1] + add r0, r4, r0 + mov r3, #2 + bl MOD80_02233F9C + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + nop +_02230708: .word 0x00000B34 +_0223070C: .word 0x00000F08 +_02230710: .word 0x00010200 +_02230714: .word 0x00000B38 +_02230718: .word 0x00000F18 +_0223071C: .word 0x00000F38 +_02230720: .word 0x00000B25 +_02230724: .word 0x00000F58 + thumb_func_end MOD80_0223065C + + thumb_func_start MOD80_02230728 +MOD80_02230728: ; 0x02230728 + push {r3, lr} + ldr r1, [r0, #0x2c] + lsl r2, r1, #2 + ldr r1, _02230738 ; =0x02237A94 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_02230738: .word 0x02237A94 + thumb_func_end MOD80_02230728 + + thumb_func_start MOD80_0223073C +MOD80_0223073C: ; 0x0223073C + push {r4, lr} + add r4, r0, #0 + bl MOD80_02230934 + add r0, r4, #0 + bl MOD80_02230B2C + add r0, r4, #0 + bl MOD80_02230A88 + ldr r0, [r4, #4] + bl MOD80_02230814 + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD80_0223073C + + thumb_func_start MOD80_02230760 +MOD80_02230760: ; 0x02230760 + push {r4, r5, lr} + sub sp, #0x54 + ldr r5, _02230808 ; =0x022371D0 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x38 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _0223080C ; =0x022371EC + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _02230810 ; =0x022371B4 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + add sp, #0x54 + pop {r4, r5, pc} + nop +_02230808: .word 0x022371D0 +_0223080C: .word 0x022371EC +_02230810: .word 0x022371B4 + thumb_func_end MOD80_02230760 + + thumb_func_start MOD80_02230814 +MOD80_02230814: ; 0x02230814 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_02230814 + + thumb_func_start MOD80_02230840 +MOD80_02230840: ; 0x02230840 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x60 + str r0, [sp] + mov r0, #0x3e + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #5 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0xd + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x1a + add r2, r4, #0 + bl FUN_020068C8 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD80_02230840 + + thumb_func_start MOD80_022308EC +MOD80_022308EC: ; 0x022308EC + push {r4, lr} + sub sp, #0x30 + mov r2, #0xcf + add r4, r0, #0 + lsl r2, r2, #4 + add r0, sp, #0 + add r1, r4, #0 + add r2, r4, r2 + mov r3, #1 + bl MOD80_0222E5E8 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _02230930 ; =0x00000D5C + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, _02230930 ; =0x00000D5C + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_02020130 + bl FUN_02033E74 + add sp, #0x30 + pop {r4, pc} + nop +_02230930: .word 0x00000D5C + thumb_func_end MOD80_022308EC + + thumb_func_start MOD80_02230934 +MOD80_02230934: ; 0x02230934 + ldr r1, _0223093C ; =0x00000D5C + ldr r3, _02230940 ; =FUN_0201FFC8 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_0223093C: .word 0x00000D5C +_02230940: .word FUN_0201FFC8 + thumb_func_end MOD80_02230934 + + thumb_func_start MOD80_02230944 +MOD80_02230944: ; 0x02230944 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + mov r3, #1 + str r0, [sp, #0x14] + str r3, [sp] + mov r0, #0x1c + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, _02230A6C ; =0x00000EB8 + ldr r1, [sp, #0x14] + ldr r0, [r0, #4] + add r1, r1, r2 + mov r2, #0 + bl FUN_02019064 + ldr r1, _02230A6C ; =0x00000EB8 + ldr r0, [sp, #0x14] + add r0, r0, r1 + mov r1, #0 + bl FUN_02019620 + mov r2, #0 + mov r3, #0xb5 + ldr r0, _02230A70 ; =0x000F0D00 + str r2, [sp] + str r0, [sp, #4] + ldr r1, _02230A6C ; =0x00000EB8 + ldr r0, [sp, #0x14] + lsl r3, r3, #4 + add r0, r0, r1 + ldr r1, [sp, #0x14] + ldr r1, [r1, r3] + mov r3, #1 + bl MOD80_02236D1C + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x60 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, _02230A74 ; =0x00000E98 + ldr r1, [sp, #0x14] + ldr r0, [r0, #4] + add r1, r1, r2 + mov r2, #0 + bl FUN_02019064 + ldr r1, _02230A74 ; =0x00000E98 + ldr r0, [sp, #0x14] + add r0, r0, r1 + mov r1, #0 + bl FUN_02019620 + ldr r1, _02230A78 ; =0x00000F08 + ldr r0, [sp, #0x14] + ldr r4, _02230A7C ; =0x0223719C + mov r7, #0 + mov r6, #0x96 + add r5, r0, r1 +_022309D2: + ldrh r0, [r4, #2] + add r1, r5, #0 + mov r2, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldrh r3, [r4] + ldr r0, [sp, #0x14] + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r7, r7, #1 + add r6, #0x16 + add r4, r4, #4 + add r5, #0x10 + cmp r7, #6 + blt _022309D2 + ldr r1, _02230A78 ; =0x00000F08 + ldr r0, [sp, #0x14] + ldr r6, _02230A80 ; =0x0000011A + add r0, r0, r1 + ldr r4, _02230A84 ; =0x02237194 + mov r5, #0 + str r0, [sp, #0x18] +_02230A20: + add r0, r5, #6 + lsl r7, r0, #4 + ldrh r0, [r4, #2] + ldr r1, [sp, #0x18] + mov r2, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldrh r3, [r4] + ldr r0, [sp, #0x14] + add r1, r1, r7 + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + lsr r3, r3, #0x18 + bl FUN_02019064 + ldr r0, [sp, #0x18] + mov r1, #0 + add r0, r0, r7 + bl FUN_02019620 + add r5, r5, #1 + add r6, #0x10 + add r4, r4, #4 + cmp r5, #2 + blt _02230A20 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02230A6C: .word 0x00000EB8 +_02230A70: .word 0x000F0D00 +_02230A74: .word 0x00000E98 +_02230A78: .word 0x00000F08 +_02230A7C: .word 0x0223719C +_02230A80: .word 0x0000011A +_02230A84: .word 0x02237194 + thumb_func_end MOD80_02230944 + + thumb_func_start MOD80_02230A88 +MOD80_02230A88: ; 0x02230A88 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02230AB4 ; =0x00000E98 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02230AB8 ; =0x00000EB8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02230ABC ; =0x00000F08 + mov r4, #0 + add r5, r5, r0 +_02230AA2: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #8 + blt _02230AA2 + pop {r3, r4, r5, pc} + nop +_02230AB4: .word 0x00000E98 +_02230AB8: .word 0x00000EB8 +_02230ABC: .word 0x00000F08 + thumb_func_end MOD80_02230A88 + + thumb_func_start MOD80_02230AC0 +MOD80_02230AC0: ; 0x02230AC0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _02230B28 ; =0x00000B4C + str r0, [r4, r1] + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #0x29 + bl FUN_0200A914 + mov r1, #0xb5 + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #0x3e + mov r1, #0x30 + bl FUN_02016998 + mov r1, #0xfe + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r1, [r4, r1] + mov r0, #0 + mov r2, #0x30 + bl MIi_CpuClearFast + mov r2, #0xfe + lsl r2, r2, #4 + ldr r2, [r4, r2] + mov r0, #0x3e + mov r1, #0 + add r2, #0x1c + bl MOD80_02234204 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r0, [r1, #0x18] + mov r0, #0x3e + bl MOD80_02234228 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r2, [r4, r1] + add r1, #0x38 + str r0, [r2, #0x14] + add r0, r4, r1 + bl MOD80_022346D8 + pop {r4, pc} + .align 2, 0 +_02230B28: .word 0x00000B4C + thumb_func_end MOD80_02230AC0 + + thumb_func_start MOD80_02230B2C +MOD80_02230B2C: ; 0x02230B2C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x14] + bl FUN_02016A18 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x18] + bl FUN_02016A18 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _02230B68 ; =0x00000B4C + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0xb5 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + nop +_02230B68: .word 0x00000B4C + thumb_func_end MOD80_02230B2C + + thumb_func_start MOD80_02230B6C +MOD80_02230B6C: ; 0x02230B6C + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02230B90 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #8 + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #1 + bl MOD80_0222E6DC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02230B90: .word 0x00000F0F + thumb_func_end MOD80_02230B6C + + thumb_func_start MOD80_02230B94 +MOD80_02230B94: ; 0x02230B94 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD80_02231008 + ldr r0, _02230CB4 ; =0x021C48B8 + mov r2, #1 + ldr r1, [r0, #0x48] + add r0, r1, #0 + tst r0, r2 + beq _02230C44 + add r0, r4, #0 + bl MOD80_02230FF0 + cmp r0, #4 + bhi _02230CAE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02230BBE: ; jump table + .short _02230BC8 - _02230BBE - 2 ; case 0 + .short _02230BD4 - _02230BBE - 2 ; case 1 + .short _02230C10 - _02230BBE - 2 ; case 2 + .short _02230C1C - _02230BBE - 2 ; case 3 + .short _02230C22 - _02230BBE - 2 ; case 4 +_02230BC8: + mov r0, #3 + str r0, [r4, #0x2c] + ldr r0, _02230CB8 ; =0x000005DC + bl FUN_020054C8 + b _02230CAE +_02230BD4: + ldr r0, _02230CBC ; =0x00000B22 + ldrsh r0, [r4, r0] + cmp r0, #0 + beq _02230C04 + mov r1, #0x12 + bl FUN_02068678 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r2, [r4, r1] + str r0, [r2, #0x20] + ldr r1, [r4, r1] + ldr r0, _02230CBC ; =0x00000B22 + ldr r1, [r1, #0x20] + add r0, r4, r0 + bl MOD80_022338E0 + cmp r0, #0 + beq _02230C04 + ldr r0, _02230CB8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #3 + pop {r3, r4, r5, pc} +_02230C04: + mov r0, #8 + str r0, [r4, #0x2c] + ldr r0, _02230CB8 ; =0x000005DC + bl FUN_020054C8 + b _02230CAE +_02230C10: + mov r0, #0xb + str r0, [r4, #0x2c] + ldr r0, _02230CB8 ; =0x000005DC + bl FUN_020054C8 + b _02230CAE +_02230C1C: + mov r0, #0xe + str r0, [r4, #0x2c] + b _02230CAE +_02230C22: + ldr r0, _02230CC0 ; =0x00000F0F + mov r1, #0xf + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #0x16 + bl MOD80_0222E6DC + ldr r0, _02230CB8 ; =0x000005DC + bl FUN_020054C8 + b _02230CAE +_02230C44: + mov r0, #2 + tst r0, r1 + beq _02230C6A + ldr r0, _02230CC0 ; =0x00000F0F + mov r1, #0xf + str r0, [sp] + add r0, r4, #0 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #0x16 + bl MOD80_0222E6DC + ldr r0, _02230CB8 ; =0x000005DC + bl FUN_020054C8 + b _02230CAE +_02230C6A: + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl MOD80_02235B70 + add r5, r0, #0 + ldr r0, _02230CC4 ; =0x00000FEE + ldrh r0, [r4, r0] + cmp r0, #0 + beq _02230CAE + cmp r5, #0 + blt _02230CAE + add r0, r5, #1 + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0xe7 + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r1, r5, #2 + add r1, #0x10 + bl FUN_02020130 + mov r0, #2 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #3 + mov r2, #0 + bl MOD80_0222E7A8 + add r4, #0xc4 + ldr r0, _02230CB8 ; =0x000005DC + str r5, [r4] + bl FUN_020054C8 +_02230CAE: + mov r0, #3 + pop {r3, r4, r5, pc} + nop +_02230CB4: .word 0x021C48B8 +_02230CB8: .word 0x000005DC +_02230CBC: .word 0x00000B22 +_02230CC0: .word 0x00000F0F +_02230CC4: .word 0x00000FEE + thumb_func_end MOD80_02230B94 + + thumb_func_start MOD80_02230CC8 +MOD80_02230CC8: ; 0x02230CC8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02230D54 ; =0x00000B22 + add r4, r0, #0 + ldrsh r2, [r4, r1] + cmp r2, #0 + bne _02230CF6 + ldr r1, _02230D58 ; =0x00000F0F + mov r2, #1 + str r1, [sp] + mov r1, #0xc + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #1 + bl MOD80_0222E6DC + ldr r0, _02230D5C ; =0x000005F3 + bl FUN_020054C8 + b _02230D4C +_02230CF6: + add r0, r4, r1 + add r1, r1, #6 + add r1, r4, r1 + bl MOD80_022319C0 + cmp r0, #0 + beq _02230D26 + ldr r0, _02230D58 ; =0x00000F0F + mov r1, #0x21 + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #1 + bl MOD80_0222E6DC + ldr r0, _02230D5C ; =0x000005F3 + bl FUN_020054C8 + b _02230D4C +_02230D26: + ldr r0, _02230D60 ; =0x000005FF + bl FUN_020054C8 + ldr r0, _02230D58 ; =0x00000F0F + mov r1, #0xd + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #0xf + bl MOD80_0222E6DC + add r0, r4, #0 + bl MOD80_02235C40 +_02230D4C: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_02230D54: .word 0x00000B22 +_02230D58: .word 0x00000F0F +_02230D5C: .word 0x000005F3 +_02230D60: .word 0x000005FF + thumb_func_end MOD80_02230CC8 + + thumb_func_start MOD80_02230D64 +MOD80_02230D64: ; 0x02230D64 + push {r3, r4, lr} + sub sp, #0x2c + ldr r0, [r0] + ldr r0, [r0] + bl FUN_0202AC08 + lsr r1, r0, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x1c] + lsr r1, r0, #0x10 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x20] + lsr r1, r0, #8 + lsl r1, r1, #0x18 + lsl r0, r0, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + str r1, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0xc + add r1, sp, #0 + bl MOD04_021DE1F8 + add r0, sp, #0xc + bl RTC_ConvertDateToDay + add r4, r0, #0 + add r0, sp, #0x1c + bl RTC_ConvertDateToDay + sub r0, r4, r0 + bmi _02230DB2 + cmp r0, #3 + bge _02230DB2 + add sp, #0x2c + mov r0, #1 + pop {r3, r4, pc} +_02230DB2: + mov r0, #0 + add sp, #0x2c + pop {r3, r4, pc} + thumb_func_end MOD80_02230D64 + + thumb_func_start MOD80_02230DB8 +MOD80_02230DB8: ; 0x02230DB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r5, #0x36] + mov r4, #3 + cmp r0, #0 + beq _02230DC6 + add r4, r4, #2 +_02230DC6: + add r0, r5, #0 + bl MOD80_02230D64 + cmp r0, #0 + beq _02230DD2 + add r4, r4, #2 +_02230DD2: + ldr r0, _02230E0C ; =0x00000B22 + mov r2, #0x7e + lsl r2, r2, #2 + add r0, r5, r0 + add r1, r4, #0 + add r2, r5, r2 + bl MOD80_0222DD90 + ldr r1, _02230E0C ; =0x00000B22 + ldrh r2, [r5, r1] + add r0, r1, #6 + strh r2, [r5, r0] + add r0, r1, #2 + ldrh r2, [r5, r0] + add r0, r1, #0 + add r0, #8 + strh r2, [r5, r0] + add r0, r1, #4 + ldrh r0, [r5, r0] + add r1, #0xa + strh r0, [r5, r1] + mov r0, #0x10 + str r0, [r5, #0x2c] + ldr r0, _02230E10 ; =0x00000FEE + mov r1, #0 + strh r1, [r5, r0] + mov r0, #3 + pop {r3, r4, r5, pc} + nop +_02230E0C: .word 0x00000B22 +_02230E10: .word 0x00000FEE + thumb_func_end MOD80_02230DB8 + + thumb_func_start MOD80_02230E14 +MOD80_02230E14: ; 0x02230E14 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02230E94 + bl MOD80_0222DBB8 + add r5, r0, #0 + add r0, #0xf + cmp r0, #0x16 + bhi _02230E94 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02230E38: ; jump table + .short _02230E90 - _02230E38 - 2 ; case 0 + .short _02230E84 - _02230E38 - 2 ; case 1 + .short _02230E8A - _02230E38 - 2 ; case 2 + .short _02230E90 - _02230E38 - 2 ; case 3 + .short _02230E94 - _02230E38 - 2 ; case 4 + .short _02230E94 - _02230E38 - 2 ; case 5 + .short _02230E94 - _02230E38 - 2 ; case 6 + .short _02230E94 - _02230E38 - 2 ; case 7 + .short _02230E94 - _02230E38 - 2 ; case 8 + .short _02230E94 - _02230E38 - 2 ; case 9 + .short _02230E94 - _02230E38 - 2 ; case 10 + .short _02230E94 - _02230E38 - 2 ; case 11 + .short _02230E94 - _02230E38 - 2 ; case 12 + .short _02230E84 - _02230E38 - 2 ; case 13 + .short _02230E94 - _02230E38 - 2 ; case 14 + .short _02230E66 - _02230E38 - 2 ; case 15 + .short _02230E66 - _02230E38 - 2 ; case 16 + .short _02230E66 - _02230E38 - 2 ; case 17 + .short _02230E66 - _02230E38 - 2 ; case 18 + .short _02230E66 - _02230E38 - 2 ; case 19 + .short _02230E66 - _02230E38 - 2 ; case 20 + .short _02230E66 - _02230E38 - 2 ; case 21 + .short _02230E66 - _02230E38 - 2 ; case 22 +_02230E66: + add r0, r4, #0 + add r0, #0xc0 + str r5, [r0] + ldr r0, _02230E98 ; =0x000005FF + mov r1, #0 + bl FUN_020054F0 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD80_02235B90 + mov r0, #0x11 + str r0, [r4, #0x2c] + b _02230E94 +_02230E84: + mov r0, #0x1a + str r0, [r4, #0x2c] + b _02230E94 +_02230E8A: + bl FUN_020335E0 + b _02230E94 +_02230E90: + mov r0, #0x13 + str r0, [r4, #0x2c] +_02230E94: + mov r0, #3 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230E98: .word 0x000005FF + thumb_func_end MOD80_02230E14 + + thumb_func_start MOD80_02230E9C +MOD80_02230E9C: ; 0x02230E9C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + cmp r1, #0 + ldr r1, _02230EF0 ; =0x00000F0F + bne _02230ECC + str r1, [sp] + mov r1, #0xe + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #1 + bl MOD80_0222E6DC + ldr r0, _02230EF4 ; =0x000005F3 + bl FUN_020054C8 + b _02230EE8 +_02230ECC: + str r1, [sp] + mov r1, #0x1e + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #0x12 + bl MOD80_0222E6DC + ldr r0, _02230EF8 ; =0x00000FDC + mov r1, #0 + str r1, [r4, r0] +_02230EE8: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_02230EF0: .word 0x00000F0F +_02230EF4: .word 0x000005F3 +_02230EF8: .word 0x00000FDC + thumb_func_end MOD80_02230E9C + + thumb_func_start MOD80_02230EFC +MOD80_02230EFC: ; 0x02230EFC + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02230F34 ; =0x00000FDC + add r4, r0, #0 + ldr r2, [r4, r1] + add r2, r2, #1 + str r2, [r4, r1] + ldr r2, [r4, r1] + cmp r2, #0x2d + ble _02230F2E + sub r1, #0xcd + str r1, [sp] + mov r1, #0x20 + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #1 + bl MOD80_0222E6DC + ldr r0, _02230F38 ; =0x00000FEE + mov r1, #1 + strh r1, [r4, r0] +_02230F2E: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02230F34: .word 0x00000FDC +_02230F38: .word 0x00000FEE + thumb_func_end MOD80_02230EFC + + thumb_func_start MOD80_02230F3C +MOD80_02230F3C: ; 0x02230F3C + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02230F6C ; =0x00000B28 + add r4, r0, #0 + mov r3, #0 + strh r3, [r4, r1] + ldr r1, _02230F70 ; =0x00000F0F + mov r2, #1 + str r1, [sp] + mov r1, #0x26 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #1 + bl MOD80_0222E6DC + ldr r0, _02230F74 ; =0x000005F3 + bl FUN_020054C8 + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_02230F6C: .word 0x00000B28 +_02230F70: .word 0x00000F0F +_02230F74: .word 0x000005F3 + thumb_func_end MOD80_02230F3C + + thumb_func_start MOD80_02230F78 +MOD80_02230F78: ; 0x02230F78 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02230FA8 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x8f + mov r2, #4 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x15 + mov r2, #0x1b + bl MOD80_0222E6DC + ldr r0, _02230FAC ; =0x00000FDC + mov r1, #0 + str r1, [r4, r0] + ldr r0, _02230FB0 ; =0x000005F3 + bl FUN_020054C8 + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02230FA8: .word 0x00000F0F +_02230FAC: .word 0x00000FDC +_02230FB0: .word 0x000005F3 + thumb_func_end MOD80_02230F78 + + thumb_func_start MOD80_02230FB4 +MOD80_02230FB4: ; 0x02230FB4 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02230FE8 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x94 + mov r2, #4 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x15 + mov r2, #2 + bl MOD80_0222E6DC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + ldr r0, _02230FEC ; =0x000005F3 + bl FUN_020054C8 + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02230FE8: .word 0x00000F0F +_02230FEC: .word 0x000005F3 + thumb_func_end MOD80_02230FB4 + + thumb_func_start MOD80_02230FF0 +MOD80_02230FF0: ; 0x02230FF0 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r1, [r0, r1] + ldr r0, [r1, #0x24] + cmp r0, #0 + bne _02231000 + ldr r0, [r1, #0x28] + bx lr +_02231000: + ldr r0, [r1, #0x2c] + add r0, r0, #3 + bx lr + .align 2, 0 + thumb_func_end MOD80_02230FF0 + + thumb_func_start MOD80_02231008 +MOD80_02231008: ; 0x02231008 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _02231100 ; =0x021C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _0223104E + mov r0, #0xfe + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, [r1, #0x24] + cmp r0, #0 + bne _02231036 + ldr r0, [r1, #0x28] + cmp r0, #0 + ble _022310D0 + sub r0, r0, #1 + str r0, [r1, #0x28] + ldr r0, _02231104 ; =0x000005DC + bl FUN_020054C8 + b _022310D0 +_02231036: + ldr r0, [r1, #0x2c] + cmp r0, #0 + beq _02231042 + ldr r0, _02231104 ; =0x000005DC + bl FUN_020054C8 +_02231042: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + str r1, [r0, #0x2c] + b _022310D0 +_0223104E: + mov r1, #0x80 + tst r1, r0 + beq _0223108A + mov r0, #0xfe + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, [r1, #0x24] + cmp r0, #0 + bne _02231072 + ldr r0, [r1, #0x28] + cmp r0, #2 + bge _022310D0 + add r0, r0, #1 + str r0, [r1, #0x28] + ldr r0, _02231104 ; =0x000005DC + bl FUN_020054C8 + b _022310D0 +_02231072: + ldr r0, [r1, #0x2c] + cmp r0, #1 + beq _0223107E + ldr r0, _02231104 ; =0x000005DC + bl FUN_020054C8 +_0223107E: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + str r1, [r0, #0x2c] + b _022310D0 +_0223108A: + mov r1, #0x10 + tst r1, r0 + beq _022310AE + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x24] + cmp r0, #1 + beq _022310A2 + ldr r0, _02231104 ; =0x000005DC + bl FUN_020054C8 +_022310A2: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + str r1, [r0, #0x24] + b _022310D0 +_022310AE: + mov r1, #0x20 + tst r0, r1 + beq _022310D0 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _022310C6 + ldr r0, _02231104 ; =0x000005DC + bl FUN_020054C8 +_022310C6: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + str r1, [r0, #0x24] +_022310D0: + add r0, r4, #0 + bl MOD80_02230FF0 + lsl r1, r0, #2 + ldr r0, _02231108 ; =0x02237A80 + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp] + add r0, r4, #0 + bl MOD80_02230FF0 + lsl r1, r0, #2 + ldr r0, _0223110C ; =0x02237A82 + ldrh r0, [r0, r1] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r0, _02231110 ; =0x00000D5C + ldr r0, [r4, r0] + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, pc} + nop +_02231100: .word 0x021C48B8 +_02231104: .word 0x000005DC +_02231108: .word 0x02237A80 +_0223110C: .word 0x02237A82 +_02231110: .word 0x00000D5C + thumb_func_end MOD80_02231008 + + thumb_func_start MOD80_02231114 +MOD80_02231114: ; 0x02231114 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #6 + mov r1, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD80_02231114 + + thumb_func_start MOD80_0223113C +MOD80_0223113C: ; 0x0223113C + push {r3, r4, lr} + sub sp, #0x14 + ldr r1, _022311B4 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #9 + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #4 + bl MOD80_0222E6DC + mov r0, #5 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _022311B8 ; =0x0000013A + ldr r1, _022311BC ; =0x00000ED8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0xf + bl FUN_02019064 + ldr r0, _022311BC ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #5 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _022311C0 ; =0x0000016E + ldr r1, _022311C4 ; =0x00000EE8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x15 + bl FUN_02019064 + ldr r0, _022311C4 ; =0x00000EE8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_022311B4: .word 0x00000F0F +_022311B8: .word 0x0000013A +_022311BC: .word 0x00000ED8 +_022311C0: .word 0x0000016E +_022311C4: .word 0x00000EE8 + thumb_func_end MOD80_0223113C + + thumb_func_start MOD80_022311C8 +MOD80_022311C8: ; 0x022311C8 + push {r4, lr} + ldr r2, _022311F0 ; =0x00000FC8 + add r4, r0, #0 + ldr r3, _022311F4 ; =0x00000B34 + add r1, r4, r2 + sub r2, #0xf0 + ldr r3, [r4, r3] + add r2, r4, r2 + bl MOD80_02234370 + ldr r1, _022311F8 ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _022311FC ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #5 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_022311F0: .word 0x00000FC8 +_022311F4: .word 0x00000B34 +_022311F8: .word 0x00000FD4 +_022311FC: .word 0x0000FFFF + thumb_func_end MOD80_022311C8 + + thumb_func_start MOD80_02231200 +MOD80_02231200: ; 0x02231200 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022312B4 ; =0x00000FD4 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0xb0 + bl MOD80_02234698 + cmp r0, #0xa + bhi _02231236 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02231220: ; jump table + .short _022312AE - _02231220 - 2 ; case 0 + .short _02231240 - _02231220 - 2 ; case 1 + .short _02231240 - _02231220 - 2 ; case 2 + .short _02231240 - _02231220 - 2 ; case 3 + .short _02231240 - _02231220 - 2 ; case 4 + .short _02231240 - _02231220 - 2 ; case 5 + .short _02231240 - _02231220 - 2 ; case 6 + .short _02231240 - _02231220 - 2 ; case 7 + .short _02231240 - _02231220 - 2 ; case 8 + .short _02231240 - _02231220 - 2 ; case 9 + .short _02231240 - _02231220 - 2 ; case 10 +_02231236: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02231266 + b _022312AE +_02231240: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #6 + ldr r0, [r4, r0] + add r2, r2, #4 + bl FUN_02001300 + ldr r0, _022312B8 ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r0, _022312BC ; =0x000005DC + bl FUN_020054C8 + mov r0, #6 + str r0, [r4, #0x2c] + b _022312AE +_02231266: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #6 + ldr r0, [r4, r0] + add r2, r2, #4 + bl FUN_02001300 + ldr r0, _022312B8 ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r0, _022312C0 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _022312C4 ; =0x00000E98 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200D0E0 + ldr r0, _022312C0 ; =0x00000ED8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _022312C8 ; =0x00000EE8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _022312BC ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r4, #0x2c] +_022312AE: + mov r0, #3 + pop {r4, pc} + nop +_022312B4: .word 0x00000FD4 +_022312B8: .word 0x00000FC8 +_022312BC: .word 0x000005DC +_022312C0: .word 0x00000ED8 +_022312C4: .word 0x00000E98 +_022312C8: .word 0x00000EE8 + thumb_func_end MOD80_02231200 + + thumb_func_start MOD80_022312CC +MOD80_022312CC: ; 0x022312CC + push {r3, r4, lr} + sub sp, #0xc + ldr r3, _02231310 ; =0x00000B38 + add r4, r0, #0 + ldr r1, [r4, r3] + mov r2, #0xfe + lsl r2, r2, #4 + str r1, [sp] + ldr r1, [r4, r2] + sub r3, r3, #4 + str r1, [sp, #4] + ldr r1, [r4] + ldr r1, [r1, #0x10] + str r1, [sp, #8] + add r1, r2, #0 + sub r1, #0x18 + sub r2, #0xf8 + ldr r3, [r4, r3] + add r1, r4, r1 + add r2, r4, r2 + bl MOD80_022344DC + ldr r1, _02231314 ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _02231318 ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #7 + str r0, [r4, #0x2c] + mov r0, #3 + add sp, #0xc + pop {r3, r4, pc} + nop +_02231310: .word 0x00000B38 +_02231314: .word 0x00000FD4 +_02231318: .word 0x0000FFFF + thumb_func_end MOD80_022312CC + + thumb_func_start MOD80_0223131C +MOD80_0223131C: ; 0x0223131C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _02231464 ; =0x00000FD4 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0xb0 + bl MOD80_02234698 + add r5, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _02231342 + add r0, r0, #1 + cmp r5, r0 + bne _02231340 + b _0223145C +_02231340: + b _0223138C +_02231342: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #0 + ldr r0, [r4, r0] + add r1, #0xa + add r2, #8 + bl FUN_02001300 + ldr r0, _02231468 ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r0, _0223146C ; =0x00000EE8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _02231470 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + str r0, [r4, #0x2c] + mov r0, #0xfe + lsl r0, r0, #4 + ldr r3, [r4, r0] + add r0, #0x38 + ldrh r2, [r3, #6] + ldrh r1, [r3, #4] + add r0, r4, r0 + add r1, r2, r1 + ldrh r2, [r3, #0xa] + ldrh r3, [r3, #8] + bl MOD80_022346F0 + b _0223145C +_0223138C: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #0 + ldr r0, [r4, r0] + add r1, #0xa + add r2, #8 + bl FUN_02001300 + ldr r0, _02231468 ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r0, _02231474 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _0223146C ; =0x00000EE8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _02231474 ; =0x00000ED8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _0223146C ; =0x00000EE8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02231478 ; =0x00000B22 + strh r5, [r4, r0] + mov r0, #0 + str r0, [r4, #0x2c] + ldr r0, _02231470 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0223147C ; =0x00000F18 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #0 + str r0, [sp] + ldr r0, _02231480 ; =0x00010200 + ldr r1, _02231484 ; =0x00000B38 + str r0, [sp, #4] + ldr r0, _0223147C ; =0x00000F18 + ldr r1, [r4, r1] + add r0, r4, r0 + add r2, r5, #0 + mov r3, #2 + bl MOD80_02233EA4 + add r0, r5, #0 + mov r1, #0x12 + bl FUN_02068678 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r2, [r4, r1] + str r0, [r2, #0x20] + ldr r3, [r4, r1] + add r1, #0x38 + add r0, r4, r1 + ldrh r2, [r3, #6] + ldrh r1, [r3, #4] + add r1, r2, r1 + ldrh r2, [r3, #0xa] + ldrh r3, [r3, #8] + bl MOD80_022346F0 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r1, [r4, r1] + ldr r0, _02231478 ; =0x00000B22 + ldr r1, [r1, #0x20] + add r0, r4, r0 + bl MOD80_022338E0 + cmp r0, #0 + beq _0223145C + ldr r0, _02231488 ; =0x00000F38 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02231480 ; =0x00010200 + ldr r2, _0223148C ; =0x00000B34 + str r0, [sp, #8] + ldr r1, [r4, r2] + sub r2, #0x10 + ldr r0, _02231488 ; =0x00000F38 + ldrsb r2, [r4, r2] + add r0, r4, r0 + mov r3, #1 + bl MOD80_02233EF4 +_0223145C: + mov r0, #3 + add sp, #0xc + pop {r4, r5, pc} + nop +_02231464: .word 0x00000FD4 +_02231468: .word 0x00000FC8 +_0223146C: .word 0x00000EE8 +_02231470: .word 0x000005DC +_02231474: .word 0x00000ED8 +_02231478: .word 0x00000B22 +_0223147C: .word 0x00000F18 +_02231480: .word 0x00010200 +_02231484: .word 0x00000B38 +_02231488: .word 0x00000F38 +_0223148C: .word 0x00000B34 + thumb_func_end MOD80_0223131C + + thumb_func_start MOD80_02231490 +MOD80_02231490: ; 0x02231490 + push {r3, r4, lr} + sub sp, #0x14 + ldr r1, _022314E0 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0xa + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #9 + bl MOD80_0222E6DC + mov r0, #0xa + str r0, [sp] + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _022314E4 ; =0x0000013A + ldr r1, _022314E8 ; =0x00000ED8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x15 + bl FUN_02019064 + ldr r0, _022314E8 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + nop +_022314E0: .word 0x00000F0F +_022314E4: .word 0x0000013A +_022314E8: .word 0x00000ED8 + thumb_func_end MOD80_02231490 + + thumb_func_start MOD80_022314EC +MOD80_022314EC: ; 0x022314EC + push {r4, lr} + ldr r1, _02231514 ; =0x00000FC8 + add r4, r0, #0 + ldr r2, _02231518 ; =0x00000B34 + add r0, r4, r1 + sub r1, #0xf0 + ldr r2, [r4, r2] + add r1, r4, r1 + bl MOD80_02234560 + ldr r1, _0223151C ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _02231520 ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #0xa + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02231514: .word 0x00000FC8 +_02231518: .word 0x00000B34 +_0223151C: .word 0x00000FD4 +_02231520: .word 0x0000FFFF + thumb_func_end MOD80_022314EC + + thumb_func_start MOD80_02231524 +MOD80_02231524: ; 0x02231524 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _022315F0 ; =0x00000FD4 + add r1, r5, #0 + ldr r0, [r5, r0] + add r1, #0xb0 + bl MOD80_02234698 + add r4, r0, #0 + cmp r4, #2 + bhi _0223154A + cmp r4, #0 + beq _0223158E + cmp r4, #1 + beq _0223158E + cmp r4, #2 + beq _0223158E + b _022315EA +_0223154A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _022315EA + ldr r0, _022315F0 ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _022315F4 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _022315F8 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _022315FC ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200D0E0 + ldr r0, _022315F8 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02231600 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r5, #0x2c] + b _022315EA +_0223158E: + ldr r0, _022315F0 ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _022315F4 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _022315F8 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _022315F8 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02231600 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02231604 ; =0x00000B24 + add r1, r4, #1 + strb r1, [r5, r0] + ldr r0, _02231608 ; =0x00000F38 + mov r1, #0 + add r0, r5, r0 + str r1, [r5, #0x2c] + bl FUN_02019620 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0223160C ; =0x00010200 + ldr r2, _02231610 ; =0x00000B34 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, #0x10 + ldr r0, _02231608 ; =0x00000F38 + ldrsb r2, [r5, r2] + add r0, r5, r0 + mov r3, #1 + bl MOD80_02233EF4 +_022315EA: + mov r0, #3 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022315F0: .word 0x00000FD4 +_022315F4: .word 0x00000FC8 +_022315F8: .word 0x00000ED8 +_022315FC: .word 0x00000E98 +_02231600: .word 0x000005DC +_02231604: .word 0x00000B24 +_02231608: .word 0x00000F38 +_0223160C: .word 0x00010200 +_02231610: .word 0x00000B34 + thumb_func_end MOD80_02231524 + + thumb_func_start MOD80_02231614 +MOD80_02231614: ; 0x02231614 + push {r3, r4, lr} + sub sp, #0x14 + ldr r1, _02231664 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0xb + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #0xc + bl MOD80_0222E6DC + mov r0, #5 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _02231668 ; =0x0000013A + ldr r1, _0223166C ; =0x00000ED8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0xf + bl FUN_02019064 + ldr r0, _0223166C ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02231664: .word 0x00000F0F +_02231668: .word 0x0000013A +_0223166C: .word 0x00000ED8 + thumb_func_end MOD80_02231614 + + thumb_func_start MOD80_02231670 +MOD80_02231670: ; 0x02231670 + push {r4, lr} + ldr r1, _02231698 ; =0x00000FC8 + add r4, r0, #0 + ldr r2, _0223169C ; =0x00000B34 + add r0, r4, r1 + sub r1, #0xf0 + ldr r2, [r4, r2] + add r1, r4, r1 + bl MOD80_022345D0 + ldr r1, _022316A0 ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _022316A4 ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #0xd + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02231698: .word 0x00000FC8 +_0223169C: .word 0x00000B34 +_022316A0: .word 0x00000FD4 +_022316A4: .word 0x0000FFFF + thumb_func_end MOD80_02231670 + + thumb_func_start MOD80_022316A8 +MOD80_022316A8: ; 0x022316A8 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _0223176C ; =0x00000FD4 + add r1, r5, #0 + ldr r0, [r5, r0] + add r1, #0xb0 + bl MOD80_02234698 + add r4, r0, #0 + cmp r4, #0xc + beq _022316D0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _022316D0 + add r0, r0, #1 + cmp r4, r0 + beq _02231766 + b _0223170C +_022316D0: + ldr r0, _0223176C ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _02231770 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02231774 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _02231778 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200D0E0 + ldr r0, _02231774 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _0223177C ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r5, #0x2c] + b _02231766 +_0223170C: + ldr r0, _0223176C ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _02231770 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02231774 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _02231774 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _0223177C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02231780 ; =0x00000B22 + add r1, r4, #0 + add r0, r5, r0 + bl MOD80_02234640 + ldr r0, _02231784 ; =0x00000F58 + mov r1, #0 + add r0, r5, r0 + str r1, [r5, #0x2c] + bl FUN_02019620 + mov r0, #0 + str r0, [sp] + ldr r0, _02231788 ; =0x00010200 + ldr r1, _0223178C ; =0x00000B34 + str r0, [sp, #4] + ldr r0, _02231784 ; =0x00000F58 + ldr r1, [r5, r1] + add r0, r5, r0 + add r2, r4, #0 + mov r3, #2 + bl MOD80_02233F9C +_02231766: + mov r0, #3 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223176C: .word 0x00000FD4 +_02231770: .word 0x00000FC8 +_02231774: .word 0x00000ED8 +_02231778: .word 0x00000E98 +_0223177C: .word 0x000005DC +_02231780: .word 0x00000B22 +_02231784: .word 0x00000F58 +_02231788: .word 0x00010200 +_0223178C: .word 0x00000B34 + thumb_func_end MOD80_022316A8 + + thumb_func_start MOD80_02231790 +MOD80_02231790: ; 0x02231790 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _022317AC ; =0x0000020A + mov r1, #0xf + bl MOD80_0222E6A8 + ldr r1, _022317B0 ; =0x00000FCC + str r0, [r4, r1] + mov r0, #0x17 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + nop +_022317AC: .word 0x0000020A +_022317B0: .word 0x00000FCC + thumb_func_end MOD80_02231790 + + thumb_func_start MOD80_022317B4 +MOD80_022317B4: ; 0x022317B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022317F4 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022317F0 + sub r1, r1, #1 + cmp r0, r1 + bne _022317D6 + mov r0, #0 + str r0, [r4, #0x2c] + b _022317F0 +_022317D6: + mov r0, #2 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + add r0, r4, #0 + bl MOD80_02235C40 + mov r0, #0 + add r4, #0xc0 + str r0, [r4] +_022317F0: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_022317F4: .word 0x00000FCC + thumb_func_end MOD80_022317B4 + + thumb_func_start MOD80_022317F8 +MOD80_022317F8: ; 0x022317F8 + mov r1, #1 + str r1, [r0, #0x2c] + mov r0, #3 + bx lr + thumb_func_end MOD80_022317F8 + + thumb_func_start MOD80_02231800 +MOD80_02231800: ; 0x02231800 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02231824 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x8e + mov r2, #1 + mov r3, #0 + bl MOD80_0223187C + add r0, r4, #0 + mov r1, #0x14 + mov r2, #1 + bl MOD80_0222E6DC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02231824: .word 0x00000F0F + thumb_func_end MOD80_02231800 + + thumb_func_start MOD80_02231828 +MOD80_02231828: ; 0x02231828 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02231842 + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02231842: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02231828 + + thumb_func_start MOD80_02231848 +MOD80_02231848: ; 0x02231848 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02231874 + ldr r0, _02231878 ; =0x00000FDC + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0x2d + ble _02231874 + mov r1, #0 + str r1, [r4, r0] + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02231874: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02231878: .word 0x00000FDC + thumb_func_end MOD80_02231848 + + thumb_func_start MOD80_0223187C +MOD80_0223187C: ; 0x0223187C + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r2, _022318C8 ; =0x00000B34 + add r5, r0, #0 + ldr r0, [r5, r2] + add r2, #0x18 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r0, _022318CC ; =0x00000E98 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _022318CC ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, _022318CC ; =0x00000E98 + ldr r2, _022318D0 ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022318C8: .word 0x00000B34 +_022318CC: .word 0x00000E98 +_022318D0: .word 0x00000B4C + thumb_func_end MOD80_0223187C + + thumb_func_start MOD80_022318D4 +MOD80_022318D4: ; 0x022318D4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x3b + bl FUN_0200A914 + add r6, r0, #0 + mov r2, #0 + ldr r0, _022319B8 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + mov r1, #0x3d + bl FUN_0200A914 + add r6, r0, #0 + mov r2, #0 + ldr r0, _022319B8 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x20 + add r1, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + mov r1, #0x3f + bl FUN_0200A914 + add r6, r0, #0 + mov r2, #0 + ldr r0, _022319B8 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x40 + add r1, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + mov r1, #0x41 + bl FUN_0200A914 + add r6, r0, #0 + add r3, r5, #0 + add r3, #0x67 + ldrb r3, [r3] + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + lsl r3, r3, #3 + bl FUN_02002F40 + add r2, r0, #0 + mov r3, #0 + ldr r0, _022319BC ; =0x00010200 + str r3, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x60 + add r1, r6, #0 + bl MOD80_02236D50 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + mov r1, #0x42 + bl FUN_0200A914 + add r4, r0, #0 + add r3, r5, #0 + add r3, #0x77 + ldrb r3, [r3] + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + lsl r3, r3, #3 + bl FUN_02002F40 + add r2, r0, #0 + mov r3, #0 + ldr r0, _022319BC ; =0x00010200 + str r3, [sp] + add r5, #0x70 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD80_02236D50 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_022319B8: .word 0x000F0200 +_022319BC: .word 0x00010200 + thumb_func_end MOD80_022318D4 + + thumb_func_start MOD80_022319C0 +MOD80_022319C0: ; 0x022319C0 + mov r2, #0 + ldrsh r3, [r0, r2] + ldrsh r2, [r1, r2] + cmp r3, r2 + bne _022319EC + mov r2, #2 + ldrsb r3, [r0, r2] + ldrsb r2, [r1, r2] + cmp r3, r2 + bne _022319EC + mov r2, #3 + ldrsb r3, [r0, r2] + ldrsb r2, [r1, r2] + cmp r3, r2 + bne _022319EC + mov r2, #4 + ldrsb r3, [r0, r2] + ldrsb r0, [r1, r2] + cmp r3, r0 + bne _022319EC + mov r0, #1 + bx lr +_022319EC: + mov r0, #0 + bx lr + thumb_func_end MOD80_022319C0 + + thumb_func_start MOD80_022319F0 +MOD80_022319F0: ; 0x022319F0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_0223205C + ldr r0, [r4, #4] + bl MOD80_02231AB0 + add r0, r4, #0 + bl MOD80_02231BF4 + add r0, r4, #0 + bl MOD80_02231EA8 + add r0, r4, #0 + bl MOD80_02231CBC + ldr r0, [r4, #0x20] + cmp r0, #8 + bne _02231A30 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _02231A46 +_02231A30: + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 +_02231A46: + add r1, r4, #0 + add r1, #0xb8 + ldrh r1, [r1] + add r0, r4, #0 + bl MOD80_02232D7C + add r0, r4, #0 + bl MOD80_02236D84 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD80_022319F0 + + thumb_func_start MOD80_02231A64 +MOD80_02231A64: ; 0x02231A64 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222E79C + bl FUN_02033EEC + ldr r1, [r4, #0x2c] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02231A80 ; =0x02237B04 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_02231A80: .word 0x02237B04 + thumb_func_end MOD80_02231A64 + + thumb_func_start MOD80_02231A84 +MOD80_02231A84: ; 0x02231A84 + push {r4, lr} + add r4, r0, #0 + bl FUN_02033ED0 + add r0, r4, #0 + bl MOD80_02231E44 + add r0, r4, #0 + bl MOD80_022320E8 + add r0, r4, #0 + bl MOD80_0223200C + ldr r0, [r4, #4] + bl MOD80_02231BC8 + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02231A84 + + thumb_func_start MOD80_02231AB0 +MOD80_02231AB0: ; 0x02231AB0 + push {r4, r5, lr} + sub sp, #0x9c + ldr r5, _02231BB0 ; =0x02237210 + add r3, sp, #0x8c + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _02231BB4 ; =0x02237288 + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _02231BB8 ; =0x022372A4 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _02231BBC ; =0x0223726C + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _02231BC0 ; =0x02237234 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _02231BC4 ; =0x02237250 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x9c + pop {r4, r5, pc} + nop +_02231BB0: .word 0x02237210 +_02231BB4: .word 0x02237288 +_02231BB8: .word 0x022372A4 +_02231BBC: .word 0x0223726C +_02231BC0: .word 0x02237234 +_02231BC4: .word 0x02237250 + thumb_func_end MOD80_02231AB0 + + thumb_func_start MOD80_02231BC8 +MOD80_02231BC8: ; 0x02231BC8 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_02231BC8 + + thumb_func_start MOD80_02231BF4 +MOD80_02231BF4: ; 0x02231BF4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x60 + str r0, [sp] + mov r0, #0x3e + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #2 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #5 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0xc + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x18 + add r2, r4, #0 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x1d + add r2, r4, #0 + mov r3, #2 + bl FUN_020068C8 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD80_02231BF4 + + thumb_func_start MOD80_02231CBC +MOD80_02231CBC: ; 0x02231CBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + mov r2, #0xcf + add r5, r0, #0 + lsl r2, r2, #4 + add r0, sp, #0 + add r1, r5, #0 + add r2, r5, r2 + mov r3, #1 + bl MOD80_0222E5E8 + add r0, r5, #0 + add r0, #0xba + ldrh r0, [r0] + lsl r1, r0, #2 + ldr r0, _02231E28 ; =0x022372C0 + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xba + ldrh r0, [r0] + lsl r1, r0, #2 + ldr r0, _02231E2C ; =0x022372C2 + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _02231E30 ; =0x00000D5C + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, _02231E30 ; =0x00000D5C + mov r1, #4 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _02231E30 ; =0x00000D5C + mov r1, #1 + ldr r0, [r5, r0] + bl FUN_02020238 + ldr r6, _02231E28 ; =0x022372C0 + mov r7, #0 + add r4, r5, #0 +_02231D1E: + ldrh r0, [r6] + lsl r0, r0, #0xc + str r0, [sp, #8] + ldrh r0, [r6, #2] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + mov r0, #0x14 + str r0, [sp, #0x24] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _02231E34 ; =0x00000D64 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + add r1, r7, #6 + bl FUN_02020130 + ldr r0, _02231E34 ; =0x00000D64 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_02020238 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #4 + cmp r7, #0x1e + blt _02231D1E + ldr r6, _02231E28 ; =0x022372C0 + mov r7, #0 + add r4, r5, #0 +_02231D5C: + ldrh r0, [r6] + add r0, r0, #4 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldrh r0, [r6, #2] + add r0, r0, #6 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + mov r0, #0xa + str r0, [sp, #0x24] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _02231E38 ; =0x00000DDC + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #0x28 + bl FUN_02020130 + ldr r0, _02231E38 ; =0x00000DDC + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_02020238 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #4 + cmp r7, #0x1e + blt _02231D5C + ldr r6, _02231E28 ; =0x022372C0 + mov r7, #0 + add r4, r5, #0 +_02231D9E: + ldrh r0, [r6] + add r0, #0xc + lsl r0, r0, #0xc + str r0, [sp, #8] + ldrh r0, [r6, #2] + add r0, r0, #6 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + mov r0, #0xa + str r0, [sp, #0x24] + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _02231E3C ; =0x00000E54 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #0x2a + bl FUN_02020130 + ldr r0, _02231E3C ; =0x00000E54 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_02020238 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #4 + cmp r7, #6 + blt _02231D9E + mov r7, #0xe9 + ldr r4, _02231E40 ; =0x02237208 + mov r6, #0 + lsl r7, r7, #4 +_02231DE2: + ldrh r0, [r4] + lsl r0, r0, #0xc + str r0, [sp, #8] + ldrh r0, [r4, #2] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, sp, #0 + bl FUN_0201FE94 + mov r1, #0xe9 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0xe9 + lsl r0, r0, #4 + add r1, r6, #0 + ldr r0, [r5, r0] + add r1, #0x26 + bl FUN_02020130 + ldr r0, [r5, r7] + mov r1, #1 + bl FUN_02020238 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #2 + blt _02231DE2 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231E28: .word 0x022372C0 +_02231E2C: .word 0x022372C2 +_02231E30: .word 0x00000D5C +_02231E34: .word 0x00000D64 +_02231E38: .word 0x00000DDC +_02231E3C: .word 0x00000E54 +_02231E40: .word 0x02237208 + thumb_func_end MOD80_02231CBC + + thumb_func_start MOD80_02231E44 +MOD80_02231E44: ; 0x02231E44 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r7, #0xe9 + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #4 +_02231E50: + ldr r0, [r4, r7] + bl FUN_0201FFC8 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #2 + blt _02231E50 + ldr r0, _02231E98 ; =0x00000D5C + ldr r0, [r5, r0] + bl FUN_0201FFC8 + ldr r7, _02231E9C ; =0x00000DDC + mov r6, #0 + add r4, r5, #0 +_02231E6C: + ldr r0, _02231EA0 ; =0x00000D64 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + ldr r0, [r4, r7] + bl FUN_0201FFC8 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #0x1e + blt _02231E6C + ldr r6, _02231EA4 ; =0x00000E54 + mov r4, #0 +_02231E86: + ldr r0, [r5, r6] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02231E86 + pop {r3, r4, r5, r6, r7, pc} + nop +_02231E98: .word 0x00000D5C +_02231E9C: .word 0x00000DDC +_02231EA0: .word 0x00000D64 +_02231EA4: .word 0x00000E54 + thumb_func_end MOD80_02231E44 + + thumb_func_start MOD80_02231EA8 +MOD80_02231EA8: ; 0x02231EA8 + push {r3, r4, lr} + sub sp, #0x14 + mov r3, #1 + add r4, r0, #0 + str r3, [sp] + mov r0, #0x1c + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + ldr r1, _02231FDC ; =0x00000EB8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + bl FUN_02019064 + ldr r0, _02231FDC ; =0x00000EB8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r2, #0 + mov r1, #0xb5 + ldr r0, _02231FE0 ; =0x000F0E00 + str r2, [sp] + str r0, [sp, #4] + ldr r0, _02231FDC ; =0x00000EB8 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, r0 + mov r3, #1 + bl MOD80_02236D50 + mov r1, #3 + str r1, [sp] + mov r0, #0xd + str r0, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0x60 + ldr r1, _02231FE4 ; =0x00000EC8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #5 + bl FUN_02019064 + ldr r0, _02231FE4 ; =0x00000EC8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + ldr r0, _02231FE4 ; =0x00000EC8 + add r0, r4, r0 + bl FUN_020191D0 + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + ldr r1, _02231FE8 ; =0x00000E98 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, #0xfc + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + bl FUN_02019064 + ldr r0, _02231FE8 ; =0x00000E98 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02231FEC ; =0x0000013F + ldr r1, _02231FF0 ; =0x00000FB8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + ldr r0, _02231FF0 ; =0x00000FB8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #0x15 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, _02231FF4 ; =0x00000165 + ldr r1, _02231FF8 ; =0x00000EE8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #1 + mov r3, #0x19 + bl FUN_02019064 + ldr r0, _02231FF8 ; =0x00000EE8 + mov r1, #6 + add r0, r4, r0 + bl FUN_02019620 + mov r3, #1 + ldr r0, _02231FFC ; =0x00010306 + str r3, [sp] + str r0, [sp, #4] + ldr r1, _02232000 ; =0x00000B48 + ldr r0, _02231FF8 ; =0x00000EE8 + ldr r1, [r4, r1] + add r0, r4, r0 + mov r2, #0 + bl MOD80_02236D50 + mov r1, #0xd + str r1, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _02232004 ; =0x00000171 + ldr r1, _02232008 ; =0x00000ED8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x15 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_02231FDC: .word 0x00000EB8 +_02231FE0: .word 0x000F0E00 +_02231FE4: .word 0x00000EC8 +_02231FE8: .word 0x00000E98 +_02231FEC: .word 0x0000013F +_02231FF0: .word 0x00000FB8 +_02231FF4: .word 0x00000165 +_02231FF8: .word 0x00000EE8 +_02231FFC: .word 0x00010306 +_02232000: .word 0x00000B48 +_02232004: .word 0x00000171 +_02232008: .word 0x00000ED8 + thumb_func_end MOD80_02231EA8 + + thumb_func_start MOD80_0223200C +MOD80_0223200C: ; 0x0223200C + push {r4, lr} + add r4, r0, #0 + ldr r0, _02232044 ; =0x00000FB8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02232048 ; =0x00000EE8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _0223204C ; =0x00000ED8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02232050 ; =0x00000E98 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02232054 ; =0x00000EC8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02232058 ; =0x00000EB8 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + nop +_02232044: .word 0x00000FB8 +_02232048: .word 0x00000EE8 +_0223204C: .word 0x00000ED8 +_02232050: .word 0x00000E98 +_02232054: .word 0x00000EC8 +_02232058: .word 0x00000EB8 + thumb_func_end MOD80_0223200C + + thumb_func_start MOD80_0223205C +MOD80_0223205C: ; 0x0223205C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x12 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _022320D4 ; =0x00000B44 + str r0, [r4, r1] + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _022320D8 ; =0x00000B4C + str r0, [r4, r1] + ldr r0, [r4, #0x24] + cmp r0, #5 + bne _02232090 + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #0x15 + bl FUN_0200A914 + mov r1, #0xb5 + lsl r1, r1, #4 + str r0, [r4, r1] + b _022320A4 +_02232090: + cmp r0, #6 + bne _022320A4 + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #0x11 + bl FUN_0200A914 + mov r1, #0xb5 + lsl r1, r1, #4 + str r0, [r4, r1] +_022320A4: + ldr r0, _022320DC ; =0x00000B34 + mov r1, #0x67 + ldr r0, [r4, r0] + bl FUN_0200A914 + ldr r1, _022320E0 ; =0x00000B48 + str r0, [r4, r1] + add r0, r4, #0 + add r0, #0xba + ldrh r0, [r0] + cmp r0, #0x1e + bne _022320C4 + add r0, r4, #0 + mov r1, #0 + add r0, #0xba + strh r1, [r0] +_022320C4: + mov r0, #0x3e + mov r1, #0x78 + bl FUN_02016998 + ldr r1, _022320E4 ; =0x00001004 + str r0, [r4, r1] + pop {r4, pc} + nop +_022320D4: .word 0x00000B44 +_022320D8: .word 0x00000B4C +_022320DC: .word 0x00000B34 +_022320E0: .word 0x00000B48 +_022320E4: .word 0x00001004 + thumb_func_end MOD80_0223205C + + thumb_func_start MOD80_022320E8 +MOD80_022320E8: ; 0x022320E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02232118 ; =0x00001004 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _0223211C ; =0x00000B44 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _02232120 ; =0x00000B4C + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _02232124 ; =0x00000B48 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0xb5 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + .align 2, 0 +_02232118: .word 0x00001004 +_0223211C: .word 0x00000B44 +_02232120: .word 0x00000B4C +_02232124: .word 0x00000B48 + thumb_func_end MOD80_022320E8 + + thumb_func_start MOD80_02232128 +MOD80_02232128: ; 0x02232128 + push {r4, lr} + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _02232138 + mov r0, #1 + str r0, [r4, #0x2c] +_02232138: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02232128 + + thumb_func_start MOD80_0223213C +MOD80_0223213C: ; 0x0223213C + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD80_0223237C + ldr r0, [r5, #0x24] + cmp r0, #5 + beq _0223214E + b _02232250 +_0223214E: + ldr r0, _02232370 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #2 + tst r0, r2 + beq _02232168 + add r0, r5, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r5, #0x2c] + b _02232368 +_02232168: + mov r1, #1 + add r0, r2, #0 + tst r0, r1 + beq _022321B6 + add r0, r5, #0 + add r0, #0xba + ldrh r0, [r0] + cmp r0, #0x1e + bne _0223218E + add r0, r5, #0 + mov r2, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r5, #0x2c] + ldr r0, _02232374 ; =0x000005DC + bl FUN_020054C8 + b _02232368 +_0223218E: + cmp r0, #0x1f + beq _022321B6 + ldr r0, _02232374 ; =0x000005DC + bl FUN_020054C8 + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02233054 + cmp r0, #1 + beq _022321B8 + cmp r0, #2 + beq _02232232 +_022321B6: + b _02232368 +_022321B8: + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FF8 + cmp r0, #0 + beq _02232214 + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + add r2, r0, #0 + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200ACF8 + ldr r0, _02232378 ; =0x00000F0F + mov r3, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x16 + mov r2, #1 + str r3, [sp, #4] + bl MOD80_02232B34 + add r0, r5, #0 + mov r1, #3 + mov r2, #7 + bl MOD80_0222E6DC + b _02232368 +_02232214: + ldr r0, _02232378 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x1a + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r5, #0 + mov r1, #4 + mov r2, #1 + bl MOD80_0222E6DC + b _02232368 +_02232232: + ldr r0, _02232378 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x1b + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r5, #0 + mov r1, #4 + mov r2, #1 + bl MOD80_0222E6DC + b _02232368 +_02232250: + cmp r0, #6 + bne _022322BA + ldr r0, _02232370 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _02232274 + add r0, r5, #0 + mov r1, #3 + mov r2, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r5, #0x2c] + ldr r0, _02232374 ; =0x000005DC + bl FUN_020054C8 + b _02232368 +_02232274: + mov r0, #1 + tst r0, r1 + beq _02232368 + add r0, r5, #0 + add r0, #0xba + ldrh r3, [r0] + cmp r3, #0x1e + bne _0223229A + add r0, r5, #0 + mov r1, #3 + mov r2, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r5, #0x2c] + ldr r0, _02232374 ; =0x000005DC + bl FUN_020054C8 + b _02232368 +_0223229A: + cmp r3, #0x1f + beq _02232368 + add r2, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + ldr r0, [r1, #8] + ldrh r2, [r2] + ldr r1, [r1, #0xc] + bl MOD80_02233054 + cmp r0, #0 + beq _02232362 + cmp r0, #1 + beq _022322BC + cmp r0, #2 + beq _02232362 +_022322BA: + b _02232368 +_022322BC: + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + add r2, r5, #0 + add r2, #0xc4 + mov r1, #0xba + ldr r3, [r2] + mov r2, #0x49 + lsl r1, r1, #2 + lsl r2, r2, #2 + add r1, r5, r1 + mul r2, r3 + add r1, r1, r2 + add r4, r0, #0 + bl MOD80_022330E4 + cmp r0, #0 + beq _0223235A + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FF8 + cmp r0, #0 + beq _0223233C + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + add r2, r4, #0 + bl FUN_0200ACF8 + ldr r0, _02232378 ; =0x00000F0F + mov r3, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x12 + mov r2, #1 + str r3, [sp, #4] + bl MOD80_02232B34 + add r0, r5, #0 + mov r1, #3 + mov r2, #9 + bl MOD80_0222E6DC + ldr r0, _02232374 ; =0x000005DC + bl FUN_020054C8 + b _02232368 +_0223233C: + ldr r0, _02232378 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x1a + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r5, #0 + mov r1, #4 + mov r2, #1 + bl MOD80_0222E6DC + b _02232368 +_0223235A: + ldr r0, _02232374 ; =0x000005DC + bl FUN_020054C8 + b _02232368 +_02232362: + ldr r0, _02232374 ; =0x000005DC + bl FUN_020054C8 +_02232368: + mov r0, #3 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02232370: .word 0x021C48B8 +_02232374: .word 0x000005DC +_02232378: .word 0x00000F0F + thumb_func_end MOD80_0223213C + + thumb_func_start MOD80_0223237C +MOD80_0223237C: ; 0x0223237C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _02232448 ; =0x021C48B8 + mov r4, #0 + ldr r0, [r0, #0x48] + mov r2, #0x40 + add r1, r4, #0 + tst r2, r0 + beq _02232392 + mov r1, #1 + b _022323AE +_02232392: + mov r2, #0x80 + tst r2, r0 + beq _0223239C + mov r1, #2 + b _022323AE +_0223239C: + mov r2, #0x20 + tst r2, r0 + beq _022323A6 + mov r1, #3 + b _022323AE +_022323A6: + mov r2, #0x10 + tst r0, r2 + beq _022323AE + mov r1, #4 +_022323AE: + cmp r1, #0 + beq _022323FE + add r0, r5, #0 + add r0, #0xba + ldrh r0, [r0] + ldr r3, _0223244C ; =0x02237340 + sub r2, r1, #1 + lsl r6, r0, #2 + add r1, r3, r6 + ldrb r2, [r2, r1] + cmp r2, r0 + beq _022323FE + cmp r2, #0x63 + beq _022323CE + cmp r2, #0x65 + bne _022323F6 +_022323CE: + add r0, r5, #0 + add r0, #0xb8 + ldrh r0, [r0] + mov r1, #0x13 + sub r2, #0x64 + bl MOD80_02232460 + add r1, r5, #0 + add r1, #0xb8 + strh r0, [r1] + add r1, r5, #0 + add r1, #0xb8 + ldrh r1, [r1] + add r0, r5, #0 + bl MOD80_02232D7C + ldr r0, _02232450 ; =0x000005DC + bl FUN_020054C8 + b _022323FE +_022323F6: + add r0, r5, #0 + add r0, #0xba + mov r4, #1 + strh r2, [r0] +_022323FE: + cmp r4, #0 + beq _02232420 + ldr r0, _02232450 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0xba + ldrh r0, [r0] + ldr r1, _02232454 ; =0x022372C0 + ldr r2, _02232458 ; =0x022372C2 + lsl r3, r0, #2 + ldr r0, _0223245C ; =0x00000D5C + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldr r0, [r5, r0] + bl MOD80_0222E6E4 +_02232420: + add r0, r5, #0 + add r0, #0xba + ldrh r0, [r0] + cmp r0, #0x1f + beq _0223242E + cmp r0, #5 + bhi _0223243A +_0223242E: + ldr r0, _0223245C ; =0x00000D5C + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_02020238 + pop {r4, r5, r6, pc} +_0223243A: + ldr r0, _0223245C ; =0x00000D5C + mov r1, #1 + ldr r0, [r5, r0] + bl FUN_02020238 + pop {r4, r5, r6, pc} + nop +_02232448: .word 0x021C48B8 +_0223244C: .word 0x02237340 +_02232450: .word 0x000005DC +_02232454: .word 0x022372C0 +_02232458: .word 0x022372C2 +_0223245C: .word 0x00000D5C + thumb_func_end MOD80_0223237C + + thumb_func_start MOD80_02232460 +MOD80_02232460: ; 0x02232460 + add r0, r0, r2 + bpl _02232468 + sub r0, r1, #1 + bx lr +_02232468: + cmp r0, r1 + bne _0223246E + mov r0, #0 +_0223246E: + bx lr + thumb_func_end MOD80_02232460 + + thumb_func_start MOD80_02232470 +MOD80_02232470: ; 0x02232470 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + add r2, sp, #8 + strb r0, [r2, #8] + mov r0, #1 + strb r0, [r2, #9] + mov r0, #3 + strb r0, [r2, #0xa] + ldrb r3, [r2, #0xb] + mov r1, #0xf + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0x30 + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0xc0 + bic r3, r1 + mov r1, #0x3e + strb r3, [r2, #0xb] + bl FUN_02012838 + ldr r1, _02232510 ; =0x00000FC8 + mov r2, #0x5e + str r0, [r4, r1] + ldr r0, [r4, r1] + ldr r1, _02232514 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl FUN_02012880 + ldr r0, _02232510 ; =0x00000FC8 + ldr r1, _02232514 ; =0x00000B34 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x5f + mov r3, #2 + bl FUN_02012880 + ldr r0, _02232510 ; =0x00000FC8 + ldr r1, _02232514 ; =0x00000B34 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x60 + mov r3, #3 + bl FUN_02012880 + ldr r0, _02232510 ; =0x00000FC8 + mov r2, #0x1f + ldr r1, [r4, r0] + sub r0, #0xf0 + str r1, [sp, #8] + add r0, r4, r0 + mov r1, #1 + mov r3, #0xb + str r0, [sp, #0xc] + bl FUN_0200CCA4 + mov r0, #0x3e + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #8 + mov r1, #9 + add r3, r2, #0 + bl FUN_02001C14 + mov r1, #0xfd + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #8 + str r0, [r4, #0x2c] + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02232510: .word 0x00000FC8 +_02232514: .word 0x00000B34 + thumb_func_end MOD80_02232470 + + thumb_func_start MOD80_02232518 +MOD80_02232518: ; 0x02232518 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02001C78 + cmp r0, #3 + bhi _0223253C + cmp r0, #1 + blo _0223253A + beq _02232546 + cmp r0, #2 + beq _02232574 + cmp r0, #3 + beq _0223262E +_0223253A: + b _0223265A +_0223253C: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0223262E + b _0223265A +_02232546: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _02232660 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02232664 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + mov r0, #2 + str r0, [r5, #0x2c] + add r0, r5, #0 + mov r1, #8 + mov r2, #5 + bl MOD80_0222E7A8 + b _0223265A +_02232574: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _02232660 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02232664 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + bl MOD80_02233018 + cmp r0, #0 + beq _022325CE + ldr r0, _02232668 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x25 + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r5, #0 + mov r1, #4 + mov r2, #1 + bl MOD80_0222E6DC + b _0223265A +_022325CE: + add r0, r5, #0 + add r0, #0xb8 + ldrh r0, [r0] + mov r4, #0 + bl MOD80_02232FAC + cmp r0, #0 + beq _022325FE + add r1, r5, #0 + ldr r0, [r5] + add r1, #0xba + ldrh r1, [r1] + ldr r0, [r0, #8] + bl FUN_0206B9B0 + mov r1, #0xa1 + add r2, r4, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022325FE + mov r0, #0xe + mov r4, #1 + str r0, [r5, #0x2c] +_022325FE: + cmp r4, #0 + bne _0223265A + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #2 + str r0, [r5, #0x2c] + add r0, r5, #0 + mov r1, #6 + mov r2, #0 + bl MOD80_0222E7A8 + b _0223265A +_0223262E: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _02232660 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02232664 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _0223266C ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200D0E0 + mov r0, #1 + str r0, [r5, #0x2c] +_0223265A: + mov r0, #3 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02232660: .word 0x00000FC8 +_02232664: .word 0x00000ED8 +_02232668: .word 0x00000F0F +_0223266C: .word 0x00000E98 + thumb_func_end MOD80_02232518 + + thumb_func_start MOD80_02232670 +MOD80_02232670: ; 0x02232670 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + add r2, sp, #8 + strb r0, [r2, #8] + mov r0, #1 + strb r0, [r2, #9] + mov r0, #3 + strb r0, [r2, #0xa] + ldrb r3, [r2, #0xb] + mov r1, #0xf + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0x30 + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0xc0 + bic r3, r1 + mov r1, #0x3e + strb r3, [r2, #0xb] + bl FUN_02012838 + ldr r1, _02232710 ; =0x00000FC8 + mov r2, #0x54 + str r0, [r4, r1] + ldr r0, [r4, r1] + ldr r1, _02232714 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl FUN_02012880 + ldr r0, _02232710 ; =0x00000FC8 + ldr r1, _02232714 ; =0x00000B34 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x55 + mov r3, #2 + bl FUN_02012880 + ldr r0, _02232710 ; =0x00000FC8 + ldr r1, _02232714 ; =0x00000B34 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x56 + mov r3, #3 + bl FUN_02012880 + ldr r0, _02232710 ; =0x00000FC8 + mov r2, #0x1f + ldr r1, [r4, r0] + sub r0, #0xf0 + str r1, [sp, #8] + add r0, r4, r0 + mov r1, #0 + mov r3, #0xb + str r0, [sp, #0xc] + bl FUN_0200CCA4 + mov r0, #0x3e + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #8 + mov r1, #9 + add r3, r2, #0 + bl FUN_02001C14 + mov r1, #0xfd + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #0xa + str r0, [r4, #0x2c] + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02232710: .word 0x00000FC8 +_02232714: .word 0x00000B34 + thumb_func_end MOD80_02232670 + + thumb_func_start MOD80_02232718 +MOD80_02232718: ; 0x02232718 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02001C78 + cmp r0, #3 + bhi _0223273C + cmp r0, #1 + blo _0223273A + beq _02232746 + cmp r0, #2 + beq _02232774 + cmp r0, #3 + beq _0223280A +_0223273A: + b _02232836 +_0223273C: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0223280A + b _02232836 +_02232746: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0223283C ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02232840 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + mov r0, #2 + str r0, [r5, #0x2c] + add r0, r5, #0 + mov r1, #8 + mov r2, #6 + bl MOD80_0222E7A8 + b _02232836 +_02232774: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0223283C ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02232840 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + add r2, r5, #0 + add r3, r5, #0 + ldr r1, [r5] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + bl MOD80_02233018 + cmp r0, #0 + beq _022327CE + ldr r0, _02232844 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x25 + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r5, #0 + mov r1, #4 + mov r2, #1 + bl MOD80_0222E6DC + b _02232836 +_022327CE: + add r0, r5, #0 + add r0, #0xb8 + ldrh r0, [r0] + mov r4, #0 + bl MOD80_02232FAC + cmp r0, #0 + beq _022327FE + add r1, r5, #0 + ldr r0, [r5] + add r1, #0xba + ldrh r1, [r1] + ldr r0, [r0, #8] + bl FUN_0206B9B0 + mov r1, #0xa1 + add r2, r4, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022327FE + mov r0, #0xb + mov r4, #1 + str r0, [r5, #0x2c] +_022327FE: + cmp r4, #0 + bne _02232836 + add r0, r5, #0 + bl MOD80_02232990 + b _02232836 +_0223280A: + mov r0, #0xfd + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0223283C ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02232840 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _02232848 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200D0E0 + mov r0, #1 + str r0, [r5, #0x2c] +_02232836: + mov r0, #3 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223283C: .word 0x00000FC8 +_02232840: .word 0x00000ED8 +_02232844: .word 0x00000F0F +_02232848: .word 0x00000E98 + thumb_func_end MOD80_02232718 + + thumb_func_start MOD80_0223284C +MOD80_0223284C: ; 0x0223284C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _0223285C + cmp r0, #8 + bne _0223287C +_0223285C: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, _022328A0 ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + b _02232894 +_0223287C: + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 +_02232894: + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + nop +_022328A0: .word 0x0000100C + thumb_func_end MOD80_0223284C + + thumb_func_start MOD80_022328A4 +MOD80_022328A4: ; 0x022328A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _022328C0 ; =0x000001AD + mov r1, #0xf + bl MOD80_0222E6A8 + ldr r1, _022328C4 ; =0x00000FCC + str r0, [r4, r1] + mov r0, #6 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + nop +_022328C0: .word 0x000001AD +_022328C4: .word 0x00000FCC + thumb_func_end MOD80_022328A4 + + thumb_func_start MOD80_022328C8 +MOD80_022328C8: ; 0x022328C8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022328FC ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022328F8 + sub r1, r1, #1 + cmp r0, r1 + bne _022328EA + mov r0, #0 + str r0, [r4, #0x2c] + b _022328F8 +_022328EA: + mov r0, #2 + mov r1, #0 + str r0, [r4, #0x2c] + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 +_022328F8: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_022328FC: .word 0x00000FCC + thumb_func_end MOD80_022328C8 + + thumb_func_start MOD80_02232900 +MOD80_02232900: ; 0x02232900 + push {r4, lr} + sub sp, #8 + ldr r1, _02232928 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r2, #1 + mov r1, #0x19 + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r4, #0 + mov r1, #3 + mov r2, #0xc + bl MOD80_0222E6DC + mov r0, #3 + add sp, #8 + pop {r4, pc} + nop +_02232928: .word 0x00000F0F + thumb_func_end MOD80_02232900 + + thumb_func_start MOD80_0223292C +MOD80_0223292C: ; 0x0223292C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02232948 ; =0x000001AD + mov r1, #0xd + bl MOD80_0222E6A8 + ldr r1, _0223294C ; =0x00000FCC + str r0, [r4, r1] + mov r0, #0xd + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + nop +_02232948: .word 0x000001AD +_0223294C: .word 0x00000FCC + thumb_func_end MOD80_0223292C + + thumb_func_start MOD80_02232950 +MOD80_02232950: ; 0x02232950 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02232988 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02232982 + sub r1, r1, #1 + cmp r0, r1 + bne _0223297C + ldr r0, _0223298C ; =0x00000FB8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200D0E0 + mov r0, #1 + str r0, [r4, #0x2c] + b _02232982 +_0223297C: + add r0, r4, #0 + bl MOD80_02232990 +_02232982: + mov r0, #3 + pop {r4, pc} + nop +_02232988: .word 0x00000FCC +_0223298C: .word 0x00000FB8 + thumb_func_end MOD80_02232950 + + thumb_func_start MOD80_02232990 +MOD80_02232990: ; 0x02232990 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r1, #0x7e + add r0, #0xc4 + lsl r1, r1, #2 + add r2, r4, r1 + ldr r0, [r0] + sub r1, #0xd4 + mul r1, r0 + add r0, r2, r1 + bl MOD80_022331F8 + cmp r0, #0 + beq _022329E6 + add r0, r4, #0 + add r0, #0xb8 + ldrh r0, [r0] + cmp r0, #0x12 + beq _022329E6 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_0206B9AC + cmp r0, #6 + bne _022329E6 + ldr r0, _02232A2C ; =0x00000F0F + mov r2, #1 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x1c + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r4, #0 + mov r1, #4 + mov r2, #1 + bl MOD80_0222E6DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_022329E6: + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + add r1, r4, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #2 + str r0, [r4, #0x2c] + ldr r0, _02232A30 ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #7 + mov r2, #9 + bl MOD80_0222E7A8 + add r0, r4, #0 + add r0, #0xd4 + add r1, r4, #0 + bl MOD80_0223311C + mov r0, #0 + add r4, #0xc0 + str r0, [r4] + mov r0, #1 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02232A2C: .word 0x00000F0F +_02232A30: .word 0x0000100C + thumb_func_end MOD80_02232990 + + thumb_func_start MOD80_02232A34 +MOD80_02232A34: ; 0x02232A34 + push {r4, lr} + sub sp, #8 + ldr r1, _02232A5C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r2, #1 + mov r1, #0x19 + mov r3, #0 + str r2, [sp, #4] + bl MOD80_02232B34 + add r0, r4, #0 + mov r1, #3 + mov r2, #0xf + bl MOD80_0222E6DC + mov r0, #3 + add sp, #8 + pop {r4, pc} + nop +_02232A5C: .word 0x00000F0F + thumb_func_end MOD80_02232A34 + + thumb_func_start MOD80_02232A60 +MOD80_02232A60: ; 0x02232A60 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02232A7C ; =0x000001AD + mov r1, #0xd + bl MOD80_0222E6A8 + ldr r1, _02232A80 ; =0x00000FCC + str r0, [r4, r1] + mov r0, #0x10 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + nop +_02232A7C: .word 0x000001AD +_02232A80: .word 0x00000FCC + thumb_func_end MOD80_02232A60 + + thumb_func_start MOD80_02232A84 +MOD80_02232A84: ; 0x02232A84 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02232AE0 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02232ADA + sub r1, r1, #1 + cmp r0, r1 + bne _02232AB0 + ldr r0, _02232AE4 ; =0x00000FB8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200D0E0 + mov r0, #1 + str r0, [r4, #0x2c] + b _02232ADA +_02232AB0: + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + add r1, r4, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #2 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl MOD80_0222E7A8 +_02232ADA: + mov r0, #3 + pop {r4, pc} + nop +_02232AE0: .word 0x00000FCC +_02232AE4: .word 0x00000FB8 + thumb_func_end MOD80_02232A84 + + thumb_func_start MOD80_02232AE8 +MOD80_02232AE8: ; 0x02232AE8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02232B02 + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02232B02: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02232AE8 + + thumb_func_start MOD80_02232B08 +MOD80_02232B08: ; 0x02232B08 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02232B2C + ldr r0, _02232B30 ; =0x00000FB8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200D0E0 + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02232B2C: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02232B30: .word 0x00000FB8 + thumb_func_end MOD80_02232B08 + + thumb_func_start MOD80_02232B34 +MOD80_02232B34: ; 0x02232B34 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02232B9C ; =0x00000B34 + add r6, r2, #0 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0xb3 + add r7, r0, #0 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0x1c + ldr r1, [r5, r1] + add r2, r7, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #0x24] + cmp r0, #0 + bne _02232B60 + ldr r0, _02232BA0 ; =0x00000E98 + b _02232B62 +_02232B60: + ldr r0, _02232BA4 ; =0x00000FB8 +_02232B62: + add r4, r5, r0 + add r0, r4, #0 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r6, [sp, #4] + ldr r2, _02232BA8 ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r4, #0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02232B9C: .word 0x00000B34 +_02232BA0: .word 0x00000E98 +_02232BA4: .word 0x00000FB8 +_02232BA8: .word 0x00000B4C + thumb_func_end MOD80_02232B34 + + thumb_func_start MOD80_02232BAC +MOD80_02232BAC: ; 0x02232BAC + push {r3, r4, r5, lr} + add r5, r2, #0 + add r2, r3, #0 + bl FUN_02006704 + add r4, r0, #0 + beq _02232BCE + add r1, r5, #0 + bl FUN_020B0030 + cmp r0, #0 + bne _02232BCE + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, pc} +_02232BCE: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD80_02232BAC + + thumb_func_start MOD80_02232BD4 +MOD80_02232BD4: ; 0x02232BD4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + add r1, r6, #0 + add r2, r5, #0 + str r0, [sp] + add r7, r3, #0 + ldr r4, [sp, #0x28] + bl FUN_0206B6D4 + add r1, r0, #0 + ldr r0, [sp, #0x24] + add r2, sp, #8 + mov r3, #0x3e + bl MOD80_02232BAC + str r0, [sp, #4] + ldr r0, [sp, #8] + add r1, r4, #0 + mov r2, #2 + ldr r0, [r0, #0x14] + add r1, #0xc + lsl r2, r2, #8 + bl MIi_CpuCopyFast + lsl r0, r7, #4 + add r0, #0xc + lsl r0, r0, #5 + str r0, [r4] + ldr r0, [sp, #0x20] + add r1, r5, #0 + str r0, [r4, #8] + ldr r0, [sp] + add r2, r6, #0 + bl FUN_0206B7BC + add r0, r0, #3 + str r0, [r4, #4] + ldr r0, [sp, #4] + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD80_02232BD4 + + thumb_func_start MOD80_02232C2C +MOD80_02232C2C: ; 0x02232C2C + push {r4, lr} + add r4, r1, #0 + bl FUN_020687C8 + strb r0, [r4, #3] + pop {r4, pc} + thumb_func_end MOD80_02232C2C + + thumb_func_start MOD80_02232C38 +MOD80_02232C38: ; 0x02232C38 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _02232C84 ; =0x00001010 + mov r6, #2 + lsl r6, r6, #8 + add r7, r6, #0 + ldr r5, [r0, r1] + str r0, [sp] + mov r4, #0 + add r7, #0xc +_02232C4A: + ldr r0, [r5, #8] + cmp r0, #0 + beq _02232C6E + add r0, r5, #0 + add r0, #0xc + add r1, r6, #0 + bl DC_FlushRange + add r0, r5, #0 + ldr r1, [r5] + add r0, #0xc + add r2, r6, #0 + bl GX_LoadOBJ + ldr r0, [r5, #8] + ldr r1, [r5, #4] + bl FUN_02020248 +_02232C6E: + add r4, r4, #1 + add r5, r5, r7 + cmp r4, #0x1e + blt _02232C4A + ldr r1, _02232C84 ; =0x00001010 + ldr r0, [sp] + ldr r0, [r0, r1] + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232C84: .word 0x00001010 + thumb_func_end MOD80_02232C38 + + thumb_func_start MOD80_02232C88 +MOD80_02232C88: ; 0x02232C88 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + str r1, [sp, #0xc] + add r7, r2, #0 + add r6, r3, #0 + ldr r4, [sp, #0x40] + bl FUN_02066A6C + add r0, r5, #0 + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + str r0, [sp, #0x1c] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + strh r0, [r6] + add r0, r5, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + str r0, [sp, #0x10] + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + str r0, [sp, #0x14] + add r0, r5, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + str r0, [sp, #0x18] + ldrh r0, [r6] + mov r1, #0x6f + mov r2, #0 + strh r0, [r4] + add r0, r5, #0 + bl FUN_020672BC + add r0, r0, #1 + strb r0, [r4, #2] + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02232CF2 + mov r0, #0 + strb r0, [r4, #3] +_02232CF2: + add r0, r5, #0 + mov r1, #1 + bl FUN_02066A94 + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _02232D60 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + str r0, [sp] + ldr r0, [sp, #0x3c] + ldr r2, [sp, #0x14] + str r0, [sp, #4] + ldr r0, [sp, #0x44] + ldr r3, [sp, #0x38] + str r0, [sp, #8] + ldrh r0, [r6] + bl MOD80_02232BD4 + ldr r0, [sp, #0xc] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _02232D54 + add r0, r7, #0 + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #0x18] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _02232D48 + add r0, r7, #0 + mov r1, #0x29 + bl FUN_02020130 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_02232D48: + add r0, r7, #0 + mov r1, #0x28 + bl FUN_02020130 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_02232D54: + add r0, r7, #0 + mov r1, #0 + bl FUN_020200A0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_02232D60: + ldr r0, [sp, #0xc] + mov r1, #0 + bl FUN_020200A0 + add r0, r7, #0 + mov r1, #0 + bl FUN_020200A0 + ldr r0, [sp, #0x44] + mov r1, #0 + str r1, [r0, #8] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD80_02232C88 + + thumb_func_start MOD80_02232D7C +MOD80_02232D7C: ; 0x02232D7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x68 + add r5, r0, #0 + ldr r0, [r5] + str r1, [sp, #0x10] + ldr r0, [r0, #0xc] + ldr r1, _02232F7C ; =0x00003D68 + str r0, [sp, #0x20] + mov r0, #3 + bl FUN_020169D8 + ldr r1, _02232F80 ; =0x00001010 + str r0, [sp, #0x18] + str r0, [r5, r1] + mov r0, #0x13 + mov r1, #0x3e + bl FUN_02006670 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r0, #0 + blt _02232E3A + cmp r0, #0x12 + bge _02232E3A + ldr r6, _02232F84 ; =0x00001004 + mov r4, #0 +_02232DB0: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x10] + add r2, r4, #0 + bl FUN_0206B5E4 + ldr r2, [r5, r6] + lsl r1, r4, #2 + add r1, r2, r1 + bl MOD80_02232C2C + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x1e + blo _02232DB0 + mov r4, #0 +_02232DD0: + ldr r0, _02232F84 ; =0x00001004 + lsl r6, r4, #2 + ldr r1, [r5, r0] + mov r0, #0 + strh r0, [r1, r6] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x10] + add r2, r4, #0 + add r7, r5, r6 + bl FUN_0206B5E4 + ldr r1, [sp, #0x1c] + str r4, [sp] + str r1, [sp, #4] + ldr r1, _02232F84 ; =0x00001004 + add r2, r4, #0 + ldr r1, [r5, r1] + add r3, sp, #0x2c + add r1, r1, r6 + str r1, [sp, #8] + mov r1, #0x83 + lsl r1, r1, #2 + mul r2, r1 + ldr r1, [sp, #0x18] + lsl r6, r4, #1 + add r1, r1, r2 + str r1, [sp, #0xc] + ldr r1, _02232F88 ; =0x00000D64 + ldr r2, _02232F8C ; =0x00000DDC + ldr r1, [r7, r1] + ldr r2, [r7, r2] + add r3, r3, r6 + bl MOD80_02232C88 + cmp r4, #6 + bhs _02232E22 + ldr r0, _02232F90 ; =0x00000E54 + mov r1, #0 + ldr r0, [r7, r0] + bl FUN_020200A0 +_02232E22: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x1e + blo _02232DD0 + ldr r2, _02232F94 ; =0x00000B44 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x10] + ldr r2, [r5, r2] + bl FUN_0206B484 + b _02232F22 +_02232E3A: + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_0206B9AC + mov r4, #0 + str r0, [sp, #0x14] + cmp r0, #0 + ble _02232EC8 +_02232E4A: + ldr r0, [r5] + add r1, r4, #0 + ldr r0, [r0, #8] + bl FUN_0206B9B0 + str r0, [sp, #0x24] + bl FUN_020690E4 + ldr r1, _02232F84 ; =0x00001004 + lsl r6, r4, #2 + ldr r1, [r5, r1] + str r0, [sp, #0x28] + add r1, r1, r6 + bl MOD80_02232C2C + ldr r0, [sp, #0x1c] + str r4, [sp] + str r0, [sp, #4] + ldr r0, _02232F84 ; =0x00001004 + add r1, r4, #0 + ldr r0, [r5, r0] + ldr r2, _02232F8C ; =0x00000DDC + add r0, r0, r6 + str r0, [sp, #8] + mov r0, #0x83 + lsl r0, r0, #2 + mul r1, r0 + ldr r0, [sp, #0x18] + add r7, r5, r6 + add r0, r0, r1 + str r0, [sp, #0xc] + ldr r1, _02232F88 ; =0x00000D64 + ldr r0, [sp, #0x28] + ldr r1, [r7, r1] + ldr r2, [r7, r2] + lsl r6, r4, #1 + add r3, sp, #0x2c + add r3, r3, r6 + bl MOD80_02232C88 + ldr r0, [sp, #0x24] + mov r1, #0xa1 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + ldr r0, _02232F90 ; =0x00000E54 + beq _02232EB4 + ldr r0, [r7, r0] + mov r1, #1 + bl FUN_020200A0 + b _02232EBC +_02232EB4: + ldr r0, [r7, r0] + mov r1, #0 + bl FUN_020200A0 +_02232EBC: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [sp, #0x14] + cmp r4, r0 + blt _02232E4A +_02232EC8: + cmp r4, #0x1e + bhs _02232F14 + mov r7, #0 +_02232ECE: + ldr r0, _02232F84 ; =0x00001004 + lsl r1, r4, #2 + ldr r0, [r5, r0] + add r6, r5, r1 + strh r7, [r0, r1] + ldr r0, _02232F88 ; =0x00000D64 + add r1, r7, #0 + ldr r0, [r6, r0] + bl FUN_020200A0 + ldr r0, _02232F8C ; =0x00000DDC + mov r1, #0 + ldr r0, [r6, r0] + bl FUN_020200A0 + mov r0, #0x83 + lsl r0, r0, #2 + add r1, r4, #0 + mul r1, r0 + ldr r0, [sp, #0x18] + add r1, r0, r1 + mov r0, #0 + str r0, [r1, #8] + cmp r4, #6 + bhs _02232F0A + ldr r0, _02232F90 ; =0x00000E54 + mov r1, #0 + ldr r0, [r6, r0] + bl FUN_020200A0 +_02232F0A: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x1e + blo _02232ECE +_02232F14: + ldr r2, _02232F98 ; =0x00000B34 + mov r1, #0x59 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + bl FUN_0200A8E0 +_02232F22: + ldr r0, [sp, #0x1c] + bl FUN_020066F4 + ldr r0, _02232F9C ; =0x00000EC8 + mov r1, #0 + add r0, r5, r0 + bl FUN_02019620 + mov r0, #1 + str r0, [sp] + ldr r0, _02232FA0 ; =0x00010200 + ldr r1, _02232F94 ; =0x00000B44 + str r0, [sp, #4] + ldr r0, _02232F9C ; =0x00000EC8 + ldr r1, [r5, r1] + add r0, r5, r0 + mov r2, #0 + mov r3, #5 + bl MOD80_02236D50 + ldr r0, [r5, #0x24] + cmp r0, #6 + bne _02232F72 + add r3, r5, #0 + add r3, #0xc4 + mov r2, #0xba + ldr r4, [r3] + mov r3, #0x49 + ldr r0, _02232F84 ; =0x00001004 + lsl r2, r2, #2 + lsl r3, r3, #2 + ldr r1, _02232F88 ; =0x00000D64 + add r2, r5, r2 + mul r3, r4 + add r2, r2, r3 + ldr r0, [r5, r0] + ldr r3, [sp, #0x18] + add r1, r5, r1 + bl MOD80_022331C4 +_02232F72: + ldr r1, _02232FA4 ; =MOD80_02232C38 + ldr r0, _02232FA8 ; =0x00001014 + str r1, [r5, r0] + add sp, #0x68 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232F7C: .word 0x00003D68 +_02232F80: .word 0x00001010 +_02232F84: .word 0x00001004 +_02232F88: .word 0x00000D64 +_02232F8C: .word 0x00000DDC +_02232F90: .word 0x00000E54 +_02232F94: .word 0x00000B44 +_02232F98: .word 0x00000B34 +_02232F9C: .word 0x00000EC8 +_02232FA0: .word 0x00010200 +_02232FA4: .word MOD80_02232C38 +_02232FA8: .word 0x00001014 + thumb_func_end MOD80_02232D7C + + thumb_func_start MOD80_02232FAC +MOD80_02232FAC: ; 0x02232FAC + cmp r0, #0x12 + bne _02232FB4 + mov r0, #1 + bx lr +_02232FB4: + mov r0, #0 + bx lr + thumb_func_end MOD80_02232FAC + + thumb_func_start MOD80_02232FB8 +MOD80_02232FB8: ; 0x02232FB8 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r7, r1, #0 + add r4, r3, #0 + bl MOD80_02232FAC + cmp r0, #0 + beq _02232FEA + add r0, r5, #0 + bl FUN_0206B9AC + sub r0, r0, #1 + cmp r4, r0 + ble _02232FDC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02232FDC: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + bl FUN_020690E4 + pop {r3, r4, r5, r6, r7, pc} +_02232FEA: + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0206B5E4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD80_02232FB8 + + thumb_func_start MOD80_02232FF8 +MOD80_02232FF8: ; 0x02232FF8 + push {r4, lr} + add r4, r0, #0 + add r0, r2, #0 + bl MOD80_02232FAC + cmp r0, #0 + beq _02233014 + add r0, r4, #0 + bl FUN_0206B9AC + cmp r0, #2 + bge _02233014 + mov r0, #0 + pop {r4, pc} +_02233014: + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD80_02232FF8 + + thumb_func_start MOD80_02233018 +MOD80_02233018: ; 0x02233018 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r4, #0 + bl FUN_02066A6C + ldr r5, _02233050 ; =0x02237220 + str r0, [sp] + add r6, r4, #0 +_02233028: + ldrh r1, [r5] + add r0, r7, #0 + mov r2, #0 + bl FUN_020672BC + add r6, r6, #1 + add r4, r4, r0 + add r5, r5, #2 + cmp r6, #0xa + blt _02233028 + ldr r1, [sp] + add r0, r7, #0 + bl FUN_02066A94 + cmp r4, #0 + beq _0223304C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223304C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233050: .word 0x02237220 + thumb_func_end MOD80_02233018 + + thumb_func_start MOD80_02233054 +MOD80_02233054: ; 0x02233054 + push {r4, lr} + bl MOD80_02232FB8 + add r4, r0, #0 + bne _02233062 + mov r0, #0 + pop {r4, pc} +_02233062: + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _02233072 + mov r0, #0 + pop {r4, pc} +_02233072: + add r0, r4, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _02233084 + mov r0, #2 + pop {r4, pc} +_02233084: + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD80_02233054 + + thumb_func_start MOD80_02233088 +MOD80_02233088: ; 0x02233088 + push {r3, r4} + mov r4, #0 + ldrsh r3, [r0, r4] + ldrsh r2, [r1, r4] + cmp r3, r2 + beq _0223309A + add r0, r4, #0 + pop {r3, r4} + bx lr +_0223309A: + mov r2, #2 + ldrsb r3, [r1, r2] + cmp r3, #3 + beq _022330AE + ldrsb r2, [r0, r2] + cmp r3, r2 + beq _022330AE + add r0, r4, #0 + pop {r3, r4} + bx lr +_022330AE: + mov r2, #3 + ldrsb r3, [r0, r2] + cmp r3, #0 + bne _022330BC + mov r0, #0 + pop {r3, r4} + bx lr +_022330BC: + ldrsb r0, [r1, r2] + cmp r0, #0 + beq _022330CC + cmp r0, r3 + ble _022330CC + mov r0, #0 + pop {r3, r4} + bx lr +_022330CC: + mov r0, #4 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _022330DE + cmp r0, r3 + bge _022330DE + mov r0, #0 + pop {r3, r4} + bx lr +_022330DE: + mov r0, #1 + pop {r3, r4} + bx lr + thumb_func_end MOD80_02233088 + + thumb_func_start MOD80_022330E4 +MOD80_022330E4: ; 0x022330E4 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #5 + mov r2, #0 + add r5, r0, #0 + bl FUN_020672BC + add r1, sp, #0 + strh r0, [r1] + add r0, r5, #0 + mov r1, #0x6f + mov r2, #0 + bl FUN_020672BC + add r1, r0, #1 + add r0, sp, #0 + strb r1, [r0, #2] + add r0, r5, #0 + bl FUN_020687C8 + add r1, sp, #0 + strb r0, [r1, #3] + add r0, sp, #0 + add r1, r4, #0 + bl MOD80_02233088 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD80_022330E4 + + thumb_func_start MOD80_0223311C +MOD80_0223311C: ; 0x0223311C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + add r1, sp, #0 + strh r0, [r1, #6] + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #0x6f + mov r2, #0 + bl FUN_020672BC + add r1, r0, #1 + add r0, sp, #0 + strb r1, [r0, #8] + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_020687C8 + add r1, sp, #0 + strb r0, [r1, #9] + add r0, r4, #0 + ldrh r2, [r1, #6] + add r0, #0xec + strh r2, [r0] + add r0, r4, #0 + ldrh r1, [r1, #8] + add r0, #0xee + strh r1, [r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD80_02234288 + mov r0, #0x7e + lsl r0, r0, #2 + add r2, r5, r0 + add r5, #0xc4 + ldr r1, [r5] + sub r0, #0xd4 + mul r0, r1 + add r0, r2, r0 + bl FUN_020690E4 + mov r1, #5 + mov r2, #0 + add r5, r0, #0 + bl FUN_020672BC + add r1, sp, #0 + strh r0, [r1] + add r0, r5, #0 + mov r1, #0x6f + mov r2, #0 + bl FUN_020672BC + add r0, r0, #1 + add r1, sp, #0 + strb r0, [r1, #2] + mov r0, #0 + strb r0, [r1, #3] + strb r0, [r1, #4] + add r0, r4, #0 + ldrh r2, [r1] + add r0, #0xf0 + strh r2, [r0] + add r0, r4, #0 + ldrh r2, [r1, #2] + add r0, #0xf2 + add r4, #0xf4 + strh r2, [r0] + ldrh r0, [r1, #4] + strh r0, [r4] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD80_0223311C + + thumb_func_start MOD80_022331C4 +MOD80_022331C4: ; 0x022331C4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r2, #0 + add r4, r3, #0 + mov r6, #0 +_022331CE: + mov r0, #0 + ldrsh r0, [r5, r0] + cmp r0, #0 + beq _022331E8 + add r0, r5, #0 + add r1, r7, #0 + bl MOD80_02233088 + cmp r0, #0 + bne _022331E8 + ldr r0, [r4, #4] + add r0, r0, #3 + str r0, [r4, #4] +_022331E8: + mov r0, #0x83 + lsl r0, r0, #2 + add r6, r6, #1 + add r5, r5, #4 + add r4, r4, r0 + cmp r6, #0x1e + blt _022331CE + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD80_022331C4 + + thumb_func_start MOD80_022331F8 +MOD80_022331F8: ; 0x022331F8 + push {r3, lr} + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _02233212 + mov r0, #1 + pop {r3, pc} +_02233212: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD80_022331F8 + + thumb_func_start MOD80_02233218 +MOD80_02233218: ; 0x02233218 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_02233618 + ldr r0, [r4, #4] + bl MOD80_02233358 + add r0, r4, #0 + bl MOD80_0223346C + add r0, r4, #0 + bl MOD80_02233500 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + add r0, r4, #0 + bl MOD80_02236D84 + mov r0, #0 + str r0, [sp] + mov r0, #3 + ldr r2, _02233298 ; =0x00000B34 + str r0, [sp, #4] + sub r0, r0, #4 + str r0, [sp, #8] + add r1, r2, #4 + ldr r0, [r4, r2] + sub r2, r2, #4 + ldr r3, _0223329C ; =0x00000F08 + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r3, r4, r3 + bl MOD80_02233FB4 + ldr r1, _022332A0 ; =0x00000B18 + add r3, r4, #0 + add r0, r4, r1 + str r0, [sp] + add r0, r1, #0 + add r0, #0x1c + add r1, #0x18 + ldr r2, _022332A4 ; =0x00000F38 + add r3, #0xbc + ldr r0, [r4, r0] + ldr r1, [r4, r1] + ldr r3, [r3] + add r2, r4, r2 + bl MOD80_022340DC + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02233298: .word 0x00000B34 +_0223329C: .word 0x00000F08 +_022332A0: .word 0x00000B18 +_022332A4: .word 0x00000F38 + thumb_func_end MOD80_02233218 + + thumb_func_start MOD80_022332A8 +MOD80_022332A8: ; 0x022332A8 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222E79C + bl FUN_02033EEC + ldr r1, [r4, #0x2c] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022332C4 ; =0x02237B84 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_022332C4: .word 0x02237B84 + thumb_func_end MOD80_022332A8 + + thumb_func_start MOD80_022332C8 +MOD80_022332C8: ; 0x022332C8 + push {r4, lr} + add r4, r0, #0 + bl FUN_02033ED0 + add r0, r4, #0 + bl MOD80_02233684 + add r0, r4, #0 + bl MOD80_022335E0 + ldr r0, [r4, #4] + bl MOD80_02233440 + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD80_022332C8 + + thumb_func_start MOD80_022332EC +MOD80_022332EC: ; 0x022332EC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _0223334C ; =0x00000B34 + add r4, r2, #0 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0xb3 + add r6, r0, #0 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0x1c + ldr r1, [r5, r1] + add r2, r6, #0 + bl FUN_0200B7B8 + ldr r0, _02233350 ; =0x00000E98 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _02233350 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, _02233350 ; =0x00000E98 + ldr r2, _02233354 ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223334C: .word 0x00000B34 +_02233350: .word 0x00000E98 +_02233354: .word 0x00000B4C + thumb_func_end MOD80_022332EC + + thumb_func_start MOD80_02233358 +MOD80_02233358: ; 0x02233358 + push {r4, r5, lr} + sub sp, #0x8c + ldr r5, _0223342C ; =0x02237420 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x70 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _02233430 ; =0x0223743C + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _02233434 ; =0x02237458 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _02233438 ; =0x02237404 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _0223343C ; =0x022373E8 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + add sp, #0x8c + pop {r4, r5, pc} + nop +_0223342C: .word 0x02237420 +_02233430: .word 0x0223743C +_02233434: .word 0x02237458 +_02233438: .word 0x02237404 +_0223343C: .word 0x022373E8 + thumb_func_end MOD80_02233358 + + thumb_func_start MOD80_02233440 +MOD80_02233440: ; 0x02233440 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_02233440 + + thumb_func_start MOD80_0223346C +MOD80_0223346C: ; 0x0223346C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x60 + str r0, [sp] + mov r0, #0x3e + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x68 + mov r1, #1 + add r3, r2, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0xb + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x68 + mov r1, #0x17 + add r2, r4, #0 + bl FUN_020068C8 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD80_0223346C + + thumb_func_start MOD80_02233500 +MOD80_02233500: ; 0x02233500 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r3, #1 + add r7, r0, #0 + str r3, [sp] + mov r0, #0x1c + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + ldr r1, _022335CC ; =0x00000EB8 + str r0, [sp, #0x10] + ldr r0, [r7, #4] + add r1, r7, r1 + mov r2, #0 + bl FUN_02019064 + ldr r0, _022335CC ; =0x00000EB8 + mov r1, #0 + add r0, r7, r0 + bl FUN_02019620 + mov r2, #0 + mov r1, #0xb5 + ldr r0, _022335D0 ; =0x000F0E00 + str r2, [sp] + str r0, [sp, #4] + ldr r0, _022335CC ; =0x00000EB8 + lsl r1, r1, #4 + ldr r1, [r7, r1] + add r0, r7, r0 + mov r3, #1 + bl MOD80_02236D1C + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + ldr r1, _022335D4 ; =0x00000E98 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x60 + str r0, [sp, #0x10] + ldr r0, [r7, #4] + add r1, r7, r1 + mov r2, #0 + bl FUN_02019064 + ldr r0, _022335D4 ; =0x00000E98 + mov r1, #0 + add r0, r7, r0 + bl FUN_02019620 + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _022335D8 ; =0x00000F08 + ldr r4, _022335DC ; =0x022373D0 + mov r6, #0x96 + add r5, r7, r0 +_0223357E: + ldrh r0, [r4, #2] + add r1, r5, #0 + mov r2, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldrh r3, [r4] + ldr r0, [r7, #4] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + bl FUN_020191D0 + ldr r0, [sp, #0x14] + add r6, #0x16 + add r0, r0, #1 + add r4, r4, #4 + add r5, #0x10 + str r0, [sp, #0x14] + cmp r0, #6 + blt _0223357E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022335CC: .word 0x00000EB8 +_022335D0: .word 0x000F0E00 +_022335D4: .word 0x00000E98 +_022335D8: .word 0x00000F08 +_022335DC: .word 0x022373D0 + thumb_func_end MOD80_02233500 + + thumb_func_start MOD80_022335E0 +MOD80_022335E0: ; 0x022335E0 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _0223360C ; =0x00000F08 + mov r4, #0 + add r5, r6, r0 +_022335EA: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #6 + blt _022335EA + ldr r0, _02233610 ; =0x00000E98 + add r0, r6, r0 + bl FUN_02019178 + ldr r0, _02233614 ; =0x00000EB8 + add r0, r6, r0 + bl FUN_02019178 + pop {r4, r5, r6, pc} + nop +_0223360C: .word 0x00000F08 +_02233610: .word 0x00000E98 +_02233614: .word 0x00000EB8 + thumb_func_end MOD80_022335E0 + + thumb_func_start MOD80_02233618 +MOD80_02233618: ; 0x02233618 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _02233680 ; =0x00000B4C + str r0, [r4, r1] + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #0x5a + bl FUN_0200A914 + mov r1, #0xb5 + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #0x3e + mov r1, #0x30 + bl FUN_02016998 + mov r1, #0xfe + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r1, [r4, r1] + mov r0, #0 + mov r2, #0x30 + bl MIi_CpuClearFast + mov r2, #0xfe + lsl r2, r2, #4 + ldr r2, [r4, r2] + mov r0, #0x3e + mov r1, #0 + add r2, #0x1c + bl MOD80_02234204 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r0, [r1, #0x18] + mov r0, #0x3e + bl MOD80_02234228 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r2, [r4, r1] + add r1, #0x38 + str r0, [r2, #0x14] + add r0, r4, r1 + bl MOD80_022346D8 + pop {r4, pc} + .align 2, 0 +_02233680: .word 0x00000B4C + thumb_func_end MOD80_02233618 + + thumb_func_start MOD80_02233684 +MOD80_02233684: ; 0x02233684 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x14] + bl FUN_02016A18 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x18] + bl FUN_02016A18 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _022336C0 ; =0x00000B4C + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0xb5 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + nop +_022336C0: .word 0x00000B4C + thumb_func_end MOD80_02233684 + + thumb_func_start MOD80_022336C4 +MOD80_022336C4: ; 0x022336C4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _022336EC + ldr r0, _022336F4 ; =0x00000F0F + mov r1, #9 + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + mov r3, #0 + bl MOD80_022332EC + add r0, r4, #0 + mov r1, #0x10 + mov r2, #1 + bl MOD80_0222E6DC +_022336EC: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_022336F4: .word 0x00000F0F + thumb_func_end MOD80_022336C4 + + thumb_func_start MOD80_022336F8 +MOD80_022336F8: ; 0x022336F8 + push {r3, r4, lr} + sub sp, #0x14 + ldr r1, _02233770 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #2 + tst r1, r2 + beq _02233714 + mov r1, #5 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r4, #0x2c] +_02233714: + mov r0, #5 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _02233774 ; =0x0000011A + ldr r1, _02233778 ; =0x00000ED8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0xf + bl FUN_02019064 + ldr r0, _02233778 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #5 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _0223377C ; =0x0000014E + ldr r1, _02233780 ; =0x00000EE8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x15 + bl FUN_02019064 + ldr r0, _02233780 ; =0x00000EE8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #3 + str r0, [r4, #0x2c] + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_02233770: .word 0x021C48B8 +_02233774: .word 0x0000011A +_02233778: .word 0x00000ED8 +_0223377C: .word 0x0000014E +_02233780: .word 0x00000EE8 + thumb_func_end MOD80_022336F8 + + thumb_func_start MOD80_02233784 +MOD80_02233784: ; 0x02233784 + push {r4, lr} + ldr r2, _022337AC ; =0x00000FC8 + add r4, r0, #0 + ldr r3, _022337B0 ; =0x00000B34 + add r1, r4, r2 + sub r2, #0xf0 + ldr r3, [r4, r3] + add r2, r4, r2 + bl MOD80_02234370 + ldr r1, _022337B4 ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _022337B8 ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #4 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_022337AC: .word 0x00000FC8 +_022337B0: .word 0x00000B34 +_022337B4: .word 0x00000FD4 +_022337B8: .word 0x0000FFFF + thumb_func_end MOD80_02233784 + + thumb_func_start MOD80_022337BC +MOD80_022337BC: ; 0x022337BC + push {r4, lr} + add r4, r0, #0 + ldr r0, _02233878 ; =0x00000FD4 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0xb0 + bl MOD80_02234698 + cmp r0, #9 + bhi _022337F0 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022337DC: ; jump table + .short _02233872 - _022337DC - 2 ; case 0 + .short _022337FA - _022337DC - 2 ; case 1 + .short _022337FA - _022337DC - 2 ; case 2 + .short _022337FA - _022337DC - 2 ; case 3 + .short _022337FA - _022337DC - 2 ; case 4 + .short _022337FA - _022337DC - 2 ; case 5 + .short _022337FA - _022337DC - 2 ; case 6 + .short _022337FA - _022337DC - 2 ; case 7 + .short _022337FA - _022337DC - 2 ; case 8 + .short _022337FA - _022337DC - 2 ; case 9 +_022337F0: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02233820 + b _02233872 +_022337FA: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #6 + ldr r0, [r4, r0] + add r2, r2, #4 + bl FUN_02001300 + ldr r0, _0223387C ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + mov r0, #5 + str r0, [r4, #0x2c] + ldr r0, _02233880 ; =0x000005DC + bl FUN_020054C8 + b _02233872 +_02233820: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #6 + ldr r0, [r4, r0] + add r2, r2, #4 + bl FUN_02001300 + ldr r0, _0223387C ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r0, _02233884 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _02233888 ; =0x00000E98 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200D0E0 + ldr r0, _02233884 ; =0x00000ED8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _0223388C ; =0x00000EE8 + add r0, r4, r0 + bl FUN_02019178 + mov r1, #5 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r4, #0x2c] + ldr r0, _02233880 ; =0x000005DC + bl FUN_020054C8 +_02233872: + mov r0, #3 + pop {r4, pc} + nop +_02233878: .word 0x00000FD4 +_0223387C: .word 0x00000FC8 +_02233880: .word 0x000005DC +_02233884: .word 0x00000ED8 +_02233888: .word 0x00000E98 +_0223388C: .word 0x00000EE8 + thumb_func_end MOD80_022337BC + + thumb_func_start MOD80_02233890 +MOD80_02233890: ; 0x02233890 + push {r3, r4, lr} + sub sp, #0xc + ldr r3, _022338D4 ; =0x00000B38 + add r4, r0, #0 + ldr r1, [r4, r3] + mov r2, #0xfe + lsl r2, r2, #4 + str r1, [sp] + ldr r1, [r4, r2] + sub r3, r3, #4 + str r1, [sp, #4] + ldr r1, [r4] + ldr r1, [r1, #0x10] + str r1, [sp, #8] + add r1, r2, #0 + sub r1, #0x18 + sub r2, #0xf8 + ldr r3, [r4, r3] + add r1, r4, r1 + add r2, r4, r2 + bl MOD80_022344DC + ldr r1, _022338D8 ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _022338DC ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #6 + str r0, [r4, #0x2c] + mov r0, #3 + add sp, #0xc + pop {r3, r4, pc} + nop +_022338D4: .word 0x00000B38 +_022338D8: .word 0x00000FD4 +_022338DC: .word 0x0000FFFF + thumb_func_end MOD80_02233890 + + thumb_func_start MOD80_022338E0 +MOD80_022338E0: ; 0x022338E0 + cmp r1, #0 + beq _022338EE + cmp r1, #0xfe + beq _022338F6 + cmp r1, #0xff + beq _022338FE + b _02233906 +_022338EE: + mov r1, #1 + strb r1, [r0, #2] + add r0, r1, #0 + bx lr +_022338F6: + mov r1, #2 + strb r1, [r0, #2] + mov r0, #1 + bx lr +_022338FE: + mov r1, #3 + strb r1, [r0, #2] + mov r0, #1 + bx lr +_02233906: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD80_022338E0 + + thumb_func_start MOD80_0223390C +MOD80_0223390C: ; 0x0223390C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _02233A4C ; =0x00000FD4 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0xb0 + bl MOD80_02234698 + add r5, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _02233932 + add r0, r0, #1 + cmp r5, r0 + bne _02233930 + b _02233A44 +_02233930: + b _0223398C +_02233932: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #0 + ldr r0, [r4, r0] + add r1, #0xa + add r2, #8 + bl FUN_02001300 + ldr r0, _02233A50 ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r0, _02233A54 ; =0x00000EE8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _02233A58 ; =0x00000ED8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02233A54 ; =0x00000EE8 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r0, _02233A5C ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r3, [r4, r0] + add r0, #0x38 + ldrh r2, [r3, #6] + ldrh r1, [r3, #4] + add r0, r4, r0 + add r1, r2, r1 + ldrh r2, [r3, #0xa] + ldrh r3, [r3, #8] + bl MOD80_022346F0 + b _02233A44 +_0223398C: + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r4, r0] + sub r0, #0xc + add r1, r2, #0 + ldr r0, [r4, r0] + add r1, #0xa + add r2, #8 + bl FUN_02001300 + ldr r0, _02233A50 ; =0x00000FC8 + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r0, _02233A58 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _02233A54 ; =0x00000EE8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + ldr r0, _02233A58 ; =0x00000ED8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02233A54 ; =0x00000EE8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02233A60 ; =0x00000B1C + strh r5, [r4, r0] + ldr r0, _02233A5C ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0x12 + bl FUN_02068678 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r2, [r4, r1] + str r0, [r2, #0x20] + ldr r1, [r4, r1] + ldr r0, _02233A60 ; =0x00000B1C + ldr r1, [r1, #0x20] + add r0, r4, r0 + bl MOD80_022338E0 + cmp r0, #0 + beq _02233A00 + mov r0, #0xa + str r0, [r4, #0x2c] + ldr r0, _02233A64 ; =0x00000B1E + ldrsb r1, [r4, r0] + b _02233A06 +_02233A00: + mov r0, #7 + str r0, [r4, #0x2c] + mov r1, #3 +_02233A06: + ldr r2, _02233A60 ; =0x00000B1C + ldr r3, _02233A68 ; =0x00000F08 + ldrsh r0, [r4, r2] + add r3, r4, r3 + str r0, [sp] + mov r0, #0 + str r1, [sp, #4] + mvn r0, r0 + str r0, [sp, #8] + add r0, r2, #0 + add r1, r2, #0 + add r0, #0x18 + add r1, #0x1c + add r2, #0x14 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + ldr r2, [r4, r2] + bl MOD80_02233FB4 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r3, [r4, r0] + add r0, #0x38 + ldrh r2, [r3, #6] + ldrh r1, [r3, #4] + add r0, r4, r0 + add r1, r2, r1 + ldrh r2, [r3, #0xa] + ldrh r3, [r3, #8] + bl MOD80_022346F0 +_02233A44: + mov r0, #3 + add sp, #0xc + pop {r4, r5, pc} + nop +_02233A4C: .word 0x00000FD4 +_02233A50: .word 0x00000FC8 +_02233A54: .word 0x00000EE8 +_02233A58: .word 0x00000ED8 +_02233A5C: .word 0x000005DC +_02233A60: .word 0x00000B1C +_02233A64: .word 0x00000B1E +_02233A68: .word 0x00000F08 + thumb_func_end MOD80_0223390C + + thumb_func_start MOD80_02233A6C +MOD80_02233A6C: ; 0x02233A6C + push {r3, r4, lr} + sub sp, #0x14 + ldr r1, _02233ABC ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0xa + mov r2, #1 + mov r3, #0 + bl MOD80_022332EC + add r0, r4, #0 + mov r1, #0x10 + mov r2, #8 + bl MOD80_0222E6DC + mov r0, #0xa + str r0, [sp] + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02233AC0 ; =0x0000011A + ldr r1, _02233AC4 ; =0x00000ED8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x15 + bl FUN_02019064 + ldr r0, _02233AC4 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02233ABC: .word 0x00000F0F +_02233AC0: .word 0x0000011A +_02233AC4: .word 0x00000ED8 + thumb_func_end MOD80_02233A6C + + thumb_func_start MOD80_02233AC8 +MOD80_02233AC8: ; 0x02233AC8 + push {r4, lr} + ldr r1, _02233AF0 ; =0x00000FC8 + add r4, r0, #0 + ldr r2, _02233AF4 ; =0x00000B34 + add r0, r4, r1 + sub r1, #0xf0 + ldr r2, [r4, r2] + add r1, r4, r1 + bl MOD80_02234560 + ldr r1, _02233AF8 ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _02233AFC ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #9 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02233AF0: .word 0x00000FC8 +_02233AF4: .word 0x00000B34 +_02233AF8: .word 0x00000FD4 +_02233AFC: .word 0x0000FFFF + thumb_func_end MOD80_02233AC8 + + thumb_func_start MOD80_02233B00 +MOD80_02233B00: ; 0x02233B00 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02233BCC ; =0x00000FD4 + add r1, r5, #0 + ldr r0, [r5, r0] + add r1, #0xb0 + bl MOD80_02234698 + add r4, r0, #0 + cmp r4, #2 + bhi _02233B26 + cmp r4, #0 + beq _02233B6A + cmp r4, #1 + beq _02233B6A + cmp r4, #2 + beq _02233B6A + b _02233BC6 +_02233B26: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _02233BC6 + ldr r0, _02233BCC ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _02233BD0 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02233BD4 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _02233BD8 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200D0E0 + ldr r0, _02233BD4 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02233BDC ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r5, #0x2c] + b _02233BC6 +_02233B6A: + ldr r0, _02233BCC ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _02233BD0 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02233BD4 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _02233BD4 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02233BDC ; =0x000005DC + bl FUN_020054C8 + ldr r3, _02233BE0 ; =0x00000F08 + ldr r2, _02233BE4 ; =0x00000B1E + add r0, r4, #1 + strb r0, [r5, r2] + mov r1, #0xa + str r1, [r5, #0x2c] + sub r0, r2, #2 + ldrsh r0, [r5, r0] + sub r1, #0xb + add r3, r5, r3 + str r0, [sp] + ldrsb r0, [r5, r2] + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + add r1, r2, #0 + add r0, #0x16 + add r1, #0x1a + add r2, #0x12 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl MOD80_02233FB4 +_02233BC6: + mov r0, #3 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233BCC: .word 0x00000FD4 +_02233BD0: .word 0x00000FC8 +_02233BD4: .word 0x00000ED8 +_02233BD8: .word 0x00000E98 +_02233BDC: .word 0x000005DC +_02233BE0: .word 0x00000F08 +_02233BE4: .word 0x00000B1E + thumb_func_end MOD80_02233B00 + + thumb_func_start MOD80_02233BE8 +MOD80_02233BE8: ; 0x02233BE8 + push {r3, r4, lr} + sub sp, #0x14 + ldr r1, _02233C38 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0xb + mov r2, #1 + mov r3, #0 + bl MOD80_022332EC + add r0, r4, #0 + mov r1, #0x10 + mov r2, #0xb + bl MOD80_0222E6DC + mov r0, #5 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _02233C3C ; =0x0000011A + ldr r1, _02233C40 ; =0x00000ED8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0xf + bl FUN_02019064 + ldr r0, _02233C40 ; =0x00000ED8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #3 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02233C38: .word 0x00000F0F +_02233C3C: .word 0x0000011A +_02233C40: .word 0x00000ED8 + thumb_func_end MOD80_02233BE8 + + thumb_func_start MOD80_02233C44 +MOD80_02233C44: ; 0x02233C44 + push {r4, lr} + ldr r1, _02233C6C ; =0x00000FC8 + add r4, r0, #0 + ldr r2, _02233C70 ; =0x00000B34 + add r0, r4, r1 + sub r1, #0xf0 + ldr r2, [r4, r2] + add r1, r4, r1 + bl MOD80_022345D0 + ldr r1, _02233C74 ; =0x00000FD4 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, _02233C78 ; =0x0000FFFF + add r0, #0xb0 + strh r1, [r0] + mov r0, #0xc + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02233C6C: .word 0x00000FC8 +_02233C70: .word 0x00000B34 +_02233C74: .word 0x00000FD4 +_02233C78: .word 0x0000FFFF + thumb_func_end MOD80_02233C44 + + thumb_func_start MOD80_02233C7C +MOD80_02233C7C: ; 0x02233C7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02233D6C ; =0x00000FD4 + add r1, r5, #0 + ldr r0, [r5, r0] + add r1, #0xb0 + bl MOD80_02234698 + add r4, r0, #0 + cmp r4, #0xc + beq _02233CA4 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02233CA4 + add r0, r0, #1 + cmp r4, r0 + beq _02233D66 + b _02233CFA +_02233CA4: + ldr r0, _02233D6C ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _02233D70 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02233D74 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _02233D78 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200D0E0 + ldr r0, _02233D74 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02233D7C ; =0x000005DC + bl FUN_020054C8 + mov r1, #0xfe + lsl r1, r1, #4 + ldr r1, [r5, r1] + ldr r0, _02233D80 ; =0x00000B1C + ldr r1, [r1, #0x20] + add r0, r5, r0 + bl MOD80_022338E0 + cmp r0, #0 + beq _02233CF4 + mov r0, #0 + str r0, [r5, #0x2c] + b _02233D66 +_02233CF4: + mov r0, #7 + str r0, [r5, #0x2c] + b _02233D66 +_02233CFA: + ldr r0, _02233D7C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02233D6C ; =0x00000FD4 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _02233D70 ; =0x00000FC8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02233D74 ; =0x00000ED8 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _02233D74 ; =0x00000ED8 + add r0, r5, r0 + bl FUN_02019178 + ldr r0, _02233D80 ; =0x00000B1C + add r1, r4, #0 + add r0, r5, r0 + bl MOD80_02234640 + mov r0, #0xd + ldr r1, _02233D84 ; =0x00000B1F + str r0, [r5, #0x2c] + ldrsb r0, [r5, r1] + add r1, r1, #1 + ldrsb r1, [r5, r1] + bl MOD80_02234668 + ldr r2, _02233D80 ; =0x00000B1C + ldr r3, _02233D88 ; =0x00000F08 + ldrsh r1, [r5, r2] + add r3, r5, r3 + str r1, [sp] + add r1, r2, #2 + ldrsb r1, [r5, r1] + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r2, #0 + add r1, r2, #0 + add r0, #0x18 + add r1, #0x1c + add r2, #0x14 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl MOD80_02233FB4 +_02233D66: + mov r0, #3 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233D6C: .word 0x00000FD4 +_02233D70: .word 0x00000FC8 +_02233D74: .word 0x00000ED8 +_02233D78: .word 0x00000E98 +_02233D7C: .word 0x000005DC +_02233D80: .word 0x00000B1C +_02233D84: .word 0x00000B1F +_02233D88: .word 0x00000F08 + thumb_func_end MOD80_02233C7C + + thumb_func_start MOD80_02233D8C +MOD80_02233D8C: ; 0x02233D8C + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02233DB0 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x17 + mov r2, #1 + mov r3, #0 + bl MOD80_022332EC + add r0, r4, #0 + mov r1, #0x10 + mov r2, #0xe + bl MOD80_0222E6DC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02233DB0: .word 0x00000F0F + thumb_func_end MOD80_02233D8C + + thumb_func_start MOD80_02233DB4 +MOD80_02233DB4: ; 0x02233DB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02233DD0 ; =0x000001EA + mov r1, #0xf + bl MOD80_0222E6A8 + ldr r1, _02233DD4 ; =0x00000FCC + str r0, [r4, r1] + mov r0, #0xf + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + nop +_02233DD0: .word 0x000001EA +_02233DD4: .word 0x00000FCC + thumb_func_end MOD80_02233DB4 + + thumb_func_start MOD80_02233DD8 +MOD80_02233DD8: ; 0x02233DD8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02233E28 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02233E22 + sub r1, r1, #1 + cmp r0, r1 + bne _02233E04 + mov r1, #5 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r4, #0x2c] + b _02233E22 +_02233E04: + mov r1, #7 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #2 + str r0, [r4, #0x2c] + ldr r0, _02233E2C ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0xd4 + add r1, r4, #0 + bl MOD80_02234330 +_02233E22: + mov r0, #3 + pop {r4, pc} + nop +_02233E28: .word 0x00000FCC +_02233E2C: .word 0x0000100C + thumb_func_end MOD80_02233DD8 + + thumb_func_start MOD80_02233E30 +MOD80_02233E30: ; 0x02233E30 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02233E5C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, _02233E80 ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + b _02233E74 +_02233E5C: + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 +_02233E74: + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + nop +_02233E80: .word 0x0000100C + thumb_func_end MOD80_02233E30 + + thumb_func_start MOD80_02233E84 +MOD80_02233E84: ; 0x02233E84 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02233E9E + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02233E9E: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02233E84 + + thumb_func_start MOD80_02233EA4 +MOD80_02233EA4: ; 0x02233EA4 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + add r5, r3, #0 + cmp r2, #0 + beq _02233ED2 + add r0, r1, #0 + add r1, r2, #0 + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + str r5, [sp] + str r0, [sp, #4] + ldr r3, [sp, #0x18] + add r0, r6, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD80_02236D50 + add r0, r4, #0 + bl FUN_02021A20 +_02233ED2: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD80_02233EA4 + + thumb_func_start MOD80_02233ED8 +MOD80_02233ED8: ; 0x02233ED8 + cmp r0, #1 + bne _02233EE2 + ldr r0, _02233EF0 ; =0x02237B48 + ldr r0, [r0] + bx lr +_02233EE2: + cmp r0, #2 + bne _02233EEA + ldr r0, _02233EF0 ; =0x02237B48 + ldr r1, [r0, #4] +_02233EEA: + add r0, r1, #0 + bx lr + nop +_02233EF0: .word 0x02237B48 + thumb_func_end MOD80_02233ED8 + + thumb_func_start MOD80_02233EF4 +MOD80_02233EF4: ; 0x02233EF4 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + add r5, r2, #0 + cmp r3, #0 + bne _02233F04 + cmp r5, #3 + beq _02233F54 +_02233F04: + add r0, r1, #0 + ldr r1, _02233F58 ; =0x022373C0 + lsl r2, r5, #2 + ldr r1, [r1, r2] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + cmp r0, #3 + ble _02233F34 + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD80_02233ED8 + mov r1, #0 + str r1, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x18] + add r0, r6, #0 + add r1, r4, #0 + bl MOD80_02236D50 + b _02233F4E +_02233F34: + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD80_02233ED8 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r1, [sp] + str r0, [sp, #4] + add r0, r6, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD80_02236D50 +_02233F4E: + add r0, r4, #0 + bl FUN_02021A20 +_02233F54: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_02233F58: .word 0x022373C0 + thumb_func_end MOD80_02233EF4 + + thumb_func_start MOD80_02233F5C +MOD80_02233F5C: ; 0x02233F5C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + add r5, r3, #0 + cmp r2, r0 + beq _02233F92 + add r0, r1, #0 + ldr r1, _02233F98 ; =0x02237494 + lsl r2, r2, #3 + ldr r1, [r1, r2] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + str r5, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x18] + add r0, r6, #0 + add r1, r4, #0 + bl MOD80_02236D50 + add r0, r4, #0 + bl FUN_02021A20 +_02233F92: + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02233F98: .word 0x02237494 + thumb_func_end MOD80_02233F5C + + thumb_func_start MOD80_02233F9C +MOD80_02233F9C: ; 0x02233F9C + push {r3, r4, lr} + sub sp, #0xc + ldr r4, [sp, #0x18] + str r4, [sp] + ldr r4, [sp, #0x1c] + str r4, [sp, #4] + mov r4, #0 + str r4, [sp, #8] + bl MOD80_02233F5C + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD80_02233F9C + + thumb_func_start MOD80_02233FB4 +MOD80_02233FB4: ; 0x02233FB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + mov r1, #0x61 + str r0, [sp, #0xc] + add r6, r3, #0 + bl FUN_0200A914 + str r0, [sp, #0x14] + mov r2, #0 + ldr r0, _02234044 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + add r0, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + add r5, r6, #0 + mov r4, #1 + add r5, #0x10 + mov r7, #0 +_02233FE0: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02019620 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #3 + blt _02233FE0 + mov r3, #0 + ldr r0, _02234044 ; =0x000F0200 + str r3, [sp] + str r0, [sp, #4] + add r0, r6, #0 + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x30] + add r0, #0x10 + bl MOD80_02233EA4 + ldr r2, [sp, #0x34] + sub r0, r2, #1 + cmp r0, #1 + bhi _02234022 + mov r3, #0 + str r3, [sp] + mov r0, #0x46 + str r0, [sp, #4] + ldr r0, _02234044 ; =0x000F0200 + ldr r1, [sp, #0xc] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x10 + bl MOD80_02233EF4 +_02234022: + mov r0, #0 + str r0, [sp] + ldr r0, _02234044 ; =0x000F0200 + add r6, #0x20 + str r0, [sp, #4] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x38] + add r0, r6, #0 + mov r3, #2 + bl MOD80_02233F9C + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02234044: .word 0x000F0200 + thumb_func_end MOD80_02233FB4 + + thumb_func_start MOD80_02234048 +MOD80_02234048: ; 0x02234048 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + mov r1, #0x61 + str r0, [sp, #0xc] + add r6, r3, #0 + bl FUN_0200A914 + str r0, [sp, #0x14] + mov r2, #0 + ldr r0, _022340D8 ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + add r0, r6, #0 + add r3, r2, #0 + bl MOD80_02236D50 + add r5, r6, #0 + mov r4, #1 + add r5, #0x10 + mov r7, #0 +_02234074: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02019620 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #3 + blt _02234074 + mov r3, #0 + ldr r0, _022340D8 ; =0x000F0200 + str r3, [sp] + str r0, [sp, #4] + add r0, r6, #0 + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x30] + add r0, #0x10 + bl MOD80_02233EA4 + ldr r2, [sp, #0x34] + sub r0, r2, #1 + cmp r0, #1 + bhi _022340B6 + mov r3, #0 + str r3, [sp] + mov r0, #0x46 + str r0, [sp, #4] + ldr r0, _022340D8 ; =0x000F0200 + ldr r1, [sp, #0xc] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x10 + bl MOD80_02233EF4 +_022340B6: + mov r0, #0 + str r0, [sp] + ldr r0, _022340D8 ; =0x000F0200 + add r6, #0x20 + str r0, [sp, #4] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x38] + add r0, r6, #0 + mov r3, #2 + bl MOD80_02233F9C + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022340D8: .word 0x000F0200 + thumb_func_end MOD80_02234048 + + thumb_func_start MOD80_022340DC +MOD80_022340DC: ; 0x022340DC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + add r5, r1, #0 + mov r0, #0xb + mov r1, #0x3e + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r7, [sp, #0x38] + bl FUN_020219F4 + str r0, [sp, #0x18] + mov r0, #0xb + mov r1, #0x3e + bl FUN_020219F4 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x18] + mov r1, #0x76 + bl FUN_020672BC + ldr r0, [sp, #0xc] + mov r1, #0x6f + mov r2, #0 + bl FUN_020672BC + add r6, r0, #1 + ldr r0, [sp, #0xc] + bl FUN_020687C8 + str r0, [sp, #0x10] + add r0, r4, #0 + mov r1, #0x64 + bl FUN_0200A914 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp] + mov r0, #1 + mov r1, #3 + str r0, [sp, #4] + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r3, r1, #0 + bl FUN_0200AD38 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x66 + mov r3, #0x3e + bl FUN_0200A9C4 + str r0, [sp, #0x1c] + cmp r6, #3 + beq _0223415A + ldr r1, _022341F8 ; =0x022373C0 + lsl r2, r6, #2 + ldr r1, [r1, r2] + ldr r2, [sp, #0x14] + add r0, r4, #0 + bl FUN_0200A8E0 +_0223415A: + ldr r5, [sp, #8] + mov r4, #0 +_0223415E: + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #3 + blt _0223415E + mov r2, #0 + ldr r0, _022341FC ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [sp, #0x20] + add r3, r2, #0 + bl MOD80_02236D50 + mov r2, #0 + ldr r0, _022341FC ; =0x000F0200 + str r2, [sp] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [sp, #0x18] + add r0, #0x10 + add r3, r2, #0 + bl MOD80_02236D50 + mov r0, #2 + str r0, [sp] + ldr r0, _022341FC ; =0x000F0200 + mov r2, #0 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [sp, #0x1c] + add r0, #0x20 + add r3, r2, #0 + bl MOD80_02236D50 + cmp r6, #3 + beq _022341CA + sub r0, r6, #1 + mov r3, #0 + lsl r1, r0, #2 + ldr r0, _02234200 ; =0x02237B48 + str r3, [sp] + ldr r0, [r0, r1] + ldr r1, [sp, #0x14] + str r0, [sp, #4] + ldr r0, [sp, #8] + mov r2, #0x46 + add r0, #0x10 + str r0, [sp, #8] + bl MOD80_02236D50 +_022341CA: + ldr r0, [sp, #0xc] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + strh r0, [r7] + ldr r0, [sp, #0x10] + strb r6, [r7, #2] + strb r0, [r7, #3] + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022341F8: .word 0x022373C0 +_022341FC: .word 0x000F0200 +_02234200: .word 0x02237B48 + thumb_func_end MOD80_022340DC + + thumb_func_start MOD80_02234204 +MOD80_02234204: ; 0x02234204 + push {r3, r4, lr} + sub sp, #0xc + add r4, r2, #0 + mov r2, #0 + add r3, r0, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x4b + mov r1, #0xd + bl FUN_02006D18 + ldr r1, [sp, #8] + lsr r1, r1, #1 + str r1, [r4] + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD80_02234204 + + thumb_func_start MOD80_02234228 +MOD80_02234228: ; 0x02234228 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r1, _02234280 ; =0x000001EE + add r5, r0, #0 + mov r0, #0x3e + bl FUN_02016998 + add r4, r0, #0 + ldr r2, _02234280 ; =0x000001EE + mov r0, #0 + add r1, r4, #0 + bl MIi_CpuClearFast + mov r2, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x4b + mov r1, #0xc + add r3, r5, #0 + bl FUN_02006D18 + add r7, r0, #0 + ldr r0, [sp, #8] + ldr r5, _02234284 ; =0x00000000 + lsr r3, r0, #1 + beq _02234274 + ldr r0, _02234280 ; =0x000001EE + add r6, r7, #0 + mov r1, #1 +_02234264: + ldrh r2, [r6] + cmp r2, r0 + bhs _0223426C + strb r1, [r4, r2] +_0223426C: + add r5, r5, #1 + add r6, r6, #2 + cmp r5, r3 + blo _02234264 +_02234274: + add r0, r7, #0 + bl FUN_02016A18 + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02234280: .word 0x000001EE +_02234284: .word 0x00000000 + thumb_func_end MOD80_02234228 + + thumb_func_start MOD80_02234288 +MOD80_02234288: ; 0x02234288 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0xb8 + ldrh r0, [r0] + bl MOD80_02232FAC + cmp r0, #0 + beq _022342B0 + bl FUN_020669BC + add r2, r0, #0 + add r0, r4, #0 + add r0, #0xbc + ldr r0, [r0] + add r1, r5, #0 + bl MIi_CpuCopyFast + b _022342BC +_022342B0: + add r0, r4, #0 + add r0, #0xbc + ldr r0, [r0] + add r1, r5, #0 + bl FUN_02069A64 +_022342BC: + ldr r0, [r4] + ldr r0, [r0, #0x1c] + bl FUN_0202398C + add r1, r0, #0 + mov r0, #0x43 + lsl r0, r0, #2 + add r0, r5, r0 + mov r2, #8 + bl StringCopyN + ldr r0, [r4] + ldr r0, [r0, #0x1c] + bl FUN_020239C0 + mov r1, #0x47 + lsl r1, r1, #2 + strh r0, [r5, r1] + ldr r0, [r4] + ldr r0, [r0, #0x18] + bl FUN_02029B38 + ldr r1, _02234324 ; =0x0000011E + strb r0, [r5, r1] + ldr r0, [r4] + ldr r0, [r0, #0x18] + bl FUN_02029B3C + ldr r1, _02234328 ; =0x0000011F + strb r0, [r5, r1] + ldr r0, [r4] + ldr r0, [r0, #0x1c] + bl FUN_02023A28 + mov r1, #0x12 + lsl r1, r1, #4 + strb r0, [r5, r1] + ldr r0, [r4] + ldr r0, [r0, #0x1c] + bl FUN_020239CC + add r1, r5, #0 + add r1, #0xf6 + strb r0, [r1] + ldr r0, _0223432C ; =0x00000122 + mov r1, #0xa + strb r1, [r5, r0] + mov r1, #2 + add r0, r0, #1 + strb r1, [r5, r0] + pop {r3, r4, r5, pc} + nop +_02234324: .word 0x0000011E +_02234328: .word 0x0000011F +_0223432C: .word 0x00000122 + thumb_func_end MOD80_02234288 + + thumb_func_start MOD80_02234330 +MOD80_02234330: ; 0x02234330 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD80_02234288 + ldr r0, _0223436C ; =0x00000B18 + add r1, r5, #0 + ldrh r2, [r4, r0] + add r1, #0xec + strh r2, [r1] + add r1, r0, #2 + ldrh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xee + strh r2, [r1] + add r1, r0, #4 + ldrh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xf0 + strh r2, [r1] + add r1, r0, #6 + ldrh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xf2 + strh r2, [r1] + add r0, #8 + ldrh r0, [r4, r0] + add r5, #0xf4 + strh r0, [r5] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223436C: .word 0x00000B18 + thumb_func_end MOD80_02234330 + + thumb_func_start MOD80_02234370 +MOD80_02234370: ; 0x02234370 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r0, #0 + add r5, r1, #0 + mov r0, #9 + mov r1, #0x3e + str r2, [sp] + add r6, r3, #0 + bl FUN_02012838 + str r0, [r5] + mov r4, #0 +_02234388: + add r2, r4, #0 + ldr r0, [r5] + add r1, r6, #0 + add r2, #0x68 + add r3, r4, #1 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, #9 + blt _02234388 + ldr r3, _022343D8 ; =0x02237474 + add r2, sp, #4 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [sp, #4] + ldr r0, [sp] + mov r2, #0x1f + mov r3, #0xb + str r0, [sp, #0x10] + bl FUN_0200CCA4 + mov r0, #0xfe + lsl r0, r0, #4 + ldr r2, [r7, r0] + add r0, sp, #4 + ldrh r1, [r2, #6] + ldrh r2, [r2, #4] + mov r3, #0x3e + bl FUN_020010A8 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022343D8: .word 0x02237474 + thumb_func_end MOD80_02234370 + + thumb_func_start MOD80_022343DC +MOD80_022343DC: ; 0x022343DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp] + ldr r0, [sp, #0x38] + str r1, [sp, #4] + str r0, [sp, #0x38] + ldr r0, [sp, #0x40] + ldr r4, [sp, #0x44] + lsl r5, r0, #1 + add r0, r0, #1 + lsl r1, r0, #1 + ldr r0, _022344D8 ; =0x02237B50 + str r2, [sp, #8] + ldrh r1, [r0, r1] + ldrh r0, [r0, r5] + str r3, [sp, #0xc] + mov r6, #0 + sub r7, r1, r0 + add r0, r4, #0 + bl FUN_02024CA4 + str r0, [sp, #0x14] + ldr r0, _022344D8 ; =0x02237B50 + ldrh r0, [r0, r5] + str r0, [sp, #0x18] + add r0, r6, #0 + str r0, [sp, #0x1c] + cmp r7, #0 + ble _02234456 + ldr r0, [sp, #0x18] + lsl r1, r0, #1 + ldr r0, [sp, #0xc] + add r5, r0, r1 +_0223441E: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02234434 + ldrh r1, [r5] + add r0, r4, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _0223444A + add r6, r6, #1 + b _0223444A +_02234434: + ldrh r1, [r5] + ldr r0, [sp, #0x38] + ldrb r0, [r0, r1] + cmp r0, #0 + beq _0223444A + add r0, r4, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _0223444A + add r6, r6, #1 +_0223444A: + ldr r0, [sp, #0x1c] + add r5, r5, #2 + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r7 + blt _0223441E +_02234456: + add r0, r6, #1 + mov r1, #0x3e + bl FUN_02012838 + ldr r1, [sp] + str r0, [r1] + mov r0, #0 + str r0, [sp, #0x10] + cmp r7, #0 + ble _022344C2 + ldr r0, [sp, #0x18] + lsl r1, r0, #1 + ldr r0, [sp, #0xc] + add r5, r0, r1 +_02234472: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02234494 + ldrh r1, [r5] + add r0, r4, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _022344B6 + ldrh r2, [r5] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r0] + add r3, r2, #0 + bl FUN_02012880 + b _022344B6 +_02234494: + ldrh r1, [r5] + ldr r0, [sp, #0x38] + ldrb r0, [r0, r1] + cmp r0, #0 + beq _022344B6 + add r0, r4, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _022344B6 + ldrh r2, [r5] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r0] + add r3, r2, #0 + bl FUN_02012880 +_022344B6: + ldr r0, [sp, #0x10] + add r5, r5, #2 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, r7 + blt _02234472 +_022344C2: + ldr r0, [sp] + mov r2, #0x75 + add r3, r2, #0 + ldr r0, [r0] + ldr r1, [sp, #8] + sub r3, #0x77 + bl FUN_02012880 + add r0, r6, #1 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022344D8: .word 0x02237B50 + thumb_func_end MOD80_022343DC + + thumb_func_start MOD80_022344DC +MOD80_022344DC: ; 0x022344DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + ldr r5, [sp, #0x54] + add r7, r0, #0 + add r6, r1, #0 + add r0, r2, #0 + mov r1, #0xf + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_02019620 + ldrh r1, [r5, #6] + ldrh r0, [r5, #4] + ldr r2, [sp, #0x14] + add r4, r1, r0 + ldr r0, [r5, #0x14] + ldr r1, [sp, #0x50] + str r0, [sp] + ldr r0, [r5, #0x1c] + str r0, [sp, #4] + ldr r0, [sp, #0x58] + str r4, [sp, #8] + str r0, [sp, #0xc] + ldr r3, [r5, #0x18] + add r0, r6, #0 + bl MOD80_022343DC + ldr r3, _02234558 ; =0x02237474 + add r5, r0, #0 + add r2, sp, #0x18 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, sp, #0x18 + strh r5, [r0, #0x10] + ldr r0, [r6] + mov r1, #0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + mov r2, #0x1f + mov r3, #0xb + str r0, [sp, #0x24] + bl FUN_0200CCA4 + lsl r1, r4, #1 + ldr r2, _0223455C ; =0x0000101C + add r3, r7, r1 + ldrh r1, [r3, r2] + add r2, #0x14 + ldrh r2, [r3, r2] + add r0, sp, #0x18 + mov r3, #0x3e + bl FUN_020010A8 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02234558: .word 0x02237474 +_0223455C: .word 0x0000101C + thumb_func_end MOD80_022344DC + + thumb_func_start MOD80_02234560 +MOD80_02234560: ; 0x02234560 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + str r1, [sp] + mov r0, #4 + mov r1, #0x3e + add r7, r2, #0 + bl FUN_02012838 + ldr r5, _022345C8 ; =0x02237B64 + str r0, [r6] + mov r4, #0 +_02234578: + ldr r0, [r6] + ldr r2, [r5] + ldr r3, [r5, #4] + add r1, r7, #0 + bl FUN_02012880 + add r4, r4, #1 + add r5, #8 + cmp r4, #4 + blt _02234578 + ldr r3, _022345CC ; =0x02237474 + add r2, sp, #4 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r1, #4 + add r0, sp, #4 + strh r1, [r0, #0x10] + ldr r0, [r6] + mov r1, #0 + str r0, [sp, #4] + ldr r0, [sp] + mov r2, #0x1f + mov r3, #0xb + str r0, [sp, #0x10] + bl FUN_0200CCA4 + mov r1, #0 + add r0, sp, #4 + add r2, r1, #0 + mov r3, #0x3e + bl FUN_020010A8 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022345C8: .word 0x02237B64 +_022345CC: .word 0x02237474 + thumb_func_end MOD80_02234560 + + thumb_func_start MOD80_022345D0 +MOD80_022345D0: ; 0x022345D0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xd + mov r1, #0x3e + add r7, r2, #0 + bl FUN_02012838 + ldr r5, _02234638 ; =0x02237494 + str r0, [r6] + mov r4, #0 +_022345E8: + ldr r0, [r6] + ldr r2, [r5] + add r1, r7, #0 + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + add r5, #8 + cmp r4, #0xd + blt _022345E8 + ldr r3, _0223463C ; =0x02237474 + add r2, sp, #4 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r1, #0xd + add r0, sp, #4 + strh r1, [r0, #0x10] + ldr r0, [r6] + mov r1, #0 + str r0, [sp, #4] + ldr r0, [sp] + mov r2, #0x1f + mov r3, #0xb + str r0, [sp, #0x10] + bl FUN_0200CCA4 + mov r1, #0 + add r0, sp, #4 + add r2, r1, #0 + mov r3, #0x3e + bl FUN_020010A8 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02234638: .word 0x02237494 +_0223463C: .word 0x02237474 + thumb_func_end MOD80_022345D0 + + thumb_func_start MOD80_02234640 +MOD80_02234640: ; 0x02234640 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #0xc + blt _0223464E + bl ErrorHandling +_0223464E: + ldr r0, _02234660 ; =0x02237498 + lsl r1, r5, #3 + ldrsh r0, [r0, r1] + strb r0, [r4, #3] + ldr r0, _02234664 ; =0x0223749A + ldrsh r0, [r0, r1] + strb r0, [r4, #4] + pop {r3, r4, r5, pc} + nop +_02234660: .word 0x02237498 +_02234664: .word 0x0223749A + thumb_func_end MOD80_02234640 + + thumb_func_start MOD80_02234668 +MOD80_02234668: ; 0x02234668 + push {r3, r4, r5, r6} + ldr r6, _02234694 ; =0x02237494 + mov r5, #0 + mov r2, #6 + mov r3, #4 +_02234672: + ldrsh r4, [r6, r3] + cmp r0, r4 + bne _02234684 + ldrsh r4, [r6, r2] + cmp r1, r4 + bne _02234684 + add r0, r5, #0 + pop {r3, r4, r5, r6} + bx lr +_02234684: + add r5, r5, #1 + add r6, #8 + cmp r5, #0xd + blt _02234672 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + nop +_02234694: .word 0x02237494 + thumb_func_end MOD80_02234668 + + thumb_func_start MOD80_02234698 +MOD80_02234698: ; 0x02234698 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02001204 + add r6, r0, #0 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0200143C + add r0, sp, #0 + ldrh r1, [r4] + ldrh r0, [r0] + cmp r1, r0 + beq _022346CA + ldr r0, _022346D0 ; =0x0000FFFF + cmp r1, r0 + beq _022346C4 + ldr r0, _022346D4 ; =0x000005DC + bl FUN_020054C8 +_022346C4: + add r0, sp, #0 + ldrh r0, [r0] + strh r0, [r4] +_022346CA: + add r0, r6, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022346D0: .word 0x0000FFFF +_022346D4: .word 0x000005DC + thumb_func_end MOD80_02234698 + + thumb_func_start MOD80_022346D8 +MOD80_022346D8: ; 0x022346D8 + mov r2, #0 + add r3, r0, #0 + add r1, r2, #0 +_022346DE: + strh r1, [r3, #4] + strh r1, [r3, #0x18] + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #0xa + blt _022346DE + strh r1, [r0] + strh r1, [r0, #2] + bx lr + thumb_func_end MOD80_022346D8 + + thumb_func_start MOD80_022346F0 +MOD80_022346F0: ; 0x022346F0 + lsl r1, r1, #1 + add r0, r0, r1 + strh r2, [r0, #4] + strh r3, [r0, #0x18] + bx lr + .align 2, 0 + thumb_func_end MOD80_022346F0 + + thumb_func_start MOD80_022346FC +MOD80_022346FC: ; 0x022346FC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_022349A4 + ldr r0, [r4, #4] + bl MOD80_02234780 + add r0, r4, #0 + bl MOD80_022348CC + add r0, r4, #0 + bl MOD80_02234958 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + add r0, r4, #0 + bl MOD80_02236D84 + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD80_022346FC + + thumb_func_start MOD80_02234740 +MOD80_02234740: ; 0x02234740 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222E79C + bl FUN_02033EEC + ldr r1, [r4, #0x2c] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _0223475C ; =0x02237BC8 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0223475C: .word 0x02237BC8 + thumb_func_end MOD80_02234740 + + thumb_func_start MOD80_02234760 +MOD80_02234760: ; 0x02234760 + push {r4, lr} + add r4, r0, #0 + bl MOD80_022349BC + add r0, r4, #0 + bl MOD80_02234994 + ldr r0, [r4, #4] + bl MOD80_022348A0 + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02234760 + + thumb_func_start MOD80_02234780 +MOD80_02234780: ; 0x02234780 + push {r4, r5, lr} + sub sp, #0x9c + ldr r5, _02234888 ; =0x022374FC + add r3, sp, #0x8c + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0223488C ; =0x02237544 + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _02234890 ; =0x02237528 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _02234894 ; =0x0223757C + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _02234898 ; =0x02237560 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _0223489C ; =0x0223750C + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x9c + pop {r4, r5, pc} + nop +_02234888: .word 0x022374FC +_0223488C: .word 0x02237544 +_02234890: .word 0x02237528 +_02234894: .word 0x0223757C +_02234898: .word 0x02237560 +_0223489C: .word 0x0223750C + thumb_func_end MOD80_02234780 + + thumb_func_start MOD80_022348A0 +MOD80_022348A0: ; 0x022348A0 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_022348A0 + + thumb_func_start MOD80_022348CC +MOD80_022348CC: ; 0x022348CC + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x60 + mov r1, #0 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + mov r0, #0x68 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + ldr r0, _02234954 ; =0x00000FEC + ldrh r0, [r5, r0] + cmp r0, #0 + bne _02234944 + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E74C +_02234944: + ldr r0, [r5, #0x20] + cmp r0, #9 + bne _02234950 + add r0, r5, #0 + bl MOD80_0222F338 +_02234950: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02234954: .word 0x00000FEC + thumb_func_end MOD80_022348CC + + thumb_func_start MOD80_02234958 +MOD80_02234958: ; 0x02234958 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + ldr r1, _02234990 ; =0x00000E98 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + ldr r0, _02234990 ; =0x00000E98 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02234990: .word 0x00000E98 + thumb_func_end MOD80_02234958 + + thumb_func_start MOD80_02234994 +MOD80_02234994: ; 0x02234994 + ldr r1, _0223499C ; =0x00000E98 + ldr r3, _022349A0 ; =FUN_02019178 + add r0, r0, r1 + bx r3 + .align 2, 0 +_0223499C: .word 0x00000E98 +_022349A0: .word FUN_02019178 + thumb_func_end MOD80_02234994 + + thumb_func_start MOD80_022349A4 +MOD80_022349A4: ; 0x022349A4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _022349B8 ; =0x00000B4C + str r0, [r4, r1] + pop {r4, pc} + nop +_022349B8: .word 0x00000B4C + thumb_func_end MOD80_022349A4 + + thumb_func_start MOD80_022349BC +MOD80_022349BC: ; 0x022349BC + ldr r1, _022349C4 ; =0x00000B4C + ldr r3, _022349C8 ; =FUN_02021A20 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_022349C4: .word 0x00000B4C +_022349C8: .word FUN_02021A20 + thumb_func_end MOD80_022349BC + + thumb_func_start MOD80_022349CC +MOD80_022349CC: ; 0x022349CC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r1, [r4, #0x24] + cmp r1, #0xc + bhi _02234AA4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022349E4: ; jump table + .short _02234AA4 - _022349E4 - 2 ; case 0 + .short _02234AA4 - _022349E4 - 2 ; case 1 + .short _02234AA4 - _022349E4 - 2 ; case 2 + .short _02234AA4 - _022349E4 - 2 ; case 3 + .short _02234AA4 - _022349E4 - 2 ; case 4 + .short _02234AA4 - _022349E4 - 2 ; case 5 + .short _02234AA4 - _022349E4 - 2 ; case 6 + .short _022349FE - _022349E4 - 2 ; case 7 + .short _02234A1A - _022349E4 - 2 ; case 8 + .short _02234A36 - _022349E4 - 2 ; case 9 + .short _02234A52 - _022349E4 - 2 ; case 10 + .short _02234A74 - _022349E4 - 2 ; case 11 + .short _02234A8A - _022349E4 - 2 ; case 12 +_022349FE: + ldr r1, _02234AB4 ; =0x00000F0F + mov r2, #0x18 + str r1, [sp] + ldr r1, _02234AB8 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #2 + bl MOD80_0222E6DC + b _02234AA8 +_02234A1A: + ldr r1, _02234AB4 ; =0x00000F0F + mov r2, #0x18 + str r1, [sp] + ldr r1, _02234AB8 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #7 + bl MOD80_0222E6DC + b _02234AA8 +_02234A36: + ldr r1, _02234AB4 ; =0x00000F0F + mov r2, #0x18 + str r1, [sp] + ldr r1, _02234AB8 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0xc + bl MOD80_0222E6DC + b _02234AA8 +_02234A52: + ldr r1, _02234AB4 ; =0x00000F0F + mov r2, #0x18 + str r1, [sp] + ldr r1, _02234AB8 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x12 + bl MOD80_0222E6DC + ldr r0, _02234ABC ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + b _02234AA8 +_02234A74: + ldr r1, _02234AB4 ; =0x00000F0F + mov r2, #0x18 + str r1, [sp] + ldr r1, _02234AB8 ; =0x00000B34 + mov r3, #0 + ldr r1, [r4, r1] + bl MOD80_02236C70 + mov r0, #0x18 + str r0, [r4, #0x2c] + b _02234AA8 +_02234A8A: + ldr r1, _02234AB4 ; =0x00000F0F + mov r2, #0x8a + str r1, [sp] + ldr r1, _02234AB8 ; =0x00000B34 + mov r3, #1 + ldr r1, [r4, r1] + bl MOD80_02236C70 + mov r0, #1 + str r0, [r4, #0x18] + mov r0, #0x1d + str r0, [r4, #0x2c] + b _02234AA8 +_02234AA4: + bl ErrorHandling +_02234AA8: + add r0, r4, #0 + bl MOD80_0222E8BC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02234AB4: .word 0x00000F0F +_02234AB8: .word 0x00000B34 +_02234ABC: .word 0x0000100C + thumb_func_end MOD80_022349CC + + thumb_func_start MOD80_02234AC0 +MOD80_02234AC0: ; 0x02234AC0 + push {r4, lr} + add r4, r0, #0 + add r0, #0xd4 + bl FUN_0206AA84 + add r0, r4, #0 + add r0, #0xd4 + bl MOD80_0222DBC4 + mov r0, #3 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #4 + mov r2, #6 + bl MOD80_02235820 + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02234AC0 + + thumb_func_start MOD80_02234AE4 +MOD80_02234AE4: ; 0x02234AE4 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02234B5A + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0xf + bhi _02234B5A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02234B08: ; jump table + .short _02234B4E - _02234B08 - 2 ; case 0 + .short _02234B4E - _02234B08 - 2 ; case 1 + .short _02234B56 - _02234B08 - 2 ; case 2 + .short _02234B46 - _02234B08 - 2 ; case 3 + .short _02234B3E - _02234B08 - 2 ; case 4 + .short _02234B3E - _02234B08 - 2 ; case 5 + .short _02234B3E - _02234B08 - 2 ; case 6 + .short _02234B3E - _02234B08 - 2 ; case 7 + .short _02234B3E - _02234B08 - 2 ; case 8 + .short _02234B3E - _02234B08 - 2 ; case 9 + .short _02234B3E - _02234B08 - 2 ; case 10 + .short _02234B46 - _02234B08 - 2 ; case 11 + .short _02234B5A - _02234B08 - 2 ; case 12 + .short _02234B4E - _02234B08 - 2 ; case 13 + .short _02234B36 - _02234B08 - 2 ; case 14 + .short _02234B28 - _02234B08 - 2 ; case 15 +_02234B28: + add r0, r4, #0 + mov r1, #1 + bl MOD80_02235534 + mov r0, #0x1e + str r0, [r4, #0x2c] + b _02234B5A +_02234B36: + str r0, [r4, #0x3c] + mov r0, #0x26 + str r0, [r4, #0x2c] + b _02234B5A +_02234B3E: + str r0, [r4, #0x3c] + mov r0, #0x27 + str r0, [r4, #0x2c] + b _02234B5A +_02234B46: + str r0, [r4, #0x3c] + mov r0, #0x27 + str r0, [r4, #0x2c] + b _02234B5A +_02234B4E: + str r0, [r4, #0x3c] + mov r0, #0x26 + str r0, [r4, #0x2c] + b _02234B5A +_02234B56: + bl FUN_020335E0 +_02234B5A: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02234AE4 + + thumb_func_start MOD80_02234B60 +MOD80_02234B60: ; 0x02234B60 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DC14 + mov r0, #5 + str r0, [r4, #0x2c] + mov r0, #1 + strh r0, [r4, #0x36] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02234B60 + + thumb_func_start MOD80_02234B74 +MOD80_02234B74: ; 0x02234B74 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02234BD2 + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0xf + bhi _02234BD2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02234B98: ; jump table + .short _02234BC6 - _02234B98 - 2 ; case 0 + .short _02234BC6 - _02234B98 - 2 ; case 1 + .short _02234BCE - _02234B98 - 2 ; case 2 + .short _02234BBE - _02234B98 - 2 ; case 3 + .short _02234BD2 - _02234B98 - 2 ; case 4 + .short _02234BD2 - _02234B98 - 2 ; case 5 + .short _02234BD2 - _02234B98 - 2 ; case 6 + .short _02234BD2 - _02234B98 - 2 ; case 7 + .short _02234BD2 - _02234B98 - 2 ; case 8 + .short _02234BD2 - _02234B98 - 2 ; case 9 + .short _02234BC6 - _02234B98 - 2 ; case 10 + .short _02234BBE - _02234B98 - 2 ; case 11 + .short _02234BC6 - _02234B98 - 2 ; case 12 + .short _02234BC6 - _02234B98 - 2 ; case 13 + .short _02234BC6 - _02234B98 - 2 ; case 14 + .short _02234BB8 - _02234B98 - 2 ; case 15 +_02234BB8: + mov r0, #0x21 + str r0, [r4, #0x2c] + b _02234BD2 +_02234BBE: + str r0, [r4, #0x3c] + mov r0, #0x27 + str r0, [r4, #0x2c] + b _02234BD2 +_02234BC6: + mov r0, #4 + bl FUN_020336A0 + b _02234BD2 +_02234BCE: + bl FUN_020335E0 +_02234BD2: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02234B74 + + thumb_func_start MOD80_02234BD8 +MOD80_02234BD8: ; 0x02234BD8 + push {r4, lr} + add r4, r0, #0 + add r0, #0xd4 + bl MOD80_0222DC68 + mov r0, #8 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #9 + mov r2, #0xb + bl MOD80_02235820 + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02234BD8 + + thumb_func_start MOD80_02234BF4 +MOD80_02234BF4: ; 0x02234BF4 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02234C82 + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0xf + bhi _02234C82 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02234C18: ; jump table + .short _02234C76 - _02234C18 - 2 ; case 0 + .short _02234C76 - _02234C18 - 2 ; case 1 + .short _02234C7E - _02234C18 - 2 ; case 2 + .short _02234C6E - _02234C18 - 2 ; case 3 + .short _02234C82 - _02234C18 - 2 ; case 4 + .short _02234C82 - _02234C18 - 2 ; case 5 + .short _02234C82 - _02234C18 - 2 ; case 6 + .short _02234C82 - _02234C18 - 2 ; case 7 + .short _02234C82 - _02234C18 - 2 ; case 8 + .short _02234C82 - _02234C18 - 2 ; case 9 + .short _02234C82 - _02234C18 - 2 ; case 10 + .short _02234C68 - _02234C18 - 2 ; case 11 + .short _02234C62 - _02234C18 - 2 ; case 12 + .short _02234C76 - _02234C18 - 2 ; case 13 + .short _02234C82 - _02234C18 - 2 ; case 14 + .short _02234C38 - _02234C18 - 2 ; case 15 +_02234C38: + ldr r0, _02234C88 ; =0x000001F5 + ldrsb r5, [r4, r0] + cmp r5, #0 + beq _02234C46 + mov r0, #0x18 + str r0, [r4, #0x2c] + b _02234C82 +_02234C46: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0202AC18 + add r1, r4, #0 + add r2, r0, #0 + add r0, r4, #0 + add r1, #0xd4 + add r3, r5, #0 + bl MOD80_022355F0 + mov r0, #0x1e + str r0, [r4, #0x2c] + b _02234C82 +_02234C62: + mov r0, #0x26 + str r0, [r4, #0x2c] + b _02234C82 +_02234C68: + mov r0, #0x26 + str r0, [r4, #0x2c] + b _02234C82 +_02234C6E: + str r0, [r4, #0x3c] + mov r0, #0x27 + str r0, [r4, #0x2c] + b _02234C82 +_02234C76: + str r0, [r4, #0x3c] + mov r0, #0x26 + str r0, [r4, #0x2c] + b _02234C82 +_02234C7E: + bl FUN_020335E0 +_02234C82: + mov r0, #3 + pop {r3, r4, r5, pc} + nop +_02234C88: .word 0x000001F5 + thumb_func_end MOD80_02234BF4 + + thumb_func_start MOD80_02234C8C +MOD80_02234C8C: ; 0x02234C8C + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DD4C + mov r0, #0xa + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02234C8C + + thumb_func_start MOD80_02234C9C +MOD80_02234C9C: ; 0x02234C9C + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02234CF8 + bl MOD80_0222DBB8 + add r0, #0xf + cmp r0, #0xf + bhi _02234CF8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234CBE: ; jump table + .short _02234CEC - _02234CBE - 2 ; case 0 + .short _02234CEC - _02234CBE - 2 ; case 1 + .short _02234CF4 - _02234CBE - 2 ; case 2 + .short _02234CEC - _02234CBE - 2 ; case 3 + .short _02234CF8 - _02234CBE - 2 ; case 4 + .short _02234CF8 - _02234CBE - 2 ; case 5 + .short _02234CF8 - _02234CBE - 2 ; case 6 + .short _02234CF8 - _02234CBE - 2 ; case 7 + .short _02234CF8 - _02234CBE - 2 ; case 8 + .short _02234CF8 - _02234CBE - 2 ; case 9 + .short _02234CE4 - _02234CBE - 2 ; case 10 + .short _02234CE4 - _02234CBE - 2 ; case 11 + .short _02234CE4 - _02234CBE - 2 ; case 12 + .short _02234CEC - _02234CBE - 2 ; case 13 + .short _02234CF8 - _02234CBE - 2 ; case 14 + .short _02234CDE - _02234CBE - 2 ; case 15 +_02234CDE: + mov r0, #0x21 + str r0, [r4, #0x2c] + b _02234CF8 +_02234CE4: + mov r0, #3 + bl FUN_020336A0 + b _02234CF8 +_02234CEC: + mov r0, #4 + bl FUN_020336A0 + b _02234CF8 +_02234CF4: + bl FUN_020335E0 +_02234CF8: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02234C9C + + thumb_func_start MOD80_02234CFC +MOD80_02234CFC: ; 0x02234CFC + push {r4, lr} + add r4, r0, #0 + add r0, #0xd4 + bl FUN_0206AA84 + add r0, r4, #0 + add r0, #0xc4 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + mul r0, r1 + add r1, r4, r0 + mov r0, #3 + lsl r0, r0, #8 + ldr r2, _02234D38 ; =0x000009F4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0xd4 + add r2, r4, r2 + bl MOD80_0222DE04 + add r0, r4, #0 + mov r1, #0xe + mov r2, #0x10 + bl MOD80_02235820 + mov r0, #0xd + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02234D38: .word 0x000009F4 + thumb_func_end MOD80_02234CFC + + thumb_func_start MOD80_02234D3C +MOD80_02234D3C: ; 0x02234D3C + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02234DEE + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0xf + bhi _02234DEE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02234D60: ; jump table + .short _02234DE2 - _02234D60 - 2 ; case 0 + .short _02234DE2 - _02234D60 - 2 ; case 1 + .short _02234DEA - _02234D60 - 2 ; case 2 + .short _02234DDA - _02234D60 - 2 ; case 3 + .short _02234DD2 - _02234D60 - 2 ; case 4 + .short _02234DD2 - _02234D60 - 2 ; case 5 + .short _02234DD2 - _02234D60 - 2 ; case 6 + .short _02234DD2 - _02234D60 - 2 ; case 7 + .short _02234DD2 - _02234D60 - 2 ; case 8 + .short _02234DD2 - _02234D60 - 2 ; case 9 + .short _02234DCA - _02234D60 - 2 ; case 10 + .short _02234DEE - _02234D60 - 2 ; case 11 + .short _02234DEE - _02234D60 - 2 ; case 12 + .short _02234DE2 - _02234D60 - 2 ; case 13 + .short _02234DEE - _02234D60 - 2 ; case 14 + .short _02234D80 - _02234D60 - 2 ; case 15 +_02234D80: + mov r0, #0x1e + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #0 + bl MOD80_02235534 + add r2, r4, #0 + add r2, #0xb8 + ldr r1, _02234DF4 ; =0x000009F4 + ldrh r2, [r2] + add r0, r4, #0 + add r1, r4, r1 + bl MOD80_022356AC + ldr r0, [r4] + ldr r1, _02234DF4 ; =0x000009F4 + ldr r0, [r0, #0x18] + add r1, r4, r1 + bl MOD80_02235784 + ldr r0, [r4] + mov r1, #0x19 + ldr r0, [r0, #0x28] + bl FUN_0202A170 + ldr r0, [r4] + ldr r1, _02234DF4 ; =0x000009F4 + ldr r0, [r0, #0x2c] + add r1, r4, r1 + bl MOD80_022357A0 + ldr r0, [r4] + mov r1, #0x18 + ldr r0, [r0, #0x28] + bl FUN_0202A0E8 + b _02234DEE +_02234DCA: + str r0, [r4, #0x3c] + mov r0, #0x11 + str r0, [r4, #0x2c] + b _02234DEE +_02234DD2: + str r0, [r4, #0x3c] + mov r0, #0x27 + str r0, [r4, #0x2c] + b _02234DEE +_02234DDA: + str r0, [r4, #0x3c] + mov r0, #0x27 + str r0, [r4, #0x2c] + b _02234DEE +_02234DE2: + str r0, [r4, #0x3c] + mov r0, #0x26 + str r0, [r4, #0x2c] + b _02234DEE +_02234DEA: + bl FUN_020335E0 +_02234DEE: + mov r0, #3 + pop {r4, pc} + nop +_02234DF4: .word 0x000009F4 + thumb_func_end MOD80_02234D3C + + thumb_func_start MOD80_02234DF8 +MOD80_02234DF8: ; 0x02234DF8 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DE68 + mov r0, #0xf + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02234DF8 + + thumb_func_start MOD80_02234E08 +MOD80_02234E08: ; 0x02234E08 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02234E64 + bl MOD80_0222DBB8 + add r0, #0xf + cmp r0, #0xf + bhi _02234E64 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234E2A: ; jump table + .short _02234E58 - _02234E2A - 2 ; case 0 + .short _02234E58 - _02234E2A - 2 ; case 1 + .short _02234E60 - _02234E2A - 2 ; case 2 + .short _02234E58 - _02234E2A - 2 ; case 3 + .short _02234E64 - _02234E2A - 2 ; case 4 + .short _02234E64 - _02234E2A - 2 ; case 5 + .short _02234E64 - _02234E2A - 2 ; case 6 + .short _02234E64 - _02234E2A - 2 ; case 7 + .short _02234E64 - _02234E2A - 2 ; case 8 + .short _02234E64 - _02234E2A - 2 ; case 9 + .short _02234E50 - _02234E2A - 2 ; case 10 + .short _02234E64 - _02234E2A - 2 ; case 11 + .short _02234E64 - _02234E2A - 2 ; case 12 + .short _02234E58 - _02234E2A - 2 ; case 13 + .short _02234E64 - _02234E2A - 2 ; case 14 + .short _02234E4A - _02234E2A - 2 ; case 15 +_02234E4A: + mov r0, #0x21 + str r0, [r4, #0x2c] + b _02234E64 +_02234E50: + mov r0, #3 + bl FUN_020336A0 + b _02234E64 +_02234E58: + mov r0, #4 + bl FUN_020336A0 + b _02234E64 +_02234E60: + bl FUN_020335E0 +_02234E64: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02234E08 + + thumb_func_start MOD80_02234E68 +MOD80_02234E68: ; 0x02234E68 + push {r4, lr} + add r4, r0, #0 + add r0, #0xd4 + bl MOD80_0222DCB8 + mov r0, #0x19 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02234E68 + + thumb_func_start MOD80_02234E7C +MOD80_02234E7C: ; 0x02234E7C + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02234EE2 + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0x10 + bhi _02234EE2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02234EA0: ; jump table + .short _02234FF4 - _02234EA0 - 2 ; case 0 + .short _02234FF4 - _02234EA0 - 2 ; case 1 + .short _02234FFC - _02234EA0 - 2 ; case 2 + .short _02234FF4 - _02234EA0 - 2 ; case 3 + .short _02235006 - _02234EA0 - 2 ; case 4 + .short _02235006 - _02234EA0 - 2 ; case 5 + .short _02235006 - _02234EA0 - 2 ; case 6 + .short _02235006 - _02234EA0 - 2 ; case 7 + .short _02235006 - _02234EA0 - 2 ; case 8 + .short _02235006 - _02234EA0 - 2 ; case 9 + .short _02235006 - _02234EA0 - 2 ; case 10 + .short _02234FA4 - _02234EA0 - 2 ; case 11 + .short _02234F38 - _02234EA0 - 2 ; case 12 + .short _02234FF4 - _02234EA0 - 2 ; case 13 + .short _02235006 - _02234EA0 - 2 ; case 14 + .short _02234EC2 - _02234EA0 - 2 ; case 15 + .short _02234EC8 - _02234EA0 - 2 ; case 16 +_02234EC2: + mov r0, #0x1a + str r0, [r4, #0x2c] + b _02235006 +_02234EC8: + mov r0, #1 + add r1, r4, #0 + strh r0, [r4, #0x36] + add r0, r4, #0 + add r1, #0xd4 + bl MOD80_022357DC + cmp r0, #0 + beq _02234F2C + cmp r0, #1 + beq _02234EE4 + cmp r0, #2 + beq _02234F08 +_02234EE2: + b _02235006 +_02234EE4: + add r0, r4, #0 + bl MOD80_0222E8D8 + ldr r0, _0223500C ; =0x00000F0F + ldr r1, _02235010 ; =0x00000B34 + str r0, [sp] + ldr r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x1d + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x1c + bl MOD80_0222E6DC + b _02235006 +_02234F08: + add r0, r4, #0 + bl MOD80_0222E8D8 + ldr r0, _0223500C ; =0x00000F0F + ldr r1, _02235010 ; =0x00000B34 + str r0, [sp] + ldr r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x23 + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x1c + bl MOD80_0222E6DC + b _02235006 +_02234F2C: + mov r0, #0x12 + str r0, [r4, #0x2c] + ldr r0, _02235014 ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + b _02235006 +_02234F38: + mov r0, #0 + strh r0, [r4, #0x36] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0202ABDC + cmp r0, #0 + beq _02234F9C + mov r0, #0x3e + bl FUN_020669C0 + add r5, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + ldr r0, [r0] + bl FUN_0202ABEC + add r0, r5, #0 + bl FUN_020690E4 + add r2, r0, #0 + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #2 + str r0, [r4, #0x28] + mov r0, #0x22 + str r0, [r4, #0x2c] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0202AC18 + add r2, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD80_022355F0 + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_0202ABE4 + add r0, r5, #0 + bl FUN_02016A18 + b _02235006 +_02234F9C: + add r0, r4, #0 + bl MOD80_022350C4 + b _02235006 +_02234FA4: + mov r0, #0 + strh r0, [r4, #0x36] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0202ABDC + cmp r0, #0 + beq _02235006 + mov r0, #0x3e + bl FUN_020669C0 + add r5, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + ldr r0, [r0] + bl FUN_0202ABEC + add r0, r5, #0 + bl FUN_020690E4 + add r2, r0, #0 + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #3 + str r0, [r4, #0x28] + mov r0, #0x22 + str r0, [r4, #0x2c] + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_0202ABE4 + add r0, r5, #0 + bl FUN_02016A18 + b _02235006 +_02234FF4: + str r0, [r4, #0x3c] + mov r0, #0x26 + str r0, [r4, #0x2c] + b _02235006 +_02234FFC: + mov r0, #3 + mov r1, #1 + mov r2, #0 + bl FUN_02033F70 +_02235006: + mov r0, #3 + pop {r3, r4, r5, pc} + nop +_0223500C: .word 0x00000F0F +_02235010: .word 0x00000B34 +_02235014: .word 0x0000100C + thumb_func_end MOD80_02234E7C + + thumb_func_start MOD80_02235018 +MOD80_02235018: ; 0x02235018 + push {r4, lr} + mov r1, #1 + mov r2, #0 + add r4, r0, #0 + bl MOD80_0222E7A8 + mov r0, #0x24 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02235018 + + thumb_func_start MOD80_0223502C +MOD80_0223502C: ; 0x0223502C + push {r4, lr} + add r4, r0, #0 + add r0, #0xd4 + bl MOD80_0222DC68 + mov r0, #0x1b + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_0223502C + + thumb_func_start MOD80_02235040 +MOD80_02235040: ; 0x02235040 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _022350BE + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0xf + bhi _022350B8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02235064: ; jump table + .short _022350AC - _02235064 - 2 ; case 0 + .short _022350AC - _02235064 - 2 ; case 1 + .short _022350B4 - _02235064 - 2 ; case 2 + .short _022350A4 - _02235064 - 2 ; case 3 + .short _022350B8 - _02235064 - 2 ; case 4 + .short _022350B8 - _02235064 - 2 ; case 5 + .short _022350B8 - _02235064 - 2 ; case 6 + .short _022350B8 - _02235064 - 2 ; case 7 + .short _022350B8 - _02235064 - 2 ; case 8 + .short _022350B8 - _02235064 - 2 ; case 9 + .short _022350B8 - _02235064 - 2 ; case 10 + .short _022350B8 - _02235064 - 2 ; case 11 + .short _0223509E - _02235064 - 2 ; case 12 + .short _022350AC - _02235064 - 2 ; case 13 + .short _022350B8 - _02235064 - 2 ; case 14 + .short _02235084 - _02235064 - 2 ; case 15 +_02235084: + add r0, r4, #0 + bl MOD80_02235830 + cmp r0, #0 + beq _02235098 + mov r0, #0x16 + str r0, [r4, #0x2c] + mov r0, #0 + strh r0, [r4, #0x36] + b _022350B8 +_02235098: + mov r0, #1 + strh r0, [r4, #0x36] + b _022350B8 +_0223509E: + mov r0, #0 + strh r0, [r4, #0x36] + b _022350B8 +_022350A4: + str r0, [r4, #0x3c] + mov r0, #0x27 + str r0, [r4, #0x2c] + b _022350B8 +_022350AC: + str r0, [r4, #0x3c] + mov r0, #0x26 + str r0, [r4, #0x2c] + b _022350B8 +_022350B4: + bl FUN_020335E0 +_022350B8: + add r0, r4, #0 + bl MOD80_022350C4 +_022350BE: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02235040 + + thumb_func_start MOD80_022350C4 +MOD80_022350C4: ; 0x022350C4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x1c] + cmp r1, #1 + beq _022350D4 + cmp r1, #2 + beq _022350E2 + pop {r4, pc} +_022350D4: + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + mov r0, #0x24 + str r0, [r4, #0x2c] + pop {r4, pc} +_022350E2: + mov r1, #2 + mov r2, #3 + bl MOD80_0222E7A8 + mov r0, #0x24 + str r0, [r4, #0x2c] + pop {r4, pc} + thumb_func_end MOD80_022350C4 + + thumb_func_start MOD80_022350F0 +MOD80_022350F0: ; 0x022350F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0202AC18 + ldr r3, _02235154 ; =0x000001F5 + add r1, r4, #0 + add r2, r0, #0 + ldrsb r3, [r4, r3] + add r0, r4, #0 + add r1, #0xd4 + bl MOD80_022355F0 + ldr r0, [r4] + add r1, r4, #0 + ldr r0, [r0, #0x18] + add r1, #0xd4 + bl MOD80_02235784 + ldr r0, [r4] + mov r1, #0x19 + ldr r0, [r0, #0x28] + bl FUN_0202A170 + ldr r0, [r4] + add r1, r4, #0 + ldr r0, [r0, #0x2c] + add r1, #0xd4 + bl MOD80_022357A0 + ldr r0, [r4] + mov r1, #0x18 + ldr r0, [r0, #0x28] + bl FUN_0202A0E8 + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_0202ABE4 + mov r0, #0x1e + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #0x13 + mov r2, #0xb + bl MOD80_02235820 + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02235154: .word 0x000001F5 + thumb_func_end MOD80_022350F0 + + thumb_func_start MOD80_02235158 +MOD80_02235158: ; 0x02235158 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DD08 + mov r0, #0x14 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02235158 + + thumb_func_start MOD80_02235168 +MOD80_02235168: ; 0x02235168 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _022351C8 + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0xf + bhi _022351C8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223518C: ; jump table + .short _022351BC - _0223518C - 2 ; case 0 + .short _022351BC - _0223518C - 2 ; case 1 + .short _022351C4 - _0223518C - 2 ; case 2 + .short _022351BA - _0223518C - 2 ; case 3 + .short _022351C8 - _0223518C - 2 ; case 4 + .short _022351C8 - _0223518C - 2 ; case 5 + .short _022351C8 - _0223518C - 2 ; case 6 + .short _022351C8 - _0223518C - 2 ; case 7 + .short _022351C8 - _0223518C - 2 ; case 8 + .short _022351C8 - _0223518C - 2 ; case 9 + .short _022351C8 - _0223518C - 2 ; case 10 + .short _022351BA - _0223518C - 2 ; case 11 + .short _022351B2 - _0223518C - 2 ; case 12 + .short _022351BC - _0223518C - 2 ; case 13 + .short _022351C8 - _0223518C - 2 ; case 14 + .short _022351AC - _0223518C - 2 ; case 15 +_022351AC: + mov r0, #0x21 + str r0, [r4, #0x2c] + b _022351C8 +_022351B2: + mov r0, #3 + bl FUN_020336A0 + b _022351C8 +_022351BA: + str r0, [r4, #0x3c] +_022351BC: + mov r0, #4 + bl FUN_020336A0 + b _022351C8 +_022351C4: + bl FUN_020335E0 +_022351C8: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02235168 + + thumb_func_start MOD80_022351CC +MOD80_022351CC: ; 0x022351CC + mov r0, #3 + bx lr + thumb_func_end MOD80_022351CC + + thumb_func_start MOD80_022351D0 +MOD80_022351D0: ; 0x022351D0 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + strh r1, [r4, #0x36] + mov r1, #9 + mov r2, #7 + bl MOD80_0222E7A8 + mov r0, #0x24 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_022351D0 + + thumb_func_start MOD80_022351E8 +MOD80_022351E8: ; 0x022351E8 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + strh r1, [r4, #0x36] + mov r1, #9 + mov r2, #8 + bl MOD80_0222E7A8 + mov r0, #0x24 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_022351E8 + + thumb_func_start MOD80_02235200 +MOD80_02235200: ; 0x02235200 + push {r4, lr} + mov r1, #9 + add r2, r1, #0 + add r4, r0, #0 + bl MOD80_0222E7A8 + mov r0, #0x24 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02235200 + + thumb_func_start MOD80_02235214 +MOD80_02235214: ; 0x02235214 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + strh r1, [r4, #0x36] + mov r1, #9 + mov r2, #0xa + bl MOD80_0222E7A8 + mov r0, #0x1e + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02235214 + + thumb_func_start MOD80_0223522C +MOD80_0223522C: ; 0x0223522C + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DD4C + mov r0, #0x17 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_0223522C + + thumb_func_start MOD80_0223523C +MOD80_0223523C: ; 0x0223523C + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _022352A6 + bl MOD80_0222DBB8 + add r0, #0xf + cmp r0, #0xf + bhi _022352A6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223525E: ; jump table + .short _0223529A - _0223525E - 2 ; case 0 + .short _0223529A - _0223525E - 2 ; case 1 + .short _022352A2 - _0223525E - 2 ; case 2 + .short _0223529A - _0223525E - 2 ; case 3 + .short _022352A6 - _0223525E - 2 ; case 4 + .short _022352A6 - _0223525E - 2 ; case 5 + .short _022352A6 - _0223525E - 2 ; case 6 + .short _022352A6 - _0223525E - 2 ; case 7 + .short _022352A6 - _0223525E - 2 ; case 8 + .short _022352A6 - _0223525E - 2 ; case 9 + .short _02235292 - _0223525E - 2 ; case 10 + .short _0223528C - _0223525E - 2 ; case 11 + .short _02235286 - _0223525E - 2 ; case 12 + .short _0223529A - _0223525E - 2 ; case 13 + .short _022352A6 - _0223525E - 2 ; case 14 + .short _0223527E - _0223525E - 2 ; case 15 +_0223527E: + add r0, r4, #0 + bl MOD80_022350C4 + b _022352A6 +_02235286: + add r0, r4, #0 + bl MOD80_022350C4 +_0223528C: + add r0, r4, #0 + bl MOD80_022350C4 +_02235292: + mov r0, #3 + bl FUN_020336A0 + b _022352A6 +_0223529A: + mov r0, #4 + bl FUN_020336A0 + b _022352A6 +_022352A2: + bl FUN_020335E0 +_022352A6: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_0223523C + + thumb_func_start MOD80_022352AC +MOD80_022352AC: ; 0x022352AC + push {r3, r4, lr} + sub sp, #4 + ldr r1, _022352E8 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _022352EC ; =0x00000B34 + mov r2, #0x89 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x24 + bl MOD80_0222E6DC + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + add r0, r4, #0 + bl MOD80_0222E8D8 + add r0, r4, #0 + bl MOD80_02235C40 + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022352E8: .word 0x00000F0F +_022352EC: .word 0x00000B34 + thumb_func_end MOD80_022352AC + + thumb_func_start MOD80_022352F0 +MOD80_022352F0: ; 0x022352F0 + push {r3, lr} + ldr r1, [r0, #0x3c] + mov r2, #0x90 + add r1, #0xf + cmp r1, #0xe + bhi _02235330 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02235308: ; jump table + .short _02235330 - _02235308 - 2 ; case 0 + .short _0223532E - _02235308 - 2 ; case 1 + .short _02235330 - _02235308 - 2 ; case 2 + .short _02235330 - _02235308 - 2 ; case 3 + .short _02235326 - _02235308 - 2 ; case 4 + .short _02235326 - _02235308 - 2 ; case 5 + .short _02235326 - _02235308 - 2 ; case 6 + .short _02235326 - _02235308 - 2 ; case 7 + .short _02235326 - _02235308 - 2 ; case 8 + .short _02235326 - _02235308 - 2 ; case 9 + .short _02235330 - _02235308 - 2 ; case 10 + .short _02235330 - _02235308 - 2 ; case 11 + .short _02235330 - _02235308 - 2 ; case 12 + .short _0223532E - _02235308 - 2 ; case 13 + .short _0223532A - _02235308 - 2 ; case 14 +_02235326: + mov r2, #0x1a + b _02235330 +_0223532A: + mov r2, #0x8d + b _02235330 +_0223532E: + mov r2, #0x92 +_02235330: + ldr r1, _02235340 ; =0x00000F0F + mov r3, #1 + str r1, [sp] + ldr r1, _02235344 ; =0x00000B34 + ldr r1, [r0, r1] + bl MOD80_02236C70 + pop {r3, pc} + .align 2, 0 +_02235340: .word 0x00000F0F +_02235344: .word 0x00000B34 + thumb_func_end MOD80_022352F0 + + thumb_func_start MOD80_02235348 +MOD80_02235348: ; 0x02235348 + push {r4, lr} + add r4, r0, #0 + bl MOD80_022352F0 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x24 + bl MOD80_0222E6DC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + add r0, r4, #0 + bl MOD80_0222E8D8 + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02235348 + + thumb_func_start MOD80_02235370 +MOD80_02235370: ; 0x02235370 + push {r4, lr} + add r4, r0, #0 + bl MOD80_022352F0 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x24 + bl MOD80_0222E6DC + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + add r0, r4, #0 + bl MOD80_0222E8D8 + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02235370 + + thumb_func_start MOD80_02235398 +MOD80_02235398: ; 0x02235398 + push {r4, lr} + add r4, r0, #0 + mov r1, #0x25 + mov r2, #0x1e + bl MOD80_0222E6DC + add r0, r4, #0 + mov r1, #0x21 + mov r2, #0x24 + bl MOD80_02235820 + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02235398 + + thumb_func_start MOD80_022353B4 +MOD80_022353B4: ; 0x022353B4 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02022830 + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0x20] + bl FUN_02022840 + mov r0, #0x1f + str r0, [r4, #0x2c] + bl FUN_0201B9EC + ldr r1, _022353EC ; =0x00000445 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x3c + blo _022353E0 + bl ErrorHandling +_022353E0: + ldr r0, _022353F0 ; =0x00000FDC + add r1, r5, #2 + str r1, [r4, r0] + mov r0, #3 + pop {r3, r4, r5, pc} + nop +_022353EC: .word 0x00000445 +_022353F0: .word 0x00000FDC + thumb_func_end MOD80_022353B4 + + thumb_func_start MOD80_022353F4 +MOD80_022353F4: ; 0x022353F4 + ldr r1, _0223540C ; =0x00000FDC + ldr r2, [r0, r1] + sub r2, r2, #1 + str r2, [r0, r1] + ldr r1, [r0, r1] + cmp r1, #0 + bne _02235406 + mov r1, #0x20 + str r1, [r0, #0x2c] +_02235406: + mov r0, #3 + bx lr + nop +_0223540C: .word 0x00000FDC + thumb_func_end MOD80_022353F4 + + thumb_func_start MOD80_02235410 +MOD80_02235410: ; 0x02235410 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0x20] + bl FUN_02022854 + cmp r0, #1 + bne _02235426 + ldr r0, _0223542C ; =0x00000FE4 + ldrh r0, [r4, r0] + str r0, [r4, #0x2c] +_02235426: + mov r0, #3 + pop {r4, pc} + nop +_0223542C: .word 0x00000FE4 + thumb_func_end MOD80_02235410 + + thumb_func_start MOD80_02235430 +MOD80_02235430: ; 0x02235430 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0x20] + bl FUN_02022854 + cmp r0, #2 + bne _0223544C + ldr r0, _02235450 ; =0x00000FE6 + ldrh r0, [r4, r0] + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD80_0222E8D8 +_0223544C: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02235450: .word 0x00000FE6 + thumb_func_end MOD80_02235430 + + thumb_func_start MOD80_02235454 +MOD80_02235454: ; 0x02235454 + push {r4, lr} + add r4, r0, #0 + bl FUN_02022830 + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0x20] + bl FUN_02022840 + mov r0, #0x23 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02235454 + + thumb_func_start MOD80_02235470 +MOD80_02235470: ; 0x02235470 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0x20] + bl FUN_02022854 + cmp r0, #2 + bne _022354AE + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + add r0, r4, #0 + bl MOD80_0222E8D8 + ldr r0, _022354B4 ; =0x00000F0F + ldr r1, _022354B8 ; =0x00000B34 + str r0, [sp] + ldr r1, [r4, r1] + ldr r2, [r4, #0x28] + add r0, r4, #0 + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x1c + bl MOD80_0222E6DC +_022354AE: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022354B4: .word 0x00000F0F +_022354B8: .word 0x00000B34 + thumb_func_end MOD80_02235470 + + thumb_func_start MOD80_022354BC +MOD80_022354BC: ; 0x022354BC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_0222E8D8 + bl FUN_02033ED0 + ldr r0, _02235510 ; =0x0000100C + ldr r0, [r4, r0] + cmp r0, #1 + bne _022354EC + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _02235504 +_022354EC: + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 +_02235504: + mov r0, #0 + str r0, [r4, #0x2c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + nop +_02235510: .word 0x0000100C + thumb_func_end MOD80_022354BC + + thumb_func_start MOD80_02235514 +MOD80_02235514: ; 0x02235514 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223552E + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_0223552E: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02235514 + + thumb_func_start MOD80_02235534 +MOD80_02235534: ; 0x02235534 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xb8 + ldrh r0, [r0] + add r6, r1, #0 + cmp r0, #0x12 + beq _02235590 + mov r0, #0x3e + bl FUN_020669C0 + add r1, r5, #0 + add r2, r5, #0 + add r4, r0, #0 + ldr r0, [r5] + add r1, #0xb8 + add r2, #0xba + ldrh r1, [r1] + ldrh r2, [r2] + ldr r0, [r0, #0xc] + bl FUN_0206B5E4 + add r1, r4, #0 + bl FUN_02069A64 + add r2, r5, #0 + ldr r0, [r5] + add r2, #0xb8 + ldrh r2, [r2] + ldr r0, [r0] + add r1, r4, #0 + bl FUN_0202ABF8 + add r1, r5, #0 + add r2, r5, #0 + ldr r0, [r5] + add r1, #0xb8 + add r2, #0xba + ldrh r1, [r1] + ldrh r2, [r2] + ldr r0, [r0, #0xc] + bl FUN_0206B2FC + add r0, r4, #0 + bl FUN_02016A18 + b _022355DC +_02235590: + add r1, r5, #0 + ldr r0, [r5] + add r1, #0xba + ldrh r1, [r1] + ldr r0, [r0, #8] + bl FUN_0206B9B0 + add r4, r0, #0 + bl FUN_0206AA84 + add r2, r5, #0 + ldr r0, [r5] + add r2, #0xb8 + ldrh r2, [r2] + ldr r0, [r0] + add r1, r4, #0 + bl FUN_0202ABF8 + add r1, r5, #0 + ldr r0, [r5] + add r1, #0xba + ldrh r1, [r1] + ldr r0, [r0, #8] + bl FUN_0206B938 + ldr r0, [r5] + ldr r1, _022355EC ; =0x000001B9 + ldr r0, [r0, #8] + bl FUN_0206BAE4 + cmp r0, #0 + bne _022355DC + ldr r0, [r5] + ldr r0, [r0, #0x20] + bl FUN_02029EF8 + bl FUN_02029F08 +_022355DC: + cmp r6, #0 + beq _022355EA + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl FUN_0202ABE4 +_022355EA: + pop {r4, r5, r6, pc} + .align 2, 0 +_022355EC: .word 0x000001B9 + thumb_func_end MOD80_02235534 + + thumb_func_start MOD80_022355F0 +MOD80_022355F0: ; 0x022355F0 + push {r0, r1, r2, r3} + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + add r6, r3, #0 + bl FUN_020671BC + ldr r0, [r5] + add r1, r4, #0 + ldr r0, [r0, #0x20] + bl FUN_0202C144 + mov r0, #0x12 + str r0, [sp, #0x20] + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_0206B9AC + cmp r0, #6 + bne _02235624 + mov r0, #0 + str r0, [sp, #0x20] +_02235624: + cmp r6, #0 + beq _02235640 + mov r1, #0x46 + add r0, sp, #0 + strb r1, [r0] + add r0, r4, #0 + mov r1, #9 + add r2, sp, #0 + bl FUN_02067830 + ldr r0, [r5] + ldr r0, [r0] + bl MOD80_02235754 +_02235640: + ldr r0, [sp, #0x20] + cmp r0, #0x12 + bne _02235664 + ldr r0, [r5] + add r1, r4, #0 + ldr r0, [r0, #8] + bl FUN_0206B900 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_0206B9AC + add r1, r5, #0 + mov r2, #0x12 + add r1, #0xcc + str r2, [r1] + sub r1, r0, #1 + b _02235690 +_02235664: + mov r0, #0 + str r0, [sp, #4] + ldr r0, [r5] + add r1, sp, #0x20 + ldr r0, [r0, #0xc] + add r2, sp, #4 + bl FUN_0206B384 + add r0, r4, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [sp, #0x20] + ldr r0, [r0, #0xc] + bl FUN_0206B244 + add r0, r5, #0 + ldr r1, [sp, #0x20] + add r0, #0xcc + str r1, [r0] + ldr r1, [sp, #4] +_02235690: + add r0, r5, #0 + add r0, #0xd0 + str r1, [r0] + ldr r0, [r5] + mov r1, #0 + ldr r0, [r0] + bl FUN_0202ABE4 + add sp, #8 + pop {r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + thumb_func_end MOD80_022355F0 + + thumb_func_start MOD80_022356AC +MOD80_022356AC: ; 0x022356AC + push {r0, r1, r2, r3} + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + ldr r0, [r0, #0x20] + bl FUN_0202C144 + mov r0, #0x12 + str r0, [sp, #0x20] + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_0206B9AC + cmp r0, #6 + bne _022356D2 + mov r0, #0 + str r0, [sp, #0x20] +_022356D2: + mov r1, #0x46 + add r0, sp, #0 + strb r1, [r0] + add r0, r4, #0 + mov r1, #9 + add r2, sp, #0 + bl FUN_02067830 + ldr r0, [sp, #0x20] + cmp r0, #0x12 + bne _02235706 + ldr r0, [r5] + add r1, r4, #0 + ldr r0, [r0, #8] + bl FUN_0206B900 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_0206B9AC + add r1, r5, #0 + mov r2, #0x12 + add r1, #0xcc + str r2, [r1] + sub r1, r0, #1 + b _02235732 +_02235706: + mov r0, #0 + str r0, [sp, #4] + ldr r0, [r5] + add r1, sp, #0x20 + ldr r0, [r0, #0xc] + add r2, sp, #4 + bl FUN_0206B384 + add r0, r4, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [sp, #0x20] + ldr r0, [r0, #0xc] + bl FUN_0206B244 + add r0, r5, #0 + ldr r1, [sp, #0x20] + add r0, #0xcc + str r1, [r0] + ldr r1, [sp, #4] +_02235732: + add r0, r5, #0 + add r0, #0xd0 + str r1, [r0] + ldr r0, [r5] + mov r1, #0 + ldr r0, [r0] + bl FUN_0202ABE4 + ldr r0, [r5] + ldr r0, [r0] + bl MOD80_02235754 + add sp, #8 + pop {r3, r4, r5} + pop {r3} + add sp, #0x10 + bx r3 + thumb_func_end MOD80_022356AC + + thumb_func_start MOD80_02235754 +MOD80_02235754: ; 0x02235754 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + add r0, sp, #0xc + add r1, sp, #0 + bl MOD04_021DE1F8 + ldr r1, [sp, #0x14] + ldr r3, [sp, #0xc] + add r0, r4, #0 + lsl r4, r3, #0x18 + ldr r3, [sp, #0x10] + lsl r1, r1, #0x18 + lsl r3, r3, #0x18 + lsr r3, r3, #8 + ldr r2, [sp, #0x18] + lsr r1, r1, #0x10 + orr r3, r4 + orr r1, r3 + orr r1, r2 + bl FUN_0202AC10 + add sp, #0x1c + pop {r3, r4, pc} + thumb_func_end MOD80_02235754 + + thumb_func_start MOD80_02235784 +MOD80_02235784: ; 0x02235784 + push {r4, lr} + ldr r3, _0223579C ; =0x0000011E + add r4, r1, #0 + add r2, r3, #1 + ldrb r1, [r4, r3] + add r3, r3, #5 + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl FUN_020337C8 + pop {r4, pc} + nop +_0223579C: .word 0x0000011E + thumb_func_end MOD80_02235784 + + thumb_func_start MOD80_022357A0 +MOD80_022357A0: ; 0x022357A0 + push {r4, r5, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x74 + add r2, sp, #4 + bl FUN_020671BC + add r0, r4, #0 + bl FUN_020689E0 + add r3, r0, #0 + mov r0, #0x3e + str r0, [sp] + add r0, #0xce + add r0, r4, r0 + add r4, #0xf6 + ldrb r1, [r4] + add r2, sp, #4 + bl FUN_0202952C + add r1, r0, #0 + add r0, r5, #0 + mov r2, #4 + bl FUN_02028AD4 + add sp, #0x1c + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD80_022357A0 + + thumb_func_start MOD80_022357DC +MOD80_022357DC: ; 0x022357DC + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl MOD80_022331F8 + cmp r0, #0 + beq _022357FA + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_0206B9AC + cmp r0, #6 + bne _022357FA + mov r0, #2 + pop {r4, pc} +_022357FA: + ldr r0, _0223581C ; =0x00001008 + ldrh r1, [r4, r0] + mov r0, #0x87 + lsl r0, r0, #2 + cmp r1, r0 + bne _02235816 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_0206B9AC + cmp r0, #6 + bne _02235816 + mov r0, #1 + pop {r4, pc} +_02235816: + mov r0, #0 + pop {r4, pc} + nop +_0223581C: .word 0x00001008 + thumb_func_end MOD80_022357DC + + thumb_func_start MOD80_02235820 +MOD80_02235820: ; 0x02235820 + ldr r3, _0223582C ; =0x00000FE4 + strh r1, [r0, r3] + add r1, r3, #2 + strh r2, [r0, r1] + bx lr + nop +_0223582C: .word 0x00000FE4 + thumb_func_end MOD80_02235820 + + thumb_func_start MOD80_02235830 +MOD80_02235830: ; 0x02235830 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0202ABDC + cmp r0, #0 + bne _0223584A + ldrh r0, [r4, #0x36] + cmp r0, #0 + beq _0223584A + mov r0, #1 + pop {r4, pc} +_0223584A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02235830 + + thumb_func_start MOD80_02235850 +MOD80_02235850: ; 0x02235850 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + add r4, r1, #0 + bl MOD80_02235C88 + ldr r2, _022358F0 ; =0x00000D14 + add r0, sp, #0 + add r1, r5, #0 + add r2, r5, r2 + mov r3, #2 + bl MOD80_0222E5E8 + mov r0, #2 + str r0, [sp, #0x28] + lsl r0, r0, #0x12 + str r0, [sp, #8] + ldr r0, _022358F4 ; =0x00182000 + str r0, [sp, #0xc] + add r0, sp, #0 + bl FUN_0201FE94 + mov r1, #0xe7 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0xe7 + lsl r0, r0, #4 + mov r1, #7 + mul r1, r4 + ldr r0, [r5, r0] + add r1, r1, #3 + bl FUN_02020130 + mov r0, #0xe7 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r4, _022358F8 ; =0x022375A6 + mov r7, #0 + mov r6, #0xe +_022358AC: + add r0, sp, #0 + bl FUN_0201FE94 + ldr r1, _022358FC ; =0x00000E74 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _022358FC ; =0x00000E74 + add r1, r6, #0 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _022358FC ; =0x00000E74 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _022358FC ; =0x00000E74 + ldrh r1, [r4] + ldrh r2, [r4, #2] + ldr r0, [r5, r0] + bl MOD80_02235AFC + add r7, r7, #1 + add r5, r5, #4 + add r6, r6, #4 + add r4, r4, #4 + cmp r7, #7 + blt _022358AC + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022358F0: .word 0x00000D14 +_022358F4: .word 0x00182000 +_022358F8: .word 0x022375A6 +_022358FC: .word 0x00000E74 + thumb_func_end MOD80_02235850 + + thumb_func_start MOD80_02235900 +MOD80_02235900: ; 0x02235900 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD80_02235850 + ldr r0, _0223593C ; =MOD80_02235964 + mov r1, #0x10 + mov r2, #5 + mov r3, #0x3e + bl FUN_020061E8 + ldr r1, _02235940 ; =0x00000FE8 + str r0, [r5, r1] + ldr r0, [r5, r1] + bl FUN_0201B6C8 + mov r1, #0 + add r2, r1, #0 + str r1, [r0] + sub r2, #0x28 + str r2, [r0, #4] + str r4, [r0, #8] + str r5, [r0, #0xc] + bl MOD80_02235948 + ldr r0, _02235944 ; =0x0000062F + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_0223593C: .word MOD80_02235964 +_02235940: .word 0x00000FE8 +_02235944: .word 0x0000062F + thumb_func_end MOD80_02235900 + + thumb_func_start MOD80_02235948 +MOD80_02235948: ; 0x02235948 + add r3, r0, #0 + ldr r2, [r3, #0xc] + mov r0, #0xe7 + lsl r0, r0, #4 + ldr r0, [r2, r0] + ldr r3, [r3, #8] + mov r2, #7 + mul r2, r3 + ldr r3, _02235960 ; =FUN_02020130 + add r1, r1, r2 + bx r3 + nop +_02235960: .word FUN_02020130 + thumb_func_end MOD80_02235948 + + thumb_func_start MOD80_02235964 +MOD80_02235964: ; 0x02235964 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #3 + bhi _02235A06 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223597E: ; jump table + .short _02235986 - _0223597E - 2 ; case 0 + .short _022359AE - _0223597E - 2 ; case 1 + .short _022359CA - _0223597E - 2 ; case 2 + .short _022359F2 - _0223597E - 2 ; case 3 +_02235986: + ldr r0, [r4, #4] + cmp r0, #0xa0 + ble _0223599A + mov r0, #0xa0 + str r0, [r4, #4] + mov r1, #1 + add r0, r4, #0 + str r1, [r4] + bl MOD80_02235948 +_0223599A: + ldr r0, [r4, #4] + mov r1, #0x80 + add r2, r0, #5 + mov r0, #0xe7 + str r2, [r4, #4] + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD80_02235AFC + pop {r4, r5, r6, pc} +_022359AE: + mov r0, #0xe7 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02020388 + cmp r0, #0 + bne _02235A06 + add r0, r4, #0 + mov r1, #2 + bl MOD80_02235948 + mov r0, #2 + str r0, [r4] + pop {r4, r5, r6, pc} +_022359CA: + ldr r0, [r4, #4] + cmp r0, #0x82 + bge _022359DE + mov r0, #0x82 + str r0, [r4, #4] + mov r1, #3 + add r0, r4, #0 + str r1, [r4] + bl MOD80_02235948 +_022359DE: + ldr r0, [r4, #4] + mov r1, #0x80 + sub r2, r0, #2 + mov r0, #0xe7 + str r2, [r4, #4] + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD80_02235AFC + pop {r4, r5, r6, pc} +_022359F2: + ldr r0, _02235A08 ; =0x0000060D + bl FUN_020054C8 + ldr r1, [r4, #0xc] + ldr r0, _02235A0C ; =0x00000FEC + mov r2, #1 + strh r2, [r1, r0] + add r0, r6, #0 + bl FUN_0200621C +_02235A06: + pop {r4, r5, r6, pc} + .align 2, 0 +_02235A08: .word 0x0000060D +_02235A0C: .word 0x00000FEC + thumb_func_end MOD80_02235964 + + thumb_func_start MOD80_02235A10 +MOD80_02235A10: ; 0x02235A10 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, _02235A48 ; =MOD80_02235A54 + mov r1, #0x10 + mov r2, #5 + mov r3, #0x3e + bl FUN_020061E8 + ldr r1, _02235A4C ; =0x00000FE8 + str r0, [r5, r1] + ldr r0, [r5, r1] + bl FUN_0201B6C8 + mov r1, #0 + str r1, [r0] + mov r1, #0x82 + str r1, [r0, #4] + str r4, [r0, #8] + mov r1, #5 + str r5, [r0, #0xc] + bl MOD80_02235948 + ldr r0, _02235A50 ; =0x0000060E + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_02235A48: .word MOD80_02235A54 +_02235A4C: .word 0x00000FE8 +_02235A50: .word 0x0000060E + thumb_func_end MOD80_02235A10 + + thumb_func_start MOD80_02235A54 +MOD80_02235A54: ; 0x02235A54 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + ldr r5, [r4, #0xc] + cmp r1, #3 + bhi _02235AF4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02235A6C: ; jump table + .short _02235A74 - _02235A6C - 2 ; case 0 + .short _02235A9E - _02235A6C - 2 ; case 1 + .short _02235AC2 - _02235A6C - 2 ; case 2 + .short _02235AEA - _02235A6C - 2 ; case 3 +_02235A74: + ldr r0, [r4, #4] + cmp r0, #0xa0 + ble _02235A8A + mov r0, #0xa0 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4] + add r0, r4, #0 + mov r1, #6 + bl MOD80_02235948 +_02235A8A: + ldr r0, [r4, #4] + mov r1, #0x80 + add r2, r0, #2 + mov r0, #0xe7 + str r2, [r4, #4] + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD80_02235AFC + pop {r3, r4, r5, pc} +_02235A9E: + mov r0, #0xe7 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02020388 + cmp r0, #0 + bne _02235AF4 + add r0, r4, #0 + mov r1, #0 + bl MOD80_02235948 + mov r0, #2 + str r0, [r4] + mov r0, #0x63 + lsl r0, r0, #4 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_02235AC2: + mov r0, #0x13 + ldr r1, [r4, #4] + mvn r0, r0 + cmp r1, r0 + bge _02235AD6 + mov r1, #3 + add r0, r4, #0 + str r1, [r4] + bl MOD80_02235948 +_02235AD6: + ldr r0, [r4, #4] + mov r1, #0x80 + sub r2, r0, #5 + mov r0, #0xe7 + str r2, [r4, #4] + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD80_02235AFC + pop {r3, r4, r5, pc} +_02235AEA: + ldr r1, _02235AF8 ; =0x00000FEC + mov r2, #1 + strh r2, [r5, r1] + bl FUN_0200621C +_02235AF4: + pop {r3, r4, r5, pc} + nop +_02235AF8: .word 0x00000FEC + thumb_func_end MOD80_02235A54 + + thumb_func_start MOD80_02235AFC +MOD80_02235AFC: ; 0x02235AFC + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + add r5, r2, #0 + cmp r1, #0 + ble _02235B1A + lsl r0, r1, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _02235B28 +_02235B1A: + lsl r0, r1, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_02235B28: + bl _ffix + sub r5, #8 + str r0, [sp] + cmp r5, #0 + ble _02235B46 + lsl r0, r5, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _02235B54 +_02235B46: + lsl r0, r5, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_02235B54: + bl _ffix + mov r1, #1 + lsl r1, r1, #0x14 + add r0, r0, r1 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD80_02235AFC + + thumb_func_start MOD80_02235B70 +MOD80_02235B70: ; 0x02235B70 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02235B8C ; =0x022375C2 + bl FUN_02020988 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02235B86 + cmp r0, r4 + blt _02235B8A +_02235B86: + mov r0, #0 + mvn r0, r0 +_02235B8A: + pop {r4, pc} + .align 2, 0 +_02235B8C: .word 0x022375C2 + thumb_func_end MOD80_02235B70 + + thumb_func_start MOD80_02235B90 +MOD80_02235B90: ; 0x02235B90 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + add r0, r1, #0 + beq _02235BAA + add r0, r2, #0 + cmp r0, #1 + bne _02235BAA + ldr r0, _02235C24 ; =0x0000064F + bl FUN_020054C8 +_02235BAA: + ldr r4, [sp, #4] + mov r0, #0xe + mov r6, #0 + str r0, [sp, #0x10] + add r5, r4, #0 + mov r7, #0x11 +_02235BB6: + ldr r0, [sp, #8] + cmp r6, r0 + bge _02235C00 + ldr r0, _02235C28 ; =0x000002EE + ldr r1, [sp, #4] + ldrb r0, [r4, r0] + mov r3, #0xc6 + add r2, r1, #0 + str r0, [sp] + ldr r0, _02235C2C ; =0x00000FF4 + lsl r3, r3, #2 + ldr r0, [r1, r0] + ldr r1, _02235C30 ; =0x00000FFC + ldrb r3, [r4, r3] + ldr r1, [r2, r1] + add r2, r6, #0 + bl MOD80_02235CD0 + ldr r0, [sp, #0xc] + cmp r0, #0 + ldr r0, _02235C34 ; =0x00000E74 + beq _02235BEC + ldr r0, [r5, r0] + ldr r1, [sp, #0x10] + bl FUN_02020130 + b _02235BF4 +_02235BEC: + ldr r0, [r5, r0] + add r1, r7, #0 + bl FUN_02020130 +_02235BF4: + ldr r0, _02235C34 ; =0x00000E74 + mov r1, #1 + ldr r0, [r5, r0] + bl FUN_020200A0 + b _02235C0A +_02235C00: + ldr r0, _02235C34 ; =0x00000E74 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 +_02235C0A: + mov r0, #0x49 + lsl r0, r0, #2 + add r4, r4, r0 + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r0, r0, #4 + str r0, [sp, #0x10] + add r5, r5, #4 + add r7, r7, #4 + cmp r6, #7 + blt _02235BB6 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02235C24: .word 0x0000064F +_02235C28: .word 0x000002EE +_02235C2C: .word 0x00000FF4 +_02235C30: .word 0x00000FFC +_02235C34: .word 0x00000E74 + thumb_func_end MOD80_02235B90 + + thumb_func_start MOD80_02235C38 +MOD80_02235C38: ; 0x02235C38 + lsl r0, r0, #2 + add r0, #0xe + bx lr + .align 2, 0 + thumb_func_end MOD80_02235C38 + + thumb_func_start MOD80_02235C40 +MOD80_02235C40: ; 0x02235C40 + push {r3, r4, r5, r6, r7, lr} + ldr r7, _02235C84 ; =0x00000E74 + add r5, r0, #0 + mov r4, #0 +_02235C48: + ldr r0, [r5, r7] + bl FUN_02020128 + cmp r0, #0 + beq _02235C7A + ldr r0, _02235C84 ; =0x00000E74 + ldr r0, [r5, r0] + bl FUN_020201DC + add r6, r0, #0 + add r0, r4, #0 + bl MOD80_02235C38 + add r0, r0, #1 + cmp r6, r0 + beq _02235C7A + add r0, r4, #0 + bl MOD80_02235C38 + add r1, r0, #0 + ldr r0, _02235C84 ; =0x00000E74 + add r1, r1, #1 + ldr r0, [r5, r0] + bl FUN_02020130 +_02235C7A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + blt _02235C48 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235C84: .word 0x00000E74 + thumb_func_end MOD80_02235C40 + + thumb_func_start MOD80_02235C88 +MOD80_02235C88: ; 0x02235C88 + push {r3, r4, lr} + sub sp, #4 + ldr r2, _02235CC8 ; =0x00000FFC + add r4, r0, #0 + mov r0, #0x56 + mov r1, #7 + add r2, r4, r2 + mov r3, #0x3e + bl FUN_02006C08 + ldr r3, _02235CCC ; =0x00000FF8 + mov r1, #9 + str r0, [r4, r3] + mov r0, #0x3e + sub r3, r3, #4 + str r0, [sp] + mov r0, #0x56 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BB0 + mov r1, #0xff + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #4 + mov r1, #2 + ldr r0, [r4, r0] + lsl r1, r1, #0xe + bl DC_FlushRange + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02235CC8: .word 0x00000FFC +_02235CCC: .word 0x00000FF8 + thumb_func_end MOD80_02235C88 + + thumb_func_start MOD80_02235CD0 +MOD80_02235CD0: ; 0x02235CD0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + ldr r0, [sp, #0x18] + add r1, r3, #0 + add r5, r2, #0 + bl FUN_020536C8 + add r4, r0, #0 + mov r0, #6 + lsl r0, r0, #8 + ldr r1, [r7, #0x14] + mul r0, r4 + add r0, r1, r0 + ldr r1, _02235D0C ; =0x02237598 + lsl r2, r5, #1 + ldrh r1, [r1, r2] + mov r2, #2 + ldr r6, [r6, #0xc] + lsl r2, r2, #8 + bl GXS_LoadOBJ + lsl r0, r4, #5 + add r1, r5, #2 + add r0, r6, r0 + lsl r1, r1, #5 + mov r2, #0x20 + bl GXS_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235D0C: .word 0x02237598 + thumb_func_end MOD80_02235CD0 + + thumb_func_start MOD80_02235D10 +MOD80_02235D10: ; 0x02235D10 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02235D30 ; =0x00000FEC + ldrh r1, [r4, r0] + cmp r1, #0 + beq _02235D2E + add r0, #0xc + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xff + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 +_02235D2E: + pop {r4, pc} + .align 2, 0 +_02235D30: .word 0x00000FEC + thumb_func_end MOD80_02235D10 + + thumb_func_start MOD80_02235D34 +MOD80_02235D34: ; 0x02235D34 + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4] + add r2, #0xb8 + add r3, #0xba + ldr r0, [r1, #8] + ldrh r2, [r2] + ldrh r3, [r3] + ldr r1, [r1, #0xc] + bl MOD80_02232FB8 + str r0, [r4, #0x60] + add r0, r4, #0 + mov r1, #2 + add r0, #0x71 + strb r1, [r0] + add r0, r4, #0 + mov r2, #1 + add r0, #0x73 + strb r2, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x74 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x72 + strb r2, [r0] + add r0, r4, #0 + add r0, #0x78 + strh r1, [r0] + ldr r0, [r4] + ldr r0, [r0, #0x20] + bl FUN_02079C70 + add r1, r4, #0 + add r1, #0x8c + str r0, [r1] + ldr r0, [r4] + ldr r0, [r0, #0x34] + str r0, [r4, #0x7c] + ldr r0, [r4] + ldr r0, [r0, #0x24] + str r0, [r4, #0x64] + ldr r0, [r4] + ldr r0, [r0, #0x20] + bl FUN_0202A918 + add r1, r4, #0 + add r1, #0x80 + str r0, [r1] + add r0, r4, #0 + ldr r1, _02235DCC ; =0x022375E4 + add r0, #0x60 + bl FUN_0207B000 + ldr r1, [r4] + add r0, r4, #0 + ldr r1, [r1, #0x1c] + add r0, #0x60 + bl FUN_0207C2A4 + add r1, r4, #0 + ldr r0, _02235DD0 ; =0x020FA6E8 + add r1, #0x60 + mov r2, #0x3e + bl FUN_02006234 + str r0, [r4, #0x5c] + mov r0, #1 + add r4, #0xac + str r0, [r4] + mov r0, #2 + pop {r4, pc} + nop +_02235DCC: .word 0x022375E4 +_02235DD0: .word 0x020FA6E8 + thumb_func_end MOD80_02235D34 + + thumb_func_start MOD80_02235DD4 +MOD80_02235DD4: ; 0x02235DD4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x5c] + mov r4, #3 + bl FUN_02006290 + cmp r0, #0 + beq _02235DF6 + ldr r0, [r5, #0x5c] + bl FUN_02006260 + ldr r2, [r5, #0x24] + add r0, r5, #0 + mov r1, #5 + bl MOD80_0222E7A8 + mov r4, #4 +_02235DF6: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD80_02235DD4 + + thumb_func_start MOD80_02235DFC +MOD80_02235DFC: ; 0x02235DFC + push {r3, lr} + bl MOD80_0222E7B0 + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD80_02235DFC + + thumb_func_start MOD80_02235E08 +MOD80_02235E08: ; 0x02235E08 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x3e + bl FUN_020669C0 + mov r1, #1 + lsl r1, r1, #0xc + str r0, [r4, r1] + ldr r0, [r4, #0x24] + cmp r0, #0xa + bls _02235E20 + b _02235F94 +_02235E20: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02235E2C: ; jump table + .short _02235F94 - _02235E2C - 2 ; case 0 + .short _02235F94 - _02235E2C - 2 ; case 1 + .short _02235F94 - _02235E2C - 2 ; case 2 + .short _02235F94 - _02235E2C - 2 ; case 3 + .short _02235F94 - _02235E2C - 2 ; case 4 + .short _02235F94 - _02235E2C - 2 ; case 5 + .short _02235F94 - _02235E2C - 2 ; case 6 + .short _02235E42 - _02235E2C - 2 ; case 7 + .short _02235E88 - _02235E2C - 2 ; case 8 + .short _02235F26 - _02235E2C - 2 ; case 9 + .short _02235ECE - _02235E2C - 2 ; case 10 +_02235E42: + add r0, r4, #0 + add r0, #0xd4 + bl FUN_020690E4 + add r1, r4, #0 + add r1, #0x90 + str r0, [r1] + add r0, r4, #0 + add r0, #0x90 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0xd4 + bl MOD80_022361AC + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc8 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r0, r4, #0 + mov r1, #3 + add r0, #0x9c + str r1, [r0] + add r0, r4, #0 + mov r1, #2 + add r0, #0xa0 + str r1, [r0] + b _02235F94 +_02235E88: + add r0, r4, #0 + add r0, #0xd4 + bl FUN_020690E4 + add r1, r4, #0 + add r1, #0x94 + str r0, [r1] + add r0, r4, #0 + add r0, #0x94 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0x90 + str r1, [r0] + add r0, r4, #0 + add r0, #0xd4 + bl MOD80_022361AC + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc8 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r0, r4, #0 + mov r1, #3 + add r0, #0x9c + str r1, [r0] + add r0, r4, #0 + mov r1, #4 + add r0, #0xa0 + str r1, [r0] + b _02235F94 +_02235ECE: + add r0, r4, #0 + add r0, #0xd4 + bl FUN_020690E4 + add r1, r4, #0 + add r1, #0x94 + str r0, [r1] + ldr r0, [r4] + mov r1, #1 + lsl r1, r1, #0xc + ldr r0, [r0] + ldr r1, [r4, r1] + bl FUN_0202ABEC + mov r0, #1 + lsl r0, r0, #0xc + ldr r0, [r4, r0] + bl FUN_020690E4 + add r1, r4, #0 + add r1, #0x90 + str r0, [r1] + add r0, r4, #0 + add r0, #0xd4 + bl MOD80_022361AC + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc8 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r0, r4, #0 + mov r1, #3 + add r0, #0x9c + str r1, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xa0 + str r1, [r0] + b _02235F94 +_02235F26: + ldr r0, [r4] + ldr r1, [r4, r1] + ldr r0, [r0] + bl FUN_0202ABEC + mov r0, #1 + lsl r0, r0, #0xc + ldr r0, [r4, r0] + bl FUN_020690E4 + add r1, r4, #0 + add r1, #0x90 + str r0, [r1] + add r0, r4, #0 + mov r1, #0x7e + add r0, #0xc4 + lsl r1, r1, #2 + add r2, r4, r1 + ldr r0, [r0] + sub r1, #0xd4 + mul r1, r0 + add r0, r2, r1 + bl FUN_020690E4 + add r1, r4, #0 + add r1, #0x94 + str r0, [r1] + add r0, r4, #0 + mov r1, #0x7e + add r0, #0xc4 + lsl r1, r1, #2 + add r2, r4, r1 + ldr r0, [r0] + sub r1, #0xd4 + mul r1, r0 + add r0, r2, r1 + bl MOD80_022361AC + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc8 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r0, r4, #0 + mov r1, #3 + add r0, #0x9c + str r1, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xa0 + str r1, [r0] +_02235F94: + ldr r0, [r4] + mov r2, #0x3e + ldr r1, [r0, #0x24] + add r0, r4, #0 + add r0, #0xa4 + str r1, [r0] + add r1, r4, #0 + ldr r0, _02235FB8 ; =0x022375F0 + add r1, #0x90 + bl FUN_02006234 + str r0, [r4, #0x5c] + mov r0, #1 + add r4, #0xac + str r0, [r4] + mov r0, #2 + pop {r4, pc} + nop +_02235FB8: .word 0x022375F0 + thumb_func_end MOD80_02235E08 + + thumb_func_start MOD80_02235FBC +MOD80_02235FBC: ; 0x02235FBC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r4, r0, #0 + ldr r0, [r4, #0x2c] + mov r6, #3 + cmp r0, #0 + beq _02235FD2 + cmp r0, #1 + bne _02235FD0 + b _02236148 +_02235FD0: + b _0223617E +_02235FD2: + ldr r0, [r4, #0x5c] + bl FUN_02006290 + cmp r0, #0 + bne _02235FDE + b _0223617E +_02235FDE: + ldr r0, [r4, #0x5c] + bl FUN_02006260 + ldr r1, [r4, #0x24] + cmp r1, #9 + bne _02236060 + add r0, r4, #0 + bl MOD80_022361E8 + mov r1, #6 + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + add r3, r0, #0 + add r0, sp, #0x30 + lsl r3, r3, #0x10 + str r0, [sp] + mov r0, #0 + add r1, r7, #0 + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02069168 + str r0, [sp, #0x24] + cmp r0, #0 + beq _02236052 + ldr r5, [r4] + ldr r0, [r5, #0x20] + bl FUN_0204C1A8 + ldr r1, [r5, #0x3c] + ldr r2, [sp, #0x24] + str r1, [sp] + ldr r1, [r5, #0x10] + str r1, [sp, #4] + ldr r1, [r5, #0x30] + str r1, [sp, #8] + ldr r1, [r5, #0x28] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + add r1, r7, #0 + str r0, [sp, #0x14] + mov r0, #4 + str r0, [sp, #0x18] + mov r0, #0x3e + str r0, [sp, #0x1c] + ldr r3, [r5, #0x24] + mov r0, #0 + bl FUN_0206C700 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + mov r0, #1 + str r0, [r4, #0x2c] + b _0223617E +_02236052: + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + mov r6, #4 + b _0223617E +_02236060: + cmp r1, #8 + beq _02236068 + cmp r1, #0xa + bne _0223613A +_02236068: + add r0, r4, #0 + bl MOD80_022361E8 + add r7, r0, #0 + mov r0, #0x3e + bl FUN_020669C0 + str r0, [sp, #0x20] + ldr r0, [r4] + ldr r1, [sp, #0x20] + ldr r0, [r0] + bl FUN_0202ABEC + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r5, r0, #0 + ldr r0, [sp, #0x20] + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + cmp r5, r0 + bne _022360B6 + mov r1, #0 + add r0, r7, #0 + add r2, r1, #0 + bl FUN_020671BC + add r5, r0, #0 + mov r1, #0 + ldr r0, [sp, #0x20] + add r2, r1, #0 + bl FUN_020671BC + cmp r5, r0 + beq _02236126 +_022360B6: + add r0, r7, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r3, r0, #0 + add r0, sp, #0x2c + lsl r3, r3, #0x10 + str r0, [sp] + mov r0, #0 + add r1, r7, #0 + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02069168 + str r0, [sp, #0x28] + cmp r0, #0 + beq _02236118 + ldr r5, [r4] + ldr r0, [r5, #0x20] + bl FUN_0204C1A8 + ldr r1, [r5, #0x3c] + ldr r2, [sp, #0x28] + str r1, [sp] + ldr r1, [r5, #0x10] + str r1, [sp, #4] + ldr r1, [r5, #0x30] + str r1, [sp, #8] + ldr r1, [r5, #0x28] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + add r1, r7, #0 + str r0, [sp, #0x14] + mov r0, #4 + str r0, [sp, #0x18] + mov r0, #0x3e + str r0, [sp, #0x1c] + ldr r3, [r5, #0x24] + mov r0, #0 + bl FUN_0206C700 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + mov r0, #1 + str r0, [r4, #0x2c] + b _02236132 +_02236118: + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + mov r6, #4 + b _02236132 +_02236126: + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + mov r6, #4 +_02236132: + ldr r0, [sp, #0x20] + bl FUN_02016A18 + b _0223617E +_0223613A: + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + mov r6, #4 + b _0223617E +_02236148: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_0206C91C + cmp r0, #0 + beq _0223617E + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_0206C92C + add r0, r4, #0 + bl MOD80_02236218 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02236184 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + add r0, r4, #0 + mov r1, #7 + mov r2, #0xc + bl MOD80_0222E7A8 + mov r6, #4 +_0223617E: + add r0, r6, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02236184: .word 0xFFFF1FFF + thumb_func_end MOD80_02235FBC + + thumb_func_start MOD80_02236188 +MOD80_02236188: ; 0x02236188 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + bl MOD80_0222E7B0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02236188 + + thumb_func_start MOD80_022361AC +MOD80_022361AC: ; 0x022361AC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3e + bl FUN_02023928 + add r4, r0, #0 + bl FUN_02023948 + mov r1, #0x43 + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r5, r1 + bl FUN_0202395C + ldr r1, _022361E0 ; =0x00000122 + add r0, r4, #0 + ldrb r1, [r5, r1] + bl FUN_02023A6C + ldr r1, _022361E4 ; =0x00000123 + add r0, r4, #0 + ldrb r1, [r5, r1] + bl FUN_02023A74 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022361E0: .word 0x00000122 +_022361E4: .word 0x00000123 + thumb_func_end MOD80_022361AC + + thumb_func_start MOD80_022361E8 +MOD80_022361E8: ; 0x022361E8 + push {r3, lr} + cmp r1, #9 + bne _02236200 + mov r1, #0x7e + lsl r1, r1, #2 + add r2, r0, r1 + add r0, #0xc4 + ldr r0, [r0] + sub r1, #0xd4 + mul r1, r0 + add r0, r2, r1 + pop {r3, pc} +_02236200: + cmp r1, #0xa + bne _02236208 + add r0, #0xd4 + pop {r3, pc} +_02236208: + cmp r1, #8 + bne _02236210 + add r0, #0xd4 + pop {r3, pc} +_02236210: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD80_022361E8 + + thumb_func_start MOD80_02236218 +MOD80_02236218: ; 0x02236218 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r1, [r5, #0x24] + bl MOD80_022361E8 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + cmp r0, #0x12 + bne _02236248 + ldr r0, [r5] + add r5, #0xd0 + ldr r0, [r0, #8] + ldr r1, [r5] + bl FUN_0206B9B0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02069B88 + add sp, #8 + pop {r3, r4, r5, pc} +_02236248: + mov r0, #0 + add r1, r5, #0 + add r2, r5, #0 + str r0, [sp, #4] + str r0, [sp] + ldr r0, [r5] + add r1, #0xcc + add r2, #0xd0 + ldr r0, [r0, #0xc] + ldr r1, [r1] + ldr r2, [r2] + bl FUN_0206B2FC + ldr r0, [r5] + add r1, sp, #4 + ldr r0, [r0, #0xc] + add r2, sp, #0 + bl FUN_0206B384 + add r0, r4, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [sp, #4] + ldr r0, [r0, #0xc] + bl FUN_0206B244 + add sp, #8 + pop {r3, r4, r5, pc} + thumb_func_end MOD80_02236218 + + thumb_func_start MOD80_02236284 +MOD80_02236284: ; 0x02236284 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD80_02236664 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #4] + bl MOD80_02236378 + add r0, r4, #0 + bl MOD80_02236488 + add r0, r4, #0 + bl MOD80_02236580 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4] + ldr r0, [r0, #0x20] + bl FUN_02033288 + add r0, r4, #0 + bl MOD80_02236D84 + bl MOD04_021DDD7C + cmp r0, #0 + bne _0223631E + ldr r0, [r4] + ldr r0, [r0, #0x40] + cmp r0, #0 + beq _02236318 + ldr r0, _02236328 ; =0x00000F0F + ldr r1, _0223632C ; =0x00000B3C + str r0, [sp] + mov r2, #1 + ldr r1, [r4, r1] + add r0, r4, #0 + add r3, r2, #0 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0xa + mov r2, #2 + bl MOD80_0222E6DC + add r0, r4, #0 + bl MOD80_0222E8BC + b _02236322 +_02236318: + mov r0, #0 + str r0, [r4, #0x2c] + b _02236322 +_0223631E: + mov r0, #0xf + str r0, [r4, #0x2c] +_02236322: + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02236328: .word 0x00000F0F +_0223632C: .word 0x00000B3C + thumb_func_end MOD80_02236284 + + thumb_func_start MOD80_02236330 +MOD80_02236330: ; 0x02236330 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222E79C + bl FUN_02033EEC + ldr r1, [r4, #0x2c] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _0223634C ; =0x02237C68 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0223634C: .word 0x02237C68 + thumb_func_end MOD80_02236330 + + thumb_func_start MOD80_02236350 +MOD80_02236350: ; 0x02236350 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0223669C + add r0, r4, #0 + bl MOD80_02236638 + ldr r0, [r4, #4] + bl MOD80_02236464 + add r0, r4, #0 + bl MOD80_0222E7B0 + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _02236374 + mov r0, #5 + pop {r4, pc} +_02236374: + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD80_02236350 + + thumb_func_start MOD80_02236378 +MOD80_02236378: ; 0x02236378 + push {r3, r4, r5, lr} + sub sp, #0x70 + ldr r5, _02236454 ; =0x02237638 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x54 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _02236458 ; =0x0223761C + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r5, _0223645C ; =0x02237654 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _02236460 ; =0x02237600 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x3e + bl FUN_02017F18 + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E74C + add sp, #0x70 + pop {r3, r4, r5, pc} + nop +_02236454: .word 0x02237638 +_02236458: .word 0x0223761C +_0223645C: .word 0x02237654 +_02236460: .word 0x02237600 + thumb_func_end MOD80_02236378 + + thumb_func_start MOD80_02236464 +MOD80_02236464: ; 0x02236464 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD80_02236464 + + thumb_func_start MOD80_02236488 +MOD80_02236488: ; 0x02236488 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r2, #0 + str r2, [sp] + mov r0, #0x3e + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r3, #0 + str r3, [sp] + mov r0, #0x3e + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + mov r2, #4 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + mov r1, #0x1a + mov r0, #4 + lsl r1, r1, #4 + mov r2, #0x3e + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x3e + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0 + mov r0, #0x36 + str r1, [sp] + lsl r0, r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #2 + add r2, r4, #0 + mov r3, #1 + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #4 + add r2, r4, #0 + mov r3, #1 + bl FUN_020068C8 + mov r1, #0 + mov r0, #0x36 + str r1, [sp] + lsl r0, r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #9 + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x3e + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #0xa + add r2, r4, #0 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD80_02236488 + + thumb_func_start MOD80_02236580 +MOD80_02236580: ; 0x02236580 + push {r3, r4, lr} + sub sp, #0x14 + mov r3, #4 + add r4, r0, #0 + str r3, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x94 + ldr r1, _02236628 ; =0x00000EC8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + bl FUN_02019064 + ldr r0, _02236628 ; =0x00000EC8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r0, #1 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x81 + lsl r0, r0, #2 + ldr r1, _0223662C ; =0x00000EB8 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #4 + bl FUN_02019064 + ldr r0, _0223662C ; =0x00000EB8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + mov r3, #1 + mov r1, #0xb5 + ldr r0, _02236630 ; =0x000F0E00 + str r3, [sp] + str r0, [sp, #4] + ldr r0, _0223662C ; =0x00000EB8 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, r0 + mov r2, #0 + bl MOD80_02236D1C + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + ldr r1, _02236634 ; =0x00000E98 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + ldr r0, _02236634 ; =0x00000E98 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02236628: .word 0x00000EC8 +_0223662C: .word 0x00000EB8 +_02236630: .word 0x000F0E00 +_02236634: .word 0x00000E98 + thumb_func_end MOD80_02236580 + + thumb_func_start MOD80_02236638 +MOD80_02236638: ; 0x02236638 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02236658 ; =0x00000E98 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _0223665C ; =0x00000EB8 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, _02236660 ; =0x00000EC8 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + nop +_02236658: .word 0x00000E98 +_0223665C: .word 0x00000EB8 +_02236660: .word 0x00000EC8 + thumb_func_end MOD80_02236638 + + thumb_func_start MOD80_02236664 +MOD80_02236664: ; 0x02236664 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb4 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _02236694 ; =0x00000B4C + str r0, [r4, r1] + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0x3e + bl FUN_020219F4 + ldr r1, _02236698 ; =0x00000B7C + str r0, [r4, r1] + sub r1, #0x48 + ldr r0, [r4, r1] + mov r1, #0x1f + bl FUN_0200A914 + mov r1, #0xb5 + lsl r1, r1, #4 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_02236694: .word 0x00000B4C +_02236698: .word 0x00000B7C + thumb_func_end MOD80_02236664 + + thumb_func_start MOD80_0223669C +MOD80_0223669C: ; 0x0223669C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb5 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _022366BC ; =0x00000B7C + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _022366C0 ; =0x00000B4C + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + .align 2, 0 +_022366BC: .word 0x00000B7C +_022366C0: .word 0x00000B4C + thumb_func_end MOD80_0223669C + + thumb_func_start MOD80_022366C4 +MOD80_022366C4: ; 0x022366C4 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _022366F4 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x2d + lsl r1, r1, #6 + ldr r1, [r4, r1] + mov r2, #0x10 + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0xb + mov r2, #1 + bl MOD80_0222E6DC + ldr r0, _022366F8 ; =0x0000100A + mov r1, #1 + strh r1, [r4, r0] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_022366F4: .word 0x00000F0F +_022366F8: .word 0x0000100A + thumb_func_end MOD80_022366C4 + + thumb_func_start MOD80_022366FC +MOD80_022366FC: ; 0x022366FC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _02236758 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02236750 + sub r1, r1, #1 + cmp r0, r1 + bne _0223672E + bl FUN_020332DC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #9 + str r0, [r4, #0x2c] + b _02236750 +_0223672E: + ldr r0, _0223675C ; =0x00000F0F + ldr r1, _02236760 ; =0x00000B3C + str r0, [sp] + mov r2, #1 + ldr r1, [r4, r1] + add r0, r4, #0 + add r3, r2, #0 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0xa + mov r2, #2 + bl MOD80_0222E6DC + add r0, r4, #0 + bl MOD80_0222E8BC +_02236750: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_02236758: .word 0x00000FCC +_0223675C: .word 0x00000F0F +_02236760: .word 0x00000B3C + thumb_func_end MOD80_022366FC + + thumb_func_start MOD80_02236764 +MOD80_02236764: ; 0x02236764 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0223678C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _02236790 ; =0x00000B34 + mov r2, #7 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0xb + mov r2, #0xe + bl MOD80_0222E6DC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0223678C: .word 0x00000F0F +_02236790: .word 0x00000B34 + thumb_func_end MOD80_02236764 + + thumb_func_start MOD80_02236794 +MOD80_02236794: ; 0x02236794 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022367F4 ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022367F0 + sub r1, r1, #1 + cmp r0, r1 + bne _022367D2 + bl MOD04_021DDD7C + cmp r0, #0 + bne _022367BE + mov r0, #0 + str r0, [r4, #0x2c] + b _022367F0 +_022367BE: + add r0, r4, #0 + mov r1, #7 + mov r2, #0xb + bl MOD80_0222E7A8 + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #9 + str r0, [r4, #0x2c] + b _022367F0 +_022367D2: + bl MOD04_021DDD7C + cmp r0, #0 + beq _022367DE + bl MOD04_021DDBBC +_022367DE: + bl FUN_020332DC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #9 + str r0, [r4, #0x2c] +_022367F0: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_022367F4: .word 0x00000FCC + thumb_func_end MOD80_02236794 + + thumb_func_start MOD80_022367F8 +MOD80_022367F8: ; 0x022367F8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _02236820 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x2d + lsl r1, r1, #6 + ldr r1, [r4, r1] + mov r2, #0x19 + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0x10 + bl MOD80_0222E6DC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02236820: .word 0x00000F0F + thumb_func_end MOD80_022367F8 + + thumb_func_start MOD80_02236824 +MOD80_02236824: ; 0x02236824 + push {r4, lr} + add r4, r0, #0 + bl FUN_020332DC + bl MOD04_021DDBBC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #0x11 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02236824 + + thumb_func_start MOD80_02236844 +MOD80_02236844: ; 0x02236844 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0223686C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x2d + lsl r1, r1, #6 + ldr r1, [r4, r1] + mov r2, #0x1a + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0x12 + mov r2, #9 + bl MOD80_0222E6DC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0223686C: .word 0x00000F0F + thumb_func_end MOD80_02236844 + + thumb_func_start MOD80_02236870 +MOD80_02236870: ; 0x02236870 + push {r4, lr} + add r4, r0, #0 + add r0, #0x50 + mov r1, #2 + mov r2, #1 + mov r3, #0x14 + bl MOD04_021DDEE0 + mov r0, #2 + bl MOD04_021DDE7C + bl MOD04_021DDDCC + mov r0, #3 + str r0, [r4, #0x2c] + pop {r4, pc} + thumb_func_end MOD80_02236870 + + thumb_func_start MOD80_02236890 +MOD80_02236890: ; 0x02236890 + push {r3, r4, lr} + sub sp, #0x44 + add r4, r0, #0 + bl MOD04_021DDCE8 + bl MOD04_021DDD7C + cmp r0, #0 + beq _022368F4 + bl MOD04_021DDC1C + cmp r0, #4 + beq _022368EA + cmp r0, #7 + beq _022368B4 + cmp r0, #8 + beq _022368D4 + b _022368F4 +_022368B4: + add r0, sp, #4 + bl MOD04_021DD808 + str r0, [r4, #0x40] + ldr r0, [sp, #4] + str r0, [r4, #0x44] + bl MOD04_021DD6F0 + bl MOD04_021DDBBC + add r0, r4, #0 + bl MOD80_0222E8D8 + mov r0, #0x15 + str r0, [r4, #0x2c] + b _022368F4 +_022368D4: + add r0, sp, #0 + bl MOD04_021DD808 + add r0, r4, #0 + bl MOD80_0222E8D8 + mov r0, #0x13 + str r0, [r4, #0x2c] + sub r0, #0x15 + str r0, [r4, #0x3c] + b _022368F4 +_022368EA: + add r0, sp, #8 + bl MOD04_021DD9DC + mov r0, #4 + str r0, [r4, #0x2c] +_022368F4: + mov r0, #3 + add sp, #0x44 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD80_02236890 + + thumb_func_start MOD80_022368FC +MOD80_022368FC: ; 0x022368FC + push {r4, lr} + add r4, r0, #0 + bl MOD04_021DE05C + cmp r0, #0 + beq _0223690C + mov r0, #5 + str r0, [r4, #0x2c] +_0223690C: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_022368FC + + thumb_func_start MOD80_02236910 +MOD80_02236910: ; 0x02236910 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + bl MOD04_021DDF4C + cmp r0, #3 + beq _02236928 + cmp r0, #4 + beq _0223692E + cmp r0, #5 + beq _0223692E + b _02236998 +_02236928: + mov r0, #6 + str r0, [r4, #0x2c] + b _02236998 +_0223692E: + add r0, r4, #0 + bl MOD80_0222E8D8 + add r0, sp, #4 + add r1, sp, #0 + bl MOD04_021DD718 + str r0, [r4, #0x40] + ldr r0, [sp, #4] + str r0, [r4, #0x44] + bl MOD04_021DD6F0 + bl MOD04_021DDBBC + ldr r0, [sp] + cmp r0, #7 + bhi _02236986 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223695C: ; jump table + .short _02236986 - _0223695C - 2 ; case 0 + .short _0223696C - _0223695C - 2 ; case 1 + .short _0223696C - _0223695C - 2 ; case 2 + .short _02236986 - _0223695C - 2 ; case 3 + .short _02236972 - _0223695C - 2 ; case 4 + .short _02236986 - _0223695C - 2 ; case 5 + .short _0223697C - _0223695C - 2 ; case 6 + .short _02236982 - _0223695C - 2 ; case 7 +_0223696C: + mov r0, #0x15 + str r0, [r4, #0x2c] + b _02236986 +_02236972: + bl MOD04_021EB550 + mov r0, #0x15 + str r0, [r4, #0x2c] + b _02236986 +_0223697C: + mov r0, #0x15 + str r0, [r4, #0x2c] + b _02236986 +_02236982: + bl FUN_020335E0 +_02236986: + ldr r1, [sp, #4] + ldr r0, _022369A0 ; =0xFFFFB1E0 + cmp r1, r0 + bge _02236998 + ldr r0, _022369A4 ; =0xFFFF8AD1 + cmp r1, r0 + blt _02236998 + mov r0, #0x15 + str r0, [r4, #0x2c] +_02236998: + mov r0, #3 + add sp, #8 + pop {r4, pc} + nop +_022369A0: .word 0xFFFFB1E0 +_022369A4: .word 0xFFFF8AD1 + thumb_func_end MOD80_02236910 + + thumb_func_start MOD80_022369A8 +MOD80_022369A8: ; 0x022369A8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x14] + bl FUN_02028228 + add r4, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #4] + bl FUN_02023830 + cmp r0, #0 + bne _022369CC + ldr r1, [r5] + ldr r0, [r1, #4] + ldr r1, [r1, #0x38] + bl FUN_02023834 +_022369CC: + ldr r0, [r5] + ldr r0, [r0, #4] + bl FUN_02023830 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02096D68 + add r3, r0, #0 + add r2, r1, #0 + add r0, r6, #0 + add r1, r3, #0 + bl MOD80_0222D5C0 + mov r0, #7 + str r0, [r5, #0x2c] + mov r0, #3 + pop {r4, r5, r6, pc} + thumb_func_end MOD80_022369A8 + + thumb_func_start MOD80_022369F0 +MOD80_022369F0: ; 0x022369F0 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DEBC + mov r0, #8 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_022369F0 + + thumb_func_start MOD80_02236A00 +MOD80_02236A00: ; 0x02236A00 + push {r4, lr} + add r4, r0, #0 + bl MOD80_0222DB98 + cmp r0, #0 + beq _02236A82 + bl MOD80_0222DBB8 + add r1, r0, #0 + add r1, #0xf + cmp r1, #0x11 + bhi _02236A82 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02236A24: ; jump table + .short _02236A68 - _02236A24 - 2 ; case 0 + .short _02236A70 - _02236A24 - 2 ; case 1 + .short _02236A78 - _02236A24 - 2 ; case 2 + .short _02236A68 - _02236A24 - 2 ; case 3 + .short _02236A82 - _02236A24 - 2 ; case 4 + .short _02236A82 - _02236A24 - 2 ; case 5 + .short _02236A82 - _02236A24 - 2 ; case 6 + .short _02236A82 - _02236A24 - 2 ; case 7 + .short _02236A82 - _02236A24 - 2 ; case 8 + .short _02236A82 - _02236A24 - 2 ; case 9 + .short _02236A82 - _02236A24 - 2 ; case 10 + .short _02236A82 - _02236A24 - 2 ; case 11 + .short _02236A82 - _02236A24 - 2 ; case 12 + .short _02236A70 - _02236A24 - 2 ; case 13 + .short _02236A60 - _02236A24 - 2 ; case 14 + .short _02236A48 - _02236A24 - 2 ; case 15 + .short _02236A58 - _02236A24 - 2 ; case 16 + .short _02236A60 - _02236A24 - 2 ; case 17 +_02236A48: + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD80_0222E7A8 + mov r0, #9 + str r0, [r4, #0x2c] + b _02236A82 +_02236A58: + str r0, [r4, #0x3c] + mov r0, #0x13 + str r0, [r4, #0x2c] + b _02236A82 +_02236A60: + str r0, [r4, #0x3c] + mov r0, #0x13 + str r0, [r4, #0x2c] + b _02236A82 +_02236A68: + str r0, [r4, #0x3c] + mov r0, #0x13 + str r0, [r4, #0x2c] + b _02236A82 +_02236A70: + str r0, [r4, #0x3c] + mov r0, #0x13 + str r0, [r4, #0x2c] + b _02236A82 +_02236A78: + add r0, r4, #0 + bl MOD80_0222E8D8 + bl FUN_020335E0 +_02236A82: + add r0, r4, #0 + bl MOD80_0222E8D8 + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02236A00 + + thumb_func_start MOD80_02236A8C +MOD80_02236A8C: ; 0x02236A8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x44] + neg r0, r0 + bl MOD04_021D80E0 + ldr r2, [r4, #0x44] + add r1, r0, #0 + add r0, r4, #0 + neg r2, r2 + bl MOD80_02236E04 + mov r0, #0x16 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD80_02236A8C + + thumb_func_start MOD80_02236AAC +MOD80_02236AAC: ; 0x02236AAC + push {r4, lr} + add r4, r0, #0 + ldr r0, _02236AD4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _02236AC0 + mov r0, #2 + tst r0, r1 + beq _02236ACE +_02236AC0: + ldr r0, _02236AD8 ; =0x00000EC8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200CCF8 + mov r0, #0 + str r0, [r4, #0x2c] +_02236ACE: + mov r0, #3 + pop {r4, pc} + nop +_02236AD4: .word 0x021C48B8 +_02236AD8: .word 0x00000EC8 + thumb_func_end MOD80_02236AAC + + thumb_func_start MOD80_02236ADC +MOD80_02236ADC: ; 0x02236ADC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02033ED0 + add r0, r4, #0 + bl MOD80_0222E8D8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3e + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r0, _02236B14 ; =0x0000100C + mov r1, #1 + str r1, [r4, r0] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02236B14: .word 0x0000100C + thumb_func_end MOD80_02236ADC + + thumb_func_start MOD80_02236B18 +MOD80_02236B18: ; 0x02236B18 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02236B4C ; =0x00000FCC + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02236B48 + sub r1, r1, #1 + cmp r0, r1 + bne _02236B3A + mov r0, #0 + str r0, [r4, #0x2c] + b _02236B48 +_02236B3A: + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #9 + str r0, [r4, #0x2c] +_02236B48: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_02236B4C: .word 0x00000FCC + thumb_func_end MOD80_02236B18 + + thumb_func_start MOD80_02236B50 +MOD80_02236B50: ; 0x02236B50 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x3c] + mov r2, #0 + add r0, #0xf + cmp r0, #0x11 + bhi _02236B9E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02236B6C: ; jump table + .short _02236B9C - _02236B6C - 2 ; case 0 + .short _02236B98 - _02236B6C - 2 ; case 1 + .short _02236B9E - _02236B6C - 2 ; case 2 + .short _02236B9C - _02236B6C - 2 ; case 3 + .short _02236B9E - _02236B6C - 2 ; case 4 + .short _02236B9E - _02236B6C - 2 ; case 5 + .short _02236B9E - _02236B6C - 2 ; case 6 + .short _02236B9E - _02236B6C - 2 ; case 7 + .short _02236B9E - _02236B6C - 2 ; case 8 + .short _02236B9E - _02236B6C - 2 ; case 9 + .short _02236B9C - _02236B6C - 2 ; case 10 + .short _02236B9E - _02236B6C - 2 ; case 11 + .short _02236B9C - _02236B6C - 2 ; case 12 + .short _02236B98 - _02236B6C - 2 ; case 13 + .short _02236B94 - _02236B6C - 2 ; case 14 + .short _02236B9E - _02236B6C - 2 ; case 15 + .short _02236B90 - _02236B6C - 2 ; case 16 + .short _02236B94 - _02236B6C - 2 ; case 17 +_02236B90: + mov r2, #0x8c + b _02236B9E +_02236B94: + mov r2, #0x8d + b _02236B9E +_02236B98: + mov r2, #0x92 + b _02236B9E +_02236B9C: + mov r2, #0x91 +_02236B9E: + ldr r0, _02236BC0 ; =0x00000F0F + ldr r1, _02236BC4 ; =0x00000B34 + str r0, [sp] + ldr r1, [r4, r1] + add r0, r4, #0 + mov r3, #1 + bl MOD80_02236C70 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0x14 + bl MOD80_0222E6DC + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_02236BC0: .word 0x00000F0F +_02236BC4: .word 0x00000B34 + thumb_func_end MOD80_02236B50 + + thumb_func_start MOD80_02236BC8 +MOD80_02236BC8: ; 0x02236BC8 + push {r4, lr} + add r4, r0, #0 + bl FUN_020332DC + bl MOD04_021DDBBC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD80_0222E7A8 + mov r0, #9 + str r0, [r4, #0x2c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02236BC8 + + thumb_func_start MOD80_02236BE8 +MOD80_02236BE8: ; 0x02236BE8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02236C02 + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02236C02: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02236BE8 + + thumb_func_start MOD80_02236C08 +MOD80_02236C08: ; 0x02236C08 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02236C32 + ldr r0, _02236C38 ; =0x00000FDC + ldr r0, [r4, r0] + cmp r0, #0x1e + ble _02236C2A + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02236C2A: + ldr r0, _02236C38 ; =0x00000FDC + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_02236C32: + mov r0, #3 + pop {r4, pc} + nop +_02236C38: .word 0x00000FDC + thumb_func_end MOD80_02236C08 + + thumb_func_start MOD80_02236C3C +MOD80_02236C3C: ; 0x02236C3C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02236C66 + mov r2, #0x8d + ldr r0, [r4, #4] + mov r1, #0xd + lsl r2, r2, #2 + bl MOD80_0222E6A8 + ldr r1, _02236C6C ; =0x00000FCC + str r0, [r4, r1] + ldr r0, [r4, #0x30] + str r0, [r4, #0x2c] +_02236C66: + mov r0, #3 + pop {r4, pc} + nop +_02236C6C: .word 0x00000FCC + thumb_func_end MOD80_02236C3C + + thumb_func_start MOD80_02236C70 +MOD80_02236C70: ; 0x02236C70 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r4, r3, #0 + bl FUN_0200A914 + mov r1, #0xb3 + add r6, r0, #0 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0x1c + ldr r1, [r5, r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02236CD8 ; =0x00000E98 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _02236CD8 ; =0x00000E98 + mov r1, #0 + add r0, r5, r0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, _02236CD8 ; =0x00000E98 + ldr r2, _02236CDC ; =0x00000B4C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + ldr r0, _02236CE0 ; =0x00000FDC + mov r1, #0 + str r1, [r5, r0] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02236CD8: .word 0x00000E98 +_02236CDC: .word 0x00000B4C +_02236CE0: .word 0x00000FDC + thumb_func_end MOD80_02236C70 + + thumb_func_start MOD80_02236CE4 +MOD80_02236CE4: ; 0x02236CE4 + push {r4, lr} + add r4, r0, #0 + cmp r3, #1 + beq _02236CF2 + cmp r3, #2 + beq _02236D08 + b _02236D16 +_02236CF2: + ldr r0, [sp, #0xc] + mov r2, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r1, r1, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r2, r0, #1 + b _02236D16 +_02236D08: + ldr r0, [sp, #0xc] + mov r2, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r2, r1, r0 +_02236D16: + add r0, r2, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD80_02236CE4 + + thumb_func_start MOD80_02236D1C +MOD80_02236D1C: ; 0x02236D1C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + ldr r3, [sp, #0x24] + add r5, r0, #0 + str r3, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r3, [sp, #0x20] + add r6, r1, #0 + bl MOD80_02236CE4 + add r3, r0, #0 + str r4, [sp] + mov r1, #0 + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD80_02236D1C + + thumb_func_start MOD80_02236D50 +MOD80_02236D50: ; 0x02236D50 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + ldr r3, [sp, #0x24] + add r5, r0, #0 + str r3, [sp] + mov r3, #0 + str r3, [sp, #4] + ldr r3, [sp, #0x20] + add r6, r1, #0 + bl MOD80_02236CE4 + add r3, r0, #0 + str r4, [sp] + mov r1, #0 + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD80_02236D50 + + thumb_func_start MOD80_02236D84 +MOD80_02236D84: ; 0x02236D84 + ldr r3, _02236D88 ; =FUN_02033E74 + bx r3 + .align 2, 0 +_02236D88: .word FUN_02033E74 + thumb_func_end MOD80_02236D84 + + thumb_func_start MOD80_02236D8C +MOD80_02236D8C: ; 0x02236D8C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + add r6, r1, #0 + lsl r0, r0, #8 + mov r1, #0x3e + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x2d + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r1, #0xb3 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0x4c + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + ldr r0, _02236DFC ; =0x00000EC8 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + ldr r0, _02236DFC ; =0x00000EC8 + mov r1, #1 + add r0, r5, r0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + ldr r0, _02236DFC ; =0x00000EC8 + ldr r2, _02236E00 ; =0x00000B7C + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02236DFC: .word 0x00000EC8 +_02236E00: .word 0x00000B7C + thumb_func_end MOD80_02236D8C + + thumb_func_start MOD80_02236E04 +MOD80_02236E04: ; 0x02236E04 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + bne _02236E16 + mov r4, #0xb +_02236E16: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xb3 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + mov r3, #5 + bl FUN_0200AD38 + ldr r0, _02236E44 ; =0x00000E98 + mov r1, #1 + add r0, r5, r0 + bl FUN_0200D0E0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD80_02236D8C + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02236E44: .word 0x00000E98 + thumb_func_end MOD80_02236E04 + + .section .rodata + ; 0x02236E48 + .incbin "baserom.nds", 0x2E8A88, 0x828 + + .section .data + ; 0x02237680 + .incbin "baserom.nds", 0x2E92C0, 0x660 + + .section .bss + ; 0x02237CE0 + .space 0x160 diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s new file mode 100644 index 00000000..c0b33a96 --- /dev/null +++ b/arm9/modules/81/asm/module_81.s @@ -0,0 +1,10353 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD81_02237E40 +MOD81_02237E40: ; 0x02237E40 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + bne _02237E50 + b _02237FC8 +_02237E50: + mov r0, #3 + mov r1, #0x39 + lsl r2, r0, #0xf + bl FUN_0201681C + mov r0, #3 + mov r1, #0x3a + lsl r2, r0, #0xf + bl FUN_0201681C + bl MOD81_02238858 + ldr r1, _02237FD0 ; =0x00000492 + mov r0, #3 + mov r2, #1 + bl FUN_0200433C + mov r1, #0x55 + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #0x39 + bl FUN_02006268 + add r4, r0, #0 + bne _02237E84 + b _02237FC2 +_02237E84: + add r0, r5, #0 + bl FUN_0200628C + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r0, #0x39 + bl FUN_02016B94 + str r0, [r4, #8] + mov r0, #0x19 + lsl r0, r0, #4 + mov r1, #0x39 + bl FUN_020219F4 + str r0, [r4, #0x14] + ldr r2, _02237FD4 ; =0x00000137 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x39 + bl FUN_0200A86C + str r0, [r4, #0x10] + mov r0, #0x39 + bl FUN_0200AA80 + str r0, [r4, #0xc] + ldr r2, [r4] + ldr r0, [r2, #0x10] + cmp r0, #1 + beq _02237ECC + cmp r0, #2 + beq _02237EFE + cmp r0, #4 + beq _02237F0A + b _02237F22 +_02237ECC: + ldr r0, [r4, #0xc] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ACF8 + ldr r2, [r4] + ldr r0, [r4, #0xc] + ldr r2, [r2, #4] + mov r1, #1 + bl FUN_0200ACF8 + ldr r2, [r4] + ldr r0, [r4, #0xc] + ldr r2, [r2, #8] + mov r1, #2 + bl FUN_0200ABC0 + ldr r0, [r4] + ldr r0, [r0, #4] + bl MOD81_02237FE8 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + b _02237F22 +_02237EFE: + ldr r0, [r4, #0xc] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ACF8 + b _02237F22 +_02237F0A: + ldr r0, [r4, #0xc] + ldr r2, [r2, #4] + mov r1, #1 + bl FUN_0200ACF8 + ldr r0, [r4] + ldr r0, [r0, #4] + bl MOD81_02237FE8 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] +_02237F22: + bl FUN_020B0FC0 + mov r0, #1 + str r0, [sp] + mov r0, #0x7f + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r1, #0x39 + str r1, [sp, #0x10] + mov r1, #0x80 + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x40 + add r1, #0x1c + mov r2, #0x39 + bl FUN_02008C9C + str r0, [r4, #0x18] + add r0, r4, #0 + mov r2, #0x3a + add r0, #0x1c + mov r1, #0 + lsl r2, r2, #0xe + bl FUN_02008D24 + ldr r0, [r4] + mov r1, #5 + ldr r0, [r0] + mov r2, #0 + bl FUN_020672BC + mov r1, #0x53 + lsl r1, r1, #2 + strh r0, [r4, r1] + ldr r0, [r4] + mov r1, #5 + ldr r0, [r0, #4] + mov r2, #0 + bl FUN_020672BC + ldr r1, _02237FD8 ; =0x0000014E + strh r0, [r4, r1] + mov r0, #0 + add r1, r1, #2 + str r0, [r4, r1] + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02237FDC ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _02237FE0 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r0, _02237FE4 ; =MOD81_022380F4 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA7C + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + add r1, #0xc + str r0, [r4, r1] +_02237FC2: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, pc} +_02237FC8: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02237FD0: .word 0x00000492 +_02237FD4: .word 0x00000137 +_02237FD8: .word 0x0000014E +_02237FDC: .word 0xFFFFE0FF +_02237FE0: .word 0x04001000 +_02237FE4: .word MOD81_022380F4 + thumb_func_end MOD81_02237E40 + + thumb_func_start MOD81_02237FE8 +MOD81_02237FE8: ; 0x02237FE8 + push {r3, lr} + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + mov r1, #0x1c + bl FUN_02068678 + cmp r0, #0 + bne _02238000 + mov r0, #1 + pop {r3, pc} +_02238000: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD81_02237FE8 + + thumb_func_start MOD81_02238004 +MOD81_02238004: ; 0x02238004 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl OS_DisableInterrupts + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02006278 + add r4, r0, #0 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + bl FUN_02033ED0 + ldr r0, [r4, #0xc] + bl FUN_0200AB18 + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + ldr r0, [r4, #0x14] + bl FUN_02021A20 + ldr r0, [r4, #8] + bl FUN_02016A18 + ldr r0, [r4, #0x18] + bl FUN_0201FD58 + bl FUN_02009FA0 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x39 + bl FUN_020168D0 + mov r0, #0x3a + bl FUN_020168D0 + add r0, r6, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD81_02238004 + + thumb_func_start MOD81_02238064 +MOD81_02238064: ; 0x02238064 + push {r4, r5, r6, lr} + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r3, [r4, #4] + cmp r3, #7 + bhs _022380E0 + ldr r1, [r4] + ldr r6, _022380E4 ; =0x0223CF90 + lsl r2, r3, #4 + ldr r1, [r1, #0x10] + ldr r6, [r6, r2] + tst r1, r6 + beq _022380D0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + cmp r1, #0 + bne _02238098 + ldr r1, _022380E8 ; =0x0223CF84 + ldr r1, [r1, r2] + blx r1 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r4, r1] +_02238098: + ldr r2, [r4, #4] + mov r0, #0x15 + lsl r3, r2, #4 + ldr r2, _022380EC ; =0x0223CF88 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, [r2, r3] + add r1, r5, #0 + blx r2 + cmp r0, #0 + beq _022380D8 + ldr r1, [r4, #4] + mov r0, #0x15 + lsl r2, r1, #4 + ldr r1, _022380F0 ; =0x0223CF8C + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [r1, r2] + blx r1 + mov r0, #0x15 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + str r1, [r5] + b _022380D8 +_022380D0: + add r0, r3, #1 + str r0, [r4, #4] + mov r0, #0 + str r0, [r5] +_022380D8: + bl MOD81_02238864 + mov r0, #0 + pop {r4, r5, r6, pc} +_022380E0: + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_022380E4: .word 0x0223CF90 +_022380E8: .word 0x0223CF84 +_022380EC: .word 0x0223CF88 +_022380F0: .word 0x0223CF8C + thumb_func_end MOD81_02238064 + + thumb_func_start MOD81_022380F4 +MOD81_022380F4: ; 0x022380F4 + push {r3, lr} + ldr r0, [r1, #0x18] + bl FUN_0201FDEC + bl FUN_02009F80 + ldr r3, _02238110 ; =0x027E0000 + ldr r1, _02238114 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_02238110: .word 0x027E0000 +_02238114: .word 0x00003FF8 + thumb_func_end MOD81_022380F4 + + thumb_func_start MOD81_02238118 +MOD81_02238118: ; 0x02238118 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x39 + add r6, r1, #0 + add r1, r0, #0 + add r1, #0xc7 + bl FUN_02016998 + add r4, r0, #0 + ldr r0, _022381DC ; =0x00000000 + str r0, [r5] + beq _022381D4 + mov r0, #0x5d + mov r1, #6 + add r2, sp, #4 + mov r3, #0x39 + bl FUN_02006C08 + add r7, r0, #0 + beq _02238152 + mov r0, #0 + add r1, r4, #0 + mov r2, #0x60 + bl MIi_CpuClear16 + add r0, r7, #0 + bl FUN_02016A18 +_02238152: + add r1, r4, #0 + mov r0, #0 + add r1, #0xec + str r0, [r1] + add r1, r4, #0 + add r1, #0xe8 + str r0, [r1] + add r1, r4, #0 + add r1, #0xf0 + str r0, [r1] + add r1, r4, #0 + add r1, #0xf4 + str r0, [r1] + add r1, r4, #0 + add r1, #0xe4 + str r5, [r1] + add r1, r4, #0 + add r1, #0xf8 + str r0, [r1] + add r1, r4, #0 + add r1, #0xfc + str r6, [r1] + add r3, r4, #0 + add r2, r0, #0 +_02238182: + add r1, r3, #0 + add r1, #0xc4 + add r0, r0, #1 + add r3, r3, #4 + str r2, [r1] + cmp r0, #8 + blt _02238182 + mov r0, #8 + str r0, [sp] + ldr r0, _022381E0 ; =0x04000050 + mov r1, #4 + mov r2, #0xc + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r0, #8 + str r0, [sp] + ldr r0, _022381E4 ; =0x04001050 + mov r1, #4 + mov r2, #0xc + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + ldr r0, _022381E8 ; =MOD81_02238248 + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA44 + add r1, r4, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + cmp r0, #0 + beq _022381D4 + add r0, r4, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #1 + str r1, [r0] +_022381D4: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022381DC: .word 0x00000000 +_022381E0: .word 0x04000050 +_022381E4: .word 0x04001050 +_022381E8: .word MOD81_02238248 + thumb_func_end MOD81_02238118 + + thumb_func_start MOD81_022381EC +MOD81_022381EC: ; 0x022381EC + add r1, r0, #0 + add r1, #0xe4 + ldr r1, [r1] + ldr r1, [r1] + cmp r1, #1 + bne _022381FE + mov r1, #1 + add r0, #0xe8 + str r1, [r0] +_022381FE: + bx lr + thumb_func_end MOD81_022381EC + + thumb_func_start MOD81_02238200 +MOD81_02238200: ; 0x02238200 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, #0xe4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + bne _02238246 + mov r4, #0 + add r5, r6, #0 +_02238212: + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _02238224 + add r0, r6, #0 + add r1, r4, #0 + bl MOD81_0223840C +_02238224: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _02238212 + add r0, r6, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #0 + str r1, [r0] + add r0, r6, #0 + add r0, #0xc0 + ldr r0, [r0] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 +_02238246: + pop {r4, r5, r6, pc} + thumb_func_end MOD81_02238200 + + thumb_func_start MOD81_02238248 +MOD81_02238248: ; 0x02238248 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + cmp r0, #0 + bne _022382C6 + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bgt _02238284 + ldr r0, _0223832C ; =0x000006AE + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x1e + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + bl MOD81_02238358 +_02238284: + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _02238328 + bl GX_BeginLoadBGExtPltt + bl GXS_BeginLoadBGExtPltt + add r0, r4, #0 + mov r1, #0x60 + bl DC_FlushRange + mov r1, #6 + add r0, r4, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GX_LoadBGExtPltt + mov r1, #6 + add r0, r4, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GXS_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + bl GXS_EndLoadBGExtPltt + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} +_022382C6: + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _02238308 + bl GX_BeginLoadBGExtPltt + bl GXS_BeginLoadBGExtPltt + add r0, r4, #0 + mov r1, #0x60 + bl DC_FlushRange + mov r1, #6 + add r0, r4, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GX_LoadBGExtPltt + mov r1, #6 + add r0, r4, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GXS_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + bl GXS_EndLoadBGExtPltt + add r0, r4, #0 + mov r1, #0 + add r0, #0xec + str r1, [r0] +_02238308: + add r0, r4, #0 + add r0, #0xf4 + ldr r0, [r0] + cmp r0, #0 + bne _02238328 + add r0, r4, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02238328: + pop {r3, r4, r5, pc} + nop +_0223832C: .word 0x000006AE + thumb_func_end MOD81_02238248 + + thumb_func_start MOD81_02238330 +MOD81_02238330: ; 0x02238330 + push {r3, r4} + cmp r1, #0 + blt _02238340 + cmp r1, #0x60 + bge _02238340 + mov r4, #0 + lsl r1, r1, #1 + strh r4, [r0, r1] +_02238340: + cmp r2, #0 + blt _0223834C + cmp r2, #0x60 + bge _0223834C + lsl r1, r2, #1 + strh r3, [r0, r1] +_0223834C: + mov r1, #1 + add r0, #0xec + str r1, [r0] + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD81_02238330 + + thumb_func_start MOD81_02238358 +MOD81_02238358: ; 0x02238358 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xf8 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + bne _02238404 + mov r0, #0x39 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _02238404 + add r0, r5, #0 + str r5, [r4] + add r0, #0xfc + ldr r0, [r0] + cmp r0, #1 + bne _0223838A + mov r0, #0 + mvn r0, r0 + b _0223838C +_0223838A: + mov r0, #0xf +_0223838C: + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #2 + str r0, [r4, #8] + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r1, r4, #0 + str r0, [r4, #0x10] + add r0, r5, #0 + add r0, #0xfc + ldr r0, [r0] + mov r2, #0xa + str r0, [r4, #0x14] + ldr r0, _02238408 ; =MOD81_0223843C + bl FUN_0200CA44 + add r1, r5, #0 + add r1, #0xf8 + ldr r1, [r1] + lsl r1, r1, #2 + add r1, r5, r1 + add r1, #0xc4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _022383FE + add r0, r5, #0 + add r0, #0xf4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xf4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xf8 + str r1, [r0] + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + cmp r0, #8 + blt _02238404 + mov r0, #0 + add r5, #0xf8 + str r0, [r5] + pop {r3, r4, r5, pc} +_022383FE: + add r0, r4, #0 + bl FUN_02016A18 +_02238404: + pop {r3, r4, r5, pc} + nop +_02238408: .word MOD81_0223843C + thumb_func_end MOD81_02238358 + + thumb_func_start MOD81_0223840C +MOD81_0223840C: ; 0x0223840C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r5, #0 + lsl r4, r1, #2 + add r6, #0xc4 + ldr r0, [r6, r4] + cmp r0, #0 + beq _0223843A + bl FUN_0201B6C8 + bl FUN_02016A18 + ldr r0, [r6, r4] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r6, r4] + add r0, r5, #0 + add r0, #0xf4 + ldr r0, [r0] + add r5, #0xf4 + sub r0, r0, #1 + str r0, [r5] +_0223843A: + pop {r4, r5, r6, pc} + thumb_func_end MOD81_0223840C + + thumb_func_start MOD81_0223843C +MOD81_0223843C: ; 0x0223843C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0xc] + add r1, r0, #1 + str r1, [r4, #0xc] + ldr r0, [r4, #8] + cmp r1, r0 + blt _022384A4 + mov r3, #0 + str r3, [r4, #0xc] + ldr r0, [r4, #0x14] + cmp r0, #1 + bne _0223847C + ldr r1, [r4, #4] + ldr r0, [r4] + add r2, r1, #1 + cmp r2, #0xf + blt _0223846E + bl MOD81_02238330 + ldr r0, [r4] + ldr r1, [r4, #0x10] + bl MOD81_0223840C + pop {r4, pc} +_0223846E: + ldr r3, _022384A8 ; =0x00007FFF + bl MOD81_02238330 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, pc} +_0223847C: + ldr r2, [r4, #4] + ldr r0, [r4] + cmp r2, #0 + bge _02238496 + add r1, r2, #0 + add r2, r2, #1 + bl MOD81_02238330 + ldr r0, [r4] + ldr r1, [r4, #0x10] + bl MOD81_0223840C + pop {r4, pc} +_02238496: + ldr r3, _022384A8 ; =0x00007FFF + add r1, r2, #1 + bl MOD81_02238330 + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] +_022384A4: + pop {r4, pc} + nop +_022384A8: .word 0x00007FFF + thumb_func_end MOD81_0223843C + + thumb_func_start MOD81_022384AC +MOD81_022384AC: ; 0x022384AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r6, r1, #0 + mov r0, #0x39 + mov r1, #0x24 + add r7, r2, #0 + str r3, [sp, #4] + ldr r5, [sp, #0x28] + bl FUN_02016998 + add r4, r0, #0 + ldr r0, _0223850C ; =0x00000001 + str r0, [r5] + beq _02238504 + ldr r1, [sp] + str r1, [r4] + str r6, [r4, #8] + ldr r1, [sp, #4] + str r7, [r4, #0xc] + str r1, [r4, #0x10] + ldr r1, [sp, #0x20] + str r1, [r4, #0x14] + cmp r6, r7 + bge _022384E0 + mov r0, #0 +_022384E0: + str r0, [r4, #0x18] + ldr r0, [sp, #0x24] + mov r2, #0 + str r0, [r4, #0x1c] + str r5, [r4, #4] + ldr r0, _02238510 ; =MOD81_02238514 + add r1, r4, #0 + str r2, [r5] + bl FUN_0200CA60 + str r0, [r4, #0x20] + cmp r0, #0 + bne _02238504 + mov r0, #1 + str r0, [r5] + add r0, r4, #0 + bl FUN_02016A18 +_02238504: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223850C: .word 0x00000001 +_02238510: .word MOD81_02238514 + thumb_func_end MOD81_022384AC + + thumb_func_start MOD81_02238514 +MOD81_02238514: ; 0x02238514 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + ldr r1, [r4, #0x10] + mul r1, r0 + asr r2, r1, #0xc + asr r1, r2, #4 + lsr r1, r1, #0x1b + add r1, r2, r1 + asr r2, r1, #5 + ldr r1, [r4, #0x18] + cmp r1, #0 + beq _02238536 + cmp r1, #1 + beq _0223854C + b _02238560 +_02238536: + ldr r1, [r4, #0xc] + add r0, r0, r2 + cmp r0, r1 + bge _02238542 + str r0, [r4, #8] + b _02238560 +_02238542: + str r1, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + str r1, [r0] + b _02238560 +_0223854C: + ldr r1, [r4, #0xc] + sub r0, r0, r2 + cmp r0, r1 + ble _02238558 + str r0, [r4, #8] + b _02238560 +_02238558: + str r1, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + str r1, [r0] +_02238560: + add r0, r4, #0 + bl MOD81_02238588 + ldr r0, [r4, #4] + ldr r0, [r0] + cmp r0, #0 + beq _0223857C + add r0, r4, #0 + bl MOD81_02238898 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_0223857C: + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x10] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_02238514 + + thumb_func_start MOD81_02238588 +MOD81_02238588: ; 0x02238588 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #8] + add r2, sp, #4 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4, #8] + mov r3, #0x80 + str r0, [sp, #0x10] + ldr r0, [r4, #0x1c] + lsl r1, r0, #2 + ldr r0, _022385CC ; =0x0223CF6C + ldr r0, [r0, r1] + mov r1, #2 + str r0, [sp] + ldr r0, [r4] + bl FUN_02017BD0 + ldr r0, [r4, #0x1c] + add r2, sp, #4 + lsl r1, r0, #2 + ldr r0, _022385CC ; =0x0223CF6C + mov r3, #0x80 + ldr r0, [r0, r1] + mov r1, #6 + str r0, [sp] + ldr r0, [r4] + bl FUN_02017BD0 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_022385CC: .word 0x0223CF6C + thumb_func_end MOD81_02238588 + + thumb_func_start MOD81_022385D0 +MOD81_022385D0: ; 0x022385D0 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r0, #0 + ldr r0, [sp, #0x58] + add r4, r1, #0 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + cmp r0, #0 + beq _022385E8 + mov r6, #0x19 + lsl r6, r6, #8 + b _022385EC +_022385E8: + mov r6, #0x32 + lsl r6, r6, #6 +_022385EC: + mov r0, #0x39 + add r1, r6, #0 + bl FUN_020169D8 + add r7, r0, #0 + beq _02238690 + ldr r3, _022386B8 ; =0x0223CF74 + add r2, sp, #0x24 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + cmp r4, #0 + ldr r0, [r5] + bne _0223860E + ldr r4, [r0] + b _02238610 +_0223860E: + ldr r4, [r0, #4] +_02238610: + add r0, r4, #0 + bl FUN_02066A6C + str r0, [sp, #0x20] + add r0, sp, #0x34 + add r1, r4, #0 + mov r2, #2 + bl FUN_02068B70 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_020672BC + str r0, [sp, #0x1c] + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + ldr r1, [sp, #0x58] + lsr r0, r0, #0x10 + cmp r1, #0 + beq _02238648 + ldr r1, [sp, #0x2c] + lsl r1, r1, #1 + str r1, [sp, #0x2c] +_02238648: + ldr r1, [sp, #0x1c] + str r7, [sp] + str r1, [sp, #4] + ldr r1, [sp, #0x58] + mov r2, #0x39 + str r1, [sp, #8] + mov r1, #2 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + add r1, sp, #0x24 + ldrh r0, [r1, #0x10] + ldrh r1, [r1, #0x12] + add r3, sp, #0x24 + bl FUN_02012530 + add r0, r7, #0 + add r1, r6, #0 + bl DC_FlushRange + ldr r1, [sp, #0x14] + mov r0, #0 + str r0, [sp] + lsl r1, r1, #0x18 + ldr r0, [r5, #8] + lsr r1, r1, #0x18 + add r2, r7, #0 + add r3, r6, #0 + bl FUN_02017E14 + ldr r1, [sp, #0x20] + add r0, r4, #0 + bl FUN_02066A94 + add r0, r7, #0 + bl FUN_02016A18 +_02238690: + ldr r0, [sp, #0x14] + cmp r0, #4 + blo _0223869A + mov r2, #4 + b _0223869C +_0223869A: + mov r2, #0 +_0223869C: + mov r0, #0x20 + str r0, [sp] + mov r0, #0x39 + ldr r3, [sp, #0x18] + str r0, [sp, #4] + add r1, sp, #0x24 + ldrh r0, [r1, #0x10] + ldrh r1, [r1, #0x14] + lsl r3, r3, #5 + bl FUN_02006930 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_022386B8: .word 0x0223CF74 + thumb_func_end MOD81_022385D0 + + thumb_func_start MOD81_022386BC +MOD81_022386BC: ; 0x022386BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r1, #0 + bne _022386CE + mov r1, #0xc6 + b _022386DE +_022386CE: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _022386DC + mov r1, #0xc7 + b _022386DE +_022386DC: + mov r1, #0xc6 +_022386DE: + mov r0, #0x39 + str r0, [sp] + mov r0, #7 + mov r2, #0 + add r3, sp, #0x1c + bl FUN_02006BDC + add r7, r0, #0 + beq _02238746 + mov r0, #0xa + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x38] + add r0, #0xc + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x20 + ldr r3, [sp, #0x3c] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + lsl r1, r4, #0x18 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r5, #8] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 + mov r0, #0xa + str r0, [sp] + str r0, [sp, #4] + lsl r0, r6, #0x18 + ldr r2, [sp, #0x38] + ldr r3, [sp, #0x3c] + lsr r0, r0, #0x18 + str r0, [sp, #8] + lsl r1, r4, #0x18 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r5, #8] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020186B4 + add r0, r7, #0 + bl FUN_02016A18 +_02238746: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD81_022386BC + + thumb_func_start MOD81_0223874C +MOD81_0223874C: ; 0x0223874C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + mov r0, #0x3a + add r3, r5, #0 + str r0, [sp] + add r1, r2, #0 + add r0, r4, #0 + mov r2, #1 + add r3, #8 + bl FUN_02006C30 + str r0, [r5] + mov r0, #0x3a + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + mov r2, #1 + add r3, #0xc + bl FUN_02006C5C + str r0, [r5, #4] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD81_0223874C + + thumb_func_start MOD81_02238784 +MOD81_02238784: ; 0x02238784 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02238796 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] +_02238796: + ldr r0, [r4, #4] + cmp r0, #0 + beq _022387A4 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] +_022387A4: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_02238784 + + thumb_func_start MOD81_022387A8 +MOD81_022387A8: ; 0x022387A8 + str r2, [r0] + str r3, [r0, #8] + ldr r2, [r1, #8] + str r2, [r0, #0xc] + ldr r1, [r1, #0xc] + ldr r2, [sp] + str r1, [r0, #0x10] + add r1, r0, #0 + add r1, #0x20 + strb r2, [r1] + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD81_022387A8 + + thumb_func_start MOD81_022387C8 +MOD81_022387C8: ; 0x022387C8 + push {r4, lr} + sub sp, #0x20 + ldr r0, [r0, #0x18] + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #8] + lsl r0, r3, #0xc + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + str r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x18] + mov r0, #0x39 + str r0, [sp, #0x1c] + add r0, sp, #0 + bl FUN_0201FF84 + add r4, r0, #0 + beq _02238804 + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_02238804: + add r0, r4, #0 + add sp, #0x20 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_022387C8 + + thumb_func_start MOD81_0223880C +MOD81_0223880C: ; 0x0223880C + ldr r0, [r0, #8] + bx lr + thumb_func_end MOD81_0223880C + + thumb_func_start MOD81_02238810 +MOD81_02238810: ; 0x02238810 + ldr r0, [r0, #0xc] + bx lr + thumb_func_end MOD81_02238810 + + thumb_func_start MOD81_02238814 +MOD81_02238814: ; 0x02238814 + ldr r0, [r0, #0x10] + bx lr + thumb_func_end MOD81_02238814 + + thumb_func_start MOD81_02238818 +MOD81_02238818: ; 0x02238818 + ldr r0, [r0] + ldr r0, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD81_02238818 + + thumb_func_start MOD81_02238820 +MOD81_02238820: ; 0x02238820 + ldr r0, [r0] + ldr r0, [r0, #4] + bx lr + .align 2, 0 + thumb_func_end MOD81_02238820 + + thumb_func_start MOD81_02238828 +MOD81_02238828: ; 0x02238828 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD81_02238828 + + thumb_func_start MOD81_02238830 +MOD81_02238830: ; 0x02238830 + mov r1, #0x53 + lsl r1, r1, #2 + ldrh r0, [r0, r1] + bx lr + thumb_func_end MOD81_02238830 + + thumb_func_start MOD81_02238838 +MOD81_02238838: ; 0x02238838 + ldr r1, _02238840 ; =0x0000014E + ldrh r0, [r0, r1] + bx lr + nop +_02238840: .word 0x0000014E + thumb_func_end MOD81_02238838 + + thumb_func_start MOD81_02238844 +MOD81_02238844: ; 0x02238844 + ldr r0, [r0] + ldr r3, _0223884C ; =FUN_02025084 + ldr r0, [r0, #0x14] + bx r3 + .align 2, 0 +_0223884C: .word FUN_02025084 + thumb_func_end MOD81_02238844 + + thumb_func_start MOD81_02238850 +MOD81_02238850: ; 0x02238850 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD81_02238850 + + thumb_func_start MOD81_02238858 +MOD81_02238858: ; 0x02238858 + ldr r0, _02238860 ; =0x0223D3C0 + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_02238860: .word 0x0223D3C0 + thumb_func_end MOD81_02238858 + + thumb_func_start MOD81_02238864 +MOD81_02238864: ; 0x02238864 + push {r4, r5, r6, lr} + ldr r6, _02238890 ; =0x0223D3C0 + ldr r0, [r6] + cmp r0, #0 + beq _0223888C + mov r4, #0 + cmp r0, #0 + ble _02238886 + ldr r5, _02238894 ; =0x0223D3C4 +_02238876: + ldr r0, [r5] + bl FUN_02016A18 + ldr r0, [r6] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _02238876 +_02238886: + ldr r0, _02238890 ; =0x0223D3C0 + mov r1, #0 + str r1, [r0] +_0223888C: + pop {r4, r5, r6, pc} + nop +_02238890: .word 0x0223D3C0 +_02238894: .word 0x0223D3C4 + thumb_func_end MOD81_02238864 + + thumb_func_start MOD81_02238898 +MOD81_02238898: ; 0x02238898 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022388B8 ; =0x0223D3C0 + ldr r0, [r0] + cmp r0, #0x20 + blt _022388A8 + bl ErrorHandling +_022388A8: + ldr r0, _022388B8 ; =0x0223D3C0 + ldr r2, [r0] + add r1, r2, #1 + str r1, [r0] + ldr r0, _022388BC ; =0x0223D3C4 + lsl r1, r2, #2 + str r4, [r0, r1] + pop {r4, pc} + .align 2, 0 +_022388B8: .word 0x0223D3C0 +_022388BC: .word 0x0223D3C4 + thumb_func_end MOD81_02238898 + + thumb_func_start MOD81_022388C0 +MOD81_022388C0: ; 0x022388C0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r4, r1, #0 + mov r0, #0x3a + mov r1, #0x20 + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r6, r0, #0 + beq _02238906 + ldr r3, [sp] + add r1, r4, #0 + add r2, r5, #0 + bl MOD81_02238CA0 + mov r1, #0x8c + mov r0, #0x3a + mul r1, r7 + bl FUN_02016998 + str r0, [r6, #0x18] + mov r4, #0 + str r7, [r6, #0x1c] + cmp r7, #0 + bls _02238906 + add r5, r4, #0 +_022388F6: + ldr r0, [r6, #0x18] + add r0, r0, r5 + bl MOD81_02238A38 + add r4, r4, #1 + add r5, #0x8c + cmp r4, r7 + blo _022388F6 +_02238906: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD81_022388C0 + + thumb_func_start MOD81_0223890C +MOD81_0223890C: ; 0x0223890C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + mov r6, #0 + cmp r0, #0 + bls _0223892C + add r4, r6, #0 +_0223891A: + ldr r0, [r5, #0x18] + add r0, r0, r4 + bl MOD81_02238A6C + ldr r0, [r5, #0x1c] + add r6, r6, #1 + add r4, #0x8c + cmp r6, r0 + blo _0223891A +_0223892C: + ldr r0, [r5, #0x18] + bl FUN_02016A18 + add r0, r5, #0 + bl MOD81_02238D0C + add r0, r5, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + thumb_func_end MOD81_0223890C + + thumb_func_start MOD81_02238940 +MOD81_02238940: ; 0x02238940 + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r1, #0 + add r5, r0, #0 + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + bl FUN_0201EBA4 + ldr r0, [r5, #0x1c] + mov r6, #0 + cmp r0, #0 + bls _02238976 + add r4, r6, #0 +_0223895E: + ldr r0, [r5, #0x18] + add r0, r0, r4 + ldr r1, [r0, #0x64] + cmp r1, #0 + beq _0223896C + bl MOD81_02238988 +_0223896C: + ldr r0, [r5, #0x1c] + add r6, r6, #1 + add r4, #0x8c + cmp r6, r0 + blo _0223895E +_02238976: + mov r2, #1 + mov r0, #0x12 + add r1, sp, #0 + str r2, [sp] + bl FUN_020BB1C0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD81_02238940 + + thumb_func_start MOD81_02238988 +MOD81_02238988: ; 0x02238988 + push {r4, lr} + sub sp, #0x50 + add r4, r0, #0 + add r0, sp, #0x2c + bl MTX_Identity33_ + add r0, r4, #0 + add r0, #0x80 + ldrh r0, [r0] + ldr r3, _02238A34 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #8 + bl MTX_RotX33_ + add r1, sp, #0x2c + add r0, sp, #8 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x82 + ldrh r0, [r0] + ldr r3, _02238A34 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #8 + bl MTX_RotY33_ + add r1, sp, #0x2c + add r0, sp, #8 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x84 + ldrh r0, [r0] + ldr r3, _02238A34 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #8 + bl MTX_RotZ33_ + add r1, sp, #0x2c + add r0, sp, #8 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0x1f + beq _02238A20 + str r0, [sp] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + str r0, [sp, #4] + bl FUN_020B8390 +_02238A20: + add r1, r4, #0 + add r0, r4, #4 + add r4, #0x74 + add r1, #0x68 + add r2, sp, #0x2c + add r3, r4, #0 + bl FUN_0201B26C + add sp, #0x50 + pop {r4, pc} + .align 2, 0 +_02238A34: .word 0x020FFA38 + thumb_func_end MOD81_02238988 + + thumb_func_start MOD81_02238A38 +MOD81_02238A38: ; 0x02238A38 + mov r1, #0 + str r1, [r0, #0x64] + add r2, r0, #0 + str r1, [r0] + add r2, #0x84 + strh r1, [r2] + mov r2, #0x84 + ldrsh r3, [r0, r2] + add r2, r0, #0 + add r2, #0x82 + strh r3, [r2] + mov r2, #0x82 + ldrsh r3, [r0, r2] + add r2, r0, #0 + add r2, #0x80 + strh r3, [r2] + mov r2, #1 + lsl r2, r2, #0xc + str r2, [r0, #0x7c] + str r2, [r0, #0x78] + str r2, [r0, #0x74] + str r1, [r0, #0x70] + str r1, [r0, #0x6c] + str r1, [r0, #0x68] + bx lr + .align 2, 0 + thumb_func_end MOD81_02238A38 + + thumb_func_start MOD81_02238A6C +MOD81_02238A6C: ; 0x02238A6C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02238A80 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] + str r0, [r4, #0x64] +_02238A80: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_02238A6C + + thumb_func_start MOD81_02238A84 +MOD81_02238A84: ; 0x02238A84 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r4, [r0, #0x18] + add r6, r1, #0 + mov r0, #0x8c + mul r6, r0 + add r7, r2, #0 + mov r0, #1 + str r0, [sp] + str r3, [sp, #4] + add r1, r3, #0 + add r0, r7, #0 + mov r2, #0 + mov r3, #0x3a + add r5, r4, r6 + bl FUN_02006C98 + str r0, [r4, r6] + ldr r1, [sp, #4] + add r0, r7, #0 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r4, r6] + bl DC_FlushRange + ldr r0, [r4, r6] + cmp r0, #0 + beq _02238B02 + bl FUN_020BC13C + str r0, [r5, #0x58] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r5, #0x5c] + ldr r0, [r5] + bl FUN_020BC0FC + str r0, [r5, #0x60] + bl FUN_0201B3C4 + ldr r0, [r5] + ldr r1, [r5, #0x60] + bl FUN_0201B3A8 + ldr r1, [r5, #0x5c] + add r0, r5, #4 + bl FUN_020B80B4 + ldr r0, [sp, #0x20] + mov r1, #0x1f + str r0, [r5, #0x68] + ldr r0, [sp, #0x24] + str r0, [r5, #0x6c] + ldr r0, [sp, #0x28] + str r0, [r5, #0x70] + add r0, r5, #0 + add r0, #0x88 + str r1, [r0] + ldr r0, [sp, #0x2c] + str r0, [r5, #0x64] +_02238B02: + add r0, r5, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD81_02238A84 + + thumb_func_start MOD81_02238B08 +MOD81_02238B08: ; 0x02238B08 + add r2, r0, #0 + add r2, #0x68 + add r3, r1, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + thumb_func_end MOD81_02238B08 + + thumb_func_start MOD81_02238B18 +MOD81_02238B18: ; 0x02238B18 + add r3, r1, #0 + add r2, r0, #0 + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bx lr + thumb_func_end MOD81_02238B18 + + thumb_func_start MOD81_02238B28 +MOD81_02238B28: ; 0x02238B28 + add r2, r0, #0 + add r2, #0x80 + ldrh r2, [r2] + strh r2, [r1] + add r2, r0, #0 + add r2, #0x82 + ldrh r2, [r2] + add r0, #0x84 + strh r2, [r1, #2] + ldrh r0, [r0] + strh r0, [r1, #4] + bx lr + thumb_func_end MOD81_02238B28 + + thumb_func_start MOD81_02238B40 +MOD81_02238B40: ; 0x02238B40 + ldrh r3, [r1] + add r2, r0, #0 + add r2, #0x80 + strh r3, [r2] + add r2, r0, #0 + ldrh r3, [r1, #2] + add r2, #0x82 + add r0, #0x84 + strh r3, [r2] + ldrh r1, [r1, #4] + strh r1, [r0] + bx lr + thumb_func_end MOD81_02238B40 + + thumb_func_start MOD81_02238B58 +MOD81_02238B58: ; 0x02238B58 + str r1, [r0, #0x64] + bx lr + thumb_func_end MOD81_02238B58 + + thumb_func_start MOD81_02238B5C +MOD81_02238B5C: ; 0x02238B5C + push {r3, lr} + add r2, r0, #0 + add r2, #0x88 + str r1, [r2] + cmp r1, #0x1f + ldr r0, [r0, #0x5c] + beq _02238B76 + mov r2, #0x1f + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_020BC02C + pop {r3, pc} +_02238B76: + mov r2, #0x1f + mov r1, #1 + lsl r2, r2, #0x10 + bl FUN_020BC02C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD81_02238B5C + + thumb_func_start MOD81_02238B84 +MOD81_02238B84: ; 0x02238B84 + str r1, [r0, #0x74] + str r1, [r0, #0x78] + str r1, [r0, #0x7c] + bx lr + thumb_func_end MOD81_02238B84 + + thumb_func_start MOD81_02238B8C +MOD81_02238B8C: ; 0x02238B8C + push {r3, r4, lr} + sub sp, #0x4c + add r4, r0, #0 + add r0, sp, #0x28 + bl MTX_Identity33_ + add r0, r4, #0 + add r0, #0x80 + ldrh r0, [r0] + ldr r3, _02238C3C ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotX33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x82 + ldrh r0, [r0] + ldr r3, _02238C3C ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotY33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x84 + ldrh r0, [r0] + ldr r3, _02238C3C ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotZ33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + mov r1, #0 + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + bl FUN_0201EBA4 + add r1, r4, #0 + ldr r0, [r4, #0x5c] + add r4, #0x74 + add r1, #0x68 + add r2, sp, #0x28 + add r3, r4, #0 + bl FUN_0201B6D0 + add r4, r0, #0 + mov r2, #1 + mov r0, #0x12 + add r1, sp, #0 + str r2, [sp] + bl FUN_020BB1C0 + add r0, r4, #0 + add sp, #0x4c + pop {r3, r4, pc} + .align 2, 0 +_02238C3C: .word 0x020FFA38 + thumb_func_end MOD81_02238B8C + + thumb_func_start MOD81_02238C40 +MOD81_02238C40: ; 0x02238C40 + push {r3, r4, lr} + sub sp, #0xc + add r2, r0, #0 + add r4, r1, #0 + ldr r1, [r2] + add r0, sp, #0 + bl FUN_0201F03C + add r2, sp, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD81_02238C40 + + thumb_func_start MOD81_02238C60 +MOD81_02238C60: ; 0x02238C60 + ldr r3, _02238C6C ; =FUN_0201EF90 + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2] + bx r3 + nop +_02238C6C: .word FUN_0201EF90 + thumb_func_end MOD81_02238C60 + + thumb_func_start MOD81_02238C70 +MOD81_02238C70: ; 0x02238C70 + ldr r3, _02238C7C ; =FUN_0201EFB4 + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2] + bx r3 + nop +_02238C7C: .word FUN_0201EFB4 + thumb_func_end MOD81_02238C70 + + thumb_func_start MOD81_02238C80 +MOD81_02238C80: ; 0x02238C80 + ldr r3, _02238C8C ; =FUN_0201EE2C + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2] + bx r3 + nop +_02238C8C: .word FUN_0201EE2C + thumb_func_end MOD81_02238C80 + + thumb_func_start MOD81_02238C90 +MOD81_02238C90: ; 0x02238C90 + ldr r3, _02238C9C ; =FUN_0201EEF0 + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2] + bx r3 + nop +_02238C9C: .word FUN_0201EEF0 + thumb_func_end MOD81_02238C90 + + thumb_func_start MOD81_02238CA0 +MOD81_02238CA0: ; 0x02238CA0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x3a + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_0201EB64 + str r0, [r5] + str r4, [r5, #4] + str r6, [r5, #8] + mov r1, #0x4b + add r2, r5, #0 + str r7, [r5, #0xc] + mov r0, #0 + strh r0, [r5, #0x10] + strh r0, [r5, #0x12] + strh r0, [r5, #0x14] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5] + ldr r3, _02238D08 ; =0x00000FA4 + str r0, [sp, #8] + add r0, r5, #4 + lsl r1, r1, #0xe + add r2, #0x10 + bl FUN_0201ECA8 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + str r1, [sp, #0xc] + str r1, [sp, #0x14] + ldr r1, [r5] + add r0, sp, #0xc + bl FUN_0201EC58 + ldr r0, [r5] + bl FUN_0201EB8C + mov r1, #0xfa + ldr r2, [r5] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02238D08: .word 0x00000FA4 + thumb_func_end MOD81_02238CA0 + + thumb_func_start MOD81_02238D0C +MOD81_02238D0C: ; 0x02238D0C + ldr r3, _02238D14 ; =FUN_0201EB70 + ldr r0, [r0] + bx r3 + nop +_02238D14: .word FUN_0201EB70 + thumb_func_end MOD81_02238D0C + + thumb_func_start MOD81_02238D18 +MOD81_02238D18: ; 0x02238D18 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3a + mov r1, #0x6c + bl FUN_02016998 + add r4, r0, #0 + beq _02238D60 + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD81_0223880C + str r0, [r4, #0x40] + mov r0, #0x3a + bl FUN_02006D98 + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #0x4b + lsl r0, r0, #2 + mov r1, #0x3a + bl FUN_020219F4 + str r0, [r4, #0x54] + mov r0, #0x4b + lsl r0, r0, #2 + mov r1, #0x3a + bl FUN_020219F4 + str r0, [r4, #0x58] + mov r0, #0 + str r0, [r4, #0x64] + str r0, [r4, #0x68] +_02238D60: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD81_02238D18 + + thumb_func_start MOD81_02238D64 +MOD81_02238D64: ; 0x02238D64 + push {r4, lr} + add r4, r0, #0 + beq _02238DC2 + bl MOD81_0223951C + add r0, r4, #0 + bl MOD81_022395E8 + add r0, r4, #0 + bl MOD81_02239498 + ldr r0, [r4, #0x54] + bl FUN_02021A20 + ldr r0, [r4, #0x58] + bl FUN_02021A20 + ldr r0, [r4, #0x5c] + bl MOD81_0223890C + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x40] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x40] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + add r0, #0x44 + bl FUN_02019178 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02238DB6 + bl FUN_02007534 +_02238DB6: + ldr r0, [r4, #0xc] + bl FUN_020072E8 + add r0, r4, #0 + bl FUN_02016A18 +_02238DC2: + pop {r4, pc} + thumb_func_end MOD81_02238D64 + + thumb_func_start MOD81_02238DC4 +MOD81_02238DC4: ; 0x02238DC4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4] + add r5, r0, #0 + cmp r2, #4 + bhs _02238DF2 + lsl r3, r2, #2 + ldr r2, _02238DF8 ; =0x0223CFFC + add r1, r5, #4 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _02238DE8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r5, #4] +_02238DE8: + add r0, r5, #0 + bl MOD81_02238DFC + mov r0, #0 + pop {r3, r4, r5, pc} +_02238DF2: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_02238DF8: .word 0x0223CFFC + thumb_func_end MOD81_02238DC4 + + thumb_func_start MOD81_02238DFC +MOD81_02238DFC: ; 0x02238DFC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl G3X_ResetMtxStack + mov r1, #0 + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + bl FUN_020BB394 + bl FUN_020B02C8 + ldr r0, [r4, #0xc] + bl FUN_020081C4 + ldr r0, [r4, #0xc] + bl FUN_02006ED4 + mov r2, #1 + str r2, [sp] + mov r0, #0x12 + add r1, sp, #0 + bl FUN_020BB1C0 + ldr r0, [r4, #0x5c] + bl MOD81_02238940 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD81_02238DFC + + thumb_func_start MOD81_02238E44 +MOD81_02238E44: ; 0x02238E44 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, _02239040 ; =0x0223D054 + bl FUN_0201E66C + ldr r2, _02239044 ; =0x04000304 + ldr r0, _02239048 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + ldr r0, _0223904C ; =0x0223D00C + bl FUN_02016BBC + ldr r0, [r4, #0x40] + ldr r2, _02239050 ; =0x0223D01C + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x40] + ldr r2, _02239054 ; =0x0223D038 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x40] + ldr r2, _02239054 ; =0x0223D038 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r2, _02239058 ; =0x04000008 + mov r0, #3 + ldrh r3, [r2] + mov r1, #1 + bic r3, r0 + add r0, r3, #0 + orr r0, r1 + strh r0, [r2] + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #0x40] + add r3, r1, #0 + bl FUN_02017F48 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r4, #0x40] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4] + bl MOD81_02238844 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3a + str r0, [sp, #4] + ldr r0, [r4, #0x40] + mov r1, #1 + mov r2, #0x6d + mov r3, #2 + bl FUN_0200CD68 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + add r1, r4, #0 + str r0, [sp, #8] + mov r2, #1 + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r0, [r4, #0x40] + add r1, #0x44 + mov r3, #2 + bl FUN_02019064 + add r0, r4, #0 + add r0, #0x44 + mov r1, #0xf + bl FUN_02019620 + mov r3, #0x20 + str r3, [sp] + mov r0, #0x3a + str r0, [sp, #4] + mov r0, #0xe + mov r1, #7 + mov r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x40] + mov r0, #0x5d + mov r1, #0x16 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x40] + mov r0, #0x5d + mov r1, #0x15 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0x17 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x40] + mov r0, #0x5d + mov r1, #0x16 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x40] + mov r0, #0x5d + mov r1, #0x15 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0x17 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD81_022392D8 + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + add r3, r1, #0 + bl MOD81_022388C0 + str r0, [r4, #0x5c] + add r0, r4, #0 + bl MOD81_022393A4 + str r0, [r4, #0x10] + mov r1, #0 + mov r0, #0x6a + str r1, [sp] + lsl r0, r0, #0xa + str r0, [sp, #4] + ldr r0, _0223905C ; =0x00073800 + mov r2, #0x5d + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #0x5c] + mov r3, #0x1b + bl MOD81_02238A84 + ldr r2, _02239060 ; =0x0223CFF4 + str r0, [r4, #0x60] + ldrh r3, [r2] + add r0, sp, #0x14 + add r1, sp, #0x14 + strh r3, [r0] + ldrh r3, [r2, #2] + ldrh r2, [r2, #4] + strh r3, [r0, #2] + strh r2, [r0, #4] + ldr r0, [r4, #0x60] + bl MOD81_02238B40 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add r0, r4, #0 + bl MOD81_022393F4 + ldr r0, _02239064 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bl FUN_02033E74 + mov r0, #1 + mov r1, #0x39 + bl FUN_02033F04 + mov r0, #0x10 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_02239040: .word 0x0223D054 +_02239044: .word 0x04000304 +_02239048: .word 0xFFFF7FFF +_0223904C: .word 0x0223D00C +_02239050: .word 0x0223D01C +_02239054: .word 0x0223D038 +_02239058: .word 0x04000008 +_0223905C: .word 0x00073800 +_02239060: .word 0x0223CFF4 +_02239064: .word 0x04000050 + thumb_func_end MOD81_02238E44 + + thumb_func_start MOD81_02239068 +MOD81_02239068: ; 0x02239068 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + cmp r0, #0 + bne _0223908E + bl FUN_0200E308 + cmp r0, #0 + beq _0223908E + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_0223908E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_02239068 + + thumb_func_start MOD81_02239094 +MOD81_02239094: ; 0x02239094 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #4 + bhi _022390CE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022390AE: ; jump table + .short _022390B8 - _022390AE - 2 ; case 0 + .short _022390C4 - _022390AE - 2 ; case 1 + .short _02239138 - _022390AE - 2 ; case 2 + .short _022391BE - _022390AE - 2 ; case 3 + .short _022391DE - _022390AE - 2 ; case 4 +_022390B8: + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _022391EE +_022390C4: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0xa + bgt _022390D0 +_022390CE: + b _022391EE +_022390D0: + ldr r0, [r4] + bl MOD81_02238814 + str r0, [sp, #0xc] + ldr r0, [r4] + bl MOD81_02238810 + add r7, r0, #0 + ldr r0, [r4] + bl MOD81_02238850 + cmp r0, #1 + bne _022390F0 + mov r1, #0 + mov r6, #2 + b _022390F4 +_022390F0: + mov r1, #4 + mov r6, #3 +_022390F4: + ldr r0, [sp, #0xc] + ldr r2, [r4, #0x54] + bl FUN_0200A8E0 + ldr r1, [r4, #0x58] + ldr r2, [r4, #0x54] + add r0, r7, #0 + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x58] + add r0, #0x44 + mov r1, #1 + bl FUN_0201BD84 + add r0, r4, #0 + add r0, #0x44 + mov r1, #0x6d + mov r2, #2 + bl FUN_0200D06C + add r0, r4, #0 + add r0, #0x44 + bl FUN_020191D0 + mov r0, #0 + str r0, [r4, #8] + str r6, [r5] + b _022391EE +_02239138: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x3c + ble _022391EE + ldr r0, [r4] + bl MOD81_02238814 + add r6, r0, #0 + ldr r0, [r4] + bl MOD81_02238810 + add r7, r0, #0 + ldr r2, [r4, #0x54] + add r0, r6, #0 + mov r1, #1 + bl FUN_0200A8E0 + ldr r1, [r4, #0x58] + ldr r2, [r4, #0x54] + add r0, r7, #0 + bl FUN_0200B7B8 + ldr r0, [r4] + bl MOD81_02238818 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _0223918A + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02007314 + ldr r0, [r4] + bl MOD81_02238830 + bl FUN_02005578 +_0223918A: + add r0, r4, #0 + add r0, #0x44 + mov r1, #0xf + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x58] + add r0, #0x44 + mov r1, #1 + bl FUN_0201BD84 + add r0, r4, #0 + add r0, #0x44 + bl FUN_02019548 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _022391EE +_022391BE: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x3c + ble _022391EE + add r0, r4, #0 + add r0, #0x44 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _022391EE +_022391DE: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x14 + ble _022391EE + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022391EE: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD81_02239094 + + thumb_func_start MOD81_022391F4 +MOD81_022391F4: ; 0x022391F4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #4 + bhi _022392CE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223920E: ; jump table + .short _02239218 - _0223920E - 2 ; case 0 + .short _02239232 - _0223920E - 2 ; case 1 + .short _02239258 - _0223920E - 2 ; case 2 + .short _02239284 - _0223920E - 2 ; case 3 + .short _022392B6 - _0223920E - 2 ; case 4 +_02239218: + ldr r0, _022392D4 ; =0x000006A8 + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + mov r2, #0x10 + mov r3, #0xc + bl MOD81_022394BC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022392CE +_02239232: + bl MOD81_0223950C + cmp r0, #0 + beq _022392CE + ldr r0, [r5, #0x10] + bl FUN_02007534 + ldr r0, [r5, #0x2c] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5, #0x2c] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022392CE +_02239258: + ldr r0, [r5, #0x2c] + bl FUN_02020388 + cmp r0, #0 + bne _022392CE + ldr r0, [r5, #0x60] + mov r1, #1 + bl MOD81_02238B58 + mov r1, #0x10 + add r0, r5, #0 + mov r2, #0 + add r3, r1, #0 + bl MOD81_022394BC + add r0, r5, #0 + bl MOD81_02239578 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022392CE +_02239284: + bl MOD81_022395D4 + cmp r0, #2 + bge _02239296 + add r0, r5, #0 + bl MOD81_022395C4 + cmp r0, #1 + bne _022392CE +_02239296: + mov r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022392CE +_022392B6: + bl FUN_0200E308 + cmp r0, #0 + beq _022392CE + add r0, r5, #0 + bl MOD81_022395C4 + cmp r0, #0 + beq _022392CE + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_022392CE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022392D4: .word 0x000006A8 + thumb_func_end MOD81_022391F4 + + thumb_func_start MOD81_022392D8 +MOD81_022392D8: ; 0x022392D8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _02239380 ; =0x04000060 + ldr r2, _02239384 ; =0xFFFFCFFD + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + ldrh r3, [r0] + add r1, r2, #2 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _02239388 ; =0x0000CFFB + and r1, r3 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _0223938C ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _02239390 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + ldr r3, _02239394 ; =0x021064B8 + mov r0, #1 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _02239398 ; =0x021064C0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + mov r1, #0 + mov r2, #1 + blx r3 + ldr r2, _0223939C ; =0x7FFF0000 + add r6, r0, #0 + and r2, r4 + lsl r1, r4, #0x10 + lsr r2, r2, #0x10 + ldr r0, [r5, #0xc] + lsr r1, r1, #0xd + lsl r2, r2, #4 + bl FUN_020081A8 + ldr r2, _022393A0 ; =0xFFFF0000 + lsl r1, r6, #0x10 + and r2, r6 + lsr r2, r2, #0x10 + ldr r0, [r5, #0xc] + lsr r1, r1, #0xd + lsl r2, r2, #3 + bl FUN_020081B4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02239380: .word 0x04000060 +_02239384: .word 0xFFFFCFFD +_02239388: .word 0x0000CFFB +_0223938C: .word 0x04000540 +_02239390: .word 0xBFFF0000 +_02239394: .word 0x021064B8 +_02239398: .word 0x021064C0 +_0223939C: .word 0x7FFF0000 +_022393A0: .word 0xFFFF0000 + thumb_func_end MOD81_022392D8 + + thumb_func_start MOD81_022393A4 +MOD81_022393A4: ; 0x022393A4 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r4, r0, #0 + ldr r0, [r4] + bl MOD81_02238818 + add r5, r0, #0 + add r0, sp, #0x10 + add r1, r5, #0 + mov r2, #2 + bl FUN_02068B70 + ldr r0, [r4] + bl MOD81_02238830 + add r1, r0, #0 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02069010 + add r0, r5, #0 + mov r1, #2 + bl FUN_02068E1C + add r3, r0, #0 + mov r1, #0 + str r1, [sp] + add r0, r4, #0 + str r1, [sp, #4] + add r0, #0x14 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #0xc] + add r3, #0x50 + add r1, sp, #0x10 + mov r2, #0x80 + bl FUN_020073A0 + add sp, #0x20 + pop {r3, r4, r5, pc} + thumb_func_end MOD81_022393A4 + + thumb_func_start MOD81_022393F4 +MOD81_022393F4: ; 0x022393F4 + push {r4, lr} + sub sp, #0x70 + add r4, r0, #0 + add r0, #0x30 + mov r1, #0x5d + mov r2, #7 + mov r3, #8 + bl MOD81_0223874C + add r0, sp, #0x5c + bl FUN_020B19DC + add r0, sp, #0x38 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + add r0, sp, #0x38 + str r0, [sp, #0x10] + mov r0, #0x5d + mov r1, #9 + bl FUN_02006AE4 + mov r0, #0x3a + str r0, [sp] + add r0, sp, #0x5c + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0xa + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r0, #2 + add r1, r4, #0 + str r0, [sp] + add r0, sp, #0x14 + add r1, #0x30 + add r2, sp, #0x38 + add r3, sp, #0x5c + bl MOD81_022387A8 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0x80 + mov r3, #0x64 + bl MOD81_022387C8 + str r0, [r4, #0x28] + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0x80 + mov r3, #0x5a + bl MOD81_022387C8 + str r0, [r4, #0x2c] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x2c] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x70 + pop {r4, pc} + thumb_func_end MOD81_022393F4 + + thumb_func_start MOD81_02239498 +MOD81_02239498: ; 0x02239498 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_022394A0: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _022394AA + bl FUN_0201FFC8 +_022394AA: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _022394A0 + add r6, #0x30 + add r0, r6, #0 + bl MOD81_02238784 + pop {r4, r5, r6, pc} + thumb_func_end MOD81_02239498 + + thumb_func_start MOD81_022394BC +MOD81_022394BC: ; 0x022394BC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x3a + mov r1, #0x14 + str r2, [sp] + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _02239502 + str r5, [r4] + lsl r0, r6, #0xc + str r0, [r4, #4] + ldr r0, [sp] + lsl r1, r0, #0xc + str r1, [r4, #8] + ldr r0, [r4, #4] + sub r0, r1, r0 + add r1, r7, #0 + bl _s32_div_f + str r0, [r4, #0xc] + ldr r0, _02239504 ; =MOD81_0223953C + str r7, [r4, #0x10] + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA60 + str r0, [r5, #0x64] + ldr r0, _02239508 ; =0x04000050 + mov r1, #1 + add r2, r6, #0 + bl G2x_SetBlendBrightness_ +_02239502: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239504: .word MOD81_0223953C +_02239508: .word 0x04000050 + thumb_func_end MOD81_022394BC + + thumb_func_start MOD81_0223950C +MOD81_0223950C: ; 0x0223950C + ldr r0, [r0, #0x64] + cmp r0, #0 + bne _02239516 + mov r0, #1 + bx lr +_02239516: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD81_0223950C + + thumb_func_start MOD81_0223951C +MOD81_0223951C: ; 0x0223951C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _02239538 + bl FUN_0201B6C8 + bl MOD81_02238898 + ldr r0, [r4, #0x64] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x64] +_02239538: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223951C + + thumb_func_start MOD81_0223953C +MOD81_0223953C: ; 0x0223953C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0 + ble _0223955E + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + add r2, r1, r0 + str r2, [r4, #4] + ldr r0, _02239574 ; =0x04000050 + mov r1, #1 + asr r2, r2, #0xc + bl G2x_SetBlendBrightness_ + pop {r4, pc} +_0223955E: + ldr r2, [r4, #8] + ldr r0, _02239574 ; =0x04000050 + mov r1, #1 + asr r2, r2, #0xc + bl G2x_SetBlendBrightness_ + ldr r0, [r4] + bl MOD81_0223951C + pop {r4, pc} + nop +_02239574: .word 0x04000050 + thumb_func_end MOD81_0223953C + + thumb_func_start MOD81_02239578 +MOD81_02239578: ; 0x02239578 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3a + mov r1, #0x30 + bl FUN_02016998 + add r4, r0, #0 + beq _022395B8 + str r5, [r4] + ldr r0, [r5, #0x60] + add r1, r4, #0 + str r0, [r4, #4] + add r1, #8 + bl MOD81_02238B08 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x14 + bl MOD81_02238B28 + ldr r0, _022395BC ; =0x00002F60 + mov r2, #0 + str r0, [r4, #0x1c] + str r2, [r4, #0x20] + strh r2, [r4, #0x2c] + str r2, [r4, #0x24] + ldr r0, _022395C0 ; =MOD81_02239608 + add r1, r4, #0 + str r2, [r4, #0x28] + bl FUN_0200CA44 + str r0, [r5, #0x68] +_022395B8: + pop {r3, r4, r5, pc} + nop +_022395BC: .word 0x00002F60 +_022395C0: .word MOD81_02239608 + thumb_func_end MOD81_02239578 + + thumb_func_start MOD81_022395C4 +MOD81_022395C4: ; 0x022395C4 + ldr r0, [r0, #0x68] + cmp r0, #0 + bne _022395CE + mov r0, #1 + bx lr +_022395CE: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD81_022395C4 + + thumb_func_start MOD81_022395D4 +MOD81_022395D4: ; 0x022395D4 + push {r3, lr} + ldr r0, [r0, #0x68] + cmp r0, #0 + beq _022395E4 + bl FUN_0201B6C8 + ldr r0, [r0, #0x20] + pop {r3, pc} +_022395E4: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD81_022395D4 + + thumb_func_start MOD81_022395E8 +MOD81_022395E8: ; 0x022395E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + cmp r0, #0 + beq _02239604 + bl FUN_0201B6C8 + bl FUN_02016A18 + ldr r0, [r4, #0x68] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x68] +_02239604: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_022395E8 + + thumb_func_start MOD81_02239608 +MOD81_02239608: ; 0x02239608 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _0223967C + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [r4, #0xc] + ldr r1, [r4, #0x1c] + cmp r1, #0 + blt _0223962A + mov r0, #0x1e + lsl r0, r0, #6 + sub r0, r1, r0 + str r0, [r4, #0x1c] + b _0223967C +_0223962A: + mov r0, #0x1e + lsl r0, r0, #6 + sub r0, r1, r0 + str r0, [r4, #0x1c] + ldr r1, [r4, #0xc] + ldr r0, _022396E0 ; =0xFFFFC000 + cmp r1, r0 + bgt _0223967C + str r0, [r4, #0xc] + ldr r1, [r4, #0x1c] + mov r0, #0x2c + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + neg r1, r0 + mov r0, #0xfa + lsl r0, r0, #4 + str r1, [r4, #0x1c] + cmp r1, r0 + bge _02239658 + mov r0, #1 + str r0, [r4, #0x24] +_02239658: + ldr r0, _022396E4 ; =0x000005E6 + bl FUN_020054C8 + ldr r0, [r4, #0x20] + add r0, r0, #1 + str r0, [r4, #0x20] + cmp r0, #1 + beq _0223966E + cmp r0, #3 + beq _02239674 + b _0223967C +_0223966E: + mov r0, #0xb0 + strh r0, [r4, #0x2c] + b _0223967C +_02239674: + mov r0, #0x2c + ldrsh r0, [r4, r0] + add r0, #0x50 + strh r0, [r4, #0x2c] +_0223967C: + mov r0, #0x14 + mov r2, #0x2c + ldrsh r3, [r4, r0] + ldrsh r0, [r4, r2] + add r1, r4, #0 + add r1, #0x14 + add r0, r3, r0 + strh r0, [r4, #0x14] + mov r0, #0x18 + ldrsh r3, [r4, r0] + ldrsh r0, [r4, r2] + sub r0, r3, r0 + strh r0, [r4, #0x18] + ldr r0, [r4, #4] + bl MOD81_02238B40 + mov r2, #0x2c + ldrsh r3, [r4, r2] + ldr r5, [r4, #8] + add r1, r4, #0 + lsl r0, r3, #2 + add r0, r3, r0 + add r0, r5, r0 + str r0, [r4, #8] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x10] + add r1, #8 + lsl r0, r2, #2 + add r0, r2, r0 + add r0, r3, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + bl MOD81_02238B18 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _022396DE + mov r0, #0x2c + ldrsh r0, [r4, r0] + sub r0, #0xe + strh r0, [r4, #0x2c] + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + cmp r0, #0x1e + ble _022396DE + ldr r0, [r4] + bl MOD81_022395E8 +_022396DE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022396E0: .word 0xFFFFC000 +_022396E4: .word 0x000005E6 + thumb_func_end MOD81_02239608 + + thumb_func_start MOD81_022396E8 +MOD81_022396E8: ; 0x022396E8 + push {r3, r4, r5, lr} + mov r1, #0x5b + add r5, r0, #0 + mov r0, #0x3a + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + beq _0223974A + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD81_0223880C + add r1, r4, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r4, #0 + mov r1, #0 + add r0, #0xd4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xcc + str r1, [r0] + mov r0, #0x16 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + bl FUN_0201BA60 + add r1, r4, #0 + add r1, #0xbc + str r0, [r1] + add r0, r4, #0 + mov r2, #0 + add r0, #0xd0 + str r2, [r0] + mov r0, #0x5a + lsl r0, r0, #2 + str r2, [r4, r0] + ldr r0, _02239750 ; =MOD81_02239F58 + add r1, r4, #0 + bl FUN_0200CA98 +_0223974A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02239750: .word MOD81_02239F58 + thumb_func_end MOD81_022396E8 + + thumb_func_start MOD81_02239754 +MOD81_02239754: ; 0x02239754 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + cmp r5, #0 + beq _022397A0 + add r0, r5, #0 + bl MOD81_02239C94 + add r0, r5, #0 + bl MOD81_02239DF0 + add r0, r5, #0 + bl MOD81_02239F1C + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02239782 + bl FUN_0200CAB4 +_02239782: + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02239790 + bl MOD81_0223A1FC +_02239790: + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_0201BA1C + add r0, r5, #0 + bl FUN_02016A18 +_022397A0: + add r0, r4, #0 + bl OS_RestoreInterrupts + pop {r3, r4, r5, pc} + thumb_func_end MOD81_02239754 + + thumb_func_start MOD81_022397A8 +MOD81_022397A8: ; 0x022397A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4] + add r5, r0, #0 + cmp r2, #4 + bhs _022397D6 + lsl r3, r2, #2 + ldr r2, _022397DC ; =0x0223D094 + add r1, r5, #4 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _022397CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r5, #4] +_022397CC: + add r0, r5, #0 + bl MOD81_022397E0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022397D6: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_022397DC: .word 0x0223D094 + thumb_func_end MOD81_022397A8 + + thumb_func_start MOD81_022397E0 +MOD81_022397E0: ; 0x022397E0 + push {r4, lr} + add r4, r0, #0 + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #0 + beq _02239800 + bl G3X_ResetMtxStack + add r4, #0xd4 + ldr r0, [r4] + bl MOD81_02238940 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 +_02239800: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_022397E0 + + thumb_func_start MOD81_02239804 +MOD81_02239804: ; 0x02239804 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD81_022399FC + add r0, r4, #0 + bl MOD81_02239CDC + add r0, r4, #0 + bl MOD81_02239E00 + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD81_02239804 + + thumb_func_start MOD81_02239838 +MOD81_02239838: ; 0x02239838 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #0 + beq _02239848 + cmp r1, #1 + beq _0223985E + b _02239876 +_02239848: + bl FUN_0200E308 + cmp r0, #0 + beq _02239876 + ldr r0, _0223987C ; =0x0223D444 + mov r1, #0 + str r1, [r0] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239876 +_0223985E: + ldr r1, _0223987C ; =0x0223D444 + ldr r2, [r1] + cmp r2, #0x1e + bge _0223986A + add r2, r2, #1 + str r2, [r1] +_0223986A: + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + beq _02239876 + mov r0, #1 + pop {r4, pc} +_02239876: + mov r0, #0 + pop {r4, pc} + nop +_0223987C: .word 0x0223D444 + thumb_func_end MOD81_02239838 + + thumb_func_start MOD81_02239880 +MOD81_02239880: ; 0x02239880 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #4 + bhi _02239926 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02239898: ; jump table + .short _022398A2 - _02239898 - 2 ; case 0 + .short _022398AE - _02239898 - 2 ; case 1 + .short _022398F2 - _02239898 - 2 ; case 2 + .short _02239908 - _02239898 - 2 ; case 3 + .short _0223991E - _02239898 - 2 ; case 4 +_022398A2: + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02239926 +_022398AE: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #8 + ble _02239926 + add r0, r4, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x1f + mov r3, #0x18 + bl MOD81_0223A228 + add r0, r4, #0 + bl MOD81_0223A2AC + mov r1, #0x16 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r1, #0 + bl MOD81_02238B5C + add r4, #0xd8 + ldr r0, [r4] + mov r1, #1 + bl MOD81_02238B58 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02239926 +_022398F2: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD81_0223A658 + cmp r0, #0 + beq _02239926 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02239926 +_02239908: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD81_0223A64C + cmp r0, #0 + beq _02239926 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02239926 +_0223991E: + bl MOD81_02239F4C + mov r0, #1 + pop {r3, r4, r5, pc} +_02239926: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_02239880 + + thumb_func_start MOD81_0223992C +MOD81_0223992C: ; 0x0223992C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #4 + bhi _022399F2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02239946: ; jump table + .short _02239950 - _02239946 - 2 ; case 0 + .short _02239966 - _02239946 - 2 ; case 1 + .short _02239984 - _02239946 - 2 ; case 2 + .short _022399A0 - _02239946 - 2 ; case 3 + .short _022399E4 - _02239946 - 2 ; case 4 +_02239950: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD81_0223A664 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _022399F2 +_02239966: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #2 + ble _022399F2 + mov r0, #0 + str r0, [r4, #8] + add r4, #0xc4 + ldr r0, [r4] + bl MOD81_022381EC + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _022399F2 +_02239984: + add r1, r4, #0 + add r1, #0xc8 + ldr r1, [r1] + cmp r1, #0 + bne _022399F2 + mov r1, #0x59 + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD81_0223A104 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _022399F2 +_022399A0: + ldr r0, [r4, #8] + cmp r0, #0x28 + bge _022399B6 + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x28 + bne _022399B6 + mov r0, #0x6b + lsl r0, r0, #4 + bl FUN_020054C8 +_022399B6: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD81_0223A64C + cmp r0, #0 + beq _022399F2 + mov r0, #4 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + ldr r3, _022399F8 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _022399F2 +_022399E4: + bl FUN_0200E308 + cmp r0, #0 + beq _022399F2 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_022399F2: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022399F8: .word 0x00007FFF + thumb_func_end MOD81_0223992C + + thumb_func_start MOD81_022399FC +MOD81_022399FC: ; 0x022399FC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _02239C78 ; =0x0223D0EC + bl FUN_0201E66C + ldr r2, _02239C7C ; =0x04000304 + ldr r0, _02239C80 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + ldr r0, _02239C84 ; =0x0223D084 + bl FUN_02016BBC + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r2, _02239C88 ; =0x0223D0B4 + mov r1, #2 + mov r3, #1 + bl FUN_02016C18 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r2, _02239C88 ; =0x0223D0B4 + mov r1, #6 + mov r3, #1 + bl FUN_02016C18 + bl OS_DisableInterrupts + add r5, r0, #0 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r2, _02239C8C ; =0x0223D0D0 + mov r1, #3 + mov r3, #2 + bl FUN_02016C18 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r2, _02239C8C ; =0x0223D0D0 + mov r1, #7 + mov r3, #2 + bl FUN_02016C18 + add r0, r5, #0 + bl OS_RestoreInterrupts + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + add r2, r4, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + mov r1, #2 + ldr r2, [r2] + mov r0, #0x5d + add r3, r1, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + add r2, r4, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5d + mov r1, #2 + mov r3, #6 + bl FUN_0200687C + mov r1, #0 + str r1, [sp] + add r2, r4, #0 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5d + mov r3, #2 + bl FUN_020068C8 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + add r2, r4, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5d + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + bl MOD81_02238828 + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #3 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + ldr r0, _02239C90 ; =0x0223D07C + lsl r1, r5, #1 + ldrh r5, [r0, r1] + mov r0, #0x20 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + mov r1, #3 + mov r2, #0 + add r3, r5, #0 + bl FUN_02006948 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + mov r1, #3 + mov r2, #4 + add r3, r5, #0 + bl FUN_02006948 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + add r2, r4, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5d + mov r1, #5 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + add r2, r4, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5d + mov r1, #5 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + add r2, r4, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5d + mov r1, #4 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + add r2, r4, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5d + mov r1, #4 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0x3a + mov r1, #0x60 + bl FUN_02016998 + add r5, r0, #0 + beq _02239C02 + mov r0, #0 + add r1, r5, #0 + mov r2, #0x60 + bl MIi_CpuClear32 + add r0, r5, #0 + mov r1, #0x60 + bl DC_FlushRange + bl GX_BeginLoadBGExtPltt + bl GXS_BeginLoadBGExtPltt + mov r1, #6 + add r0, r5, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GX_LoadBGExtPltt + mov r1, #6 + add r0, r5, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GXS_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + bl GXS_EndLoadBGExtPltt + add r0, r5, #0 + bl FUN_02016A18 +_02239C02: + add r0, r4, #0 + add r0, #0xc0 + mov r3, #0xff + ldr r0, [r0] + mov r1, #6 + mov r2, #3 + mvn r3, r3 + bl FUN_020179E0 + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add r0, r4, #0 + add r0, #0xc0 + mov r1, #3 + ldr r0, [r0] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + add r0, #0xc8 + mov r1, #1 + bl MOD81_02238118 + add r1, r4, #0 + add r1, #0xc4 + str r0, [r1] + mov r0, #0x4a + lsl r0, r0, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xd0 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xc0 + mov r1, #0x12 + mov r2, #1 + ldr r0, [r0] + lsl r1, r1, #6 + lsl r2, r2, #0xc + mov r3, #1 + bl MOD81_022384AC + add r4, #0xcc + str r0, [r4] + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02239C78: .word 0x0223D0EC +_02239C7C: .word 0x04000304 +_02239C80: .word 0xFFFF7FFF +_02239C84: .word 0x0223D084 +_02239C88: .word 0x0223D0B4 +_02239C8C: .word 0x0223D0D0 +_02239C90: .word 0x0223D07C + thumb_func_end MOD81_022399FC + + thumb_func_start MOD81_02239C94 +MOD81_02239C94: ; 0x02239C94 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #0 + beq _02239CAA + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + bl MOD81_02238200 +_02239CAA: + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #3 + bl FUN_020178A0 + add r4, #0xc0 + ldr r0, [r4] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_02239C94 + + thumb_func_start MOD81_02239CDC +MOD81_02239CDC: ; 0x02239CDC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _02239DBC ; =0x04000060 + ldr r1, _02239DC0 ; =0xFFFFCFFD + ldrh r2, [r0] + and r2, r1 + strh r2, [r0] + ldrh r3, [r0] + add r2, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _02239DC4 ; =0x0000CFFB + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #8 + orr r2, r3 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + ldr r0, _02239DC8 ; =0x0223D0A4 + bl G3X_SetEdgeColorTable + mov r1, #0 + ldr r0, _02239DCC ; =0x000043FF + ldr r2, _02239DD0 ; =0x00007FFF + mov r3, #0x3f + str r1, [sp] + bl G3X_SetClearColor + ldr r1, _02239DD4 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _02239DD8 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _02239DDC ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + strh r2, [r1] + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + add r3, r1, #0 + bl MOD81_022388C0 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] + mov r1, #0 + ldr r0, _02239DE0 ; =0xFFFC8800 + str r1, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + str r1, [sp, #0xc] + add r0, #0xd4 + ldr r0, [r0] + mov r2, #0x5d + mov r3, #0x1b + bl MOD81_02238A84 + add r1, r4, #0 + add r1, #0xd8 + str r0, [r1] + ldr r1, _02239DE4 ; =0x0000EBE0 + ldr r0, _02239DE8 ; =0x0223D444 + strh r1, [r0, #4] + mov r1, #0 + strh r1, [r0, #6] + strh r1, [r0, #8] + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + ldr r1, _02239DEC ; =0x0223D448 + bl MOD81_02238C60 + add r4, #0xd8 + mov r1, #7 + ldr r0, [r4] + lsl r1, r1, #0xa + bl MOD81_02238B84 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02239DBC: .word 0x04000060 +_02239DC0: .word 0xFFFFCFFD +_02239DC4: .word 0x0000CFFB +_02239DC8: .word 0x0223D0A4 +_02239DCC: .word 0x000043FF +_02239DD0: .word 0x00007FFF +_02239DD4: .word 0x04000540 +_02239DD8: .word 0xBFFF0000 +_02239DDC: .word 0x04000008 +_02239DE0: .word 0xFFFC8800 +_02239DE4: .word 0x0000EBE0 +_02239DE8: .word 0x0223D444 +_02239DEC: .word 0x0223D448 + thumb_func_end MOD81_02239CDC + + thumb_func_start MOD81_02239DF0 +MOD81_02239DF0: ; 0x02239DF0 + push {r3, lr} + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #0 + beq _02239DFE + bl MOD81_0223890C +_02239DFE: + pop {r3, pc} + thumb_func_end MOD81_02239DF0 + + thumb_func_start MOD81_02239E00 +MOD81_02239E00: ; 0x02239E00 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + add r7, r0, #0 + add r0, #0xc + mov r1, #0x5d + mov r2, #0xb + mov r3, #0xc + bl MOD81_0223874C + add r0, sp, #0x60 + bl FUN_020B19DC + add r0, sp, #0x3c + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + add r0, sp, #0x3c + str r0, [sp, #0x10] + mov r0, #0x5d + mov r1, #0xd + bl FUN_02006AE4 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + add r0, sp, #0x3c + str r0, [sp, #0x10] + mov r0, #0x5d + mov r1, #0xd + mov r2, #1 + bl FUN_02006AE4 + mov r0, #0x3a + str r0, [sp] + add r0, sp, #0x60 + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0xe + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r0, #0x3a + str r0, [sp] + add r0, sp, #0x60 + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0xe + mov r2, #2 + mov r3, #0 + bl FUN_02006A8C + mov r0, #1 + add r1, r7, #0 + str r0, [sp] + add r0, sp, #0x18 + add r1, #0xc + add r2, sp, #0x3c + add r3, sp, #0x60 + bl MOD81_022387A8 + ldr r0, _02239F18 ; =0x035947D1 + bl FUN_0201BA1C + mov r0, #0 + str r0, [sp, #0x14] + add r4, r7, #0 +_02239E9A: + bl FUN_0201BA60 + mov r1, #0xe8 + bl _u32_div_f + add r6, r1, #0 + add r6, #0xc + bl FUN_0201BA60 + mov r1, #0x71 + lsl r1, r1, #2 + bl _u32_div_f + add r5, r1, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + sub r5, #0x1c + str r0, [sp, #4] + ldr r0, [r7] + add r1, sp, #0x18 + add r2, r6, #0 + add r3, r5, #0 + bl MOD81_022387C8 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r5, #0x38 + ldr r0, [r7] + add r1, sp, #0x18 + add r2, r6, #0 + add r3, r5, #0 + bl MOD81_022387C8 + str r0, [r4, #0x20] + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #0x20] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x20] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [sp, #0x14] + add r4, #8 + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #0x14 + blt _02239E9A + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + nop +_02239F18: .word 0x035947D1 + thumb_func_end MOD81_02239E00 + + thumb_func_start MOD81_02239F1C +MOD81_02239F1C: ; 0x02239F1C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02239F24: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _02239F2E + bl FUN_0201FFC8 +_02239F2E: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _02239F38 + bl FUN_0201FFC8 +_02239F38: + add r4, r4, #1 + add r5, #8 + cmp r4, #0x14 + blt _02239F24 + add r6, #0xc + add r0, r6, #0 + bl MOD81_02238784 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD81_02239F1C + + thumb_func_start MOD81_02239F4C +MOD81_02239F4C: ; 0x02239F4C + mov r1, #0x5a + mov r2, #1 + lsl r1, r1, #2 + str r2, [r0, r1] + bx lr + .align 2, 0 + thumb_func_end MOD81_02239F4C + + thumb_func_start MOD81_02239F58 +MOD81_02239F58: ; 0x02239F58 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5a + add r4, r1, #0 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02239FAC + mov r1, #0 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0xc0 + mov r3, #0xff + ldr r0, [r0] + mov r1, #2 + mov r2, #3 + mvn r3, r3 + bl FUN_020179E0 + add r4, #0xc0 + ldr r0, [r4] + mov r1, #6 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + ldr r2, _02239FB0 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + add r0, r5, #0 + bl FUN_0200CAB4 +_02239FAC: + pop {r3, r4, r5, pc} + nop +_02239FB0: .word 0x04000304 + thumb_func_end MOD81_02239F58 + + thumb_func_start MOD81_02239FB4 +MOD81_02239FB4: ; 0x02239FB4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r5, [r2, #4] + add r0, r2, #0 + str r1, [r0] + mov r1, #0x52 + mov r7, #0 + lsl r1, r1, #2 + str r7, [r0, r1] + add r1, r1, #4 + str r2, [sp] + str r7, [r0, r1] + add r4, r2, #0 + add r6, r2, #0 +_02239FD0: + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5, #0x1c] + bl FUN_0202011C + add r2, r6, #0 + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, #0x58 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r7, r7, #1 + str r0, [r2] + add r4, r4, #4 + add r5, #8 + add r6, #0xc + cmp r7, #0x14 + blt _02239FD0 + ldr r0, _0223A018 ; =MOD81_0223A01C + ldr r1, [sp] + mov r2, #0 + bl FUN_0200CA44 + ldr r1, [sp] + ldr r1, [r1] + str r0, [r1] + ldr r0, [sp] + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + bne _0223A014 + ldr r0, [sp] + bl FUN_02016A18 +_0223A014: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A018: .word MOD81_0223A01C + thumb_func_end MOD81_02239FB4 + + thumb_func_start MOD81_0223A01C +MOD81_0223A01C: ; 0x0223A01C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r1, #0 + mov r1, #0x52 + lsl r1, r1, #2 + ldr r0, [r6, r1] + add r0, r0, #1 + str r0, [r6, r1] + ldr r0, [r6, r1] + cmp r0, #0xc + ble _0223A050 + mov r0, #0 + str r0, [r6, r1] + add r0, r1, #4 + ldr r0, [r6, r0] + cmp r0, #0x14 + bge _0223A050 + lsl r0, r0, #2 + mov r2, #1 + add r0, r6, r0 + str r2, [r0, #8] + add r0, r1, #4 + ldr r0, [r6, r0] + add r2, r0, #1 + add r0, r1, #4 + str r2, [r6, r0] +_0223A050: + mov r0, #0 + add r7, r6, #0 + str r0, [sp, #4] + add r5, r6, #0 + str r6, [sp] + add r4, r0, #0 + add r7, #0x58 +_0223A05E: + mov r1, #0x21 + ldr r2, [r5, #0x5c] + lsl r1, r1, #0xc + add r2, r2, r1 + mov r1, #0x6a + add r0, r5, #0 + lsl r1, r1, #0xe + add r0, #0x5c + str r2, [r5, #0x5c] + cmp r2, r1 + blt _0223A09E + mov r1, #0x71 + ldr r2, [r0] + lsl r1, r1, #0xe + sub r1, r2, r1 + str r1, [r0] + ldr r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + beq _0223A09E + ldr r0, [r6, #4] + mov r1, #1 + add r0, r0, r4 + ldr r0, [r0, #0x1c] + bl FUN_020200A0 + ldr r0, [r6, #4] + mov r1, #1 + add r0, r0, r4 + ldr r0, [r0, #0x20] + bl FUN_020200A0 +_0223A09E: + ldr r0, [r6, #4] + add r1, r7, #0 + add r0, r0, r4 + ldr r0, [r0, #0x1c] + bl FUN_02020044 + add r2, r5, #0 + add r2, #0x58 + add r3, sp, #8 + ldmia r2!, {r0, r1} + mov ip, r3 + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + mov r0, #0xe + ldr r1, [sp, #0xc] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, [r6, #4] + mov r1, ip + add r0, r0, r4 + ldr r0, [r0, #0x20] + bl FUN_02020044 + ldr r0, [sp] + add r5, #0xc + add r0, r0, #4 + str r0, [sp] + ldr r0, [sp, #4] + add r4, #8 + add r0, r0, #1 + add r7, #0xc + str r0, [sp, #4] + cmp r0, #0x14 + blt _0223A05E + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD81_0223A01C + + thumb_func_start MOD81_0223A0EC +MOD81_0223A0EC: ; 0x0223A0EC + push {r4, lr} + add r4, r0, #0 + beq _0223A102 + bl FUN_0201B6C8 + ldr r0, [r0] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A102: + pop {r4, pc} + thumb_func_end MOD81_0223A0EC + + thumb_func_start MOD81_0223A104 +MOD81_0223A104: ; 0x0223A104 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x17 + add r6, r0, #0 + mov r0, #0x3a + lsl r1, r1, #4 + bl FUN_02016998 + add r4, r0, #0 + beq _0223A170 + str r6, [r4] + add r6, #0xc0 + mov r0, #0x55 + ldr r1, [r6] + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_02017B54 + lsl r1, r0, #0xc + mov r0, #0x56 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #6 + bl FUN_02017B54 + mov r1, #0x57 + lsl r0, r0, #0xc + lsl r1, r1, #2 + str r0, [r4, r1] + mov r2, #0 + add r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0xc + str r5, [r4, r0] + add r1, #0x10 + str r2, [r4, r1] + ldr r0, _0223A174 ; =MOD81_0223A178 + add r1, r4, #0 + bl FUN_0200CA60 + str r0, [r5] + cmp r0, #0 + bne _0223A170 + add r0, r4, #0 + bl FUN_02016A18 +_0223A170: + pop {r4, r5, r6, pc} + nop +_0223A174: .word MOD81_0223A178 + thumb_func_end MOD81_0223A104 + + thumb_func_start MOD81_0223A178 +MOD81_0223A178: ; 0x0223A178 + push {r4, r5, r6, lr} + mov r3, #0x59 + add r4, r1, #0 + lsl r3, r3, #2 + mov r0, #2 + ldr r1, [r4, r3] + lsl r0, r0, #0x14 + cmp r1, r0 + bge _0223A1FA + sub r0, r3, #4 + ldr r1, [r4, r0] + add r0, r3, #0 + sub r0, #0x44 + add r1, r1, r0 + sub r0, r3, #4 + str r1, [r4, r0] + add r5, r3, #0 + ldr r1, [r4, r3] + ldr r0, [r4, r0] + sub r5, #0xc + add r0, r1, r0 + str r0, [r4, r3] + add r0, r3, #0 + sub r0, #0x10 + ldr r5, [r4, r5] + ldr r3, [r4, r3] + ldr r0, [r4, r0] + sub r3, r5, r3 + mov r1, #2 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r5, #0x55 + lsl r5, r5, #2 + add r3, r5, #0 + ldr r0, [r4, r5] + add r3, #8 + add r5, #0x10 + ldr r6, [r4, r3] + ldr r3, [r4, r5] + mov r1, #6 + sub r3, r6, r3 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0x59 + lsl r1, r1, #2 + mov r0, #2 + ldr r2, [r4, r1] + lsl r0, r0, #0x12 + cmp r2, r0 + blt _0223A1FA + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0223A1FA + add r1, #8 + ldr r0, [r4] + add r1, r4, r1 + add r2, r4, #4 + bl MOD81_02239FB4 +_0223A1FA: + pop {r4, r5, r6, pc} + thumb_func_end MOD81_0223A178 + + thumb_func_start MOD81_0223A1FC +MOD81_0223A1FC: ; 0x0223A1FC + push {r3, r4, r5, lr} + add r5, r0, #0 + beq _0223A226 + bl FUN_0201B6C8 + add r4, r0, #0 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r2, #0 + str r2, [r1] + add r0, r0, #4 + ldr r0, [r4, r0] + bl MOD81_0223A0EC + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223A226: + pop {r3, r4, r5, pc} + thumb_func_end MOD81_0223A1FC + + thumb_func_start MOD81_0223A228 +MOD81_0223A228: ; 0x0223A228 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r1, #0 + mov r0, #0x3a + mov r1, #0x14 + add r7, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _0223A268 + lsl r0, r5, #0xc + str r0, [r4] + lsl r1, r7, #0xc + str r1, [r4, #8] + ldr r0, [r4] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #4] + ldr r0, [sp] + str r6, [r4, #0xc] + add r1, r5, #0 + str r0, [r4, #0x10] + bl MOD81_02238B5C + ldr r0, _0223A26C ; =MOD81_0223A270 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 +_0223A268: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A26C: .word MOD81_0223A270 + thumb_func_end MOD81_0223A228 + + thumb_func_start MOD81_0223A270 +MOD81_0223A270: ; 0x0223A270 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + sub r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0 + ble _0223A292 + ldr r1, [r4] + ldr r0, [r4, #4] + add r1, r1, r0 + str r1, [r4] + ldr r0, [r4, #0x10] + asr r1, r1, #0xc + bl MOD81_02238B5C + pop {r3, r4, r5, pc} +_0223A292: + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + asr r1, r1, #0xc + bl MOD81_02238B5C + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223A270 + + thumb_func_start MOD81_0223A2AC +MOD81_0223A2AC: ; 0x0223A2AC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0xdc + add r0, #0xd8 + add r1, r4, #0 + ldr r0, [r0] + add r1, #8 + bl MOD81_02238B08 + add r0, r5, #0 + add r0, #0xd8 + add r1, r4, #0 + ldr r0, [r0] + add r1, #0x20 + bl MOD81_02238B28 + add r3, r4, #0 + add r3, #8 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + str r0, [r4, #4] + add r0, r5, #0 + add r0, #0xd8 + ldr r0, [r0] + add r5, #0xdc + str r0, [r5] + ldr r0, [r4, #0xc] + str r0, [r4, #0x28] + ldr r1, [r4, #0xc] + ldr r0, _0223A37C ; =0xFFFF8000 + sub r0, r0, r1 + mov r1, #0x1e + bl _s32_div_f + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r2, #1 + mov r1, #0x1e + add r0, #0x80 + str r1, [r0] + mov r1, #0 + str r1, [r4, #0x38] + str r1, [r4, #0x3c] + str r1, [r4, #0x40] + add r0, r4, #0 + str r1, [r4, #0x44] + add r0, #0x54 + strh r1, [r0] + add r0, r4, #0 + lsl r2, r2, #0xe + add r0, #0x56 + strh r2, [r0] + add r0, r4, #0 + add r0, #0x5a + strh r1, [r0] + str r1, [r4, #0x7c] + add r2, r4, #0 + add r0, r1, #0 +_0223A330: + add r3, r2, #0 + add r3, #0x5c + strh r0, [r3] + add r3, r2, #0 + add r3, #0x5e + strh r0, [r3] + add r3, r2, #0 + add r3, #0x60 + strh r0, [r3] + add r3, r2, #0 + add r3, #0x62 + add r1, r1, #1 + add r2, #8 + strh r0, [r3] + cmp r1, #3 + blt _0223A330 + mov r1, #0xd + str r0, [r4, #0x78] + add r0, r4, #0 + lsl r1, r1, #8 + mov r2, #0x1e + bl MOD81_0223A384 + mov r1, #0x29 + mov r2, #5 + add r0, r4, #0 + lsl r1, r1, #0xc + lsl r2, r2, #0xe + mov r3, #0x1e + bl MOD81_0223A3C0 + ldr r0, _0223A380 ; =MOD81_0223A57C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + nop +_0223A37C: .word 0xFFFF8000 +_0223A380: .word MOD81_0223A57C + thumb_func_end MOD81_0223A2AC + + thumb_func_start MOD81_0223A384 +MOD81_0223A384: ; 0x0223A384 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + beq _0223A3B2 + mov r0, #0x56 + ldrsh r0, [r5, r0] + add r1, r6, #0 + sub r0, r4, r0 + bl _s32_div_f + add r1, r5, #0 + add r1, #0x5a + strh r0, [r1] + mov r0, #0x56 + ldrsh r1, [r5, r0] + mov r0, #0x5a + ldrsh r0, [r5, r0] + add r1, r1, r0 + add r0, r5, #0 + add r0, #0x56 + strh r1, [r0] + b _0223A3B6 +_0223A3B2: + add r0, #0x56 + strh r4, [r0] +_0223A3B6: + add r0, r5, #0 + add r0, #0x58 + strh r4, [r0] + str r6, [r5, #0x74] + pop {r4, r5, r6, pc} + thumb_func_end MOD81_0223A384 + + thumb_func_start MOD81_0223A3C0 +MOD81_0223A3C0: ; 0x0223A3C0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + beq _0223A3F8 + ldr r0, [r5, #0x38] + add r1, r7, #0 + sub r0, r4, r0 + bl _s32_div_f + str r0, [r5, #0x40] + ldr r0, [r5, #0x3c] + add r1, r7, #0 + sub r0, r6, r0 + bl _s32_div_f + str r0, [r5, #0x44] + ldr r1, [r5, #0x38] + ldr r0, [r5, #0x40] + add r0, r1, r0 + str r0, [r5, #0x38] + ldr r1, [r5, #0x3c] + ldr r0, [r5, #0x44] + add r0, r1, r0 + str r0, [r5, #0x3c] + str r4, [r5, #0x48] + str r6, [r5, #0x4c] +_0223A3F8: + str r7, [r5, #0x50] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD81_0223A3C0 + + thumb_func_start MOD81_0223A3FC +MOD81_0223A3FC: ; 0x0223A3FC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + beq _0223A422 + lsl r0, r4, #3 + str r0, [sp] + add r1, r5, r0 + mov r0, #0x5c + ldrsh r0, [r1, r0] + add r1, r7, #0 + sub r0, r6, r0 + bl _s32_div_f + ldr r1, [sp] + add r1, r5, r1 + add r1, #0x5e + strh r0, [r1] +_0223A422: + lsl r1, r4, #3 + add r0, r5, r1 + add r0, #0x60 + strh r6, [r0] + add r0, r5, r1 + add r0, #0x62 + strh r7, [r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD81_0223A3FC + + thumb_func_start MOD81_0223A434 +MOD81_0223A434: ; 0x0223A434 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x74] + cmp r0, #0 + beq _0223A460 + sub r0, r0, #1 + str r0, [r5, #0x74] + beq _0223A456 + mov r0, #0x56 + ldrsh r1, [r5, r0] + mov r0, #0x5a + ldrsh r0, [r5, r0] + add r1, r1, r0 + add r0, r5, #0 + add r0, #0x56 + strh r1, [r0] + b _0223A460 +_0223A456: + mov r0, #0x58 + ldrsh r1, [r5, r0] + add r0, r5, #0 + add r0, #0x56 + strh r1, [r0] +_0223A460: + mov r0, #0x54 + ldrsh r1, [r5, r0] + mov r0, #0x56 + ldrsh r0, [r5, r0] + add r1, r1, r0 + add r0, r5, #0 + add r0, #0x54 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x54 + ldrh r0, [r0] + mov r1, #0xb6 + bl _s32_div_f + add r4, r0, #0 + mov r0, #0x5a + lsl r0, r0, #2 + cmp r4, r0 + blt _0223A488 + sub r4, r4, r0 +_0223A488: + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _0223A4AE + ldr r1, [r5, #0x38] + ldr r0, [r5, #0x40] + add r0, r1, r0 + str r0, [r5, #0x38] + ldr r1, [r5, #0x3c] + ldr r0, [r5, #0x44] + add r0, r1, r0 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x50] + sub r0, r0, #1 + str r0, [r5, #0x50] + bne _0223A4AE + ldr r0, [r5, #0x48] + str r0, [r5, #0x38] + ldr r0, [r5, #0x4c] + str r0, [r5, #0x3c] +_0223A4AE: + add r0, r4, #0 + add r0, #0x5a + lsl r1, r0, #2 + ldr r0, _0223A578 ; =0x020EDF50 + ldr r2, [r5, #0x38] + ldr r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + bl _ll_mul + mov r3, #2 + mov r6, #0 + lsl r3, r3, #0xa + add r3, r0, r3 + adc r1, r6 + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + ldr r2, [r5, #8] + orr r1, r0 + add r0, r2, r1 + str r0, [r5, #0x14] + ldr r2, [r5, #0x3c] + ldr r0, _0223A578 ; =0x020EDF50 + lsl r1, r4, #2 + ldr r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + bl _ll_mul + mov r4, #2 + add r3, r6, #0 + lsl r4, r4, #0xa + add r4, r0, r4 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r4, #0xc + ldr r2, [r5, #0x10] + orr r1, r0 + add r0, r2, r1 + str r0, [r5, #0x1c] + mov r0, #0x22 + ldrsh r1, [r5, r0] + mov r0, #0x56 + ldrsh r0, [r5, r0] + mov r2, #0x5e + mov r6, #0x60 + add r0, r1, r0 + strh r0, [r5, #0x22] + add r0, r5, #0 + mov r1, #0x5c +_0223A512: + add r4, r0, #0 + add r4, #0x62 + ldrh r4, [r4] + cmp r4, #0 + beq _0223A54A + add r4, r0, #0 + add r4, #0x62 + ldrh r4, [r4] + sub r7, r4, #1 + add r4, r0, #0 + add r4, #0x62 + strh r7, [r4] + add r4, r0, #0 + add r4, #0x62 + ldrh r4, [r4] + cmp r4, #0 + bne _0223A53E + ldrsh r7, [r0, r6] + add r4, r0, #0 + add r4, #0x5c + strh r7, [r4] + b _0223A54A +_0223A53E: + ldrsh r7, [r0, r1] + ldrsh r4, [r0, r2] + add r7, r7, r4 + add r4, r0, #0 + add r4, #0x5c + strh r7, [r4] +_0223A54A: + add r3, r3, #1 + add r0, #8 + cmp r3, #3 + blt _0223A512 + mov r0, #0x20 + ldrsh r1, [r5, r0] + mov r0, #0x5c + ldrsh r0, [r5, r0] + add r0, r1, r0 + strh r0, [r5, #0x20] + mov r0, #0x22 + ldrsh r1, [r5, r0] + mov r0, #0x64 + ldrsh r0, [r5, r0] + add r0, r1, r0 + strh r0, [r5, #0x22] + mov r0, #0x24 + ldrsh r1, [r5, r0] + mov r0, #0x6c + ldrsh r0, [r5, r0] + add r0, r1, r0 + strh r0, [r5, #0x24] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A578: .word 0x020EDF50 + thumb_func_end MOD81_0223A434 + + thumb_func_start MOD81_0223A57C +MOD81_0223A57C: ; 0x0223A57C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0 + beq _0223A5DC + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x2c] + add r0, r1, r0 + str r0, [r4, #0x28] + str r0, [r4, #0x18] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0 + bgt _0223A5DC + mov r1, #2 + lsl r1, r1, #8 + str r1, [r4, #0x30] + mov r0, #0 + lsl r1, r1, #5 + str r0, [r4, #0x2c] + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0x3c + bl MOD81_0223A3C0 + ldr r2, _0223A5F8 ; =0xFFFFF800 + add r0, r4, #0 + mov r1, #0 + mov r3, #0x1e + bl MOD81_0223A3FC + mov r0, #1 + str r0, [r4, #0x7c] + ldr r1, _0223A5FC ; =MOD81_0223A600 + add r0, r5, #0 + bl FUN_0201B6C4 +_0223A5DC: + add r0, r4, #0 + bl MOD81_0223A434 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + bl MOD81_02238B18 + ldr r0, [r4] + add r4, #0x20 + add r1, r4, #0 + bl MOD81_02238B40 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223A5F8: .word 0xFFFFF800 +_0223A5FC: .word MOD81_0223A600 + thumb_func_end MOD81_0223A57C + + thumb_func_start MOD81_0223A600 +MOD81_0223A600: ; 0x0223A600 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x78] + cmp r0, #0 + bne _0223A64A + ldr r1, [r4, #0x2c] + ldr r0, [r4, #0x30] + add r1, r1, r0 + str r1, [r4, #0x2c] + ldr r0, [r4, #0x28] + add r0, r0, r1 + str r0, [r4, #0x28] + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD81_0223A434 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + bl MOD81_02238B18 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x20 + bl MOD81_02238B40 + ldr r0, [r4] + bl MOD81_02238B8C + cmp r0, #0 + bne _0223A64A + ldr r0, [r4] + mov r1, #0 + bl MOD81_02238B58 + mov r0, #1 + str r0, [r4, #0x78] +_0223A64A: + pop {r4, pc} + thumb_func_end MOD81_0223A600 + + thumb_func_start MOD81_0223A64C +MOD81_0223A64C: ; 0x0223A64C + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #0x78] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD81_0223A64C + + thumb_func_start MOD81_0223A658 +MOD81_0223A658: ; 0x0223A658 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #0x7c] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD81_0223A658 + + thumb_func_start MOD81_0223A664 +MOD81_0223A664: ; 0x0223A664 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + bl FUN_0201B6C8 + add r4, r0, #0 + mov r1, #0 + str r1, [r4, #0x78] + add r0, sp, #0 + strh r1, [r0, #4] + ldrh r1, [r0, #4] + strh r1, [r0, #2] + strh r1, [r0] + ldr r0, [r4, #4] + mov r1, #1 + bl MOD81_02238C80 + ldr r0, [r4, #4] + add r1, sp, #0 + bl MOD81_02238C60 + ldr r1, _0223A6EC ; =0x000058CC + mov r0, #2 + lsl r0, r0, #0x12 + str r1, [r4, #0x2c] + sub r0, r1, r0 + str r0, [r4, #0x28] + add r0, r4, #0 + mov r1, #0 + mov r3, #0x14 + add r0, #0x80 + str r3, [r0] + ldr r0, [r4, #0x28] + add r2, r1, #0 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD81_0223A3C0 + mov r2, #0x56 + ldrsh r2, [r4, r2] + add r0, r4, #0 + mov r1, #1 + neg r2, r2 + mov r3, #0x1e + bl MOD81_0223A3FC + mov r1, #2 + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xfe + mov r3, #0x32 + bl MOD81_0223A3FC + mov r1, #2 + ldr r0, [r4] + lsl r1, r1, #0xc + bl MOD81_02238B84 + ldr r0, [r4] + mov r1, #1 + bl MOD81_02238B58 + ldr r1, _0223A6F0 ; =MOD81_0223A6F4 + add r0, r5, #0 + bl FUN_0201B6C4 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223A6EC: .word 0x000058CC +_0223A6F0: .word MOD81_0223A6F4 + thumb_func_end MOD81_0223A664 + + thumb_func_start MOD81_0223A6F4 +MOD81_0223A6F4: ; 0x0223A6F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD81_0223A434 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0 + beq _0223A734 + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x2c] + add r0, r1, r0 + str r0, [r4, #0x28] + str r0, [r4, #0x18] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0 + bne _0223A734 + ldr r1, _0223A74C ; =MOD81_0223A750 + add r0, r5, #0 + bl FUN_0201B6C4 +_0223A734: + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + bl MOD81_02238B18 + ldr r0, [r4] + add r4, #0x20 + add r1, r4, #0 + bl MOD81_02238B40 + pop {r3, r4, r5, pc} + nop +_0223A74C: .word MOD81_0223A750 + thumb_func_end MOD81_0223A6F4 + + thumb_func_start MOD81_0223A750 +MOD81_0223A750: ; 0x0223A750 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD81_0223A434 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0x6e + ble _0223A792 + ldr r1, [r4, #0x28] + ldr r0, _0223A7A8 ; =0xFFFC5800 + sub r0, r0, r1 + mov r1, #0x35 + bl _s32_div_f + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #0x35 + add r0, #0x80 + str r1, [r0] + ldr r1, _0223A7AC ; =MOD81_0223A7B0 + add r0, r5, #0 + bl FUN_0201B6C4 +_0223A792: + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + bl MOD81_02238B18 + ldr r0, [r4] + add r4, #0x20 + add r1, r4, #0 + bl MOD81_02238B40 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223A7A8: .word 0xFFFC5800 +_0223A7AC: .word MOD81_0223A7B0 + thumb_func_end MOD81_0223A750 + + thumb_func_start MOD81_0223A7B0 +MOD81_0223A7B0: ; 0x0223A7B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD81_0223A434 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0 + beq _0223A7F0 + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x2c] + add r0, r1, r0 + str r0, [r4, #0x28] + str r0, [r4, #0x18] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #0 + bne _0223A7F0 + ldr r1, _0223A808 ; =MOD81_0223A80C + add r0, r5, #0 + bl FUN_0201B6C4 +_0223A7F0: + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + bl MOD81_02238B18 + ldr r0, [r4] + add r4, #0x20 + add r1, r4, #0 + bl MOD81_02238B40 + pop {r3, r4, r5, pc} + nop +_0223A808: .word MOD81_0223A80C + thumb_func_end MOD81_0223A7B0 + + thumb_func_start MOD81_0223A80C +MOD81_0223A80C: ; 0x0223A80C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD81_0223A434 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + ble _0223A83E + mov r0, #2 + lsl r0, r0, #0x10 + str r0, [r4, #0x2c] + ldr r1, _0223A854 ; =MOD81_0223A858 + add r0, r5, #0 + bl FUN_0201B6C4 +_0223A83E: + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + bl MOD81_02238B18 + ldr r0, [r4] + add r4, #0x20 + add r1, r4, #0 + bl MOD81_02238B40 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223A854: .word MOD81_0223A858 + thumb_func_end MOD81_0223A80C + + thumb_func_start MOD81_0223A858 +MOD81_0223A858: ; 0x0223A858 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x78] + cmp r0, #0 + bne _0223A894 + add r0, r4, #0 + bl MOD81_0223A434 + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x2c] + add r0, r1, r0 + str r0, [r4, #0x28] + str r0, [r4, #0x18] + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + bl MOD81_02238B18 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x20 + bl MOD81_02238B40 + ldr r0, [r4] + bl MOD81_02238B8C + cmp r0, #0 + bne _0223A894 + mov r0, #1 + str r0, [r4, #0x78] +_0223A894: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223A858 + + thumb_func_start MOD81_0223A898 +MOD81_0223A898: ; 0x0223A898 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3a + mov r1, #0xa4 + bl FUN_02016998 + add r4, r0, #0 + beq _0223A8C2 + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD81_0223880C + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + add r0, r4, #0 + add r0, #0x34 + bl MOD81_0223AD80 +_0223A8C2: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223A898 + + thumb_func_start MOD81_0223A8C8 +MOD81_0223A8C8: ; 0x0223A8C8 + push {r4, lr} + add r4, r0, #0 + beq _0223A8F6 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r4, #0 + bl MOD81_0223ABC0 + add r0, r4, #0 + bl MOD81_0223ACD8 + add r0, r4, #0 + bl MOD81_0223AD68 + add r0, r4, #0 + add r0, #0x34 + bl MOD81_0223AD88 + add r0, r4, #0 + bl FUN_02016A18 +_0223A8F6: + pop {r4, pc} + thumb_func_end MOD81_0223A8C8 + + thumb_func_start MOD81_0223A8F8 +MOD81_0223A8F8: ; 0x0223A8F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4] + add r5, r0, #0 + cmp r2, #2 + bhs _0223A926 + lsl r3, r2, #2 + ldr r2, _0223A92C ; =0x0223D114 + add r1, r5, #4 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _0223A91C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r5, #4] +_0223A91C: + add r0, r5, #0 + bl MOD81_0223A930 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223A926: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0223A92C: .word 0x0223D114 + thumb_func_end MOD81_0223A8F8 + + thumb_func_start MOD81_0223A930 +MOD81_0223A930: ; 0x0223A930 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _0223A94C + bl G3X_ResetMtxStack + ldr r0, [r4, #0x28] + bl MOD81_02238940 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 +_0223A94C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223A930 + + thumb_func_start MOD81_0223A950 +MOD81_0223A950: ; 0x0223A950 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD81_0223AA68 + add r0, r4, #0 + bl MOD81_0223ABD8 + add r0, r4, #0 + bl MOD81_0223ACE8 + mov r2, #0 + ldr r0, _0223A990 ; =MOD81_0223B090 + add r1, r4, #0 + str r2, [r4, #0xc] + bl FUN_0200CA98 + mov r0, #3 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + ldr r3, _0223A994 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_0223A990: .word MOD81_0223B090 +_0223A994: .word 0x00007FFF + thumb_func_end MOD81_0223A950 + + thumb_func_start MOD81_0223A998 +MOD81_0223A998: ; 0x0223A998 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _0223AA54 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223A9B2: ; jump table + .short _0223A9BC - _0223A9B2 - 2 ; case 0 + .short _0223A9C8 - _0223A9B2 - 2 ; case 1 + .short _0223A9F2 - _0223A9B2 - 2 ; case 2 + .short _0223AA1C - _0223A9B2 - 2 ; case 3 + .short _0223AA46 - _0223A9B2 - 2 ; case 4 +_0223A9BC: + mov r0, #0 + str r0, [r5, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223AA54 +_0223A9C8: + ldr r0, [r5, #8] + add r0, r0, #1 + str r0, [r5, #8] + cmp r0, #0xa + ble _0223AA54 + ldr r0, _0223AA5C ; =0x000006AC + bl FUN_020054C8 + add r1, r5, #0 + add r0, r5, #0 + add r1, #0x34 + bl MOD81_0223AD9C + ldr r0, [r5, #0x2c] + mov r1, #1 + bl MOD81_02238B58 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223AA54 +_0223A9F2: + add r0, r5, #0 + add r0, #0x34 + bl MOD81_0223AE48 + cmp r0, #0 + beq _0223AA54 + ldr r0, _0223AA60 ; =0x000006AD + bl FUN_020054C8 + ldr r0, [r5, #0x20] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r5, #0x20] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223AA54 +_0223AA1C: + ldr r0, [r5, #0x20] + bl FUN_02020388 + cmp r0, #0 + bne _0223AA54 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + ldr r3, _0223AA64 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223AA54 +_0223AA46: + bl FUN_0200E308 + cmp r0, #0 + beq _0223AA54 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0223AA54: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0223AA5C: .word 0x000006AC +_0223AA60: .word 0x000006AD +_0223AA64: .word 0x00007FFF + thumb_func_end MOD81_0223A998 + + thumb_func_start MOD81_0223AA68 +MOD81_0223AA68: ; 0x0223AA68 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, _0223ABAC ; =0x0223D158 + bl FUN_0201E66C + ldr r2, _0223ABB0 ; =0x04000304 + ldr r0, _0223ABB4 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + ldr r0, _0223ABB8 ; =0x0223D11C + bl FUN_02016BBC + ldr r0, [r4, #0x24] + ldr r2, _0223ABBC ; =0x0223D13C + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x24] + ldr r2, _0223ABBC ; =0x0223D13C + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + bl MOD81_02238828 + cmp r0, #3 + bhi _0223AABA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AAB2: ; jump table + .short _0223AABA - _0223AAB2 - 2 ; case 0 + .short _0223AAC6 - _0223AAB2 - 2 ; case 1 + .short _0223AAD2 - _0223AAB2 - 2 ; case 2 + .short _0223AADE - _0223AAB2 - 2 ; case 3 +_0223AABA: + mov r0, #0xf + str r0, [sp, #0x10] + mov r7, #0x10 + mov r6, #0x11 + mov r5, #0 + b _0223AAE8 +_0223AAC6: + mov r0, #0xf + str r0, [sp, #0x10] + mov r7, #0x10 + mov r6, #0x11 + mov r5, #0x20 + b _0223AAE8 +_0223AAD2: + mov r0, #0xf + str r0, [sp, #0x10] + mov r7, #0x10 + mov r6, #0x11 + mov r5, #0x40 + b _0223AAE8 +_0223AADE: + mov r0, #0x18 + str r0, [sp, #0x10] + mov r7, #0x19 + mov r6, #0x1a + mov r5, #0 +_0223AAE8: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x24] + mov r0, #0x5d + add r1, r7, #0 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x24] + mov r0, #0x5d + add r1, r7, #0 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x24] + mov r0, #0x5d + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x24] + mov r0, #0x5d + mov r3, #7 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + add r1, r6, #0 + add r3, r5, #0 + bl FUN_02006948 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + add r1, r6, #0 + mov r2, #4 + add r3, r5, #0 + bl FUN_02006948 + mov r1, #3 + add r3, r1, #0 + ldr r0, [r4, #0x24] + add r2, r1, #0 + add r3, #0xfd + bl FUN_020179E0 + ldr r0, [r4, #0x24] + mov r1, #7 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223ABAC: .word 0x0223D158 +_0223ABB0: .word 0x04000304 +_0223ABB4: .word 0xFFFF7FFF +_0223ABB8: .word 0x0223D11C +_0223ABBC: .word 0x0223D13C + thumb_func_end MOD81_0223AA68 + + thumb_func_start MOD81_0223ABC0 +MOD81_0223ABC0: ; 0x0223ABC0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x24] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223ABC0 + + thumb_func_start MOD81_0223ABD8 +MOD81_0223ABD8: ; 0x0223ABD8 + push {r3, r4, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _0223ACAC ; =0x04000060 + ldr r1, _0223ACB0 ; =0xFFFFCFFD + ldrh r2, [r0] + and r2, r1 + strh r2, [r0] + ldrh r3, [r0] + add r2, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _0223ACB4 ; =0x0000CFFB + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #8 + orr r2, r3 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + ldr r0, _0223ACB8 ; =0x0223D12C + bl G3X_SetEdgeColorTable + mov r1, #0 + ldr r0, _0223ACBC ; =0x000043FF + ldr r2, _0223ACC0 ; =0x00007FFF + mov r3, #0x3f + str r1, [sp] + bl G3X_SetClearColor + ldr r1, _0223ACC4 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _0223ACC8 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _0223ACCC ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + strh r2, [r1] + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + add r3, r1, #0 + bl MOD81_022388C0 + str r0, [r4, #0x28] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r2, #0x5d + mov r3, #0x1b + bl MOD81_02238A84 + ldr r1, _0223ACD0 ; =0x000018E3 + str r0, [r4, #0x2c] + add r0, sp, #0x10 + strh r1, [r0] + mov r1, #0 + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, [r4, #0x28] + add r1, sp, #0x10 + bl MOD81_02238C60 + ldr r0, [r4, #0x28] + ldr r1, _0223ACD4 ; =0x000007D2 + bl MOD81_02238C90 + ldr r0, [r4, #0x28] + add r1, sp, #0x18 + bl MOD81_02238C40 + add sp, #0x24 + pop {r3, r4, pc} + nop +_0223ACAC: .word 0x04000060 +_0223ACB0: .word 0xFFFFCFFD +_0223ACB4: .word 0x0000CFFB +_0223ACB8: .word 0x0223D12C +_0223ACBC: .word 0x000043FF +_0223ACC0: .word 0x00007FFF +_0223ACC4: .word 0x04000540 +_0223ACC8: .word 0xBFFF0000 +_0223ACCC: .word 0x04000008 +_0223ACD0: .word 0x000018E3 +_0223ACD4: .word 0x000007D2 + thumb_func_end MOD81_0223ABD8 + + thumb_func_start MOD81_0223ACD8 +MOD81_0223ACD8: ; 0x0223ACD8 + push {r3, lr} + ldr r0, [r0, #0x28] + cmp r0, #0 + beq _0223ACE4 + bl MOD81_0223890C +_0223ACE4: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD81_0223ACD8 + + thumb_func_start MOD81_0223ACE8 +MOD81_0223ACE8: ; 0x0223ACE8 + push {r4, lr} + sub sp, #0x70 + add r4, r0, #0 + add r0, #0x10 + mov r1, #0x5d + mov r2, #7 + mov r3, #8 + bl MOD81_0223874C + add r0, sp, #0x5c + bl FUN_020B19DC + add r0, sp, #0x38 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + add r0, sp, #0x38 + str r0, [sp, #0x10] + mov r0, #0x5d + mov r1, #9 + bl FUN_02006AE4 + mov r0, #0x3a + str r0, [sp] + add r0, sp, #0x5c + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0xa + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r0, #0 + add r1, r4, #0 + str r0, [sp] + add r0, sp, #0x14 + add r1, #0x10 + add r2, sp, #0x38 + add r3, sp, #0x5c + bl MOD81_022387A8 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0x80 + mov r3, #0x60 + bl MOD81_022387C8 + mov r1, #0 + str r0, [r4, #0x20] + bl FUN_020200A0 + add sp, #0x70 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223ACE8 + + thumb_func_start MOD81_0223AD68 +MOD81_0223AD68: ; 0x0223AD68 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223AD76 + bl FUN_0201FFC8 +_0223AD76: + add r4, #0x10 + add r0, r4, #0 + bl MOD81_02238784 + pop {r4, pc} + thumb_func_end MOD81_0223AD68 + + thumb_func_start MOD81_0223AD80 +MOD81_0223AD80: ; 0x0223AD80 + mov r1, #0 + str r1, [r0, #4] + bx lr + .align 2, 0 + thumb_func_end MOD81_0223AD80 + + thumb_func_start MOD81_0223AD88 +MOD81_0223AD88: ; 0x0223AD88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0223AD9A + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] +_0223AD9A: + pop {r4, pc} + thumb_func_end MOD81_0223AD88 + + thumb_func_start MOD81_0223AD9C +MOD81_0223AD9C: ; 0x0223AD9C + push {r4, lr} + add r4, r1, #0 + str r0, [r4] + ldr r1, [r0, #0x2c] + ldr r2, _0223AE2C ; =0xFFFFD870 + str r1, [r4, #0xc] + ldr r0, [r0, #0x28] + ldr r1, _0223AE30 ; =0xFFF50E00 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0x10] + str r1, [r4, #0x14] + mov r1, #0xe2 + lsl r1, r1, #0xc + str r1, [r4, #0x18] + add r1, r4, #0 + add r1, #0x6c + strh r2, [r1] + add r1, r4, #0 + ldr r2, _0223AE34 ; =0xFFFFF550 + add r1, #0x6e + strh r2, [r1] + ldr r1, _0223AE38 ; =0x000134C4 + str r1, [r4, #0x3c] + ldr r1, _0223AE3C ; =0xFFFF4D56 + str r1, [r4, #0x40] + str r0, [r4, #0x60] + str r0, [r4, #0x64] + mov r1, #2 + str r0, [r4, #0x68] + lsl r1, r1, #0xc + strh r1, [r4, #0x34] + ldr r1, _0223AE40 ; =0xFFFFE000 + strh r1, [r4, #0x36] + strh r0, [r4, #0x38] + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x34 + bl MOD81_02238B40 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x54] + mov r0, #0x4a + lsl r0, r0, #0xa + str r0, [r4, #0x44] + mov r0, #0x63 + lsl r0, r0, #0xa + str r0, [r4, #0x48] + mov r0, #0 + str r0, [r4, #0x5c] + add r0, r4, #0 + bl MOD81_0223AE90 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x28 + bl MOD81_02238B18 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x34 + bl MOD81_02238B28 + ldr r0, _0223AE44 ; =MOD81_0223AF5C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + pop {r4, pc} + nop +_0223AE2C: .word 0xFFFFD870 +_0223AE30: .word 0xFFF50E00 +_0223AE34: .word 0xFFFFF550 +_0223AE38: .word 0x000134C4 +_0223AE3C: .word 0xFFFF4D56 +_0223AE40: .word 0xFFFFE000 +_0223AE44: .word MOD81_0223AF5C + thumb_func_end MOD81_0223AD9C + + thumb_func_start MOD81_0223AE48 +MOD81_0223AE48: ; 0x0223AE48 + ldr r0, [r0, #4] + cmp r0, #0 + bne _0223AE52 + mov r0, #1 + bx lr +_0223AE52: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD81_0223AE48 + + thumb_func_start MOD81_0223AE58 +MOD81_0223AE58: ; 0x0223AE58 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r4, #0 + beq _0223AE8E + ldr r0, [r5, #0x44] + sub r0, r1, r0 + add r1, r4, #0 + bl _s32_div_f + str r0, [r5, #0x4c] + ldr r0, [r5, #0x48] + add r1, r4, #0 + sub r0, r6, r0 + bl _s32_div_f + str r0, [r5, #0x50] + ldr r0, [r5, #0x54] + add r1, r4, #0 + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x58] + ldr r0, [sp, #0x18] + str r0, [r5, #0x5c] +_0223AE8E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD81_0223AE58 + + thumb_func_start MOD81_0223AE90 +MOD81_0223AE90: ; 0x0223AE90 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x6c + ldrh r0, [r0] + mov r1, #0xb6 + bl _s32_div_f + add r4, r0, #0 + mov r0, #0x5a + lsl r0, r0, #2 + cmp r4, r0 + blt _0223AEAA + sub r4, r4, r0 +_0223AEAA: + mov r0, #0x6c + ldrsh r1, [r5, r0] + mov r0, #0x6e + ldrsh r0, [r5, r0] + add r1, r1, r0 + add r0, r5, #0 + add r0, #0x6c + strh r1, [r0] + ldr r0, [r5, #0x5c] + cmp r0, #0 + beq _0223AEE4 + ldr r1, [r5, #0x44] + ldr r0, [r5, #0x4c] + add r0, r1, r0 + str r0, [r5, #0x44] + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x50] + add r0, r1, r0 + str r0, [r5, #0x48] + ldr r1, [r5, #0x54] + ldr r0, [r5, #0x58] + add r1, r1, r0 + str r1, [r5, #0x54] + ldr r0, [r5, #0xc] + bl MOD81_02238B84 + ldr r0, [r5, #0x5c] + sub r0, r0, #1 + str r0, [r5, #0x5c] +_0223AEE4: + add r0, r4, #0 + add r0, #0x5a + lsl r1, r0, #2 + ldr r0, _0223AF58 ; =0x020EDF50 + ldr r2, [r5, #0x44] + ldr r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5, #0x1c] + ldr r2, [r5, #0x48] + ldr r0, _0223AF58 ; =0x020EDF50 + lsl r1, r4, #2 + ldr r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5, #0x20] + add r1, r5, #0 + str r3, [r5, #0x24] + mov r0, #0x34 + ldrsh r2, [r5, r0] + mov r0, #3 + lsl r0, r0, #8 + add r0, r2, r0 + strh r0, [r5, #0x34] + ldr r0, [r5, #0xc] + add r1, #0x34 + bl MOD81_02238B40 + add r0, r5, #0 + add r1, r5, #0 + add r5, #0x28 + add r0, #0x1c + add r1, #0x10 + add r2, r5, #0 + bl VEC_Add + pop {r3, r4, r5, pc} + nop +_0223AF58: .word 0x020EDF50 + thumb_func_end MOD81_0223AE90 + + thumb_func_start MOD81_0223AF5C +MOD81_0223AF5C: ; 0x0223AF5C + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4, #0x68] + cmp r1, #0x3c + bge _0223AF6C + add r1, r1, #1 + str r1, [r4, #0x68] +_0223AF6C: + ldr r1, [r4, #0x60] + cmp r1, #4 + bls _0223AF74 + b _0223B084 +_0223AF74: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223AF80: ; jump table + .short _0223AF8A - _0223AF80 - 2 ; case 0 + .short _0223AFBE - _0223AF80 - 2 ; case 1 + .short _0223AFFC - _0223AF80 - 2 ; case 2 + .short _0223B042 - _0223AF80 - 2 ; case 3 + .short _0223B072 - _0223AF80 - 2 ; case 4 +_0223AF8A: + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD81_0223AE90 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x28 + bl MOD81_02238B18 + ldr r0, [r4, #0xc] + bl MOD81_02238B8C + cmp r0, #0 + beq _0223B084 + ldr r0, [r4, #0x60] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, pc} +_0223AFBE: + ldr r0, [r4, #0xc] + bl MOD81_02238B8C + cmp r0, #0 + bne _0223AFD8 + ldr r0, [r4] + bl MOD81_0223B088 + ldr r0, [r4, #0x60] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, pc} +_0223AFD8: + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD81_0223AE90 + ldr r0, [r4, #0xc] + add r4, #0x28 + add r1, r4, #0 + bl MOD81_02238B18 + add sp, #4 + pop {r3, r4, pc} +_0223AFFC: + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD81_0223AE90 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x28 + bl MOD81_02238B18 + ldr r0, [r4, #0x68] + cmp r0, #0x3c + blt _0223B084 + mov r1, #2 + lsl r1, r1, #0xa + mov r0, #0xc + str r0, [sp] + add r0, r4, #0 + add r2, r1, #0 + lsr r3, r1, #2 + bl MOD81_0223AE58 + mov r0, #0 + str r0, [r4, #0x64] + ldr r0, [r4, #0x60] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, pc} +_0223B042: + add r0, r4, #0 + bl MOD81_0223AE90 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x28 + bl MOD81_02238B18 + ldr r0, [r4, #0x64] + add r0, r0, #1 + str r0, [r4, #0x64] + cmp r0, #0xc + blt _0223B084 + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD81_02238B58 + mov r0, #0 + str r0, [r4, #0x64] + ldr r0, [r4, #0x60] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, pc} +_0223B072: + ldr r1, [r4, #0x64] + add r1, r1, #1 + str r1, [r4, #0x64] + cmp r1, #8 + ble _0223B084 + mov r1, #0 + str r1, [r4, #4] + bl FUN_0200CAB4 +_0223B084: + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD81_0223AF5C + + thumb_func_start MOD81_0223B088 +MOD81_0223B088: ; 0x0223B088 + mov r1, #1 + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD81_0223B088 + + thumb_func_start MOD81_0223B090 +MOD81_0223B090: ; 0x0223B090 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223B0DC + mov r3, #0 + ldr r1, _0223B0E0 ; =0x00001150 + str r3, [r4, #0xc] + add r0, sp, #0 + strh r1, [r0] + strh r3, [r0, #2] + strh r3, [r0, #4] + mov r1, #3 + ldr r0, [r4, #0x24] + add r2, r1, #0 + bl FUN_020179E0 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #0x24] + mov r1, #7 + add r3, #0xfd + bl FUN_020179E0 + ldr r0, [r4, #0x28] + add r1, sp, #0 + bl MOD81_02238C70 + ldr r2, _0223B0E4 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223B0DC: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B0E0: .word 0x00001150 +_0223B0E4: .word 0x04000304 + thumb_func_end MOD81_0223B090 + + thumb_func_start MOD81_0223B0E8 +MOD81_0223B0E8: ; 0x0223B0E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3a + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0 + beq _0223B106 + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD81_0223880C + str r0, [r4, #0xc] +_0223B106: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223B0E8 + + thumb_func_start MOD81_0223B10C +MOD81_0223B10C: ; 0x0223B10C + push {r4, lr} + add r4, r0, #0 + beq _0223B11C + bl MOD81_0223B478 + add r0, r4, #0 + bl FUN_02016A18 +_0223B11C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223B10C + + thumb_func_start MOD81_0223B120 +MOD81_0223B120: ; 0x0223B120 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4] + add r5, r0, #0 + cmp r2, #2 + bhs _0223B148 + lsl r3, r2, #2 + ldr r2, _0223B14C ; =0x0223D180 + add r1, r5, #4 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _0223B144 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r5, #4] +_0223B144: + mov r0, #0 + pop {r3, r4, r5, pc} +_0223B148: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B14C: .word 0x0223D180 + thumb_func_end MOD81_0223B120 + + thumb_func_start MOD81_0223B150 +MOD81_0223B150: ; 0x0223B150 + push {lr} + sub sp, #0xc + bl MOD81_0223B264 + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + ldr r3, _0223B174 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0xc + pop {pc} + .align 2, 0 +_0223B174: .word 0x00007FFF + thumb_func_end MOD81_0223B150 + + thumb_func_start MOD81_0223B178 +MOD81_0223B178: ; 0x0223B178 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0223B190 + cmp r0, #1 + beq _0223B1C2 + cmp r0, #2 + beq _0223B1EE + b _0223B1FC +_0223B190: + bl FUN_0200E308 + cmp r0, #0 + beq _0223B1FC + ldr r0, _0223B204 ; =0xFFE80000 + mov r2, #0 + str r0, [r5, #0x10] + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [r5, #0x14] + ldr r0, _0223B208 ; =0x00005999 + add r1, r5, #0 + str r0, [r5, #0x18] + ldr r0, _0223B20C ; =0xFFFFDDDE + str r0, [r5, #0x1c] + mov r0, #0x3c + str r0, [r5, #8] + ldr r0, _0223B210 ; =MOD81_0223B21C + str r2, [r5, #0x20] + bl FUN_0200CA60 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223B1FC +_0223B1C2: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _0223B1FC + ldr r0, _0223B214 ; =0x000006A9 + bl FUN_020054C8 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + ldr r3, _0223B218 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223B1FC +_0223B1EE: + bl FUN_0200E308 + cmp r0, #0 + beq _0223B1FC + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0223B1FC: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0223B204: .word 0xFFE80000 +_0223B208: .word 0x00005999 +_0223B20C: .word 0xFFFFDDDE +_0223B210: .word MOD81_0223B21C +_0223B214: .word 0x000006A9 +_0223B218: .word 0x00007FFF + thumb_func_end MOD81_0223B178 + + thumb_func_start MOD81_0223B21C +MOD81_0223B21C: ; 0x0223B21C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0223B24A + sub r0, r0, #1 + str r0, [r4, #8] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x1c] + add r2, r1, r0 + str r2, [r4, #0x14] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0xc] + asr r1, r1, #0xc + asr r2, r2, #0xc + bl MOD81_0223B4B0 + pop {r3, r4, r5, pc} +_0223B24A: + mov r1, #0x2f + mvn r1, r1 + ldr r0, [r4, #0xc] + add r2, r1, #0 + bl MOD81_0223B4B0 + mov r0, #1 + str r0, [r4, #0x20] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223B21C + + thumb_func_start MOD81_0223B264 +MOD81_0223B264: ; 0x0223B264 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _0223B45C ; =0x0223D1EC + bl FUN_0201E66C + ldr r2, _0223B460 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + ldr r0, _0223B464 ; =0x0223D188 + bl FUN_02016BBC + ldr r0, [r4, #0xc] + ldr r2, _0223B468 ; =0x0223D198 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + ldr r2, _0223B468 ; =0x0223D198 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + ldr r2, _0223B46C ; =0x0223D1B4 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + ldr r2, _0223B470 ; =0x0223D1D0 + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + ldr r2, _0223B470 ; =0x0223D1D0 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #0x13 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #0x13 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #0x12 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #0x12 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0x14 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0x14 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0xc8 + str r0, [sp] + mov r1, #1 + ldr r0, [r4, #0xc] + mov r2, #0 + add r3, r1, #0 + bl FUN_02017F48 + mov r0, #0xc8 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #5 + mov r2, #0 + mov r3, #1 + bl FUN_02017F48 + mov r0, #0xc8 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #2 + mov r2, #0 + mov r3, #1 + bl FUN_02017F48 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + mov r2, #1 + mov r3, #0xe + bl MOD81_022385D0 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + mov r2, #5 + mov r3, #0xe + bl MOD81_022385D0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4] + mov r1, #1 + mov r2, #2 + mov r3, #0xf + bl MOD81_022385D0 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r4, #0xc] + mov r1, #1 + mov r2, #0xc8 + bl FUN_02018540 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r4, #0xc] + mov r1, #5 + mov r2, #0xc8 + bl FUN_02018540 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r4, #0xc] + mov r1, #2 + mov r2, #0xc8 + bl FUN_02018540 + mov r0, #0x14 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + ldr r0, [r4] + mov r2, #1 + mov r3, #0xe + bl MOD81_022386BC + mov r0, #0x14 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + ldr r0, [r4] + mov r2, #5 + mov r3, #0xe + bl MOD81_022386BC + mov r2, #2 + str r2, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #1 + mov r3, #0xf + bl MOD81_022386BC + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02017CD0 + ldr r0, [r4, #0xc] + mov r1, #5 + bl FUN_02017CD0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_02017CD0 + ldr r0, [r4, #0xc] + ldr r2, _0223B474 ; =0xFFFFFE80 + mov r1, #0x50 + bl MOD81_0223B4B0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0223B45C: .word 0x0223D1EC +_0223B460: .word 0x04000304 +_0223B464: .word 0x0223D188 +_0223B468: .word 0x0223D198 +_0223B46C: .word 0x0223D1B4 +_0223B470: .word 0x0223D1D0 +_0223B474: .word 0xFFFFFE80 + thumb_func_end MOD81_0223B264 + + thumb_func_start MOD81_0223B478 +MOD81_0223B478: ; 0x0223B478 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #5 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223B478 + + thumb_func_start MOD81_0223B4B0 +MOD81_0223B4B0: ; 0x0223B4B0 + push {r4, r5, r6, lr} + ldr r3, _0223B4E4 ; =0x000001FF + add r4, r1, #0 + add r6, r2, #0 + and r4, r3 + add r5, r0, #0 + mov r1, #2 + mov r2, #3 + and r3, r6 + bl FUN_020179E0 + add r0, r5, #0 + mov r1, #1 + mov r2, #3 + add r3, r4, #0 + bl FUN_020179E0 + add r4, #0xc0 + add r0, r5, #0 + mov r1, #5 + mov r2, #3 + add r3, r4, #0 + bl FUN_020179E0 + pop {r4, r5, r6, pc} + nop +_0223B4E4: .word 0x000001FF + thumb_func_end MOD81_0223B4B0 + + thumb_func_start MOD81_0223B4E8 +MOD81_0223B4E8: ; 0x0223B4E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3a + mov r1, #0xb0 + bl FUN_02016998 + add r4, r0, #0 + beq _0223B51C + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD81_0223880C + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0xc] + add r0, r4, #0 + add r0, #0x34 + bl MOD81_0223B9A0 + ldr r0, _0223B520 ; =MOD81_0223BCA8 + add r1, r4, #0 + bl FUN_02015F10 +_0223B51C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B520: .word MOD81_0223BCA8 + thumb_func_end MOD81_0223B4E8 + + thumb_func_start MOD81_0223B524 +MOD81_0223B524: ; 0x0223B524 + push {r4, lr} + add r4, r0, #0 + beq _0223B552 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r4, #0 + bl MOD81_0223B7D0 + add r0, r4, #0 + bl MOD81_0223B8F8 + add r0, r4, #0 + bl MOD81_0223B988 + add r0, r4, #0 + add r0, #0x34 + bl MOD81_0223B9A8 + add r0, r4, #0 + bl FUN_02016A18 +_0223B552: + pop {r4, pc} + thumb_func_end MOD81_0223B524 + + thumb_func_start MOD81_0223B554 +MOD81_0223B554: ; 0x0223B554 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4] + add r5, r0, #0 + cmp r2, #2 + bhs _0223B57C + lsl r3, r2, #2 + ldr r2, _0223B580 ; =0x0223D214 + add r1, r5, #4 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _0223B578 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r5, #4] +_0223B578: + mov r0, #0 + pop {r3, r4, r5, pc} +_0223B57C: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B580: .word 0x0223D214 + thumb_func_end MOD81_0223B554 + + thumb_func_start MOD81_0223B584 +MOD81_0223B584: ; 0x0223B584 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD81_0223B670 + add r0, r4, #0 + bl MOD81_0223B7E8 + add r0, r4, #0 + bl MOD81_0223B908 + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + ldr r3, _0223B5B8 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_0223B5B8: .word 0x00007FFF + thumb_func_end MOD81_0223B584 + + thumb_func_start MOD81_0223B5BC +MOD81_0223B5BC: ; 0x0223B5BC + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _0223B662 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B5D6: ; jump table + .short _0223B5DE - _0223B5D6 - 2 ; case 0 + .short _0223B5FE - _0223B5D6 - 2 ; case 1 + .short _0223B628 - _0223B5D6 - 2 ; case 2 + .short _0223B654 - _0223B5D6 - 2 ; case 3 +_0223B5DE: + bl FUN_0200E308 + cmp r0, #0 + beq _0223B662 + ldr r0, [r5, #0x20] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r5, #0x20] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223B662 +_0223B5FE: + ldr r0, [r5, #0x20] + bl FUN_02020388 + cmp r0, #0 + bne _0223B662 + ldr r0, _0223B668 ; =0x000006AB + bl FUN_020054C8 + add r1, r5, #0 + add r0, r5, #0 + add r1, #0x34 + bl MOD81_0223B9BC + ldr r0, [r5, #0x2c] + mov r1, #1 + bl MOD81_02238B58 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223B662 +_0223B628: + add r5, #0x34 + add r0, r5, #0 + bl MOD81_0223BA7C + cmp r0, #0 + beq _0223B662 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + ldr r3, _0223B66C ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223B662 +_0223B654: + bl FUN_0200E308 + cmp r0, #0 + beq _0223B662 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0223B662: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0223B668: .word 0x000006AB +_0223B66C: .word 0x00007FFF + thumb_func_end MOD81_0223B5BC + + thumb_func_start MOD81_0223B670 +MOD81_0223B670: ; 0x0223B670 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, _0223B7C0 ; =0x0223D258 + bl FUN_0201E66C + ldr r2, _0223B7C4 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + ldr r0, _0223B7C8 ; =0x0223D21C + bl FUN_02016BBC + ldr r0, [r4, #0x24] + ldr r2, _0223B7CC ; =0x0223D23C + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x24] + ldr r2, _0223B7CC ; =0x0223D23C + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + bl MOD81_02238828 + cmp r0, #3 + bhi _0223B6C2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B6BA: ; jump table + .short _0223B6C2 - _0223B6BA - 2 ; case 0 + .short _0223B6CE - _0223B6BA - 2 ; case 1 + .short _0223B6DA - _0223B6BA - 2 ; case 2 + .short _0223B6E6 - _0223B6BA - 2 ; case 3 +_0223B6C2: + mov r0, #0xf + str r0, [sp, #0x10] + mov r7, #0x10 + mov r6, #0x11 + mov r5, #0 + b _0223B6F0 +_0223B6CE: + mov r0, #0xf + str r0, [sp, #0x10] + mov r7, #0x10 + mov r6, #0x11 + mov r5, #0x20 + b _0223B6F0 +_0223B6DA: + mov r0, #0xf + str r0, [sp, #0x10] + mov r7, #0x10 + mov r6, #0x11 + mov r5, #0x40 + b _0223B6F0 +_0223B6E6: + mov r0, #0x18 + str r0, [sp, #0x10] + mov r7, #0x19 + mov r6, #0x1a + mov r5, #0 +_0223B6F0: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x24] + mov r0, #0x5d + add r1, r7, #0 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x24] + mov r0, #0x5d + add r1, r7, #0 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x24] + mov r0, #0x5d + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x24] + mov r0, #0x5d + mov r3, #7 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + add r1, r6, #0 + add r3, r5, #0 + bl FUN_02006948 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + add r1, r6, #0 + mov r2, #4 + add r3, r5, #0 + bl FUN_02006948 + mov r1, #3 + ldr r0, [r4, #0x24] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #0x24] + mov r1, #7 + add r3, #0xfd + bl FUN_020179E0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + bl FUN_02033E74 + mov r0, #1 + mov r1, #0x39 + bl FUN_02033F04 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B7C0: .word 0x0223D258 +_0223B7C4: .word 0x04000304 +_0223B7C8: .word 0x0223D21C +_0223B7CC: .word 0x0223D23C + thumb_func_end MOD81_0223B670 + + thumb_func_start MOD81_0223B7D0 +MOD81_0223B7D0: ; 0x0223B7D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x24] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223B7D0 + + thumb_func_start MOD81_0223B7E8 +MOD81_0223B7E8: ; 0x0223B7E8 + push {r3, r4, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _0223B8C8 ; =0x04000060 + ldr r1, _0223B8CC ; =0xFFFFCFFD + ldrh r2, [r0] + and r2, r1 + strh r2, [r0] + ldrh r3, [r0] + add r2, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _0223B8D0 ; =0x0000CFFB + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #8 + orr r2, r3 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + ldr r0, _0223B8D4 ; =0x0223D22C + bl G3X_SetEdgeColorTable + mov r1, #0 + ldr r0, _0223B8D8 ; =0x000043FF + ldr r2, _0223B8DC ; =0x00007FFF + mov r3, #0x3f + str r1, [sp] + bl G3X_SetClearColor + ldr r1, _0223B8E0 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _0223B8E4 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _0223B8E8 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + strh r2, [r1] + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + add r3, r1, #0 + bl MOD81_022388C0 + str r0, [r4, #0x28] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r2, #0x5d + mov r3, #0x1b + bl MOD81_02238A84 + ldr r1, _0223B8EC ; =0x000018E3 + str r0, [r4, #0x2c] + add r0, sp, #0x10 + strh r1, [r0] + mov r1, #0 + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, [r4, #0x28] + add r1, sp, #0x10 + bl MOD81_02238C60 + ldr r1, _0223B8F0 ; =0x00001150 + add r0, sp, #0x10 + strh r1, [r0] + ldr r0, [r4, #0x28] + add r1, sp, #0x10 + bl MOD81_02238C70 + ldr r0, [r4, #0x28] + ldr r1, _0223B8F4 ; =0x000007D2 + bl MOD81_02238C90 + ldr r0, [r4, #0x28] + add r1, sp, #0x18 + bl MOD81_02238C40 + add sp, #0x24 + pop {r3, r4, pc} + .align 2, 0 +_0223B8C8: .word 0x04000060 +_0223B8CC: .word 0xFFFFCFFD +_0223B8D0: .word 0x0000CFFB +_0223B8D4: .word 0x0223D22C +_0223B8D8: .word 0x000043FF +_0223B8DC: .word 0x00007FFF +_0223B8E0: .word 0x04000540 +_0223B8E4: .word 0xBFFF0000 +_0223B8E8: .word 0x04000008 +_0223B8EC: .word 0x000018E3 +_0223B8F0: .word 0x00001150 +_0223B8F4: .word 0x000007D2 + thumb_func_end MOD81_0223B7E8 + + thumb_func_start MOD81_0223B8F8 +MOD81_0223B8F8: ; 0x0223B8F8 + push {r3, lr} + ldr r0, [r0, #0x28] + cmp r0, #0 + beq _0223B904 + bl MOD81_0223890C +_0223B904: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD81_0223B8F8 + + thumb_func_start MOD81_0223B908 +MOD81_0223B908: ; 0x0223B908 + push {r4, lr} + sub sp, #0x70 + add r4, r0, #0 + add r0, #0x10 + mov r1, #0x5d + mov r2, #7 + mov r3, #8 + bl MOD81_0223874C + add r0, sp, #0x5c + bl FUN_020B19DC + add r0, sp, #0x38 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + add r0, sp, #0x38 + str r0, [sp, #0x10] + mov r0, #0x5d + mov r1, #9 + bl FUN_02006AE4 + mov r0, #0x3a + str r0, [sp] + add r0, sp, #0x5c + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0xa + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r0, #1 + add r1, r4, #0 + str r0, [sp] + add r0, sp, #0x14 + add r1, #0x10 + add r2, sp, #0x38 + add r3, sp, #0x5c + bl MOD81_022387A8 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0x80 + mov r3, #0x60 + bl MOD81_022387C8 + mov r1, #0 + str r0, [r4, #0x20] + bl FUN_020200A0 + add sp, #0x70 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223B908 + + thumb_func_start MOD81_0223B988 +MOD81_0223B988: ; 0x0223B988 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223B996 + bl FUN_0201FFC8 +_0223B996: + add r4, #0x10 + add r0, r4, #0 + bl MOD81_02238784 + pop {r4, pc} + thumb_func_end MOD81_0223B988 + + thumb_func_start MOD81_0223B9A0 +MOD81_0223B9A0: ; 0x0223B9A0 + mov r1, #0 + str r1, [r0, #4] + bx lr + .align 2, 0 + thumb_func_end MOD81_0223B9A0 + + thumb_func_start MOD81_0223B9A8 +MOD81_0223B9A8: ; 0x0223B9A8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0223B9BA + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] +_0223B9BA: + pop {r4, pc} + thumb_func_end MOD81_0223B9A8 + + thumb_func_start MOD81_0223B9BC +MOD81_0223B9BC: ; 0x0223B9BC + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + str r0, [r4] + ldr r1, [r0, #0x2c] + ldr r2, _0223BA5C ; =0xFFFFD870 + str r1, [r4, #0xc] + ldr r0, [r0, #0x28] + ldr r1, _0223BA60 ; =0x003D6C00 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0x10] + str r1, [r4, #0x14] + ldr r1, _0223BA64 ; =0xFFE44000 + str r1, [r4, #0x18] + add r1, r4, #0 + add r1, #0x78 + strh r2, [r1] + add r1, r4, #0 + ldr r2, _0223BA68 ; =0xFFFFF550 + add r1, #0x7a + strh r2, [r1] + ldr r1, _0223BA6C ; =0xFFFEF2C6 + str r1, [r4, #0x3c] + ldr r1, _0223BA70 ; =0x0000936D + str r1, [r4, #0x40] + str r0, [r4, #0x6c] + str r0, [r4, #0x70] + mov r1, #2 + str r0, [r4, #0x74] + lsl r1, r1, #0xc + strh r1, [r4, #0x34] + ldr r1, _0223BA74 ; =0xFFFFE000 + strh r1, [r4, #0x36] + strh r0, [r4, #0x38] + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x34 + bl MOD81_02238B40 + mov r3, #2 + lsl r3, r3, #8 + mov r1, #0x4a + mov r2, #0x63 + str r3, [r4, #0x5c] + lsl r0, r3, #2 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + mov r0, #0 + str r0, [r4, #0x68] + mov r0, #0xc + str r0, [sp] + add r0, r4, #0 + lsl r1, r1, #0xa + lsl r2, r2, #0xa + lsl r3, r3, #3 + bl MOD81_0223BA8C + add r0, r4, #0 + bl MOD81_0223BAD0 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x28 + bl MOD81_02238B18 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x34 + bl MOD81_02238B28 + ldr r0, _0223BA78 ; =MOD81_0223BBC8 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + add sp, #4 + pop {r3, r4, pc} + nop +_0223BA5C: .word 0xFFFFD870 +_0223BA60: .word 0x003D6C00 +_0223BA64: .word 0xFFE44000 +_0223BA68: .word 0xFFFFF550 +_0223BA6C: .word 0xFFFEF2C6 +_0223BA70: .word 0x0000936D +_0223BA74: .word 0xFFFFE000 +_0223BA78: .word MOD81_0223BBC8 + thumb_func_end MOD81_0223B9BC + + thumb_func_start MOD81_0223BA7C +MOD81_0223BA7C: ; 0x0223BA7C + ldr r0, [r0, #4] + cmp r0, #0 + bne _0223BA86 + mov r0, #1 + bx lr +_0223BA86: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD81_0223BA7C + + thumb_func_start MOD81_0223BA8C +MOD81_0223BA8C: ; 0x0223BA8C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [sp, #0x18] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + str r0, [sp] + cmp r0, #0 + beq _0223BACC + ldr r0, [r5, #0x44] + ldr r1, [sp] + sub r0, r4, r0 + bl _s32_div_f + str r0, [r5, #0x4c] + ldr r0, [r5, #0x48] + ldr r1, [sp] + sub r0, r6, r0 + bl _s32_div_f + str r0, [r5, #0x50] + ldr r0, [r5, #0x5c] + ldr r1, [sp] + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x60] + str r4, [r5, #0x54] + str r6, [r5, #0x58] + ldr r0, [sp, #0x18] + str r7, [r5, #0x64] + str r0, [r5, #0x68] +_0223BACC: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD81_0223BA8C + + thumb_func_start MOD81_0223BAD0 +MOD81_0223BAD0: ; 0x0223BAD0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0223BBC0 ; =0x0223D3A0 + ldr r0, [r0] + cmp r0, #0 + beq _0223BBAE + add r0, r5, #0 + add r0, #0x78 + ldrh r0, [r0] + mov r1, #0xb6 + bl _s32_div_f + add r4, r0, #0 + mov r0, #0x5a + lsl r0, r0, #2 + cmp r4, r0 + blt _0223BAF4 + sub r4, r4, r0 +_0223BAF4: + mov r0, #0x78 + ldrsh r1, [r5, r0] + mov r0, #0x7a + ldrsh r0, [r5, r0] + sub r1, r1, r0 + add r0, r5, #0 + add r0, #0x78 + strh r1, [r0] + ldr r0, [r5, #0x68] + cmp r0, #0 + beq _0223BB3C + sub r0, r0, #1 + str r0, [r5, #0x68] + beq _0223BB28 + ldr r1, [r5, #0x44] + ldr r0, [r5, #0x4c] + add r0, r1, r0 + str r0, [r5, #0x44] + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x50] + add r0, r1, r0 + str r0, [r5, #0x48] + ldr r1, [r5, #0x5c] + ldr r0, [r5, #0x60] + add r0, r1, r0 + b _0223BB32 +_0223BB28: + ldr r0, [r5, #0x54] + str r0, [r5, #0x44] + ldr r0, [r5, #0x58] + str r0, [r5, #0x48] + ldr r0, [r5, #0x64] +_0223BB32: + str r0, [r5, #0x5c] + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x5c] + bl MOD81_02238B84 +_0223BB3C: + add r0, r4, #0 + add r0, #0x5a + lsl r1, r0, #2 + ldr r0, _0223BBC4 ; =0x020EDF50 + ldr r2, [r5, #0x44] + ldr r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5, #0x1c] + ldr r2, [r5, #0x48] + ldr r0, _0223BBC4 ; =0x020EDF50 + lsl r1, r4, #2 + ldr r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5, #0x20] + add r1, r5, #0 + str r3, [r5, #0x24] + mov r0, #0x34 + ldrsh r2, [r5, r0] + mov r0, #3 + lsl r0, r0, #8 + sub r0, r2, r0 + strh r0, [r5, #0x34] + ldr r0, [r5, #0xc] + add r1, #0x34 + bl MOD81_02238B40 + add r0, r5, #0 + add r1, r5, #0 + add r5, #0x28 + add r0, #0x1c + add r1, #0x10 + add r2, r5, #0 + bl VEC_Add + pop {r3, r4, r5, pc} +_0223BBAE: + add r2, r5, #0 + add r2, #0x10 + ldmia r2!, {r0, r1} + add r5, #0x28 + stmia r5!, {r0, r1} + ldr r0, [r2] + str r0, [r5] + pop {r3, r4, r5, pc} + nop +_0223BBC0: .word 0x0223D3A0 +_0223BBC4: .word 0x020EDF50 + thumb_func_end MOD81_0223BAD0 + + thumb_func_start MOD81_0223BBC8 +MOD81_0223BBC8: ; 0x0223BBC8 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0x74] + cmp r1, #0x46 + bge _0223BBD6 + add r1, r1, #1 + str r1, [r4, #0x74] +_0223BBD6: + ldr r1, [r4, #0x6c] + cmp r1, #3 + bhi _0223BC9C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223BBE8: ; jump table + .short _0223BBF0 - _0223BBE8 - 2 ; case 0 + .short _0223BC16 - _0223BBE8 - 2 ; case 1 + .short _0223BC50 - _0223BBE8 - 2 ; case 2 + .short _0223BC8A - _0223BBE8 - 2 ; case 3 +_0223BBF0: + add r0, r4, #0 + bl MOD81_0223BAD0 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x28 + bl MOD81_02238B18 + ldr r0, [r4, #0x74] + add r0, r0, #1 + str r0, [r4, #0x74] + cmp r0, #0xc + blt _0223BC9C + mov r0, #0 + str r0, [r4, #0x74] + ldr r0, [r4, #0x6c] + add r0, r0, #1 + str r0, [r4, #0x6c] + pop {r4, pc} +_0223BC16: + ldr r0, [r4, #0xc] + bl MOD81_02238B8C + cmp r0, #0 + bne _0223BC2E + ldr r0, [r4] + bl MOD81_0223BCA0 + ldr r0, [r4, #0x6c] + add r0, r0, #1 + str r0, [r4, #0x6c] + pop {r4, pc} +_0223BC2E: + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD81_0223BAD0 + ldr r0, [r4, #0xc] + add r4, #0x28 + add r1, r4, #0 + bl MOD81_02238B18 + pop {r4, pc} +_0223BC50: + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD81_0223BAD0 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x28 + bl MOD81_02238B18 + ldr r0, [r4, #0x74] + cmp r0, #0x46 + blt _0223BC9C + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD81_02238B58 + mov r0, #0 + str r0, [r4, #0x70] + ldr r0, [r4, #0x6c] + add r0, r0, #1 + str r0, [r4, #0x6c] + pop {r4, pc} +_0223BC8A: + ldr r1, [r4, #0x70] + add r1, r1, #1 + str r1, [r4, #0x70] + cmp r1, #8 + ble _0223BC9C + mov r1, #0 + str r1, [r4, #4] + bl FUN_0200CAB4 +_0223BC9C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223BBC8 + + thumb_func_start MOD81_0223BCA0 +MOD81_0223BCA0: ; 0x0223BCA0 + mov r1, #1 + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD81_0223BCA0 + + thumb_func_start MOD81_0223BCA8 +MOD81_0223BCA8: ; 0x0223BCA8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _0223BCC6 + bl G3X_ResetMtxStack + ldr r0, [r4, #0x28] + bl MOD81_02238940 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 +_0223BCC6: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223BD08 + ldr r1, _0223BD0C ; =0x0000EEB0 + add r0, sp, #0 + strh r1, [r0] + mov r1, #0 + strh r1, [r0, #2] + strh r1, [r0, #4] + mov r1, #3 + add r3, r1, #0 + ldr r0, [r4, #0x24] + add r2, r1, #0 + add r3, #0xfd + bl FUN_020179E0 + ldr r0, [r4, #0x24] + mov r1, #7 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x28] + add r1, sp, #0 + bl MOD81_02238C70 + ldr r2, _0223BD10 ; =0x04000304 + ldr r0, _0223BD14 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + mov r0, #0 + str r0, [r4, #0xc] +_0223BD08: + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0223BD0C: .word 0x0000EEB0 +_0223BD10: .word 0x04000304 +_0223BD14: .word 0xFFFF7FFF + thumb_func_end MOD81_0223BCA8 + + thumb_func_start MOD81_0223BD18 +MOD81_0223BD18: ; 0x0223BD18 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3a + mov r1, #0x3c + bl FUN_02016998 + add r4, r0, #0 + beq _0223BD46 + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD81_0223880C + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x20] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x30] + str r0, [r4, #0x34] + str r0, [r4, #0x38] +_0223BD46: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223BD18 + + thumb_func_start MOD81_0223BD4C +MOD81_0223BD4C: ; 0x0223BD4C + push {r4, lr} + add r4, r0, #0 + beq _0223BD80 + bl MOD81_0223C1A8 + add r0, r4, #0 + bl MOD81_0223C2EC + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _0223BD66 + bl MOD81_0223C460 +_0223BD66: + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _0223BD70 + bl MOD81_0223C3B0 +_0223BD70: + ldr r0, [r4, #0x38] + cmp r0, #0 + beq _0223BD7A + bl MOD81_0223C514 +_0223BD7A: + add r0, r4, #0 + bl FUN_02016A18 +_0223BD80: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223BD4C + + thumb_func_start MOD81_0223BD84 +MOD81_0223BD84: ; 0x0223BD84 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4] + add r5, r0, #0 + cmp r2, #3 + bhs _0223BDB2 + lsl r3, r2, #2 + ldr r2, _0223BDB8 ; =0x0223D288 + add r1, r5, #4 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _0223BDA8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r5, #4] +_0223BDA8: + add r0, r5, #0 + bl MOD81_0223BDBC + mov r0, #0 + pop {r3, r4, r5, pc} +_0223BDB2: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0223BDB8: .word 0x0223D288 + thumb_func_end MOD81_0223BD84 + + thumb_func_start MOD81_0223BDBC +MOD81_0223BDBC: ; 0x0223BDBC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223BDEE + mov r0, #0x2a + ldrsh r1, [r4, r0] + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + strh r0, [r4, #0x2a] + add r1, r4, #0 + ldr r0, [r4, #0x24] + add r1, #0x28 + bl MOD81_02238B40 + bl G3X_ResetMtxStack + ldr r0, [r4, #0x20] + bl MOD81_02238940 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 +_0223BDEE: + pop {r4, pc} + thumb_func_end MOD81_0223BDBC + + thumb_func_start MOD81_0223BDF0 +MOD81_0223BDF0: ; 0x0223BDF0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD81_0223BF74 + add r0, r4, #0 + bl MOD81_0223C1DC + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + ldr r3, _0223BE1C ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223BE1C: .word 0x00007FFF + thumb_func_end MOD81_0223BDF0 + + thumb_func_start MOD81_0223BE20 +MOD81_0223BE20: ; 0x0223BE20 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bhi _0223BEEA + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223BE38: ; jump table + .short _0223BE46 - _0223BE38 - 2 ; case 0 + .short _0223BE64 - _0223BE38 - 2 ; case 1 + .short _0223BE7E - _0223BE38 - 2 ; case 2 + .short _0223BE90 - _0223BE38 - 2 ; case 3 + .short _0223BEA8 - _0223BE38 - 2 ; case 4 + .short _0223BECC - _0223BE38 - 2 ; case 5 + .short _0223BEE0 - _0223BE38 - 2 ; case 6 +_0223BE46: + bl FUN_0200E308 + cmp r0, #0 + beq _0223BEEA + mov r0, #0 + str r0, [r4, #8] + add r0, r4, #0 + add r4, #0x30 + add r1, r4, #0 + bl MOD81_0223C3CC + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223BEEA +_0223BE64: + ldr r1, [r4, #8] + add r1, r1, #1 + str r1, [r4, #8] + cmp r1, #8 + ble _0223BEEA + add r4, #0x34 + add r1, r4, #0 + bl MOD81_0223C300 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223BEEA +_0223BE7E: + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _0223BEEA + ldr r0, [r4, #0x30] + cmp r0, #0 + bne _0223BEEA + add r0, r1, #1 + str r0, [r5] + b _0223BEEA +_0223BE90: + mov r1, #0 + add r0, #0x14 + mvn r1, r1 + bl MOD81_02238118 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223BEEA +_0223BEA8: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x1e + ble _0223BEEA + add r0, r4, #0 + add r0, #0x38 + str r0, [sp] + ldr r0, [r4, #0x24] + mov r1, #0x1f + mov r2, #0 + mov r3, #0x28 + bl MOD81_0223C47C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223BEEA +_0223BECC: + ldr r0, [r4, #0x38] + cmp r0, #0 + bne _0223BEEA + ldr r0, [r4, #0x10] + bl MOD81_022381EC + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223BEEA +_0223BEE0: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0223BEEA + mov r0, #1 + pop {r3, r4, r5, pc} +_0223BEEA: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223BE20 + + thumb_func_start MOD81_0223BEF0 +MOD81_0223BEF0: ; 0x0223BEF0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0223BF08 + cmp r0, #1 + beq _0223BF30 + cmp r0, #2 + beq _0223BF5A + b _0223BF6E +_0223BF08: + mov r0, #0x4a + lsl r0, r0, #2 + mov r3, #1 + str r0, [sp] + add r0, r5, #0 + str r3, [sp, #4] + add r0, #0x1c + str r0, [sp, #8] + ldr r0, [r5, #0xc] + lsl r1, r3, #0xc + lsl r2, r3, #0xa + bl MOD81_022384AC + str r0, [r5, #0x18] + mov r0, #0 + str r0, [r5, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223BF6E +_0223BF30: + ldr r0, [r5, #8] + add r0, r0, #1 + str r0, [r5, #8] + cmp r0, #0xd + ble _0223BF6E + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223BF6E +_0223BF5A: + bl FUN_0200E308 + cmp r0, #0 + beq _0223BF6E + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0223BF6E + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0223BF6E: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD81_0223BEF0 + + thumb_func_start MOD81_0223BF74 +MOD81_0223BF74: ; 0x0223BF74 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _0223C18C ; =0x0223D2EC + bl FUN_0201E66C + ldr r2, _0223C190 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + ldr r0, _0223C194 ; =0x0223D294 + bl FUN_02016BBC + ldr r0, [r4, #0xc] + ldr r2, _0223C198 ; =0x0223D2B4 + mov r1, #2 + mov r3, #1 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + ldr r2, _0223C198 ; =0x0223D2B4 + mov r1, #6 + mov r3, #1 + bl FUN_02016C18 + bl OS_DisableInterrupts + add r5, r0, #0 + ldr r0, [r4, #0xc] + ldr r2, _0223C19C ; =0x0223D2D0 + mov r1, #3 + mov r3, #2 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + ldr r2, _0223C19C ; =0x0223D2D0 + mov r1, #7 + mov r3, #2 + bl FUN_02016C18 + add r0, r5, #0 + bl OS_RestoreInterrupts + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + mov r1, #2 + ldr r2, [r4, #0xc] + mov r0, #0x5d + add r3, r1, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #2 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + bl MOD81_02238828 + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #3 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + ldr r0, _0223C1A0 ; =0x0223D280 + lsl r1, r5, #1 + ldrh r5, [r0, r1] + mov r0, #0x20 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + mov r1, #3 + mov r2, #0 + add r3, r5, #0 + bl FUN_02006948 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #0x5d + mov r1, #3 + mov r2, #4 + add r3, r5, #0 + bl FUN_02006948 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #5 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #5 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #4 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x5d + mov r1, #4 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0x3a + mov r1, #0x60 + bl FUN_02016998 + add r5, r0, #0 + beq _0223C14A + mov r0, #0 + add r1, r5, #0 + mov r2, #0x60 + bl MIi_CpuClear32 + add r0, r5, #0 + mov r1, #0x60 + bl DC_FlushRange + bl GX_BeginLoadBGExtPltt + bl GXS_BeginLoadBGExtPltt + mov r1, #6 + add r0, r5, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GX_LoadBGExtPltt + mov r1, #6 + add r0, r5, #0 + lsl r1, r1, #0xc + mov r2, #0x60 + bl GXS_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + bl GXS_EndLoadBGExtPltt + add r0, r5, #0 + bl FUN_02016A18 +_0223C14A: + ldr r0, [r4, #0xc] + ldr r3, _0223C1A4 ; =0xFFFFFE80 + mov r1, #2 + mov r2, #3 + bl FUN_020179E0 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #0xc] + mov r1, #6 + sub r3, #0xc3 + bl FUN_020179E0 + mov r1, #3 + ldr r0, [r4, #0xc] + add r2, r1, #0 + mov r3, #0x43 + bl FUN_020179E0 + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223C18C: .word 0x0223D2EC +_0223C190: .word 0x04000304 +_0223C194: .word 0x0223D294 +_0223C198: .word 0x0223D2B4 +_0223C19C: .word 0x0223D2D0 +_0223C1A0: .word 0x0223D280 +_0223C1A4: .word 0xFFFFFE80 + thumb_func_end MOD81_0223BF74 + + thumb_func_start MOD81_0223C1A8 +MOD81_0223C1A8: ; 0x0223C1A8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _0223C1B8 + ldr r0, [r4, #0x10] + bl MOD81_02238200 +_0223C1B8: + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223C1A8 + + thumb_func_start MOD81_0223C1DC +MOD81_0223C1DC: ; 0x0223C1DC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _0223C2C0 ; =0x04000060 + ldr r1, _0223C2C4 ; =0xFFFFCFFD + ldrh r2, [r0] + and r2, r1 + strh r2, [r0] + ldrh r3, [r0] + add r2, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _0223C2C8 ; =0x0000CFFB + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #8 + orr r2, r3 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + ldr r0, _0223C2CC ; =0x0223D2A4 + bl G3X_SetEdgeColorTable + mov r1, #0 + ldr r0, _0223C2D0 ; =0x000043FF + ldr r2, _0223C2D4 ; =0x00007FFF + mov r3, #0x3f + str r1, [sp] + bl G3X_SetClearColor + ldr r1, _0223C2D8 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _0223C2DC ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _0223C2E0 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + strh r2, [r1] + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + add r3, r1, #0 + bl MOD81_022388C0 + str r0, [r4, #0x20] + mov r1, #0 + mov r0, #0x23 + str r1, [sp] + lsl r0, r0, #0xe + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [r4, #0x20] + mov r2, #0x5d + mov r3, #0x1b + bl MOD81_02238A84 + str r0, [r4, #0x24] + ldr r0, _0223C2E4 ; =0x0223D450 + mov r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, [r4, #0x20] + ldr r1, _0223C2E8 ; =0x0223D450 + bl MOD81_02238C60 + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD81_02238C80 + mov r1, #2 + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + bl MOD81_02238B84 + ldr r0, [r4, #0x24] + add r4, #0x28 + add r1, r4, #0 + bl MOD81_02238B28 + add sp, #0x10 + pop {r4, pc} + nop +_0223C2C0: .word 0x04000060 +_0223C2C4: .word 0xFFFFCFFD +_0223C2C8: .word 0x0000CFFB +_0223C2CC: .word 0x0223D2A4 +_0223C2D0: .word 0x000043FF +_0223C2D4: .word 0x00007FFF +_0223C2D8: .word 0x04000540 +_0223C2DC: .word 0xBFFF0000 +_0223C2E0: .word 0x04000008 +_0223C2E4: .word 0x0223D450 +_0223C2E8: .word 0x0223D450 + thumb_func_end MOD81_0223C1DC + + thumb_func_start MOD81_0223C2EC +MOD81_0223C2EC: ; 0x0223C2EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223C2FE + bl MOD81_0223890C + mov r0, #0 + str r0, [r4, #0x20] +_0223C2FE: + pop {r4, pc} + thumb_func_end MOD81_0223C2EC + + thumb_func_start MOD81_0223C300 +MOD81_0223C300: ; 0x0223C300 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #0x3a + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0 + beq _0223C340 + str r6, [r4] + ldr r0, [r6, #0xc] + add r1, r4, #0 + str r0, [r4, #4] + ldr r0, _0223C344 ; =0xFFE80000 + mov r2, #0 + str r0, [r4, #0xc] + asr r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, _0223C348 ; =0x00009999 + str r0, [r4, #0x14] + mov r0, #0x28 + str r0, [r4, #8] + ldr r0, _0223C34C ; =MOD81_0223C350 + str r5, [r4, #0x1c] + bl FUN_0200CA60 + str r0, [r5] + cmp r0, #0 + bne _0223C340 + add r0, r4, #0 + bl FUN_02016A18 +_0223C340: + pop {r4, r5, r6, pc} + nop +_0223C344: .word 0xFFE80000 +_0223C348: .word 0x00009999 +_0223C34C: .word MOD81_0223C350 + thumb_func_end MOD81_0223C300 + + thumb_func_start MOD81_0223C350 +MOD81_0223C350: ; 0x0223C350 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0223C390 + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + mov r2, #3 + add r0, r1, r0 + str r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r3, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #2 + asr r3, r3, #0xc + bl FUN_020179E0 + ldr r3, [r4, #0x10] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + ldr r0, [r4, #8] + sub r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223C390: + ldr r0, [r4, #4] + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #3 + mov r3, #0xc0 + bl FUN_020179E0 + add r0, r5, #0 + bl MOD81_0223C3B0 + pop {r3, r4, r5, pc} + thumb_func_end MOD81_0223C350 + + thumb_func_start MOD81_0223C3B0 +MOD81_0223C3B0: ; 0x0223C3B0 + push {r4, lr} + add r4, r0, #0 + beq _0223C3CA + bl FUN_0201B6C8 + ldr r1, [r0, #0x1c] + mov r2, #0 + str r2, [r1] + bl MOD81_02238898 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223C3CA: + pop {r4, pc} + thumb_func_end MOD81_0223C3B0 + + thumb_func_start MOD81_0223C3CC +MOD81_0223C3CC: ; 0x0223C3CC + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #0x3a + mov r1, #0x1c + bl FUN_02016998 + add r4, r0, #0 + beq _0223C418 + str r5, [r4] + ldr r0, [r6, #0x24] + add r1, r4, #0 + str r0, [r4, #8] + add r1, #0xc + bl MOD81_02238B08 + mov r0, #0x32 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xc + sub r1, r0, r1 + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + str r0, [r4, #0x18] + mov r0, #0x10 + str r0, [r4, #4] + ldr r0, _0223C41C ; =MOD81_0223C420 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r5] + cmp r0, #0 + bne _0223C418 + add r0, r4, #0 + bl FUN_02016A18 +_0223C418: + pop {r4, r5, r6, pc} + nop +_0223C41C: .word MOD81_0223C420 + thumb_func_end MOD81_0223C3CC + + thumb_func_start MOD81_0223C420 +MOD81_0223C420: ; 0x0223C420 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0223C446 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [r4, #0x10] + add r1, r4, #0 + ldr r0, [r4, #8] + add r1, #0xc + bl MOD81_02238B18 + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_0223C446: + mov r0, #0x32 + lsl r0, r0, #0xc + str r0, [r4, #0x10] + ldr r0, [r4, #8] + add r4, #0xc + add r1, r4, #0 + bl MOD81_02238B18 + add r0, r5, #0 + bl MOD81_0223C460 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223C420 + + thumb_func_start MOD81_0223C460 +MOD81_0223C460: ; 0x0223C460 + push {r4, lr} + add r4, r0, #0 + beq _0223C47A + bl FUN_0201B6C8 + ldr r1, [r0] + mov r2, #0 + str r2, [r1] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223C47A: + pop {r4, pc} + thumb_func_end MOD81_0223C460 + + thumb_func_start MOD81_0223C47C +MOD81_0223C47C: ; 0x0223C47C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r6, r1, #0 + mov r0, #0x3a + mov r1, #0x18 + str r2, [sp, #4] + add r7, r3, #0 + ldr r5, [sp, #0x20] + bl FUN_02016998 + add r4, r0, #0 + beq _0223C4D4 + str r5, [r4] + lsl r0, r6, #0xc + str r0, [r4, #4] + ldr r0, [sp, #4] + lsl r1, r0, #0xc + str r1, [r4, #0xc] + ldr r0, [r4, #4] + sub r0, r1, r0 + add r1, r7, #0 + bl _s32_div_f + str r0, [r4, #8] + ldr r0, [sp] + str r7, [r4, #0x10] + add r1, r6, #0 + str r0, [r4, #0x14] + bl MOD81_02238B5C + ldr r0, _0223C4DC ; =MOD81_0223C4E0 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r5] + cmp r0, #0 + bne _0223C4D8 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223C4D4: + mov r0, #0 + str r0, [r5] +_0223C4D8: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C4DC: .word MOD81_0223C4E0 + thumb_func_end MOD81_0223C47C + + thumb_func_start MOD81_0223C4E0 +MOD81_0223C4E0: ; 0x0223C4E0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0x10] + sub r0, r0, #1 + str r0, [r1, #0x10] + cmp r0, #0 + ble _0223C500 + ldr r2, [r1, #4] + ldr r0, [r1, #8] + add r2, r2, r0 + str r2, [r1, #4] + ldr r0, [r1, #0x14] + asr r1, r2, #0xc + bl MOD81_02238B5C + pop {r4, pc} +_0223C500: + ldr r0, [r1, #0x14] + ldr r1, [r1, #0xc] + asr r1, r1, #0xc + bl MOD81_02238B5C + add r0, r4, #0 + bl MOD81_0223C514 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223C4E0 + + thumb_func_start MOD81_0223C514 +MOD81_0223C514: ; 0x0223C514 + push {r4, lr} + add r4, r0, #0 + beq _0223C52E + bl FUN_0201B6C8 + ldr r1, [r0] + mov r2, #0 + str r2, [r1] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223C52E: + pop {r4, pc} + thumb_func_end MOD81_0223C514 + + thumb_func_start MOD81_0223C530 +MOD81_0223C530: ; 0x0223C530 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3a + mov r1, #0x70 + bl FUN_02016998 + add r4, r0, #0 + beq _0223C57A + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD81_0223880C + str r0, [r4, #0x44] + mov r0, #0x3a + bl FUN_02006D98 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #0x4b + lsl r0, r0, #2 + mov r1, #0x3a + bl FUN_020219F4 + str r0, [r4, #0x58] + mov r0, #0x4b + lsl r0, r0, #2 + mov r1, #0x3a + bl FUN_020219F4 + str r0, [r4, #0x5c] + mov r0, #0 + str r0, [r4, #0x68] + str r0, [r4, #0x6c] + str r0, [r4, #0x60] +_0223C57A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223C530 + + thumb_func_start MOD81_0223C580 +MOD81_0223C580: ; 0x0223C580 + push {r4, lr} + add r4, r0, #0 + beq _0223C5D2 + bl MOD81_0223CD08 + add r0, r4, #0 + bl MOD81_0223CC84 + ldr r0, [r4, #0x6c] + bl MOD81_0223CDE0 + ldr r0, [r4, #0x58] + bl FUN_02021A20 + ldr r0, [r4, #0x5c] + bl FUN_02021A20 + ldr r0, [r4, #0x60] + cmp r0, #0 + beq _0223C5AC + bl MOD81_0223890C +_0223C5AC: + ldr r0, [r4, #0x44] + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + add r0, #0x48 + bl FUN_02019178 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _0223C5C6 + bl FUN_02007534 +_0223C5C6: + ldr r0, [r4, #0x10] + bl FUN_020072E8 + add r0, r4, #0 + bl FUN_02016A18 +_0223C5D2: + pop {r4, pc} + thumb_func_end MOD81_0223C580 + + thumb_func_start MOD81_0223C5D4 +MOD81_0223C5D4: ; 0x0223C5D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4] + add r5, r0, #0 + cmp r2, #4 + bhs _0223C602 + lsl r3, r2, #2 + ldr r2, _0223C608 ; =0x0223D31C + add r1, r5, #4 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _0223C5F8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r5, #4] +_0223C5F8: + add r0, r5, #0 + bl MOD81_0223C60C + mov r0, #0 + pop {r3, r4, r5, pc} +_0223C602: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0223C608: .word 0x0223D31C + thumb_func_end MOD81_0223C5D4 + + thumb_func_start MOD81_0223C60C +MOD81_0223C60C: ; 0x0223C60C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl G3X_ResetMtxStack + mov r1, #0 + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + bl FUN_020BB394 + bl FUN_020B02C8 + ldr r0, [r4, #0x10] + bl FUN_020081C4 + ldr r0, [r4, #0x10] + bl FUN_02006ED4 + mov r2, #1 + str r2, [sp] + mov r0, #0x12 + add r1, sp, #0 + bl FUN_020BB1C0 + ldr r0, [r4, #0x60] + cmp r0, #0 + beq _0223C64A + bl MOD81_02238940 +_0223C64A: + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223C60C + + thumb_func_start MOD81_0223C658 +MOD81_0223C658: ; 0x0223C658 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, _0223C808 ; =0x0223D374 + bl FUN_0201E66C + ldr r2, _0223C80C ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + ldr r0, _0223C810 ; =0x0223D32C + bl FUN_02016BBC + ldr r0, [r4, #0x44] + ldr r2, _0223C814 ; =0x0223D33C + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x44] + ldr r2, _0223C818 ; =0x0223D358 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r2, _0223C81C ; =0x04000008 + mov r0, #3 + ldrh r3, [r2] + mov r1, #1 + bic r3, r0 + add r0, r3, #0 + orr r0, r1 + strh r0, [r2] + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #0x44] + add r3, r1, #0 + bl FUN_02017F48 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r4, #0x44] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4] + bl MOD81_02238844 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x3a + str r0, [sp, #4] + ldr r0, [r4, #0x44] + mov r1, #1 + mov r2, #0x6d + mov r3, #2 + bl FUN_0200CD68 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + add r1, r4, #0 + str r0, [sp, #8] + mov r2, #1 + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r0, [r4, #0x44] + add r1, #0x48 + mov r3, #2 + bl FUN_02019064 + add r0, r4, #0 + add r0, #0x48 + mov r1, #0xf + bl FUN_02019620 + mov r3, #0x20 + str r3, [sp] + mov r0, #0x3a + str r0, [sp, #4] + mov r0, #0xe + mov r1, #7 + mov r2, #0 + bl FUN_02006930 + ldr r0, [r4, #0x44] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x44] + mov r0, #0x5d + mov r1, #0x16 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + ldr r2, [r4, #0x44] + mov r0, #0x5d + mov r1, #0x15 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3a + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0x17 + add r3, r2, #0 + bl FUN_02006930 + add r0, r4, #0 + bl MOD81_0223CAC4 + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + add r3, r1, #0 + bl MOD81_022388C0 + str r0, [r4, #0x60] + add r0, r4, #0 + bl MOD81_0223CB90 + mov r1, #6 + mov r2, #1 + str r0, [r4, #0x14] + bl FUN_02007558 + mov r1, #0 + mov r0, #0x13 + str r1, [sp] + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #0xe + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #0x60] + mov r2, #0x5d + mov r3, #0x1b + bl MOD81_02238A84 + ldr r2, _0223C820 ; =0x0223D314 + str r0, [r4, #0x64] + ldrh r3, [r2] + add r0, sp, #0x14 + add r1, sp, #0x14 + strh r3, [r0] + ldrh r3, [r2, #2] + ldrh r2, [r2, #4] + strh r3, [r0, #2] + strh r2, [r0, #4] + ldr r0, [r4, #0x64] + bl MOD81_02238B40 + add r0, r4, #0 + bl MOD81_0223CBE0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0 + str r0, [sp] + ldr r0, _0223C824 ; =0x04000050 + mov r1, #1 + mov r2, #4 + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_0223C808: .word 0x0223D374 +_0223C80C: .word 0x04000304 +_0223C810: .word 0x0223D32C +_0223C814: .word 0x0223D33C +_0223C818: .word 0x0223D358 +_0223C81C: .word 0x04000008 +_0223C820: .word 0x0223D314 +_0223C824: .word 0x04000050 + thumb_func_end MOD81_0223C658 + + thumb_func_start MOD81_0223C828 +MOD81_0223C828: ; 0x0223C828 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + cmp r0, #0 + bne _0223C84E + bl FUN_0200E308 + cmp r0, #0 + beq _0223C84E + ldr r0, [r4, #0x2c] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x2c] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_0223C84E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223C828 + + thumb_func_start MOD81_0223C854 +MOD81_0223C854: ; 0x0223C854 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #4 + bhi _0223C91C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223C86C: ; jump table + .short _0223C876 - _0223C86C - 2 ; case 0 + .short _0223C884 - _0223C86C - 2 ; case 1 + .short _0223C8AE - _0223C86C - 2 ; case 2 + .short _0223C8D6 - _0223C86C - 2 ; case 3 + .short _0223C90E - _0223C86C - 2 ; case 4 +_0223C876: + add r1, r4, #0 + add r1, #0x6c + bl MOD81_0223CD64 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_0223C884: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _0223C91C + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x64] + mov r1, #0 + bl MOD81_02238B58 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223C91C +_0223C8AE: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0xa + ble _0223C91C + ldr r0, [r4, #0x14] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add r0, r4, #0 + mov r1, #0x10 + mov r2, #0 + mov r3, #0xc + bl MOD81_0223CCA8 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _0223C91C +_0223C8D6: + bl MOD81_0223CCF8 + cmp r0, #0 + beq _0223C91C + ldr r0, [r4] + bl MOD81_02238820 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _0223C902 + ldr r0, [r4] + bl MOD81_02238838 + bl FUN_02005578 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_02007314 +_0223C902: + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223C91C +_0223C90E: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x1e + ble _0223C91C + mov r0, #1 + pop {r3, r4, r5, pc} +_0223C91C: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD81_0223C854 + + thumb_func_start MOD81_0223C920 +MOD81_0223C920: ; 0x0223C920 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bhi _0223C95C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223C93A: ; jump table + .short _0223C946 - _0223C93A - 2 ; case 0 + .short _0223C952 - _0223C93A - 2 ; case 1 + .short _0223C9D0 - _0223C93A - 2 ; case 2 + .short _0223CA32 - _0223C93A - 2 ; case 3 + .short _0223CA52 - _0223C93A - 2 ; case 4 + .short _0223CA7C - _0223C93A - 2 ; case 5 +_0223C946: + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223CA8A +_0223C952: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0xa + bgt _0223C95E +_0223C95C: + b _0223CA8A +_0223C95E: + ldr r0, [r4] + bl MOD81_02238814 + str r0, [sp, #0xc] + ldr r0, [r4] + bl MOD81_02238810 + add r7, r0, #0 + ldr r0, [r4] + bl MOD81_02238850 + cmp r0, #1 + bne _0223C97E + mov r1, #2 + add r6, r1, #0 + b _0223C982 +_0223C97E: + mov r1, #5 + mov r6, #3 +_0223C982: + ldr r0, [sp, #0xc] + ldr r2, [r4, #0x58] + bl FUN_0200A8E0 + ldr r1, [r4, #0x5c] + ldr r2, [r4, #0x58] + add r0, r7, #0 + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x48 + mov r1, #1 + bl FUN_0201BD84 + add r0, r4, #0 + add r0, #0x48 + mov r1, #0x6d + mov r2, #2 + bl FUN_0200D06C + add r0, r4, #0 + add r0, #0x48 + bl FUN_020191D0 + ldr r0, _0223CA90 ; =0x00000484 + bl FUN_02005C28 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + str r0, [r4, #0xc] + str r6, [r5] + b _0223CA8A +_0223C9D0: + mov r1, #0x3c + bl MOD81_0223CA94 + cmp r0, #0 + beq _0223CA8A + ldr r0, [r4] + bl MOD81_02238814 + add r6, r0, #0 + ldr r0, [r4] + bl MOD81_02238810 + add r7, r0, #0 + ldr r2, [r4, #0x58] + add r0, r6, #0 + mov r1, #3 + bl FUN_0200A8E0 + ldr r1, [r4, #0x5c] + ldr r2, [r4, #0x58] + add r0, r7, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + add r0, #0x48 + mov r1, #0xf + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x48 + mov r1, #1 + bl FUN_0201BD84 + add r0, r4, #0 + add r0, #0x48 + bl FUN_02019548 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223CA8A +_0223CA32: + mov r1, #0x3c + bl MOD81_0223CA94 + cmp r0, #0 + beq _0223CA8A + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223CA8A +_0223CA52: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0xa + ble _0223CA8A + mov r0, #0x10 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3a + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0223CA8A +_0223CA7C: + bl FUN_0200E308 + cmp r0, #0 + beq _0223CA8A + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223CA8A: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CA90: .word 0x00000484 + thumb_func_end MOD81_0223C920 + + thumb_func_start MOD81_0223CA94 +MOD81_0223CA94: ; 0x0223CA94 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + cmp r0, #0 + beq _0223CAA6 + bl FUN_02005CBC + str r0, [r5, #0xc] +_0223CAA6: + ldr r0, [r5, #8] + cmp r0, r4 + bge _0223CAB4 + add r0, r0, #1 + str r0, [r5, #8] + mov r0, #0 + pop {r3, r4, r5, pc} +_0223CAB4: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _0223CABE + mov r0, #1 + pop {r3, r4, r5, pc} +_0223CABE: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223CA94 + + thumb_func_start MOD81_0223CAC4 +MOD81_0223CAC4: ; 0x0223CAC4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _0223CB6C ; =0x04000060 + ldr r2, _0223CB70 ; =0xFFFFCFFD + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + ldrh r3, [r0] + add r1, r2, #2 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _0223CB74 ; =0x0000CFFB + and r1, r3 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _0223CB78 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _0223CB7C ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + ldr r3, _0223CB80 ; =0x021064B8 + mov r0, #1 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0223CB84 ; =0x021064C0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + mov r1, #0 + mov r2, #1 + blx r3 + ldr r2, _0223CB88 ; =0x7FFF0000 + add r6, r0, #0 + and r2, r4 + lsl r1, r4, #0x10 + lsr r2, r2, #0x10 + ldr r0, [r5, #0x10] + lsr r1, r1, #0xd + lsl r2, r2, #4 + bl FUN_020081A8 + ldr r2, _0223CB8C ; =0xFFFF0000 + lsl r1, r6, #0x10 + and r2, r6 + lsr r2, r2, #0x10 + ldr r0, [r5, #0x10] + lsr r1, r1, #0xd + lsl r2, r2, #3 + bl FUN_020081B4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223CB6C: .word 0x04000060 +_0223CB70: .word 0xFFFFCFFD +_0223CB74: .word 0x0000CFFB +_0223CB78: .word 0x04000540 +_0223CB7C: .word 0xBFFF0000 +_0223CB80: .word 0x021064B8 +_0223CB84: .word 0x021064C0 +_0223CB88: .word 0x7FFF0000 +_0223CB8C: .word 0xFFFF0000 + thumb_func_end MOD81_0223CAC4 + + thumb_func_start MOD81_0223CB90 +MOD81_0223CB90: ; 0x0223CB90 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r4, r0, #0 + ldr r0, [r4] + bl MOD81_02238820 + add r5, r0, #0 + add r0, sp, #0x10 + add r1, r5, #0 + mov r2, #2 + bl FUN_02068B70 + ldr r0, [r4] + bl MOD81_02238838 + add r1, r0, #0 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02069010 + add r0, r5, #0 + mov r1, #2 + bl FUN_02068E1C + add r3, r0, #0 + mov r1, #0 + str r1, [sp] + add r0, r4, #0 + str r1, [sp, #4] + add r0, #0x18 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #0x10] + add r3, #0x50 + add r1, sp, #0x10 + mov r2, #0x80 + bl FUN_020073A0 + add sp, #0x20 + pop {r3, r4, r5, pc} + thumb_func_end MOD81_0223CB90 + + thumb_func_start MOD81_0223CBE0 +MOD81_0223CBE0: ; 0x0223CBE0 + push {r4, lr} + sub sp, #0x70 + add r4, r0, #0 + add r0, #0x34 + mov r1, #0x5d + mov r2, #7 + mov r3, #8 + bl MOD81_0223874C + add r0, sp, #0x5c + bl FUN_020B19DC + add r0, sp, #0x38 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0x3a + str r0, [sp, #0xc] + add r0, sp, #0x38 + str r0, [sp, #0x10] + mov r0, #0x5d + mov r1, #9 + bl FUN_02006AE4 + mov r0, #0x3a + str r0, [sp] + add r0, sp, #0x5c + str r0, [sp, #4] + mov r0, #0x5d + mov r1, #0xa + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r0, #2 + add r1, r4, #0 + str r0, [sp] + add r0, sp, #0x14 + add r1, #0x34 + add r2, sp, #0x38 + add r3, sp, #0x5c + bl MOD81_022387A8 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0x80 + mov r3, #0x64 + bl MOD81_022387C8 + str r0, [r4, #0x2c] + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0x80 + mov r3, #0x5a + bl MOD81_022387C8 + str r0, [r4, #0x30] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r4, #0x2c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x70 + pop {r4, pc} + thumb_func_end MOD81_0223CBE0 + + thumb_func_start MOD81_0223CC84 +MOD81_0223CC84: ; 0x0223CC84 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_0223CC8C: + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _0223CC96 + bl FUN_0201FFC8 +_0223CC96: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _0223CC8C + add r6, #0x34 + add r0, r6, #0 + bl MOD81_02238784 + pop {r4, r5, r6, pc} + thumb_func_end MOD81_0223CC84 + + thumb_func_start MOD81_0223CCA8 +MOD81_0223CCA8: ; 0x0223CCA8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x3a + mov r1, #0x14 + str r2, [sp] + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _0223CCEE + str r5, [r4] + lsl r0, r6, #0xc + str r0, [r4, #4] + ldr r0, [sp] + lsl r1, r0, #0xc + str r1, [r4, #8] + ldr r0, [r4, #4] + sub r0, r1, r0 + add r1, r7, #0 + bl _s32_div_f + str r0, [r4, #0xc] + ldr r0, _0223CCF0 ; =MOD81_0223CD28 + str r7, [r4, #0x10] + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA60 + str r0, [r5, #0x68] + ldr r0, _0223CCF4 ; =0x04000050 + mov r1, #1 + add r2, r6, #0 + bl G2x_SetBlendBrightness_ +_0223CCEE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CCF0: .word MOD81_0223CD28 +_0223CCF4: .word 0x04000050 + thumb_func_end MOD81_0223CCA8 + + thumb_func_start MOD81_0223CCF8 +MOD81_0223CCF8: ; 0x0223CCF8 + ldr r0, [r0, #0x68] + cmp r0, #0 + bne _0223CD02 + mov r0, #1 + bx lr +_0223CD02: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD81_0223CCF8 + + thumb_func_start MOD81_0223CD08 +MOD81_0223CD08: ; 0x0223CD08 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + cmp r0, #0 + beq _0223CD24 + bl FUN_0201B6C8 + bl MOD81_02238898 + ldr r0, [r4, #0x68] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x68] +_0223CD24: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD81_0223CD08 + + thumb_func_start MOD81_0223CD28 +MOD81_0223CD28: ; 0x0223CD28 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0 + ble _0223CD4A + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + add r2, r1, r0 + str r2, [r4, #4] + ldr r0, _0223CD60 ; =0x04000050 + mov r1, #1 + asr r2, r2, #0xc + bl G2x_SetBlendBrightness_ + pop {r4, pc} +_0223CD4A: + ldr r2, [r4, #8] + ldr r0, _0223CD60 ; =0x04000050 + mov r1, #1 + asr r2, r2, #0xc + bl G2x_SetBlendBrightness_ + ldr r0, [r4] + bl MOD81_0223CD08 + pop {r4, pc} + nop +_0223CD60: .word 0x04000050 + thumb_func_end MOD81_0223CD28 + + thumb_func_start MOD81_0223CD64 +MOD81_0223CD64: ; 0x0223CD64 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x3a + mov r1, #0x44 + bl FUN_02016998 + add r4, r0, #0 + beq _0223CDD2 + mov r1, #0 + str r1, [r4, #4] + str r6, [r4] + ldr r0, [r5, #0x60] + str r0, [r4, #0x10] + ldr r0, [r5, #0x64] + str r0, [r4, #0x14] + str r5, [r4, #8] + ldr r0, _0223CDD8 ; =0x000018CC + str r1, [r4, #0x18] + str r0, [r4, #0x1c] + mov r0, #0x14 + str r0, [r4, #0x20] + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #0x3a] + str r1, [r4, #0x40] + ldr r0, [r4, #0x14] + bl MOD81_02238B5C + ldr r0, [r4, #0x14] + mov r1, #1 + bl MOD81_02238B58 + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x24 + bl MOD81_02238B08 + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x34 + bl MOD81_02238B28 + ldr r0, _0223CDDC ; =MOD81_0223CE54 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r6] + cmp r0, #0 + bne _0223CDD6 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_0223CDD2: + mov r0, #0 + str r0, [r6] +_0223CDD6: + pop {r4, r5, r6, pc} + .align 2, 0 +_0223CDD8: .word 0x000018CC +_0223CDDC: .word MOD81_0223CE54 + thumb_func_end MOD81_0223CD64 + + thumb_func_start MOD81_0223CDE0 +MOD81_0223CDE0: ; 0x0223CDE0 + push {r4, lr} + add r4, r0, #0 + beq _0223CDFA + bl FUN_0201B6C8 + ldr r1, [r0] + mov r2, #0 + str r2, [r1] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223CDFA: + pop {r4, pc} + thumb_func_end MOD81_0223CDE0 + + thumb_func_start MOD81_0223CDFC +MOD81_0223CDFC: ; 0x0223CDFC + add r1, r0, #0 + ldr r0, [r1, #0x40] + cmp r0, #0 + beq _0223CE1E + mov r0, #0x3a + ldrsh r2, [r1, r0] + mov r0, #0x3c + ldrsh r0, [r1, r0] + add r0, r2, r0 + strh r0, [r1, #0x3a] + ldr r0, [r1, #0x40] + sub r0, r0, #1 + str r0, [r1, #0x40] + bne _0223CE1E + mov r0, #0x3e + ldrsh r0, [r1, r0] + strh r0, [r1, #0x3a] +_0223CE1E: + mov r0, #0x36 + ldrsh r2, [r1, r0] + mov r0, #0x3a + ldrsh r0, [r1, r0] + ldr r3, _0223CE34 ; =MOD81_02238B40 + add r0, r2, r0 + strh r0, [r1, #0x36] + ldr r0, [r1, #0x14] + add r1, #0x34 + bx r3 + nop +_0223CE34: .word MOD81_02238B40 + thumb_func_end MOD81_0223CDFC + + thumb_func_start MOD81_0223CE38 +MOD81_0223CE38: ; 0x0223CE38 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + beq _0223CE50 + mov r0, #0x3a + ldrsh r0, [r5, r0] + sub r0, r1, r0 + add r1, r4, #0 + bl _s32_div_f + strh r0, [r5, #0x3c] + str r4, [r5, #0x40] +_0223CE50: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD81_0223CE38 + + thumb_func_start MOD81_0223CE54 +MOD81_0223CE54: ; 0x0223CE54 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD81_0223CDFC + ldr r0, [r4, #4] + cmp r0, #5 + bhi _0223CF62 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223CE72: ; jump table + .short _0223CE7E - _0223CE72 - 2 ; case 0 + .short _0223CEAE - _0223CE72 - 2 ; case 1 + .short _0223CEC6 - _0223CE72 - 2 ; case 2 + .short _0223CEDC - _0223CE72 - 2 ; case 3 + .short _0223CF24 - _0223CE72 - 2 ; case 4 + .short _0223CF52 - _0223CE72 - 2 ; case 5 +_0223CE7E: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223CE9E + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x20] + sub r0, r0, #1 + str r0, [r4, #0x20] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x14] + asr r1, r1, #0xc + bl MOD81_02238B5C + pop {r3, r4, r5, pc} +_0223CE9E: + ldr r0, [r4, #0x14] + mov r1, #0x1f + bl MOD81_02238B5C + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_0223CEAE: + mov r1, #6 + add r0, r4, #0 + lsl r1, r1, #6 + mov r2, #0x1e + bl MOD81_0223CE38 + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_0223CEC6: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0xa + ble _0223CF62 + mov r0, #0 + str r0, [r4, #0x30] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_0223CEDC: + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x30] + add r0, r1, r0 + str r0, [r4, #0x28] + mov r0, #0x1e + ldr r1, [r4, #0x30] + lsl r0, r0, #6 + sub r0, r1, r0 + str r0, [r4, #0x30] + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x24 + bl MOD81_02238B18 + ldr r1, [r4, #0x28] + ldr r0, _0223CF64 ; =0xFFFF5000 + cmp r1, r0 + bge _0223CF62 + ldr r0, _0223CF68 ; =0x000005E6 + bl FUN_020054C8 + mov r0, #0 + ldr r1, [r4, #0x30] + mvn r0, r0 + mul r0, r1 + str r0, [r4, #0x30] + ldr r0, [r4, #8] + mov r1, #0 + mov r2, #0x10 + mov r3, #8 + bl MOD81_0223CCA8 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_0223CF24: + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x30] + add r1, r1, r0 + mov r0, #0x13 + lsl r0, r0, #0xc + str r1, [r4, #0x28] + cmp r1, r0 + blt _0223CF36 + str r0, [r4, #0x28] +_0223CF36: + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x24 + bl MOD81_02238B18 + mov r0, #0x13 + ldr r1, [r4, #0x28] + lsl r0, r0, #0xc + cmp r1, r0 + bne _0223CF62 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_0223CF52: + ldr r0, [r4, #8] + bl MOD81_0223CCF8 + cmp r0, #0 + beq _0223CF62 + add r0, r5, #0 + bl MOD81_0223CDE0 +_0223CF62: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223CF64: .word 0xFFFF5000 +_0223CF68: .word 0x000005E6 + thumb_func_end MOD81_0223CE54 + + .section .rodata + ; 0x0223CF6C + .incbin "baserom.nds", 0x2EEB2C, 0x430 + + .section .data + ; 0x0223D3A0 + .incbin "baserom.nds", 0x2EEF60, 0x20 + + .section .bss + ; 0x0223D3C0 + .space 0xA0 diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s new file mode 100644 index 00000000..962ebed4 --- /dev/null +++ b/arm9/modules/82/asm/module_82.s @@ -0,0 +1,4455 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD82_0222D5C0 +MOD82_0222D5C0: ; 0x0222D5C0 + push {r3, r4} + ldr r3, _0222D5D8 ; =0x0222FB00 + mov r4, #1 + str r4, [r3] + mov r4, #0 + str r4, [r3, #4] + str r0, [r3, #8] + str r1, [r3, #0xc] + str r2, [r3, #0x10] + pop {r3, r4} + bx lr + nop +_0222D5D8: .word 0x0222FB00 + thumb_func_end MOD82_0222D5C0 + + thumb_func_start MOD82_0222D5DC +MOD82_0222D5DC: ; 0x0222D5DC + push {r3, lr} + ldr r1, _0222D7B8 ; =0x0222FB00 + ldr r0, [r1] + cmp r0, #0xa + bls _0222D5E8 + b _0222D7B4 +_0222D5E8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D5F4: ; jump table + .short _0222D7B4 - _0222D5F4 - 2 ; case 0 + .short _0222D7B4 - _0222D5F4 - 2 ; case 1 + .short _0222D60A - _0222D5F4 - 2 ; case 2 + .short _0222D7A8 - _0222D5F4 - 2 ; case 3 + .short _0222D654 - _0222D5F4 - 2 ; case 4 + .short _0222D7A8 - _0222D5F4 - 2 ; case 5 + .short _0222D6C4 - _0222D5F4 - 2 ; case 6 + .short _0222D7A8 - _0222D5F4 - 2 ; case 7 + .short _0222D736 - _0222D5F4 - 2 ; case 8 + .short _0222D7A8 - _0222D5F4 - 2 ; case 9 + .short _0222D7B4 - _0222D5F4 - 2 ; case 10 +_0222D60A: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D618 + cmp r0, #7 + beq _0222D630 + pop {r3, pc} +_0222D618: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl MOD79_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D630: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl MOD79_02212480 + cmp r0, #0 + ble _0222D646 + ldr r0, _0222D7BC ; =0x0222FC00 + ldrb r1, [r0, #3] + ldr r0, _0222D7B8 ; =0x0222FB00 + b _0222D64C +_0222D646: + mov r1, #1 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 +_0222D64C: + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D654: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D662 + cmp r0, #7 + beq _0222D67A + pop {r3, pc} +_0222D662: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl MOD79_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D67A: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl MOD79_02212480 + ldr r1, _0222D7C0 ; =0x00000A38 + cmp r0, r1 + bne _0222D692 + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0 + str r1, [r0, #4] + b _0222D6BE +_0222D692: + ldr r0, _0222D7BC ; =0x0222FC00 + ldr r0, [r0, #8] + ldrb r0, [r0] + cmp r0, #2 + beq _0222D6A2 + cmp r0, #5 + beq _0222D6AC + b _0222D6B6 +_0222D6A2: + mov r1, #2 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] + b _0222D6BE +_0222D6AC: + mov r1, #1 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] + b _0222D6BE +_0222D6B6: + mov r1, #4 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] +_0222D6BE: + bl MOD56_0221244C + pop {r3, pc} +_0222D6C4: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D6D2 + cmp r0, #7 + beq _0222D6EA + pop {r3, pc} +_0222D6D2: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl MOD79_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D6EA: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + ldr r2, _0222D7BC ; =0x0222FC00 + str r1, [r0] + ldrb r2, [r2, #3] + cmp r2, #5 + bhi _0222D728 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0222D704: ; jump table + .short _0222D728 - _0222D704 - 2 ; case 0 + .short _0222D710 - _0222D704 - 2 ; case 1 + .short _0222D716 - _0222D704 - 2 ; case 2 + .short _0222D728 - _0222D704 - 2 ; case 3 + .short _0222D71C - _0222D704 - 2 ; case 4 + .short _0222D722 - _0222D704 - 2 ; case 5 +_0222D710: + mov r1, #0 + str r1, [r0, #4] + b _0222D730 +_0222D716: + sub r1, #0xd + str r1, [r0, #4] + b _0222D730 +_0222D71C: + sub r1, #0xb + str r1, [r0, #4] + b _0222D730 +_0222D722: + sub r1, #0xc + str r1, [r0, #4] + b _0222D730 +_0222D728: + mov r1, #4 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] +_0222D730: + bl MOD56_0221244C + pop {r3, pc} +_0222D736: + bl MOD79_022123A8 + cmp r0, #1 + beq _0222D744 + cmp r0, #7 + beq _0222D75C + pop {r3, pc} +_0222D744: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl MOD79_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D75C: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + ldr r2, _0222D7BC ; =0x0222FC00 + str r1, [r0] + ldrb r2, [r2, #3] + cmp r2, #5 + bhi _0222D79A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0222D776: ; jump table + .short _0222D79A - _0222D776 - 2 ; case 0 + .short _0222D782 - _0222D776 - 2 ; case 1 + .short _0222D79A - _0222D776 - 2 ; case 2 + .short _0222D788 - _0222D776 - 2 ; case 3 + .short _0222D78E - _0222D776 - 2 ; case 4 + .short _0222D794 - _0222D776 - 2 ; case 5 +_0222D782: + mov r1, #0 + str r1, [r0, #4] + b _0222D7A2 +_0222D788: + mov r1, #1 + str r1, [r0, #4] + b _0222D7A2 +_0222D78E: + mov r1, #2 + str r1, [r0, #4] + b _0222D7A2 +_0222D794: + sub r1, #0xc + str r1, [r0, #4] + b _0222D7A2 +_0222D79A: + mov r1, #4 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] +_0222D7A2: + bl MOD56_0221244C + pop {r3, pc} +_0222D7A8: + mov r0, #0xa + str r0, [r1] + sub r0, #0xe + str r0, [r1, #4] + bl MOD56_0221244C +_0222D7B4: + pop {r3, pc} + nop +_0222D7B8: .word 0x0222FB00 +_0222D7BC: .word 0x0222FC00 +_0222D7C0: .word 0x00000A38 + thumb_func_end MOD82_0222D5DC + + thumb_func_start MOD82_0222D7C4 +MOD82_0222D7C4: ; 0x0222D7C4 + ldr r1, _0222D7E0 ; =0x0222FB00 + ldr r0, [r1] + cmp r0, #1 + beq _0222D7D2 + cmp r0, #0xa + beq _0222D7D6 + b _0222D7DC +_0222D7D2: + mov r0, #1 + bx lr +_0222D7D6: + mov r0, #1 + str r0, [r1] + bx lr +_0222D7DC: + mov r0, #0 + bx lr + .align 2, 0 +_0222D7E0: .word 0x0222FB00 + thumb_func_end MOD82_0222D7C4 + + thumb_func_start MOD82_0222D7E4 +MOD82_0222D7E4: ; 0x0222D7E4 + ldr r0, _0222D7EC ; =0x0222FB00 + ldr r0, [r0, #4] + bx lr + nop +_0222D7EC: .word 0x0222FB00 + thumb_func_end MOD82_0222D7E4 + + thumb_func_start MOD82_0222D7F0 +MOD82_0222D7F0: ; 0x0222D7F0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl MOD79_022122E4 + ldr r0, _0222D830 ; =0x0222FB00 + sub r1, r4, #1 + strb r1, [r0, #0x14] + mov r0, #2 + str r0, [sp] + ldr r0, _0222D834 ; =0x0222F8E0 + ldr r1, _0222D838 ; =0x0222FB14 + ldr r3, _0222D83C ; =0x0222FC03 + mov r2, #1 + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D81E + ldr r0, _0222D830 ; =0x0222FB00 + mov r1, #2 + str r1, [r0] + add sp, #4 + pop {r3, r4, pc} +_0222D81E: + ldr r0, _0222D830 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222D830: .word 0x0222FB00 +_0222D834: .word 0x0222F8E0 +_0222D838: .word 0x0222FB14 +_0222D83C: .word 0x0222FC03 + thumb_func_end MOD82_0222D7F0 + + thumb_func_start MOD82_0222D840 +MOD82_0222D840: ; 0x0222D840 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0222D88C ; =0x0222FC00 + add r6, r2, #0 + add r4, r1, #0 + str r6, [r0, #8] + bl MOD79_022122E4 + ldr r0, _0222D890 ; =0x0222FB00 + sub r1, r5, #1 + strb r1, [r0, #0x14] + sub r1, r4, #1 + strb r1, [r0, #0x15] + ldr r0, _0222D894 ; =0x00000A38 + ldr r1, _0222D898 ; =0x0222FB14 + str r0, [sp] + ldr r0, _0222D89C ; =0x0222F92C + mov r2, #2 + add r3, r6, #0 + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D87A + ldr r0, _0222D890 ; =0x0222FB00 + mov r1, #4 + str r1, [r0] + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0222D87A: + ldr r0, _0222D890 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222D88C: .word 0x0222FC00 +_0222D890: .word 0x0222FB00 +_0222D894: .word 0x00000A38 +_0222D898: .word 0x0222FB14 +_0222D89C: .word 0x0222F92C + thumb_func_end MOD82_0222D840 + + thumb_func_start MOD82_0222D8A0 +MOD82_0222D8A0: ; 0x0222D8A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD79_022122E4 + ldr r0, _0222D904 ; =0x0222FB14 + add r1, r7, #0 + mov r2, #0xe4 + bl memcpy + ldr r0, _0222D908 ; =0x0222FBE0 + sub r1, r5, #1 + strb r1, [r0, #0x18] + sub r1, r4, #1 + strb r1, [r0, #0x19] + ldr r3, _0222D90C ; =0x0222FBFB + ldr r2, _0222D910 ; =0x0222FB0C + strb r6, [r0, #0x1a] + mov r1, #8 +_0222D8CA: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + bne _0222D8CA + mov r0, #2 + str r0, [sp] + ldr r0, _0222D914 ; =0x0222F978 + ldr r1, _0222D904 ; =0x0222FB14 + ldr r3, _0222D918 ; =0x0222FC03 + mov r2, #0xef + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D8F2 + ldr r0, _0222D91C ; =0x0222FB00 + mov r1, #6 + str r1, [r0] + pop {r3, r4, r5, r6, r7, pc} +_0222D8F2: + ldr r0, _0222D91C ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, r4, r5, r6, r7, pc} + nop +_0222D904: .word 0x0222FB14 +_0222D908: .word 0x0222FBE0 +_0222D90C: .word 0x0222FBFB +_0222D910: .word 0x0222FB0C +_0222D914: .word 0x0222F978 +_0222D918: .word 0x0222FC03 +_0222D91C: .word 0x0222FB00 + thumb_func_end MOD82_0222D8A0 + + thumb_func_start MOD82_0222D920 +MOD82_0222D920: ; 0x0222D920 + push {r3, lr} + bl MOD79_022122E4 + mov r0, #2 + str r0, [sp] + ldr r0, _0222D954 ; =0x0222F9C4 + ldr r1, _0222D958 ; =0x0222FB14 + ldr r3, _0222D95C ; =0x0222FC03 + mov r2, #0 + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D942 + ldr r0, _0222D960 ; =0x0222FB00 + mov r1, #8 + str r1, [r0] + pop {r3, pc} +_0222D942: + ldr r0, _0222D960 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + nop +_0222D954: .word 0x0222F9C4 +_0222D958: .word 0x0222FB14 +_0222D95C: .word 0x0222FC03 +_0222D960: .word 0x0222FB00 + thumb_func_end MOD82_0222D920 + + thumb_func_start MOD82_0222D964 +MOD82_0222D964: ; 0x0222D964 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + ldr r1, [sp, #0x18] + str r3, [sp] + str r1, [sp, #4] + add r4, r2, #0 + ldr r1, _0222D998 ; =0x0222FB00 + add r2, r5, #0 + ldr r1, [r1, #8] + add r3, r4, #0 + bl MOD79_02212308 + cmp r0, #0 + beq _0222D98A + cmp r0, #1 + beq _0222D990 + cmp r0, #2 + b _0222D990 +_0222D98A: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222D990: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0222D998: .word 0x0222FB00 + thumb_func_end MOD82_0222D964 + + thumb_func_start MOD82_0222D99C +MOD82_0222D99C: ; 0x0222D99C + push {r4, lr} + cmp r0, #0x20 + bhi _0222DA14 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D9AE: ; jump table + .short _0222D9F0 - _0222D9AE - 2 ; case 0 + .short _0222D9F0 - _0222D9AE - 2 ; case 1 + .short _0222D9F6 - _0222D9AE - 2 ; case 2 + .short _0222D9F0 - _0222D9AE - 2 ; case 3 + .short _0222D9F0 - _0222D9AE - 2 ; case 4 + .short _0222D9F0 - _0222D9AE - 2 ; case 5 + .short _0222D9F0 - _0222D9AE - 2 ; case 6 + .short _0222DA14 - _0222D9AE - 2 ; case 7 + .short _0222D9F6 - _0222D9AE - 2 ; case 8 + .short _0222D9F0 - _0222D9AE - 2 ; case 9 + .short _0222D9F0 - _0222D9AE - 2 ; case 10 + .short _0222D9FC - _0222D9AE - 2 ; case 11 + .short _0222DA02 - _0222D9AE - 2 ; case 12 + .short _0222DA02 - _0222D9AE - 2 ; case 13 + .short _0222D9F0 - _0222D9AE - 2 ; case 14 + .short _0222DA0E - _0222D9AE - 2 ; case 15 + .short _0222DA08 - _0222D9AE - 2 ; case 16 + .short _0222DA08 - _0222D9AE - 2 ; case 17 + .short _0222DA08 - _0222D9AE - 2 ; case 18 + .short _0222DA08 - _0222D9AE - 2 ; case 19 + .short _0222D9F0 - _0222D9AE - 2 ; case 20 + .short _0222D9F0 - _0222D9AE - 2 ; case 21 + .short _0222D9F0 - _0222D9AE - 2 ; case 22 + .short _0222D9F0 - _0222D9AE - 2 ; case 23 + .short _0222DA14 - _0222D9AE - 2 ; case 24 + .short _0222D9F6 - _0222D9AE - 2 ; case 25 + .short _0222DA08 - _0222D9AE - 2 ; case 26 + .short _0222DA08 - _0222D9AE - 2 ; case 27 + .short _0222DA08 - _0222D9AE - 2 ; case 28 + .short _0222DA08 - _0222D9AE - 2 ; case 29 + .short _0222DA0E - _0222D9AE - 2 ; case 30 + .short _0222DA08 - _0222D9AE - 2 ; case 31 + .short _0222D9F0 - _0222D9AE - 2 ; case 32 +_0222D9F0: + mov r4, #4 + mvn r4, r4 + b _0222DA18 +_0222D9F6: + mov r4, #4 + mvn r4, r4 + b _0222DA18 +_0222D9FC: + mov r4, #6 + mvn r4, r4 + b _0222DA18 +_0222DA02: + mov r4, #6 + mvn r4, r4 + b _0222DA18 +_0222DA08: + mov r4, #1 + mvn r4, r4 + b _0222DA18 +_0222DA0E: + mov r4, #1 + mvn r4, r4 + b _0222DA18 +_0222DA14: + mov r4, #4 + mvn r4, r4 +_0222DA18: + mov r0, #4 + mvn r0, r0 + cmp r4, r0 + beq _0222DA30 + bl FUN_020A71F8 + cmp r0, #9 + beq _0222DA2C + mov r4, #5 + mvn r4, r4 +_0222DA2C: + bl MOD04_021DD6F0 +_0222DA30: + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD82_0222D99C + + thumb_func_start MOD82_0222DA34 +MOD82_0222DA34: ; 0x0222DA34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _0222DA48 + cmp r0, #1 + beq _0222DB34 + b _0222DB4A +_0222DA48: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _0222DB50 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _0222DB54 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r2, #5 + mov r0, #3 + mov r1, #0x44 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222DB58 ; =0x00000EC8 + add r0, r6, #0 + mov r2, #0x44 + bl FUN_02006268 + ldr r2, _0222DB58 ; =0x00000EC8 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x44 + bl FUN_02016B94 + str r0, [r4, #4] + ldr r0, _0222DB5C ; =0x0222FC0C + add r2, sp, #0 + ldr r3, _0222DB60 ; =0x0222F814 + str r4, [r0] + add r7, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r7, #0 + bl FUN_02016BBC + mov r0, #0xb + mov r1, #0x20 + mov r2, #0x44 + bl FUN_0200AA90 + ldr r1, _0222DB64 ; =0x00000B78 + ldr r2, _0222DB68 ; =0x0000024E + str r0, [r4, r1] + mov r0, #0 + mov r1, #0x1a + mov r3, #0x44 + bl FUN_0200A86C + ldr r1, _0222DB6C ; =0x00000B7C + mov r2, #0x25 + str r0, [r4, r1] + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #4 + mov r3, #0x44 + bl FUN_0200A86C + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r2, _0222DB70 ; =0x00000265 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x44 + bl FUN_0200A86C + ldr r1, _0222DB74 ; =0x00000B84 + str r0, [r4, r1] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + add r1, r6, #0 + bl MOD82_0222DD04 + add r0, r4, #0 + bl MOD82_0222DFD4 + mov r1, #0 + mov r0, #0x34 + add r2, r1, #0 + bl FUN_0200433C + ldr r1, _0222DB78 ; =0x00020020 + mov r0, #0x44 + bl FUN_02016998 + str r0, [r4, #0x24] + add r0, #0x1f + mov r1, #0x1f + bic r0, r1 + mov r1, #2 + lsl r1, r1, #0x10 + mov r2, #0 + bl tempName_NNS_FndCreateExpHeapEx + str r0, [r4, #0x28] + mov r0, #1 + str r0, [r5] + b _0222DB4A +_0222DB34: + bl FUN_02088858 + bl FUN_020888BC + bl FUN_0202E49C + mov r0, #0 + str r0, [r5] + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222DB4A: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222DB50: .word 0xFFFFE0FF +_0222DB54: .word 0x04001000 +_0222DB58: .word 0x00000EC8 +_0222DB5C: .word 0x0222FC0C +_0222DB60: .word 0x0222F814 +_0222DB64: .word 0x00000B78 +_0222DB68: .word 0x0000024E +_0222DB6C: .word 0x00000B7C +_0222DB70: .word 0x00000265 +_0222DB74: .word 0x00000B84 +_0222DB78: .word 0x00020020 + thumb_func_end MOD82_0222DA34 + + thumb_func_start MOD82_0222DB7C +MOD82_0222DB7C: ; 0x0222DB7C + push {r4, r5, r6, lr} + add r4, r1, #0 + bl FUN_02006278 + add r5, r0, #0 + bl MOD04_021DD984 + bl MOD82_0222D5DC + bl MOD04_021DD984 + ldr r1, [r4] + cmp r1, #5 + bhi _0222DC24 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222DBA4: ; jump table + .short _0222DBB0 - _0222DBA4 - 2 ; case 0 + .short _0222DBCC - _0222DBA4 - 2 ; case 1 + .short _0222DBE0 - _0222DBA4 - 2 ; case 2 + .short _0222DBEE - _0222DBA4 - 2 ; case 3 + .short _0222DC02 - _0222DBA4 - 2 ; case 4 + .short _0222DC20 - _0222DBA4 - 2 ; case 5 +_0222DBB0: + bl FUN_0202E4C8 + cmp r0, #0 + beq _0222DC24 + ldr r1, [r5, #0x28] + ldr r0, _0222DC38 ; =0x0222FC0C + str r1, [r0, #4] + ldr r0, _0222DC3C ; =MOD82_0222DF74 + ldr r1, _0222DC40 ; =MOD82_0222DF9C + bl MOD04_021DD968 + mov r0, #1 + str r0, [r4] + b _0222DC24 +_0222DBCC: + ldr r3, [r5, #0x10] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222DC44 ; =0x0222FA0C + add r0, r5, #0 + ldr r2, [r2, r6] + blx r2 + str r0, [r4] + b _0222DC24 +_0222DBE0: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DC24 + mov r0, #3 + str r0, [r4] + b _0222DC24 +_0222DBEE: + ldr r3, [r5, #0x10] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222DC48 ; =0x0222FA10 + add r0, r5, #0 + ldr r2, [r2, r6] + blx r2 + str r0, [r4] + b _0222DC24 +_0222DC02: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DC24 + ldr r3, [r5, #0x10] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222DC4C ; =0x0222FA14 + ldr r1, [r4] + ldr r2, [r2, r6] + add r0, r5, #0 + blx r2 + str r0, [r4] + b _0222DC24 +_0222DC20: + mov r0, #1 + pop {r4, r5, r6, pc} +_0222DC24: + mov r0, #0xba + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0222DC32 + bl FUN_0201FDEC +_0222DC32: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0222DC38: .word 0x0222FC0C +_0222DC3C: .word MOD82_0222DF74 +_0222DC40: .word MOD82_0222DF9C +_0222DC44: .word 0x0222FA0C +_0222DC48: .word 0x0222FA10 +_0222DC4C: .word 0x0222FA14 + thumb_func_end MOD82_0222DB7C + + thumb_func_start MOD82_0222DC50 +MOD82_0222DC50: ; 0x0222DC50 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x24] + bl FUN_02016A18 + bl FUN_020888CC + bl FUN_02088868 + add r0, r4, #0 + bl MOD82_0222DFFC + ldr r0, _0222DCB8 ; =0x00000B84 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0222DCBC ; =0x00000B7C + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0222DCC0 ; =0x00000B78 + ldr r0, [r4, r0] + bl FUN_0200AB18 + add r0, r4, #0 + bl MOD82_0222DD20 + bl FUN_0202E4F0 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x44 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222DCB8: .word 0x00000B84 +_0222DCBC: .word 0x00000B7C +_0222DCC0: .word 0x00000B78 + thumb_func_end MOD82_0222DC50 + + thumb_func_start MOD82_0222DCC4 +MOD82_0222DCC4: ; 0x0222DCC4 + push {r3, lr} + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _0222DCDC ; =0x027E0000 + ldr r1, _0222DCE0 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + .align 2, 0 +_0222DCDC: .word 0x027E0000 +_0222DCE0: .word 0x00003FF8 + thumb_func_end MOD82_0222DCC4 + + thumb_func_start MOD82_0222DCE4 +MOD82_0222DCE4: ; 0x0222DCE4 + push {r4, lr} + sub sp, #0x28 + ldr r4, _0222DD00 ; =0x0222F834 + add r3, sp, #0 + mov r2, #5 +_0222DCEE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DCEE + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_0222DD00: .word 0x0222F834 + thumb_func_end MOD82_0222DCE4 + + thumb_func_start MOD82_0222DD04 +MOD82_0222DD04: ; 0x0222DD04 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl FUN_0200628C + mov r1, #0 + str r0, [r4] + add r0, r4, #0 + add r2, r1, #0 + str r1, [r4, #0x10] + bl MOD82_0222DFCC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222DD04 + + thumb_func_start MOD82_0222DD20 +MOD82_0222DD20: ; 0x0222DD20 + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DD20 + + thumb_func_start MOD82_0222DD24 +MOD82_0222DD24: ; 0x0222DD24 + push {r4, lr} + sub sp, #0x10 + ldr r4, _0222DD50 ; =0x0222F824 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x44 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0222DD50: .word 0x0222F824 + thumb_func_end MOD82_0222DD24 + + thumb_func_start MOD82_0222DD54 +MOD82_0222DD54: ; 0x0222DD54 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7e + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x44 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + ldr r1, _0222DE40 ; =0x00000BA4 + mov r0, #0xa + add r1, r6, r1 + mov r2, #0x44 + bl FUN_02008C9C + mov r1, #0xba + lsl r1, r1, #4 + str r0, [r6, r1] + add r0, r1, #4 + mov r2, #1 + add r0, r6, r0 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + ldr r7, _0222DE44 ; =0x00000CCC + mov r4, #0 + add r5, r6, #0 +_0222DD9C: + mov r0, #2 + add r1, r4, #0 + mov r2, #0x44 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222DD9C + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #0x44 + str r0, [sp, #8] + ldr r0, _0222DE44 ; =0x00000CCC + mov r1, #0x68 + ldr r0, [r6, r0] + mov r2, #0x23 + bl FUN_02008F34 + ldr r1, _0222DE48 ; =0x00000CDC + mov r3, #0 + str r0, [r6, r1] + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x44 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x68 + mov r2, #9 + bl FUN_02008FEC + mov r1, #0xce + lsl r1, r1, #4 + str r0, [r6, r1] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x44 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x68 + mov r2, #0x24 + mov r3, #1 + bl FUN_020090AC + ldr r1, _0222DE4C ; =0x00000CE4 + mov r2, #0x25 + str r0, [r6, r1] + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x44 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x68 + mov r3, #1 + bl FUN_020090AC + ldr r1, _0222DE50 ; =0x00000CE8 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009A50 + mov r0, #0xce + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009CF0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222DE40: .word 0x00000BA4 +_0222DE44: .word 0x00000CCC +_0222DE48: .word 0x00000CDC +_0222DE4C: .word 0x00000CE4 +_0222DE50: .word 0x00000CE8 + thumb_func_end MOD82_0222DD54 + + thumb_func_start MOD82_0222DE54 +MOD82_0222DE54: ; 0x0222DE54 + push {r3, r4} + mov r4, #0xba + lsl r4, r4, #4 + ldr r1, [r1, r4] + str r1, [r0] + str r2, [r0, #4] + mov r2, #0 + mov r1, #1 + str r2, [r0, #0x10] + lsl r1, r1, #0xc + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + strh r2, [r0, #0x20] + mov r1, #1 + str r1, [r0, #0x24] + str r3, [r0, #0x28] + mov r1, #0x44 + str r1, [r0, #0x2c] + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DE54 + + thumb_func_start MOD82_0222DE80 +MOD82_0222DE80: ; 0x0222DE80 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + mov r1, #0 + add r5, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, _0222DF28 ; =0x00000CCC + str r1, [sp, #0x10] + ldr r0, [r5, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r5, r0] + str r0, [sp, #0x1c] + add r0, r2, #0 + add r0, #0xc + ldr r0, [r5, r0] + add r2, #0x40 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r5, r2 + add r2, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r2, _0222DF2C ; =0x00000D0C + add r0, sp, #0x2c + add r1, r5, #0 + add r2, r5, r2 + mov r3, #1 + bl MOD82_0222DE54 + ldr r4, _0222DF30 ; =0x0222F80C + ldr r7, _0222DF34 ; =0x00000D78 + mov r6, #0 +_0222DED4: + ldrh r0, [r4] + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldrh r0, [r4, #2] + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + ldr r1, _0222DF34 ; =0x00000D78 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0222DF34 ; =0x00000D78 + add r1, r6, #0 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #2 + blt _0222DED4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + bl FUN_02033E74 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222DF28: .word 0x00000CCC +_0222DF2C: .word 0x00000D0C +_0222DF30: .word 0x0222F80C +_0222DF34: .word 0x00000D78 + thumb_func_end MOD82_0222DE80 + + thumb_func_start MOD82_0222DF38 +MOD82_0222DF38: ; 0x0222DF38 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + ldr r5, _0222DF68 ; =0x0222F804 + add r4, sp, #4 + ldrh r6, [r5] + add r3, sp, #4 + strh r6, [r4] + ldrh r6, [r5, #2] + strh r6, [r4, #2] + ldrh r6, [r5, #4] + ldrh r5, [r5, #6] + strh r6, [r4, #4] + strh r5, [r4, #6] + strb r1, [r4, #2] + strh r2, [r4, #6] + mov r1, #0x44 + str r1, [sp] + add r1, r3, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_02002198 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222DF68: .word 0x0222F804 + thumb_func_end MOD82_0222DF38 + + thumb_func_start MOD82_0222DF6C +MOD82_0222DF6C: ; 0x0222DF6C + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DF6C + + thumb_func_start MOD82_0222DF74 +MOD82_0222DF74: ; 0x0222DF74 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl OS_DisableInterrupts + add r6, r0, #0 + ldr r0, _0222DF98 ; =0x0222FC0C + add r1, r5, #0 + ldr r0, [r0, #4] + add r2, r4, #0 + bl tempName_NNS_FndAllocFromExpHeapEx + add r4, r0, #0 + add r0, r6, #0 + bl OS_RestoreInterrupts + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222DF98: .word 0x0222FC0C + thumb_func_end MOD82_0222DF74 + + thumb_func_start MOD82_0222DF9C +MOD82_0222DF9C: ; 0x0222DF9C + push {r3, r4, r5, lr} + add r5, r1, #0 + beq _0222DFB8 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0222DFBC ; =0x0222FC0C + add r1, r5, #0 + ldr r0, [r0, #4] + bl FUN_020ADDF0 + add r0, r4, #0 + bl OS_RestoreInterrupts +_0222DFB8: + pop {r3, r4, r5, pc} + nop +_0222DFBC: .word 0x0222FC0C + thumb_func_end MOD82_0222DF9C + + thumb_func_start MOD82_0222DFC0 +MOD82_0222DFC0: ; 0x0222DFC0 + push {r3, lr} + bl MOD04_021DDB08 + mov r1, #3 + sub r0, r1, r0 + pop {r3, pc} + thumb_func_end MOD82_0222DFC0 + + thumb_func_start MOD82_0222DFCC +MOD82_0222DFCC: ; 0x0222DFCC + str r1, [r0, #0x14] + str r2, [r0, #0x18] + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DFCC + + thumb_func_start MOD82_0222DFD4 +MOD82_0222DFD4: ; 0x0222DFD4 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222DCE4 + bl MOD82_0222DD24 + add r0, r4, #0 + bl MOD82_0222DD54 + add r0, r4, #0 + bl MOD82_0222DE80 + ldr r0, _0222DFF8 ; =MOD82_0222DCC4 + mov r1, #0 + bl FUN_02015F10 + pop {r4, pc} + nop +_0222DFF8: .word MOD82_0222DCC4 + thumb_func_end MOD82_0222DFD4 + + thumb_func_start MOD82_0222DFFC +MOD82_0222DFFC: ; 0x0222DFFC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0222E048 ; =0x00000CDC + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0xce + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009E04 + ldr r7, _0222E04C ; =0x00000CCC + mov r4, #0 + add r5, r6, #0 +_0222E018: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222E018 + mov r0, #0xba + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_0201FD58 + mov r0, #0xba + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E048: .word 0x00000CDC +_0222E04C: .word 0x00000CCC + thumb_func_end MOD82_0222DFFC + + thumb_func_start MOD82_0222E050 +MOD82_0222E050: ; 0x0222E050 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD82_0222E4AC + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x44 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #4] + bl MOD82_0222E15C + add r0, r4, #0 + bl MOD82_0222E264 + add r0, r4, #0 + bl MOD82_0222E35C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl FUN_02033288 + add r0, r4, #0 + bl MOD82_0222F6D0 + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_0202A444 + str r0, [r4, #0x38] + str r0, [r4, #0x3c] + mov r0, #1 + str r0, [r4, #0x44] + ldr r0, _0222E110 ; =0x00000EB4 + mov r1, #0 + str r1, [r4, r0] + bl MOD04_021DDD7C + cmp r0, #0 + bne _0222E104 + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _0222E0FE + ldr r0, _0222E114 ; =0x00000F0F + mov r1, #0x2e + str r0, [sp] + lsl r1, r1, #6 + mov r2, #1 + ldr r1, [r4, r1] + add r0, r4, #0 + add r3, r2, #0 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #2 + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F700 + b _0222E108 +_0222E0FE: + mov r0, #0 + str r0, [r4, #0x1c] + b _0222E108 +_0222E104: + mov r0, #0x31 + str r0, [r4, #0x1c] +_0222E108: + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + nop +_0222E110: .word 0x00000EB4 +_0222E114: .word 0x00000F0F + thumb_func_end MOD82_0222E050 + + thumb_func_start MOD82_0222E118 +MOD82_0222E118: ; 0x0222E118 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222DFC0 + bl FUN_02033EEC + ldr r1, [r4, #0x1c] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _0222E134 ; =0x0222FA18 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0222E134: .word 0x0222FA18 + thumb_func_end MOD82_0222E118 + + thumb_func_start MOD82_0222E138 +MOD82_0222E138: ; 0x0222E138 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222E504 + add r0, r4, #0 + bl MOD82_0222E474 + ldr r0, [r4, #4] + bl MOD82_0222E240 + ldr r0, [r4, #0x14] + str r0, [r4, #0x10] + cmp r0, #0 + bne _0222E158 + mov r0, #5 + pop {r4, pc} +_0222E158: + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD82_0222E138 + + thumb_func_start MOD82_0222E15C +MOD82_0222E15C: ; 0x0222E15C + push {r3, r4, r5, lr} + sub sp, #0x70 + ldr r5, _0222E230 ; =0x0222F894 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x54 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _0222E234 ; =0x0222F878 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r5, _0222E238 ; =0x0222F8B0 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _0222E23C ; =0x0222F85C + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x44 + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x44 + bl FUN_02017F18 + add sp, #0x70 + pop {r3, r4, r5, pc} + nop +_0222E230: .word 0x0222F894 +_0222E234: .word 0x0222F878 +_0222E238: .word 0x0222F8B0 +_0222E23C: .word 0x0222F85C + thumb_func_end MOD82_0222E15C + + thumb_func_start MOD82_0222E240 +MOD82_0222E240: ; 0x0222E240 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD82_0222E240 + + thumb_func_start MOD82_0222E264 +MOD82_0222E264: ; 0x0222E264 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r2, #0 + str r2, [sp] + mov r0, #0x44 + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r3, #0 + str r3, [sp] + mov r0, #0x44 + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + mov r2, #4 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x44 + bl FUN_02002EEC + mov r1, #0x1a + mov r0, #4 + lsl r1, r1, #4 + mov r2, #0x44 + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x10] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x44 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x44 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0 + mov r0, #0x36 + str r1, [sp] + lsl r0, r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #2 + add r2, r4, #0 + mov r3, #1 + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #4 + add r2, r4, #0 + mov r3, #1 + bl FUN_020068C8 + mov r1, #0 + mov r0, #0x36 + str r1, [sp] + lsl r0, r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #9 + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #0xa + add r2, r4, #0 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD82_0222E264 + + thumb_func_start MOD82_0222E35C +MOD82_0222E35C: ; 0x0222E35C + push {r3, r4, lr} + sub sp, #0x14 + mov r3, #4 + add r4, r0, #0 + str r3, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa4 + mov r1, #0x37 + str r0, [sp, #0x10] + lsl r1, r1, #6 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + bl FUN_02019064 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0xe + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x94 + mov r1, #0xda + str r0, [sp, #0x10] + lsl r1, r1, #4 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x1a + bl FUN_02019064 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0xe + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x9c + mov r1, #0xd9 + str r0, [sp, #0x10] + lsl r1, r1, #4 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x1a + bl FUN_02019064 + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0xf + bl FUN_02019620 + mov r2, #1 + mov r1, #0xdb + lsl r1, r1, #4 + str r2, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0x85 + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r3, #4 + bl FUN_02019064 + mov r0, #0xdb + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #6 + bl FUN_02019620 + mov r3, #1 + ldr r0, _0222E46C ; =0x00010406 + str r3, [sp] + str r0, [sp, #4] + ldr r1, _0222E470 ; =0x00000B8C + mov r0, #0xdb + lsl r0, r0, #4 + ldr r1, [r4, r1] + add r0, r4, r0 + mov r2, #0 + bl MOD82_0222F62C + mov r0, #0x13 + str r0, [sp] + mov r1, #0x1b + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + str r0, [sp, #0x10] + lsl r1, r1, #7 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0xf + bl FUN_02019620 + add sp, #0x14 + pop {r3, r4, pc} + nop +_0222E46C: .word 0x00010406 +_0222E470: .word 0x00000B8C + thumb_func_end MOD82_0222E35C + + thumb_func_start MOD82_0222E474 +MOD82_0222E474: ; 0x0222E474 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xdb + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + thumb_func_end MOD82_0222E474 + + thumb_func_start MOD82_0222E4AC +MOD82_0222E4AC: ; 0x0222E4AC + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb4 + mov r1, #0x44 + bl FUN_020219F4 + ldr r1, _0222E4F4 ; =0x00000B88 + str r0, [r4, r1] + mov r0, #4 + mov r1, #0x44 + bl FUN_020219F4 + mov r1, #0xb9 + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #3 + mov r1, #0x44 + bl FUN_020219F4 + ldr r1, _0222E4F8 ; =0x00000B94 + str r0, [r4, r1] + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #0xa + bl FUN_0200A914 + ldr r1, _0222E4FC ; =0x00000B8C + str r0, [r4, r1] + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0x44 + bl FUN_020219F4 + ldr r1, _0222E500 ; =0x00000B98 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_0222E4F4: .word 0x00000B88 +_0222E4F8: .word 0x00000B94 +_0222E4FC: .word 0x00000B8C +_0222E500: .word 0x00000B98 + thumb_func_end MOD82_0222E4AC + + thumb_func_start MOD82_0222E504 +MOD82_0222E504: ; 0x0222E504 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222E534 ; =0x00000B98 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0222E538 ; =0x00000B8C + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0222E53C ; =0x00000B94 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0xb9 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0222E540 ; =0x00000B88 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + .align 2, 0 +_0222E534: .word 0x00000B98 +_0222E538: .word 0x00000B8C +_0222E53C: .word 0x00000B94 +_0222E540: .word 0x00000B88 + thumb_func_end MOD82_0222E504 + + thumb_func_start MOD82_0222E544 +MOD82_0222E544: ; 0x0222E544 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222E56C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222E570 ; =0x00000B84 + mov r2, #0x10 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #1 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222E56C: .word 0x00000F0F +_0222E570: .word 0x00000B84 + thumb_func_end MOD82_0222E544 + + thumb_func_start MOD82_0222E574 +MOD82_0222E574: ; 0x0222E574 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222E5CC + sub r1, r1, #1 + cmp r0, r1 + bne _0222E5A8 + bl FUN_020332DC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x2c + str r0, [r4, #0x1c] + b _0222E5CC +_0222E5A8: + ldr r0, _0222E5D4 ; =0x00000F0F + mov r1, #0x2e + str r0, [sp] + lsl r1, r1, #6 + mov r2, #1 + ldr r1, [r4, r1] + add r0, r4, #0 + add r3, r2, #0 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #2 + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F700 +_0222E5CC: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222E5D4: .word 0x00000F0F + thumb_func_end MOD82_0222E574 + + thumb_func_start MOD82_0222E5D8 +MOD82_0222E5D8: ; 0x0222E5D8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222E600 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x2e + lsl r1, r1, #6 + ldr r1, [r4, r1] + mov r2, #8 + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #0x32 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222E600: .word 0x00000F0F + thumb_func_end MOD82_0222E5D8 + + thumb_func_start MOD82_0222E604 +MOD82_0222E604: ; 0x0222E604 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222E656 + sub r1, r1, #1 + cmp r0, r1 + bne _0222E636 + bl MOD04_021DDD7C + cmp r0, #0 + bne _0222E630 + mov r0, #0 + str r0, [r4, #0x1c] + b _0222E656 +_0222E630: + mov r0, #0x27 + str r0, [r4, #0x1c] + b _0222E656 +_0222E636: + bl MOD04_021DDD7C + cmp r0, #0 + bne _0222E64C + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x2c + b _0222E64E +_0222E64C: + mov r0, #0x27 +_0222E64E: + str r0, [r4, #0x1c] + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x20] +_0222E656: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222E604 + + thumb_func_start MOD82_0222E65C +MOD82_0222E65C: ; 0x0222E65C + push {r4, lr} + add r4, r0, #0 + add r0, #0x2c + mov r1, #2 + mov r2, #1 + mov r3, #0x14 + bl MOD04_021DDEE0 + mov r0, #2 + bl MOD04_021DDE7C + bl MOD04_021DDDCC + mov r0, #3 + str r0, [r4, #0x1c] + pop {r4, pc} + thumb_func_end MOD82_0222E65C + + thumb_func_start MOD82_0222E67C +MOD82_0222E67C: ; 0x0222E67C + push {r3, r4, lr} + sub sp, #0x44 + add r4, r0, #0 + bl MOD04_021DDCE8 + bl MOD04_021DDD7C + cmp r0, #0 + beq _0222E6E8 + bl MOD04_021DDC1C + cmp r0, #4 + beq _0222E6DE + cmp r0, #7 + beq _0222E6A0 + cmp r0, #8 + beq _0222E6C4 + b _0222E6E8 +_0222E6A0: + add r0, sp, #4 + bl MOD04_021DD808 + ldr r1, _0222E6F0 ; =0x00000EB8 + str r0, [r4, r1] + ldr r2, [sp, #4] + add r0, r1, #4 + str r2, [r4, r0] + bl MOD04_021DD6F0 + bl MOD04_021DDBBC + add r0, r4, #0 + bl MOD82_0222F724 + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E6E8 +_0222E6C4: + add r0, sp, #0 + bl MOD04_021DD808 + add r0, r4, #0 + bl MOD82_0222F724 + mov r1, #0x33 + mov r0, #0x3b + str r1, [r4, #0x1c] + sub r1, #0x35 + lsl r0, r0, #6 + str r1, [r4, r0] + b _0222E6E8 +_0222E6DE: + add r0, sp, #8 + bl MOD04_021DD9DC + mov r0, #4 + str r0, [r4, #0x1c] +_0222E6E8: + mov r0, #3 + add sp, #0x44 + pop {r3, r4, pc} + nop +_0222E6F0: .word 0x00000EB8 + thumb_func_end MOD82_0222E67C + + thumb_func_start MOD82_0222E6F4 +MOD82_0222E6F4: ; 0x0222E6F4 + push {r4, lr} + add r4, r0, #0 + bl MOD04_021DE05C + cmp r0, #0 + beq _0222E704 + mov r0, #5 + str r0, [r4, #0x1c] +_0222E704: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E6F4 + + thumb_func_start MOD82_0222E708 +MOD82_0222E708: ; 0x0222E708 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + bl MOD04_021DDF4C + cmp r0, #3 + beq _0222E720 + cmp r0, #4 + beq _0222E726 + cmp r0, #5 + beq _0222E726 + b _0222E794 +_0222E720: + mov r0, #6 + str r0, [r4, #0x1c] + b _0222E794 +_0222E726: + add r0, r4, #0 + bl MOD82_0222F724 + add r0, sp, #4 + add r1, sp, #0 + bl MOD04_021DD718 + ldr r1, _0222E79C ; =0x00000EB8 + str r0, [r4, r1] + ldr r2, [sp, #4] + add r0, r1, #4 + str r2, [r4, r0] + bl MOD04_021DD6F0 + bl MOD04_021DDBBC + ldr r0, [sp] + cmp r0, #7 + bhi _0222E782 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E758: ; jump table + .short _0222E782 - _0222E758 - 2 ; case 0 + .short _0222E768 - _0222E758 - 2 ; case 1 + .short _0222E768 - _0222E758 - 2 ; case 2 + .short _0222E782 - _0222E758 - 2 ; case 3 + .short _0222E76E - _0222E758 - 2 ; case 4 + .short _0222E782 - _0222E758 - 2 ; case 5 + .short _0222E778 - _0222E758 - 2 ; case 6 + .short _0222E77E - _0222E758 - 2 ; case 7 +_0222E768: + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E782 +_0222E76E: + bl MOD04_021EB550 + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E782 +_0222E778: + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E782 +_0222E77E: + bl FUN_020335E0 +_0222E782: + ldr r1, [sp, #4] + ldr r0, _0222E7A0 ; =0xFFFFB1E0 + cmp r1, r0 + bge _0222E794 + ldr r0, _0222E7A4 ; =0xFFFF8AD1 + cmp r1, r0 + blt _0222E794 + mov r0, #0x35 + str r0, [r4, #0x1c] +_0222E794: + mov r0, #3 + add sp, #8 + pop {r4, pc} + nop +_0222E79C: .word 0x00000EB8 +_0222E7A0: .word 0xFFFFB1E0 +_0222E7A4: .word 0xFFFF8AD1 + thumb_func_end MOD82_0222E708 + + thumb_func_start MOD82_0222E7A8 +MOD82_0222E7A8: ; 0x0222E7A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02023830 + cmp r0, #0 + bne _0222E7C2 + ldr r1, [r5] + ldr r0, [r1, #8] + ldr r1, [r1, #0x1c] + bl FUN_02023834 +_0222E7C2: + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02023830 + add r4, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x14] + bl FUN_02096D68 + add r3, r0, #0 + add r2, r1, #0 + add r0, r4, #0 + add r1, r3, #0 + bl MOD82_0222D5C0 + mov r0, #7 + str r0, [r5, #0x1c] + mov r0, #3 + pop {r3, r4, r5, pc} + thumb_func_end MOD82_0222E7A8 + + thumb_func_start MOD82_0222E7E8 +MOD82_0222E7E8: ; 0x0222E7E8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D920 + mov r0, #8 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E7E8 + + thumb_func_start MOD82_0222E7F8 +MOD82_0222E7F8: ; 0x0222E7F8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222E8AA + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #9 + bhi _0222E8AA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222E81A: ; jump table + .short _0222E882 - _0222E81A - 2 ; case 0 + .short _0222E894 - _0222E81A - 2 ; case 1 + .short _0222E8A6 - _0222E81A - 2 ; case 2 + .short _0222E882 - _0222E81A - 2 ; case 3 + .short _0222E8AA - _0222E81A - 2 ; case 4 + .short _0222E894 - _0222E81A - 2 ; case 5 + .short _0222E870 - _0222E81A - 2 ; case 6 + .short _0222E82E - _0222E81A - 2 ; case 7 + .short _0222E85E - _0222E81A - 2 ; case 8 + .short _0222E870 - _0222E81A - 2 ; case 9 +_0222E82E: + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _0222E846 + cmp r0, #1 + beq _0222E852 + cmp r0, #2 + beq _0222E858 + b _0222E8AA +_0222E846: + add r0, r4, #0 + mov r1, #9 + mov r2, #0xb + bl MOD82_0222DF6C + b _0222E8AA +_0222E852: + mov r0, #0x17 + str r0, [r4, #0x1c] + b _0222E8AA +_0222E858: + mov r0, #0x1b + str r0, [r4, #0x1c] + b _0222E8AA +_0222E85E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E870: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E882: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E894: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E8A6: + bl FUN_020335E0 +_0222E8AA: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222E7F8 + + thumb_func_start MOD82_0222E8B0 +MOD82_0222E8B0: ; 0x0222E8B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl MOD82_0222D7F0 + mov r0, #0xa + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E8B0 + + thumb_func_start MOD82_0222E8C8 +MOD82_0222E8C8: ; 0x0222E8C8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222E954 + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #6 + bhi _0222E944 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222E8EA: ; jump table + .short _0222E928 - _0222E8EA - 2 ; case 0 + .short _0222E91C - _0222E8EA - 2 ; case 1 + .short _0222E934 - _0222E8EA - 2 ; case 2 + .short _0222E928 - _0222E8EA - 2 ; case 3 + .short _0222E910 - _0222E8EA - 2 ; case 4 + .short _0222E904 - _0222E8EA - 2 ; case 5 + .short _0222E8F8 - _0222E8EA - 2 ; case 6 +_0222E8F8: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E904: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E910: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E91C: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E928: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E934: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + bl FUN_020335E0 + b _0222E94E +_0222E944: + cmp r0, #0 + ble _0222E94E + str r0, [r4, #0x40] + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222E94E: + add r0, r4, #0 + bl MOD82_0222F724 +_0222E954: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E8C8 + + thumb_func_start MOD82_0222E958 +MOD82_0222E958: ; 0x0222E958 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222E980 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222E984 ; =0x00000B7C + mov r2, #0 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0xc + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222E980: .word 0x00000F0F +_0222E984: .word 0x00000B7C + thumb_func_end MOD82_0222E958 + + thumb_func_start MOD82_0222E988 +MOD82_0222E988: ; 0x0222E988 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x1f + mov r3, #0xa + bl FUN_0200CCA4 + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD82_0222F6D8 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020191D0 + mov r0, #0xd + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E988 + + thumb_func_start MOD82_0222E9CC +MOD82_0222E9CC: ; 0x0222E9CC + push {r3, r4, lr} + sub sp, #0x1c + ldr r2, _0222EA9C ; =0x021C48B8 + mov r1, #0x40 + ldr r3, [r2, #0x4c] + add r4, r0, #0 + tst r1, r3 + beq _0222EA08 + ldr r0, [r4, #0x44] + add r1, r0, #1 + str r1, [r4, #0x44] + ldr r0, [r4, #0x40] + cmp r1, r0 + ble _0222E9EC + mov r0, #1 + str r0, [r4, #0x44] +_0222E9EC: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 + b _0222EA94 +_0222EA08: + mov r1, #0x80 + tst r1, r3 + beq _0222EA38 + ldr r0, [r4, #0x44] + sub r0, r0, #1 + str r0, [r4, #0x44] + cmp r0, #1 + bge _0222EA1C + ldr r0, [r4, #0x40] + str r0, [r4, #0x44] +_0222EA1C: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 + b _0222EA94 +_0222EA38: + ldr r2, [r2, #0x48] + mov r1, #1 + tst r1, r2 + beq _0222EA7C + add r0, sp, #0 + add r1, sp, #0x10 + bl MOD04_021DE1F8 + ldr r0, [r4] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x44] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r0, #4] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + add r3, sp, #0 + bl FUN_0202A6B4 + cmp r0, #0 + beq _0222EA66 + mov r0, #0x12 + b _0222EA68 +_0222EA66: + mov r0, #0xe +_0222EA68: + mov r1, #0 + str r0, [r4, #0x1c] + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 + b _0222EA94 +_0222EA7C: + mov r1, #2 + tst r1, r2 + beq _0222EA94 + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x13 + str r0, [r4, #0x1c] + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 +_0222EA94: + mov r0, #3 + add sp, #0x1c + pop {r3, r4, pc} + nop +_0222EA9C: .word 0x021C48B8 +_0222EAA0: .word 0x000005DC + thumb_func_end MOD82_0222E9CC + + thumb_func_start MOD82_0222EAA4 +MOD82_0222EAA4: ; 0x0222EAA4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0222EB00 ; =0x00000B78 + ldr r2, [r4, #0x44] + ldr r0, [r4, r0] + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r3, #2 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, _0222EB00 ; =0x00000B78 + ldr r2, [r4, #0x3c] + ldr r0, [r4, r0] + bl FUN_0200AD38 + ldr r0, _0222EB04 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + ldr r1, _0222EB08 ; =0x00000B7C + add r0, r4, #0 + ldr r1, [r4, r1] + add r3, r2, #0 + bl MOD82_0222F4D8 + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0xf + bl MOD82_0222DF6C + add r4, #0x48 + ldr r2, _0222EB0C ; =0x00000A38 + mov r0, #0 + add r1, r4, #0 + bl MIi_CpuClearFast + mov r0, #3 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0222EB00: .word 0x00000B78 +_0222EB04: .word 0x00000F0F +_0222EB08: .word 0x00000B7C +_0222EB0C: .word 0x00000A38 + thumb_func_end MOD82_0222EAA4 + + thumb_func_start MOD82_0222EB10 +MOD82_0222EB10: ; 0x0222EB10 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EB38 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EB3C ; =0x00000B7C + mov r2, #2 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F4D8 + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0xb + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EB38: .word 0x00000F0F +_0222EB3C: .word 0x00000B7C + thumb_func_end MOD82_0222EB10 + + thumb_func_start MOD82_0222EB40 +MOD82_0222EB40: ; 0x0222EB40 + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x44] + add r2, #0x48 + bl MOD82_0222D840 + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #0x10 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222EB40 + + thumb_func_start MOD82_0222EB60 +MOD82_0222EB60: ; 0x0222EB60 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222EC44 + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #7 + bhi _0222EC44 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222EB84: ; jump table + .short _0222EC1E - _0222EB84 - 2 ; case 0 + .short _0222EC0C - _0222EB84 - 2 ; case 1 + .short _0222EC30 - _0222EB84 - 2 ; case 2 + .short _0222EBFA - _0222EB84 - 2 ; case 3 + .short _0222EBFA - _0222EB84 - 2 ; case 4 + .short _0222EBE8 - _0222EB84 - 2 ; case 5 + .short _0222EBD6 - _0222EB84 - 2 ; case 6 + .short _0222EB94 - _0222EB84 - 2 ; case 7 +_0222EB94: + ldr r0, [r4] + ldr r2, [r4, #0x38] + ldr r3, [r4, #0x44] + add r1, r4, #0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + add r1, #0x48 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0202A754 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x11 + bl MOD82_0222DF6C + add r0, sp, #0 + add r1, sp, #0x10 + bl MOD04_021DE1F8 + ldr r0, [r4] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x44] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r0, #4] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + add r3, sp, #0 + bl FUN_0202A60C + b _0222EC44 +_0222EBD6: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EBE8: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EBFA: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #9 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EC0C: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EC1E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EC30: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + bl FUN_020335E0 +_0222EC44: + mov r0, #3 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222EB60 + + thumb_func_start MOD82_0222EC4C +MOD82_0222EC4C: ; 0x0222EC4C + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EC80 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EC84 ; =0x00000B7C + mov r2, #3 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x2b + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + mov r1, #0 + str r1, [r0, #0x20] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EC80: .word 0x00000F0F +_0222EC84: .word 0x00000B7C + thumb_func_end MOD82_0222EC4C + + thumb_func_start MOD82_0222EC88 +MOD82_0222EC88: ; 0x0222EC88 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222ECB4 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222ECB8 ; =0x00000B7C + mov r2, #7 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x18 + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222ECB4: .word 0x00000F0F +_0222ECB8: .word 0x00000B7C + thumb_func_end MOD82_0222EC88 + + thumb_func_start MOD82_0222ECBC +MOD82_0222ECBC: ; 0x0222ECBC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_0202A524 + add r4, r0, #0 + ldr r0, [r5] + add r1, sp, #0 + ldr r0, [r0, #4] + bl FUN_0202A784 + ldr r0, [r5] + mov r2, #0x2a + lsl r2, r2, #6 + ldr r0, [r0, #0xc] + mov r1, #1 + add r2, r5, r2 + bl FUN_02066840 + add r1, sp, #0 + ldrb r0, [r1] + mov r3, #0x2a + lsl r3, r3, #6 + ldrb r1, [r1, #1] + add r2, r4, #0 + add r3, r5, r3 + bl MOD82_0222D8A0 + mov r0, #0x19 + str r0, [r5, #0x1c] + mov r0, #3 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD82_0222ECBC + + thumb_func_start MOD82_0222ED00 +MOD82_0222ED00: ; 0x0222ED00 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222EDB8 + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #7 + bhi _0222EDB8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222ED22: ; jump table + .short _0222ED92 - _0222ED22 - 2 ; case 0 + .short _0222ED80 - _0222ED22 - 2 ; case 1 + .short _0222EDA4 - _0222ED22 - 2 ; case 2 + .short _0222ED92 - _0222ED22 - 2 ; case 3 + .short _0222ED6E - _0222ED22 - 2 ; case 4 + .short _0222ED5C - _0222ED22 - 2 ; case 5 + .short _0222ED4A - _0222ED22 - 2 ; case 6 + .short _0222ED32 - _0222ED22 - 2 ; case 7 +_0222ED32: + ldr r0, [r4] + mov r1, #5 + ldr r0, [r0] + mov r2, #2 + bl FUN_0202A578 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x1a + bl MOD82_0222DF6C + b _0222EDB8 +_0222ED4A: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED5C: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED6E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED80: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED92: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222EDA4: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + bl FUN_020335E0 +_0222EDB8: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222ED00 + + thumb_func_start MOD82_0222EDBC +MOD82_0222EDBC: ; 0x0222EDBC + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EDF0 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EDF4 ; =0x00000B7C + mov r2, #8 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x2b + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + mov r1, #0 + str r1, [r0, #0x20] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EDF0: .word 0x00000F0F +_0222EDF4: .word 0x00000B7C + thumb_func_end MOD82_0222EDBC + + thumb_func_start MOD82_0222EDF8 +MOD82_0222EDF8: ; 0x0222EDF8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EE20 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EE24 ; =0x00000B7C + mov r2, #5 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x1c + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EE20: .word 0x00000F0F +_0222EE24: .word 0x00000B7C + thumb_func_end MOD82_0222EDF8 + + thumb_func_start MOD82_0222EE28 +MOD82_0222EE28: ; 0x0222EE28 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + str r0, [r4, #0x3c] + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x1f + mov r3, #0xa + bl FUN_0200CCA4 + ldr r1, _0222EE70 ; =0x00000B94 + mov r0, #0xd9 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x3c] + add r0, r4, r0 + mov r3, #2 + bl MOD82_0222F694 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020191D0 + mov r0, #0x1d + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + nop +_0222EE70: .word 0x00000B94 + thumb_func_end MOD82_0222EE28 + + thumb_func_start MOD82_0222EE74 +MOD82_0222EE74: ; 0x0222EE74 + push {r4, lr} + ldr r2, _0222EF18 ; =0x021C48B8 + mov r1, #0x40 + ldr r3, [r2, #0x4c] + add r4, r0, #0 + tst r1, r3 + beq _0222EEAA + ldr r0, [r4, #0x3c] + add r0, r0, #1 + str r0, [r4, #0x3c] + cmp r0, #0xa + ble _0222EE90 + mov r0, #1 + str r0, [r4, #0x3c] +_0222EE90: + ldr r1, _0222EF1C ; =0x00000B94 + mov r0, #0xd9 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x3c] + add r0, r4, r0 + mov r3, #2 + bl MOD82_0222F694 + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 + b _0222EF12 +_0222EEAA: + mov r1, #0x80 + tst r1, r3 + beq _0222EED8 + ldr r0, [r4, #0x3c] + sub r0, r0, #1 + str r0, [r4, #0x3c] + cmp r0, #1 + bge _0222EEBE + mov r0, #0xa + str r0, [r4, #0x3c] +_0222EEBE: + ldr r1, _0222EF1C ; =0x00000B94 + mov r0, #0xd9 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x3c] + add r0, r4, r0 + mov r3, #2 + bl MOD82_0222F694 + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 + b _0222EF12 +_0222EED8: + ldr r2, [r2, #0x48] + mov r1, #1 + tst r1, r2 + beq _0222EEFA + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + add r0, r4, #0 + mov r1, #9 + mov r2, #0x1e + bl MOD82_0222DF6C + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 + b _0222EF12 +_0222EEFA: + mov r1, #2 + tst r1, r2 + beq _0222EF12 + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x15 + str r0, [r4, #0x1c] + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 +_0222EF12: + mov r0, #3 + pop {r4, pc} + nop +_0222EF18: .word 0x021C48B8 +_0222EF1C: .word 0x00000B94 +_0222EF20: .word 0x000005DC + thumb_func_end MOD82_0222EE74 + + thumb_func_start MOD82_0222EF24 +MOD82_0222EF24: ; 0x0222EF24 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EF4C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EF50 ; =0x00000B7C + mov r2, #6 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x1f + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EF4C: .word 0x00000F0F +_0222EF50: .word 0x00000B7C + thumb_func_end MOD82_0222EF24 + + thumb_func_start MOD82_0222EF54 +MOD82_0222EF54: ; 0x0222EF54 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + str r0, [r4, #0x44] + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x1f + mov r3, #0xa + bl FUN_0200CCA4 + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD82_0222F6D8 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020191D0 + mov r0, #0x20 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222EF54 + + thumb_func_start MOD82_0222EF9C +MOD82_0222EF9C: ; 0x0222EF9C + push {r4, lr} + ldr r2, _0222F040 ; =0x021C48B8 + mov r1, #0x40 + ldr r3, [r2, #0x4c] + add r4, r0, #0 + tst r1, r3 + beq _0222EFD8 + ldr r0, [r4, #0x44] + add r1, r0, #1 + str r1, [r4, #0x44] + ldr r0, [r4, #0x40] + add r0, r0, #1 + cmp r1, r0 + bne _0222EFBC + mov r0, #1 + str r0, [r4, #0x44] +_0222EFBC: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 + b _0222F03C +_0222EFD8: + mov r1, #0x80 + tst r1, r3 + beq _0222F008 + ldr r0, [r4, #0x44] + sub r0, r0, #1 + str r0, [r4, #0x44] + cmp r0, #1 + bge _0222EFEC + ldr r0, [r4, #0x40] + str r0, [r4, #0x44] +_0222EFEC: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 + b _0222F03C +_0222F008: + ldr r2, [r2, #0x48] + mov r1, #1 + tst r1, r2 + beq _0222F024 + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x21 + str r0, [r4, #0x1c] + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 + b _0222F03C +_0222F024: + mov r1, #2 + tst r1, r2 + beq _0222F03C + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x1b + str r0, [r4, #0x1c] + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 +_0222F03C: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F040: .word 0x021C48B8 +_0222F044: .word 0x000005DC + thumb_func_end MOD82_0222EF9C + + thumb_func_start MOD82_0222F048 +MOD82_0222F048: ; 0x0222F048 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0222F09C ; =0x00000B78 + ldr r2, [r4, #0x44] + ldr r0, [r4, r0] + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r3, #2 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, _0222F09C ; =0x00000B78 + ldr r2, [r4, #0x3c] + ldr r0, [r4, r0] + bl FUN_0200AD38 + ldr r0, _0222F0A0 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + ldr r1, _0222F0A4 ; =0x00000B7C + add r0, r4, #0 + ldr r1, [r4, r1] + add r3, r2, #0 + bl MOD82_0222F4D8 + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x22 + bl MOD82_0222DF6C + mov r0, #0x22 + str r0, [r4, #0x1c] + mov r0, #3 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0222F09C: .word 0x00000B78 +_0222F0A0: .word 0x00000F0F +_0222F0A4: .word 0x00000B7C + thumb_func_end MOD82_0222F048 + + thumb_func_start MOD82_0222F0A8 +MOD82_0222F0A8: ; 0x0222F0A8 + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x44] + add r2, #0x48 + bl MOD82_0222D840 + mov r0, #0x23 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F0A8 + + thumb_func_start MOD82_0222F0C8 +MOD82_0222F0C8: ; 0x0222F0C8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222F18C + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #7 + bhi _0222F18C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222F0EA: ; jump table + .short _0222F166 - _0222F0EA - 2 ; case 0 + .short _0222F154 - _0222F0EA - 2 ; case 1 + .short _0222F178 - _0222F0EA - 2 ; case 2 + .short _0222F166 - _0222F0EA - 2 ; case 3 + .short _0222F142 - _0222F0EA - 2 ; case 4 + .short _0222F130 - _0222F0EA - 2 ; case 5 + .short _0222F11E - _0222F0EA - 2 ; case 6 + .short _0222F0FA - _0222F0EA - 2 ; case 7 +_0222F0FA: + ldr r0, [r4] + ldr r2, [r4, #0x3c] + ldr r3, [r4, #0x44] + ldr r1, _0222F190 ; =0x00000684 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + add r1, r4, r1 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0202A838 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x24 + bl MOD82_0222DF6C + b _0222F18C +_0222F11E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F130: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F142: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #9 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F154: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F166: + mov r1, #9 + str r1, [r4, #0x1c] + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F178: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + bl FUN_020335E0 +_0222F18C: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F190: .word 0x00000684 + thumb_func_end MOD82_0222F0C8 + + thumb_func_start MOD82_0222F194 +MOD82_0222F194: ; 0x0222F194 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F1C8 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F1CC ; =0x00000B7C + mov r2, #3 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x2b + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + mov r1, #0 + str r1, [r0, #0x20] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F1C8: .word 0x00000F0F +_0222F1CC: .word 0x00000B7C + thumb_func_end MOD82_0222F194 + + thumb_func_start MOD82_0222F1D0 +MOD82_0222F1D0: ; 0x0222F1D0 + mov r1, #0x27 + str r1, [r0, #0x1c] + mov r0, #3 + bx lr + thumb_func_end MOD82_0222F1D0 + + thumb_func_start MOD82_0222F1D8 +MOD82_0222F1D8: ; 0x0222F1D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02022840 + mov r0, #0x26 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F1D8 + + thumb_func_start MOD82_0222F1F0 +MOD82_0222F1F0: ; 0x0222F1F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl FUN_02022854 + cmp r0, #2 + bne _0222F20A + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 +_0222F20A: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F1F0 + + thumb_func_start MOD82_0222F210 +MOD82_0222F210: ; 0x0222F210 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F238 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F23C ; =0x00000B7C + mov r2, #4 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #0x14 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F238: .word 0x00000F0F +_0222F23C: .word 0x00000B7C + thumb_func_end MOD82_0222F210 + + thumb_func_start MOD82_0222F240 +MOD82_0222F240: ; 0x0222F240 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F26E + sub r1, r1, #1 + cmp r0, r1 + bne _0222F264 + mov r0, #0xb + str r0, [r4, #0x1c] + b _0222F26E +_0222F264: + mov r0, #0x27 + str r0, [r4, #0x1c] + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x20] +_0222F26E: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F240 + + thumb_func_start MOD82_0222F274 +MOD82_0222F274: ; 0x0222F274 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F29C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F2A0 ; =0x00000B7C + mov r2, #9 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #0x16 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F29C: .word 0x00000F0F +_0222F2A0: .word 0x00000B7C + thumb_func_end MOD82_0222F274 + + thumb_func_start MOD82_0222F2A4 +MOD82_0222F2A4: ; 0x0222F2A4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F2D2 + sub r1, r1, #1 + cmp r0, r1 + bne _0222F2C8 + mov r0, #0x1b + str r0, [r4, #0x1c] + b _0222F2D2 +_0222F2C8: + mov r0, #0x27 + str r0, [r4, #0x1c] + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x20] +_0222F2D2: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F2A4 + + thumb_func_start MOD82_0222F2D8 +MOD82_0222F2D8: ; 0x0222F2D8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F300 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F304 ; =0x00000B84 + mov r2, #0x19 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x28 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F300: .word 0x00000F0F +_0222F304: .word 0x00000B84 + thumb_func_end MOD82_0222F2D8 + + thumb_func_start MOD82_0222F308 +MOD82_0222F308: ; 0x0222F308 + push {r4, lr} + add r4, r0, #0 + bl MOD04_021DDBBC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x29 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F308 + + thumb_func_start MOD82_0222F324 +MOD82_0222F324: ; 0x0222F324 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F350 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F354 ; =0x00000B84 + mov r2, #0x1a + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2f + mov r2, #0x2c + bl MOD82_0222DF6C + ldr r0, _0222F358 ; =0x00000EC4 + mov r1, #0 + str r1, [r4, r0] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222F350: .word 0x00000F0F +_0222F354: .word 0x00000B84 +_0222F358: .word 0x00000EC4 + thumb_func_end MOD82_0222F324 + + thumb_func_start MOD82_0222F35C +MOD82_0222F35C: ; 0x0222F35C + mov r0, #3 + bx lr + thumb_func_end MOD82_0222F35C + + thumb_func_start MOD82_0222F360 +MOD82_0222F360: ; 0x0222F360 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02033ED0 + bl FUN_020332DC + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x44 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x1c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD82_0222F360 + + thumb_func_start MOD82_0222F390 +MOD82_0222F390: ; 0x0222F390 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F3B8 + sub r1, r1, #1 + cmp r0, r1 + bne _0222F3B4 + mov r0, #0 + str r0, [r4, #0x1c] + b _0222F3B8 +_0222F3B4: + mov r0, #0x27 + str r0, [r4, #0x1c] +_0222F3B8: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222F390 + + thumb_func_start MOD82_0222F3BC +MOD82_0222F3BC: ; 0x0222F3BC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3b + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r4, #0 + add r0, r0, #7 + cmp r0, #9 + bhi _0222F400 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222F3DA: ; jump table + .short _0222F3FA - _0222F3DA - 2 ; case 0 + .short _0222F3EE - _0222F3DA - 2 ; case 1 + .short _0222F400 - _0222F3DA - 2 ; case 2 + .short _0222F3FA - _0222F3DA - 2 ; case 3 + .short _0222F3FE - _0222F3DA - 2 ; case 4 + .short _0222F3EE - _0222F3DA - 2 ; case 5 + .short _0222F3F6 - _0222F3DA - 2 ; case 6 + .short _0222F400 - _0222F3DA - 2 ; case 7 + .short _0222F3F2 - _0222F3DA - 2 ; case 8 + .short _0222F3F6 - _0222F3DA - 2 ; case 9 +_0222F3EE: + mov r4, #0xd + b _0222F400 +_0222F3F2: + mov r4, #0xb + b _0222F400 +_0222F3F6: + mov r4, #0xc + b _0222F400 +_0222F3FA: + mov r4, #0xe + b _0222F400 +_0222F3FE: + mov r4, #0xf +_0222F400: + add r0, r5, #0 + bl MOD82_0222F724 + ldr r0, _0222F428 ; =0x00000F0F + ldr r1, _0222F42C ; =0x00000B7C + str r0, [sp] + ldr r1, [r5, r1] + add r0, r5, #0 + add r2, r4, #0 + mov r3, #1 + bl MOD82_0222F59C + add r0, r5, #0 + mov r1, #0x2d + mov r2, #0x34 + bl MOD82_0222DF6C + mov r0, #3 + pop {r3, r4, r5, pc} + nop +_0222F428: .word 0x00000F0F +_0222F42C: .word 0x00000B7C + thumb_func_end MOD82_0222F3BC + + thumb_func_start MOD82_0222F430 +MOD82_0222F430: ; 0x0222F430 + push {r4, lr} + add r4, r0, #0 + bl FUN_020332DC + bl MOD04_021DDBBC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x2c + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F430 + + thumb_func_start MOD82_0222F450 +MOD82_0222F450: ; 0x0222F450 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F46C ; =0x00000B9C + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F468 + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222F468: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F46C: .word 0x00000B9C + thumb_func_end MOD82_0222F450 + + thumb_func_start MOD82_0222F470 +MOD82_0222F470: ; 0x0222F470 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F49C ; =0x00000B9C + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F498 + ldr r0, _0222F4A0 ; =0x00000EC4 + ldr r0, [r4, r0] + cmp r0, #0x1e + ble _0222F490 + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222F490: + ldr r0, _0222F4A0 ; =0x00000EC4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_0222F498: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F49C: .word 0x00000B9C +_0222F4A0: .word 0x00000EC4 + thumb_func_end MOD82_0222F470 + + thumb_func_start MOD82_0222F4A4 +MOD82_0222F4A4: ; 0x0222F4A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F4D4 ; =0x00000B9C + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F4CE + mov r2, #0x91 + ldr r0, [r4, #4] + mov r1, #0xd + lsl r2, r2, #2 + bl MOD82_0222DF38 + mov r1, #0xeb + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222F4CE: + mov r0, #3 + pop {r4, pc} + nop +_0222F4D4: .word 0x00000B9C + thumb_func_end MOD82_0222F4A4 + + thumb_func_start MOD82_0222F4D8 +MOD82_0222F4D8: ; 0x0222F4D8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r4, r3, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, _0222F53C ; =0x00000B78 + add r2, r6, #0 + ldr r0, [r5, r1] + add r1, #0x10 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + mov r0, #0x36 + lsl r0, r0, #6 + ldr r2, _0222F540 ; =0x00000B88 + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0222F544 ; =0x00000B9C + str r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0222F53C: .word 0x00000B78 +_0222F540: .word 0x00000B88 +_0222F544: .word 0x00000B9C + thumb_func_end MOD82_0222F4D8 + + thumb_func_start MOD82_0222F548 +MOD82_0222F548: ; 0x0222F548 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F56C ; =0x00000EBC + ldr r0, [r4, r0] + neg r0, r0 + bl MOD04_021D80E0 + ldr r2, _0222F56C ; =0x00000EBC + add r1, r0, #0 + ldr r2, [r4, r2] + add r0, r4, #0 + neg r2, r2 + bl MOD82_0222F7C0 + mov r0, #0x36 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F56C: .word 0x00000EBC + thumb_func_end MOD82_0222F548 + + thumb_func_start MOD82_0222F570 +MOD82_0222F570: ; 0x0222F570 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F598 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0222F584 + mov r0, #2 + tst r0, r1 + beq _0222F594 +_0222F584: + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0 + str r0, [r4, #0x1c] +_0222F594: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F598: .word 0x021C48B8 + thumb_func_end MOD82_0222F570 + + thumb_func_start MOD82_0222F59C +MOD82_0222F59C: ; 0x0222F59C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, _0222F5EC ; =0x00000B88 + add r4, r3, #0 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + mov r0, #0x36 + lsl r0, r0, #6 + ldr r2, _0222F5EC ; =0x00000B88 + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0222F5F0 ; =0x00000B9C + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222F5EC: .word 0x00000B88 +_0222F5F0: .word 0x00000B9C + thumb_func_end MOD82_0222F59C + + thumb_func_start MOD82_0222F5F4 +MOD82_0222F5F4: ; 0x0222F5F4 + push {r4, lr} + add r4, r0, #0 + cmp r3, #1 + beq _0222F602 + cmp r3, #2 + beq _0222F618 + b _0222F626 +_0222F602: + ldr r0, [sp, #0xc] + mov r2, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r1, r1, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r2, r0, #1 + b _0222F626 +_0222F618: + ldr r0, [sp, #0xc] + mov r2, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r2, r1, r0 +_0222F626: + add r0, r2, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F5F4 + + thumb_func_start MOD82_0222F62C +MOD82_0222F62C: ; 0x0222F62C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + ldr r3, [sp, #0x24] + add r5, r0, #0 + str r3, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r3, [sp, #0x20] + add r6, r1, #0 + bl MOD82_0222F5F4 + add r3, r0, #0 + str r4, [sp] + mov r1, #0 + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD82_0222F62C + + thumb_func_start MOD82_0222F660 +MOD82_0222F660: ; 0x0222F660 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + ldr r3, [sp, #0x24] + add r5, r0, #0 + str r3, [sp] + mov r3, #0 + str r3, [sp, #4] + ldr r3, [sp, #0x20] + add r6, r1, #0 + bl MOD82_0222F5F4 + add r3, r0, #0 + str r4, [sp] + mov r1, #0 + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD82_0222F660 + + thumb_func_start MOD82_0222F694 +MOD82_0222F694: ; 0x0222F694 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0xf + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02019620 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #2 + bl FUN_02021B04 + mov r3, #1 + ldr r0, _0222F6CC ; =0x00010200 + str r3, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD82_0222F660 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F6CC: .word 0x00010200 + thumb_func_end MOD82_0222F694 + + thumb_func_start MOD82_0222F6D0 +MOD82_0222F6D0: ; 0x0222F6D0 + ldr r3, _0222F6D4 ; =FUN_02033E74 + bx r3 + .align 2, 0 +_0222F6D4: .word FUN_02033E74 + thumb_func_end MOD82_0222F6D0 + + thumb_func_start MOD82_0222F6D8 +MOD82_0222F6D8: ; 0x0222F6D8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #1 + bhi _0222F6F6 + ldr r0, _0222F6F8 ; =0x00000D78 + add r1, r4, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0222F6FC ; =0x00000D7C + add r1, r4, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 +_0222F6F6: + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F6F8: .word 0x00000D78 +_0222F6FC: .word 0x00000D7C + thumb_func_end MOD82_0222F6D8 + + thumb_func_start MOD82_0222F700 +MOD82_0222F700: ; 0x0222F700 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F720 ; =0x00000EB4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222F71C + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #1 + bl FUN_0200D858 + ldr r1, _0222F720 ; =0x00000EB4 + str r0, [r4, r1] +_0222F71C: + pop {r4, pc} + nop +_0222F720: .word 0x00000EB4 + thumb_func_end MOD82_0222F700 + + thumb_func_start MOD82_0222F724 +MOD82_0222F724: ; 0x0222F724 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F73C ; =0x00000EB4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222F73A + bl FUN_0200DBFC + ldr r0, _0222F73C ; =0x00000EB4 + mov r1, #0 + str r1, [r4, r0] +_0222F73A: + pop {r4, pc} + .align 2, 0 +_0222F73C: .word 0x00000EB4 + thumb_func_end MOD82_0222F724 + + thumb_func_start MOD82_0222F740 +MOD82_0222F740: ; 0x0222F740 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + add r6, r1, #0 + lsl r0, r0, #8 + mov r1, #0x44 + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, _0222F7B0 ; =0x00000B84 + add r1, r6, #0 + ldr r0, [r5, r0] + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r1, _0222F7B4 ; =0x00000B78 + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, #0x20 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + mov r0, #0x37 + lsl r0, r0, #6 + ldr r2, _0222F7B8 ; =0x00000B98 + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0222F7BC ; =0x00000B9C + str r0, [r5, r1] + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222F7B0: .word 0x00000B84 +_0222F7B4: .word 0x00000B78 +_0222F7B8: .word 0x00000B98 +_0222F7BC: .word 0x00000B9C + thumb_func_end MOD82_0222F740 + + thumb_func_start MOD82_0222F7C0 +MOD82_0222F7C0: ; 0x0222F7C0 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + bne _0222F7D2 + mov r4, #0xb +_0222F7D2: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0222F800 ; =0x00000B78 + mov r1, #0 + ldr r0, [r5, r0] + mov r3, #5 + bl FUN_0200AD38 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #1 + bl FUN_0200D0E0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD82_0222F740 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0222F800: .word 0x00000B78 + thumb_func_end MOD82_0222F7C0 + + .section .rodata + ; 0x0222F804 + .incbin "baserom.nds", 0x2F1244, 0xC8 + + .section .data + ; 0x0222F8E0 + .incbin "baserom.nds", 0x2F1320, 0x220 + + .section .bss + ; 0x0222FB00 + .space 0x120 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s new file mode 100644 index 00000000..1eda08dc --- /dev/null +++ b/arm9/modules/83/asm/module_83.s @@ -0,0 +1,26448 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD83_0222D5C0 +MOD83_0222D5C0: ; 0x0222D5C0 + mov r0, #0 + bx lr + thumb_func_end MOD83_0222D5C0 + + thumb_func_start MOD83_0222D5C4 +MOD83_0222D5C4: ; 0x0222D5C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r5, r0, #0 + mov r0, #5 + lsl r0, r0, #6 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + bne _0222D63C + mov r1, #0x4f + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_0222D5E0: + ldr r2, [r3, r1] + cmp r2, #1 + bne _0222D632 + lsl r1, r0, #2 + add r3, r5, r1 + mov r1, #0x4f + add r6, r0, #0 + mov r2, #0 + lsl r1, r1, #2 + str r2, [r3, r1] + mov r3, #0x1c + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r1, r1, #4 + ldr r7, _0222D670 ; =0x0223A794 + mul r6, r3 + add r4, r7, r6 + ldr r3, [r4, #0x10] + add r0, sp, #8 + add r1, r5, r1 + bl MOD83_022388E4 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, sp, #8 + mov r3, #0x13 + bl MOD83_02238934 + ldr r0, [r4, #0x14] + add r1, sp, #8 + str r0, [sp] + ldr r0, [r5] + ldr r2, [r7, r6] + ldr r3, [r4, #4] + bl MOD83_02238A38 + add sp, #0x5c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0222D632: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #1 + blt _0222D5E0 + b _0222D668 +_0222D63C: + ldr r0, _0222D674 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0222D662 + ldr r0, _0222D678 ; =0x000005DC + bl FUN_020054C8 + mov r0, #5 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #5 + lsl r0, r0, #6 + add r0, r5, r0 + bl FUN_02019178 +_0222D662: + add sp, #0x5c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0222D668: + mov r0, #0 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_0222D670: .word 0x0223A794 +_0222D674: .word 0x021C48B8 +_0222D678: .word 0x000005DC + thumb_func_end MOD83_0222D5C4 + + thumb_func_start MOD83_0222D67C +MOD83_0222D67C: ; 0x0222D67C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + bl MOD83_02236E18 + mov r4, #0 + str r4, [r5, #0x24] + cmp r0, #0 + bne _0222D6E6 + bl MOD83_02236E9C + cmp r0, #4 + bhi _0222D6BE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D6A2: ; jump table + .short _0222D6AC - _0222D6A2 - 2 ; case 0 + .short _0222D6B0 - _0222D6A2 - 2 ; case 1 + .short _0222D6B4 - _0222D6A2 - 2 ; case 2 + .short _0222D6B8 - _0222D6A2 - 2 ; case 3 + .short _0222D6BC - _0222D6A2 - 2 ; case 4 +_0222D6AC: + mov r4, #2 + b _0222D6BE +_0222D6B0: + mov r4, #1 + b _0222D6BE +_0222D6B4: + mov r4, #5 + b _0222D6BE +_0222D6B8: + mov r4, #4 + b _0222D6BE +_0222D6BC: + mov r4, #3 +_0222D6BE: + add r0, r4, #0 + bl FUN_02016438 + ldr r0, [r5, #8] + bl FUN_02024CA4 + cmp r0, #0 + beq _0222D6E6 + bl MOD83_02236EA8 + ldr r1, _0222D6E8 ; =0x020ECAC4 + ldrb r1, [r1] + cmp r1, r0 + bne _0222D6E6 + bl MOD83_02236E9C + add r0, r0, #1 + str r0, [r5, #0x24] + bl MOD83_02239490 +_0222D6E6: + pop {r3, r4, r5, pc} + .align 2, 0 +_0222D6E8: .word 0x020ECAC4 + thumb_func_end MOD83_0222D67C + + thumb_func_start MOD83_0222D6EC +MOD83_0222D6EC: ; 0x0222D6EC + push {r4, lr} + mov r1, #0x43 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r0, #0xa + cmp r0, #4 + bhi _0222D7DC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D708: ; jump table + .short _0222D712 - _0222D708 - 2 ; case 0 + .short _0222D718 - _0222D708 - 2 ; case 1 + .short _0222D7DC - _0222D708 - 2 ; case 2 + .short _0222D74C - _0222D708 - 2 ; case 3 + .short _0222D7D0 - _0222D708 - 2 ; case 4 +_0222D712: + mov r0, #0xb + str r0, [r4, r1] + pop {r4, pc} +_0222D718: + ldr r0, [r4, #4] + bl FUN_02032D44 + mov r1, #0x78 + add r0, r1, #0 + add r0, #0x98 + str r1, [r4, r0] + mov r1, #0xd + add r0, r1, #0 + add r0, #0xff + str r1, [r4, r0] + mov r0, #0 + str r0, [r4, #0x40] + ldr r0, [r4, #0x14] + bl FUN_0202AF50 + cmp r0, #1 + bne _0222D7DC + ldr r1, [r4, #0x40] + mov r0, #1 + orr r1, r0 + str r1, [r4, #0x40] + ldr r1, [r4, #0x44] + orr r0, r1 + str r0, [r4, #0x44] + pop {r4, pc} +_0222D74C: + add r1, #0xc + ldr r0, [r4, r1] + cmp r0, #0 + bne _0222D7DC + bl FUN_02032D9C + ldr r1, [r4, #0x40] + bic r0, r1 + beq _0222D7B2 + mov r2, #0x45 + lsl r2, r2, #2 + ldr r3, [r4, r2] + cmp r3, #0xf + bne _0222D7B2 + add r2, r2, #4 + ldr r2, [r4, r2] + cmp r2, #0 + bne _0222D7B2 + cmp r1, r0 + beq _0222D7B2 + mov r2, #1 + add r1, r0, #0 + str r2, [r4, #0x48] + tst r1, r2 + beq _0222D782 + str r2, [r4, #0x34] + add r0, r2, #0 +_0222D782: + mov r1, #2 + add r2, r0, #0 + tst r2, r1 + beq _0222D790 + mov r0, #1 + str r0, [r4, #0x2c] + add r0, r1, #0 +_0222D790: + mov r1, #4 + add r2, r0, #0 + tst r2, r1 + beq _0222D79E + mov r0, #1 + str r0, [r4, #0x30] + add r0, r1, #0 +_0222D79E: + mov r1, #3 + tst r1, r0 + beq _0222D7AC + mov r1, #0x4e + mov r2, #1 + lsl r1, r1, #2 + str r2, [r4, r1] +_0222D7AC: + ldr r1, [r4, #0x40] + orr r0, r1 + str r0, [r4, #0x40] +_0222D7B2: + mov r0, #0x11 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222D7DC + bl FUN_02032D80 + mov r0, #0x43 + mov r1, #0xc + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} +_0222D7D0: + bl FUN_02032D80 + mov r0, #0x43 + mov r1, #0xc + lsl r0, r0, #2 + str r1, [r4, r0] +_0222D7DC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_0222D6EC + + thumb_func_start MOD83_0222D7E0 +MOD83_0222D7E0: ; 0x0222D7E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + mov r1, #0x45 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r0, #0xf + cmp r0, #4 + bls _0222D7F4 + b _0222D994 +_0222D7F4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D800: ; jump table + .short _0222D80A - _0222D800 - 2 ; case 0 + .short _0222D832 - _0222D800 - 2 ; case 1 + .short _0222D85E - _0222D800 - 2 ; case 2 + .short _0222D932 - _0222D800 - 2 ; case 3 + .short _0222D974 - _0222D800 - 2 ; case 4 +_0222D80A: + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222D818 + add sp, #0x60 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0222D818: + add r0, r1, #4 + ldr r0, [r4, r0] + sub r2, r0, #1 + add r0, r1, #4 + str r2, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222D82C + mov r0, #0x10 + str r0, [r4, r1] +_0222D82C: + add sp, #0x60 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222D832: + mov r0, #0 + str r0, [sp] + mov r0, #0x51 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #2 + bl FUN_0200CB00 + ldr r0, [r4] + mov r1, #1 + bl FUN_02018744 + ldr r1, _0222D99C ; =0x00006B5A + ldr r0, _0222D9A0 ; =0x05000042 + strh r1, [r0] + mov r0, #0x45 + mov r1, #0x11 + lsl r0, r0, #2 + str r1, [r4, r0] + b _0222D994 +_0222D85E: + mov r0, #1 + str r0, [sp] + mov r0, #2 + add r1, #0x10 + str r0, [sp, #4] + add r0, sp, #0xc + add r1, r4, r1 + mov r2, #0 + mov r3, #0xc + bl MOD83_022388E4 + ldr r0, [r4, #0x44] + ldr r1, [r4, #0x40] + mvn r0, r0 + and r0, r1 + mov r1, #1 + add r2, r0, #0 + tst r2, r1 + beq _0222D892 + ldr r2, [r4, #0x38] + tst r1, r2 + beq _0222D88E + ldr r5, _0222D9A4 ; =0x0223A7F0 + b _0222D8B2 +_0222D88E: + ldr r5, _0222D9A8 ; =0x0223A804 + b _0222D8B2 +_0222D892: + mov r1, #2 + add r2, r0, #0 + tst r2, r1 + beq _0222D8A8 + ldr r2, [r4, #0x38] + tst r1, r2 + beq _0222D8A4 + ldr r5, _0222D9AC ; =0x0223A818 + b _0222D8B2 +_0222D8A4: + ldr r5, _0222D9B0 ; =0x0223A82C + b _0222D8B2 +_0222D8A8: + mov r1, #0x80 + tst r1, r0 + beq _0222D8B2 + ldr r5, _0222D9B4 ; =0x0223A840 + mov r0, #0 +_0222D8B2: + ldr r1, [r4, #0x44] + mov r3, #0x13 + orr r0, r1 + str r0, [r4, #0x44] + ldr r1, [r5, #8] + ldr r2, [r5, #0xc] + add r0, sp, #0xc + bl MOD83_02238934 + mov r0, #1 + str r0, [sp, #0x38] + ldr r0, [r5, #0x10] + add r1, sp, #0xc + str r0, [sp] + ldr r0, [r4] + ldr r2, [r5] + ldr r3, [r5, #4] + bl MOD83_02238A38 + ldr r0, [sp, #0x1c] + bl FUN_0201AB14 + add r6, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_0201AB18 + add r7, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_0201AB0C + add r5, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_0201AB10 + str r5, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #1 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_020186B4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r1, #0x1e + add r0, r1, #0 + add r0, #0xfe + str r1, [r4, r0] + mov r0, #0x12 + add r1, #0xf6 + str r0, [r4, r1] + b _0222D994 +_0222D932: + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222D94A + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + add r1, #8 + sub r0, r0, #1 + str r0, [r4, r1] + b _0222D994 +_0222D94A: + ldr r0, _0222D9B8 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #3 + tst r0, r2 + beq _0222D994 + add r1, #0x10 + add r0, r4, r1 + bl FUN_02019178 + mov r0, #0x45 + mov r1, #0x13 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r1, _0222D9B8 ; =0x021C48B8 + add r0, #0xc + ldr r1, [r1, #0x48] + str r1, [r4, r0] + ldr r0, _0222D9BC ; =0x000005DC + bl FUN_020054C8 + b _0222D994 +_0222D974: + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x45 + mov r1, #0xf + lsl r0, r0, #2 + str r1, [r4, r0] +_0222D994: + mov r0, #1 + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222D99C: .word 0x00006B5A +_0222D9A0: .word 0x05000042 +_0222D9A4: .word 0x0223A7F0 +_0222D9A8: .word 0x0223A804 +_0222D9AC: .word 0x0223A818 +_0222D9B0: .word 0x0223A82C +_0222D9B4: .word 0x0223A840 +_0222D9B8: .word 0x021C48B8 +_0222D9BC: .word 0x000005DC + thumb_func_end MOD83_0222D7E0 + + thumb_func_start MOD83_0222D9C0 +MOD83_0222D9C0: ; 0x0222D9C0 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x42 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, r1 + beq _0222DA48 + sub r1, r1, r0 + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #2 + asr r2, r0, #0x1f + add r1, r0, #0 + eor r1, r2 + sub r2, r1, r2 + mov r1, #3 + lsl r1, r1, #0xe + cmp r2, r1 + ble _0222D9F6 + cmp r0, #0 + ble _0222D9F4 + add r0, r1, #0 + b _0222D9F6 +_0222D9F4: + ldr r0, _0222DA4C ; =0xFFFF4000 +_0222D9F6: + mov r1, #0x41 + lsl r1, r1, #2 + ldr r2, [r4, r1] + add r0, r2, r0 + str r0, [r4, r1] + add r0, r1, #4 + ldr r0, [r4, r0] + ldr r2, [r4, r1] + sub r2, r0, r2 + asr r3, r2, #0x1f + eor r2, r3 + sub r3, r2, r3 + add r2, r1, #0 + add r2, #0xfc + cmp r3, r2 + bge _0222DA18 + str r0, [r4, r1] +_0222DA18: + mov r3, #0x41 + lsl r3, r3, #2 + ldr r5, [r4, r3] + ldr r0, [r4] + asr r3, r5, #0xb + lsr r3, r3, #0x14 + add r3, r5, r3 + mov r1, #0 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_0201AEE4 + mov r3, #0x41 + lsl r3, r3, #2 + ldr r0, [r4] + ldr r4, [r4, r3] + mov r1, #2 + asr r3, r4, #0xb + lsr r3, r3, #0x14 + add r3, r4, r3 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_0201AEE4 +_0222DA48: + pop {r3, r4, r5, pc} + nop +_0222DA4C: .word 0xFFFF4000 + thumb_func_end MOD83_0222D9C0 + + thumb_func_start MOD83_0222DA50 +MOD83_0222DA50: ; 0x0222DA50 + push {r3, r4, r5, lr} + sub sp, #0x40 + ldr r5, _0222DB4C ; =0x0223A380 + add r4, r0, #0 + add r3, sp, #0x18 + mov r2, #5 +_0222DA5C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DA5C + ldr r3, _0222DB50 ; =0x0223A370 + add r2, sp, #8 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, sp, #0x18 + bl FUN_0201E66C + add r0, sp, #8 + bl FUN_02016BBC + mov r1, #0 + str r1, [sp] + mov r3, #0xf + ldr r0, [r4] + mov r2, #2 + lsl r3, r3, #0xc + bl MOD83_022387D8 + ldr r1, _0222DB54 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + mov r3, #0x51 + bic r2, r0 + mov r0, #2 + orr r0, r2 + strh r0, [r1] + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + mov r0, #2 + lsl r0, r0, #0xe + str r0, [sp] + mov r1, #1 + mov r3, #0x36 + ldr r0, [r4] + add r2, r1, #0 + lsl r3, r3, #0xa + bl MOD83_022387D8 + ldr r1, _0222DB58 ; =0x0400000A + mov r0, #3 + ldrh r2, [r1] + mov r3, #0x51 + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #0 + str r0, [sp] + mov r1, #2 + mov r3, #0xe + ldr r0, [r4] + add r2, r1, #0 + lsl r3, r3, #0xc + bl MOD83_022387D8 + ldr r1, _0222DB5C ; =0x0400000C + mov r0, #3 + ldrh r2, [r1] + mov r3, #0x51 + bic r2, r0 + strh r2, [r1] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + bl FUN_0201BD5C + mov r0, #0 + mov r1, #0x20 + mov r2, #0x51 + bl FUN_02002ED0 + mov r0, #0 + add r1, r0, #0 + mov r2, #0x51 + bl FUN_02002ED0 + mov r2, #5 + mov r1, #0 + lsl r2, r2, #0x18 + ldr r0, _0222DB60 ; =0x00006B5A + strh r1, [r2] + strh r0, [r2, #0x3e] + str r1, [sp] + mov r0, #0x51 + str r0, [sp, #4] + ldr r0, [r4] + mov r2, #1 + mov r3, #2 + bl FUN_0200CB00 + mov r0, #1 + str r0, [sp] + mov r0, #0x51 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #0 + mov r2, #0xa + mov r3, #3 + bl FUN_0200CB00 + ldr r1, _0222DB60 ; =0x00006B5A + ldr r0, _0222DB64 ; =0x05000042 + strh r1, [r0] + add sp, #0x40 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222DB4C: .word 0x0223A380 +_0222DB50: .word 0x0223A370 +_0222DB54: .word 0x04000008 +_0222DB58: .word 0x0400000A +_0222DB5C: .word 0x0400000C +_0222DB60: .word 0x00006B5A +_0222DB64: .word 0x05000042 + thumb_func_end MOD83_0222DA50 + + thumb_func_start MOD83_0222DB68 +MOD83_0222DB68: ; 0x0222DB68 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + bl MOD83_02238AFC + bl MOD83_02238B4C + mov r0, #0x25 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0x27 + mov r2, #0x24 + mov r3, #0x26 + bl MOD83_02238BC4 + mov r0, #0 + mov r1, #0x15 + str r0, [sp] + lsl r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x80 + mov r3, #8 + bl MOD83_02238DBC + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #1 + mov r1, #0x55 + str r0, [sp] + lsl r1, r1, #2 + ldr r1, [r4, r1] + mov r0, #0 + mov r2, #0x80 + mov r3, #0xb8 + bl MOD83_02238DBC + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + add sp, #8 + pop {r4, pc} + thumb_func_end MOD83_0222DB68 + + thumb_func_start MOD83_0222DBD0 +MOD83_0222DBD0: ; 0x0222DBD0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x51 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0x29 + mov r2, #0 + mov r3, #0x80 + bl FUN_02006930 + mov r0, #0xe + lsl r0, r0, #6 + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x51 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x74 + mov r1, #0x28 + mov r3, #2 + bl FUN_0200687C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_0222DBD0 + + thumb_func_start MOD83_0222DC10 +MOD83_0222DC10: ; 0x0222DC10 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #2 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_0201886C + ldr r1, _0222DC5C ; =0x00004380 + cmp r7, #2 + bne _0222DC2A + add r1, r1, #2 +_0222DC2A: + lsl r2, r6, #5 + add r3, r4, r2 + lsl r2, r3, #1 + add r3, r3, #1 + strh r1, [r0, r2] + add r2, r1, #1 + lsl r3, r3, #1 + strh r2, [r0, r3] + add r3, r1, #0 + add r2, r6, #1 + lsl r2, r2, #5 + add r4, r4, r2 + add r3, #8 + lsl r2, r4, #1 + strh r3, [r0, r2] + add r2, r4, #1 + add r1, #9 + lsl r2, r2, #1 + strh r1, [r0, r2] + ldr r0, [r5] + mov r1, #2 + bl FUN_02017CD0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222DC5C: .word 0x00004380 + thumb_func_end MOD83_0222DC10 + + thumb_func_start MOD83_0222DC60 +MOD83_0222DC60: ; 0x0222DC60 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r6, r2, #0 + mov r1, #2 + bl FUN_0201886C + lsl r1, r6, #5 + add r3, r4, r1 + ldr r1, _0222DC9C ; =0x00004384 + lsl r2, r3, #1 + strh r1, [r0, r2] + add r2, r3, #1 + lsl r2, r2, #1 + strh r1, [r0, r2] + add r2, r6, #1 + lsl r2, r2, #5 + add r3, r4, r2 + lsl r2, r3, #1 + strh r1, [r0, r2] + add r2, r3, #1 + lsl r2, r2, #1 + strh r1, [r0, r2] + ldr r0, [r5] + mov r1, #2 + bl FUN_02017CD0 + pop {r4, r5, r6, pc} + nop +_0222DC9C: .word 0x00004384 + thumb_func_end MOD83_0222DC60 + + thumb_func_start MOD83_0222DCA0 +MOD83_0222DCA0: ; 0x0222DCA0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + add r0, r2, #0 + add r7, r3, #0 + ldr r2, [sp, #0x28] + mov r3, #0x51 + bl FUN_0200A9C4 + add r5, r0, #0 + mov r0, #0 + mov r1, #2 + bl FUN_02002E4C + add r2, r0, #0 + mov r0, #0 + add r1, r5, #0 + bl FUN_02002E14 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_0201AB0C + lsl r0, r0, #3 + add r4, #0x20 + sub r3, r0, r4 + ldr r0, [sp, #0x2c] + mov r1, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r7, [sp, #8] + add r0, r6, #0 + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_0222DCA0 + + thumb_func_start MOD83_0222DCF4 +MOD83_0222DCF4: ; 0x0222DCF4 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + cmp r2, #0x64 + blt _0222DD04 + mov r3, #3 + mov r1, #0 + b _0222DD12 +_0222DD04: + cmp r2, #0xa + blt _0222DD0E + mov r3, #3 + mov r1, #1 + b _0222DD12 +_0222DD0E: + mov r3, #2 + mov r1, #1 +_0222DD12: + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_0222DCF4 + + thumb_func_start MOD83_0222DD24 +MOD83_0222DD24: ; 0x0222DD24 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r2, [sp, #0x18] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r4, r3, #0 + ldr r2, _0222DEB4 ; =0x000001EE + mov r0, #1 + mov r1, #0x1a + mov r3, #0x51 + bl FUN_0200A86C + str r0, [sp, #0x24] + mov r0, #0x51 + bl FUN_0200AA80 + str r0, [sp, #0x28] + ldr r0, [sp, #0x10] + ldr r0, [r0, #0xc] + bl FUN_020239CC + cmp r0, #1 + bne _0222DD58 + ldr r0, _0222DEB8 ; =0x0003040F + str r0, [sp, #0x1c] + b _0222DD5C +_0222DD58: + ldr r0, _0222DEBC ; =0x0007080F + str r0, [sp, #0x1c] +_0222DD5C: + ldr r0, [sp, #0x14] + ldr r1, _0222DEC0 ; =0x0223A85C + lsl r0, r0, #4 + str r0, [sp, #0x20] + ldr r0, [r1, r0] + ldr r1, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x10] + mov r2, #3 + ldr r0, [r0] + add r3, r4, #0 + bl MOD83_02238A38 + ldr r4, _0222DEC4 ; =0x0223A784 + mov r6, #1 + mov r5, #0x10 +_0222DD7C: + cmp r6, #4 + bne _0222DD88 + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x4c] + cmp r0, #0 + beq _0222DDB8 +_0222DD88: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + ldr r2, [r4] + mov r3, #0x51 + bl FUN_0200A9C4 + add r7, r0, #0 + str r5, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + add r2, r7, #0 + ldr r0, [r0, #0x10] + mov r3, #0x20 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 +_0222DDB8: + add r6, r6, #1 + add r4, r4, #4 + add r5, #0x10 + cmp r6, #5 + blo _0222DD7C + ldr r2, [sp, #0x10] + ldr r0, [sp, #0x28] + ldr r2, [r2, #0xc] + mov r1, #0 + bl FUN_0200ABC0 + mov r0, #0x10 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x24] + ldr r0, [r0, #0x10] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x1c] + bl MOD83_0222DCA0 + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x10] + bl FUN_02029EBC + add r1, r0, #0 + ldr r0, [sp, #0x28] + bl MOD83_0222DCF4 + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x10] + bl FUN_02029EC0 + add r2, r0, #0 + mov r3, #2 + ldr r0, [sp, #0x28] + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + bl FUN_0200AD38 + mov r0, #0x11 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x24] + ldr r0, [r0, #0x10] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x1c] + bl MOD83_0222DCA0 + mov r1, #0 + str r1, [sp] + mov r3, #1 + ldr r2, [sp, #0x10] + str r3, [sp, #4] + ldr r0, [sp, #0x28] + ldr r2, [r2, #0x50] + bl FUN_0200AD38 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x30 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x24] + ldr r0, [r0, #0x10] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x1c] + bl MOD83_0222DCA0 + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x4c] + cmp r0, #0 + beq _0222DE76 + ldr r0, [sp, #0x10] + ldr r0, [r0, #8] + bl FUN_02024440 + add r1, r0, #0 + ldr r0, [sp, #0x28] + bl MOD83_0222DCF4 + mov r0, #0x12 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x24] + ldr r0, [r0, #0x10] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x1c] + bl MOD83_0222DCA0 +_0222DE76: + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x18] + ldr r0, [sp, #0x18] + ldr r2, [r2, #0x38] + ldr r3, [r3, #0x3c] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [r0, #0x10] + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_0200CCA4 + ldr r1, _0222DEC8 ; =0x0223A854 + ldr r0, [sp, #0x20] + ldr r2, [r1, r0] + ldr r0, [sp, #0x14] + lsl r1, r0, #2 + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r0, #0xcc + str r2, [r0] + ldr r0, [sp, #0x28] + bl FUN_0200AB18 + ldr r0, [sp, #0x24] + bl FUN_0200A8B8 + mov r0, #1 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222DEB4: .word 0x000001EE +_0222DEB8: .word 0x0003040F +_0222DEBC: .word 0x0007080F +_0222DEC0: .word 0x0223A85C +_0222DEC4: .word 0x0223A784 +_0222DEC8: .word 0x0223A854 + thumb_func_end MOD83_0222DD24 + + thumb_func_start MOD83_0222DECC +MOD83_0222DECC: ; 0x0222DECC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r0, #0 + add r5, r1, #0 + add r1, r2, #0 + ldr r2, [r4, #0x24] + add r6, r3, #0 + cmp r2, #0 + bne _0222DEE4 + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0222DEE4: + sub r2, r2, #1 + cmp r2, #4 + bhi _0222DF12 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0222DEF6: ; jump table + .short _0222DF00 - _0222DEF6 - 2 ; case 0 + .short _0222DF04 - _0222DEF6 - 2 ; case 1 + .short _0222DF08 - _0222DEF6 - 2 ; case 2 + .short _0222DF0C - _0222DEF6 - 2 ; case 3 + .short _0222DF10 - _0222DEF6 - 2 ; case 4 +_0222DF00: + mov r0, #4 + b _0222DF12 +_0222DF04: + mov r0, #5 + b _0222DF12 +_0222DF08: + mov r0, #6 + b _0222DF12 +_0222DF0C: + mov r0, #7 + b _0222DF12 +_0222DF10: + mov r0, #8 +_0222DF12: + str r0, [sp] + ldr r0, [r4] + mov r2, #3 + add r3, r6, #0 + bl MOD83_02238A38 + add r0, r4, #0 + mov r1, #0x1a + add r2, r6, #0 + bl MOD83_0222DC60 + ldr r0, _0222DF3C ; =0x0223A854 + lsl r1, r5, #4 + ldr r1, [r0, r1] + lsl r0, r5, #2 + add r0, r4, r0 + add r0, #0xcc + str r1, [r0] + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222DF3C: .word 0x0223A854 + thumb_func_end MOD83_0222DECC + + thumb_func_start MOD83_0222DF40 +MOD83_0222DF40: ; 0x0222DF40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x34] + add r4, r1, #0 + add r7, r3, #0 + str r2, [sp, #4] + cmp r0, #0 + bne _0222DF88 + ldr r0, [r5, #0x14] + bl FUN_0202AF50 + cmp r0, #1 + bne _0222DF60 + mov r0, #1 + str r0, [r5, #0x34] +_0222DF60: + ldr r0, [r5, #4] + bl FUN_02023788 + bl FUN_02023820 + cmp r0, #1 + bne _0222DF72 + mov r0, #1 + str r0, [r5, #0x34] +_0222DF72: + mov r0, #0x51 + bl MOD83_022385FC + bl MOD83_02238700 + cmp r0, #0 + beq _0222DF88 + mov r0, #1 + str r0, [r5, #0x34] + bl MOD83_02239450 +_0222DF88: + ldr r0, [r5, #0x34] + cmp r0, #1 + bne _0222DF98 + ldr r0, [r5, #0x4c] + cmp r0, #0 + bne _0222DF98 + mov r0, #0 + str r0, [r5, #0x34] +_0222DF98: + ldr r0, [r5, #0x34] + cmp r0, #1 + bne _0222DFDC + ldr r0, _0222DFE4 ; =0x0223A85C + lsl r6, r4, #4 + ldr r0, [r0, r6] + ldr r1, [sp, #4] + str r0, [sp] + ldr r0, [r5] + mov r2, #3 + add r3, r7, #0 + bl MOD83_02238A38 + add r0, r5, #0 + mov r1, #0x1a + add r2, r7, #0 + bl MOD83_0222DC60 + ldr r0, _0222DFE8 ; =0x0223A854 + ldr r1, [r0, r6] + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xcc + str r1, [r0] + ldr r1, [r5, #0x38] + mov r0, #1 + orr r0, r1 + str r0, [r5, #0x38] + ldr r0, [r5, #0x14] + bl FUN_0202AF60 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222DFDC: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222DFE4: .word 0x0223A85C +_0222DFE8: .word 0x0223A854 + thumb_func_end MOD83_0222DF40 + + thumb_func_start MOD83_0222DFEC +MOD83_0222DFEC: ; 0x0222DFEC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + add r4, r1, #0 + add r7, r3, #0 + cmp r0, #1 + bne _0222E03C + ldr r0, [r5, #0x4c] + cmp r0, #1 + bne _0222E03C + ldr r0, _0222E040 ; =0x0223A85C + lsl r6, r4, #4 + ldr r0, [r0, r6] + add r1, r2, #0 + str r0, [sp] + ldr r0, [r5] + mov r2, #3 + bl MOD83_02238A38 + add r0, r5, #0 + mov r1, #0x1a + add r2, r7, #0 + mov r3, #1 + bl MOD83_0222DC10 + lsl r3, r4, #2 + add r1, r5, r3 + mov r0, #1 + add r1, #0xe8 + str r0, [r1] + ldr r1, _0222E044 ; =0x0223A854 + ldr r2, [r1, r6] + add r1, r5, r3 + add r1, #0xcc + str r2, [r1] + ldr r2, [r5, #0x38] + mov r1, #2 + orr r1, r2 + str r1, [r5, #0x38] + pop {r3, r4, r5, r6, r7, pc} +_0222E03C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E040: .word 0x0223A85C +_0222E044: .word 0x0223A854 + thumb_func_end MOD83_0222DFEC + + thumb_func_start MOD83_0222E048 +MOD83_0222E048: ; 0x0222E048 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + add r5, r1, #0 + add r7, r3, #0 + cmp r0, #1 + bne _0222E08A + ldr r0, _0222E090 ; =0x0223A85C + lsl r6, r5, #4 + ldr r0, [r0, r6] + add r1, r2, #0 + str r0, [sp] + ldr r0, [r4] + mov r2, #3 + bl MOD83_02238A38 + lsl r5, r5, #2 + add r0, r4, r5 + mov r3, #1 + add r0, #0xe8 + str r3, [r0] + add r0, r4, #0 + mov r1, #0x1a + add r2, r7, #0 + bl MOD83_0222DC10 + ldr r0, _0222E094 ; =0x0223A854 + ldr r1, [r0, r6] + add r0, r4, r5 + add r0, #0xcc + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222E08A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E090: .word 0x0223A85C +_0222E094: .word 0x0223A854 + thumb_func_end MOD83_0222E048 + + thumb_func_start MOD83_0222E098 +MOD83_0222E098: ; 0x0222E098 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, _0222E0D4 ; =0x0223A85C + lsl r6, r4, #4 + ldr r0, [r0, r6] + add r1, r2, #0 + str r0, [sp] + ldr r0, [r5] + mov r2, #3 + add r7, r3, #0 + bl MOD83_02238A38 + lsl r4, r4, #2 + add r0, r5, r4 + mov r3, #2 + add r0, #0xe8 + str r3, [r0] + add r0, r5, #0 + mov r1, #0x1a + add r2, r7, #0 + bl MOD83_0222DC10 + ldr r0, _0222E0D8 ; =0x0223A854 + ldr r1, [r0, r6] + add r0, r5, r4 + add r0, #0xcc + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E0D4: .word 0x0223A85C +_0222E0D8: .word 0x0223A854 + thumb_func_end MOD83_0222E098 + + thumb_func_start MOD83_0222E0DC +MOD83_0222E0DC: ; 0x0222E0DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0x13 + str r0, [r7, #0x20] + ldr r0, [sp, #0xc] + ldr r4, _0222E1F0 ; =0x0223A854 + str r0, [sp, #0x10] + add r0, r7, #0 + str r0, [sp, #8] + add r0, #0x5c + str r0, [sp, #8] + add r0, r7, #0 + str r0, [sp, #0x14] + add r0, #0x20 + mov r5, #1 + str r7, [sp, #0x18] + str r0, [sp, #0x14] +_0222E104: + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r3, _0222E1F4 ; =0x000001EE + add r0, sp, #0x1c + mov r2, #1 + bl MOD83_022388E4 + ldr r2, [r4, #4] + ldr r3, [r7, #0x20] + add r0, sp, #0x1c + mov r1, #0x1a + bl MOD83_02238934 + ldr r0, [r4, #0xc] + mov ip, r0 + cmp r0, #0 + beq _0222E1A4 + ldr r0, [sp, #0x18] + add r0, #0xcc + ldr r0, [r0] + cmp r0, #0 + beq _0222E188 + ldr r0, [sp, #0x2c] + mov r1, #3 + bl FUN_0201AB1C + lsl r1, r5, #0x18 + ldr r0, [sp, #0x2c] + lsr r1, r1, #0x18 + bl FUN_0201AB20 + ldr r2, [sp, #0x54] + ldr r3, [sp, #0x58] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x2c] + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_0200CCA4 + ldr r0, [sp, #0x18] + add r0, #0xe8 + ldr r3, [r0] + cmp r3, #0 + beq _0222E172 + add r0, r7, #0 + mov r1, #0x1a + add r2, r5, #0 + bl MOD83_0222DC10 + b _0222E17C +_0222E172: + add r0, r7, #0 + mov r1, #0x1a + add r2, r5, #0 + bl MOD83_0222DC60 +_0222E17C: + ldr r0, [r4, #4] + add r0, r0, #2 + add r5, r5, r0 + mov r0, #1 + str r0, [sp, #0xc] + b _0222E1C2 +_0222E188: + ldr r1, [sp, #0x10] + add r0, r7, #0 + add r2, sp, #0x1c + add r3, r5, #0 + mov r6, ip + blx r6 + cmp r0, #1 + bne _0222E1C2 + ldr r0, [r4, #4] + add r0, r0, #2 + add r5, r5, r0 + mov r0, #1 + str r0, [sp, #0xc] + b _0222E1C2 +_0222E1A4: + ldr r0, [r4, #8] + add r1, sp, #0x1c + str r0, [sp] + ldr r0, [r7] + mov r2, #3 + add r3, r5, #0 + bl MOD83_02238A38 + ldr r0, [sp, #0x18] + ldr r1, [r4] + add r0, #0xcc + str r1, [r0] + ldr r0, [r4, #4] + add r0, r0, #2 + add r5, r5, r0 +_0222E1C2: + ldr r0, [sp, #0x14] + ldr r1, [r4, #4] + ldr r2, [r0] + mov r0, #0x1a + mul r0, r1 + add r1, r2, r0 + ldr r0, [sp, #0x14] + add r4, #0x10 + str r1, [r0] + ldr r0, [sp, #8] + add r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #7 + blo _0222E104 + ldr r0, [sp, #0xc] + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E1F0: .word 0x0223A854 +_0222E1F4: .word 0x000001EE + thumb_func_end MOD83_0222E0DC + + thumb_func_start MOD83_0222E1F8 +MOD83_0222E1F8: ; 0x0222E1F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r6, r0, #0 + add r5, r6, #0 + str r1, [sp, #0xc] + mov r4, #0 + add r5, #0x5c +_0222E206: + add r0, r5, #0 + bl FUN_02019048 + cmp r0, #0 + beq _0222E294 + ldr r0, [sp, #0xc] + cmp r4, r0 + bne _0222E256 + add r0, r5, #0 + mov r1, #1 + mov r2, #0xa + mov r3, #3 + bl FUN_0200CCA4 + add r0, r5, #0 + bl FUN_0201AB14 + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0201AB18 + str r0, [sp, #0x14] + add r0, r5, #0 + bl FUN_0201AB0C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0201AB10 + str r7, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r6] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + mov r1, #0 + bl FUN_020186B4 + b _0222E294 +_0222E256: + mov r1, #1 + add r0, r5, #0 + add r2, r1, #0 + mov r3, #2 + bl FUN_0200CCA4 + add r0, r5, #0 + bl FUN_0201AB14 + str r0, [sp, #0x18] + add r0, r5, #0 + bl FUN_0201AB18 + str r0, [sp, #0x1c] + add r0, r5, #0 + bl FUN_0201AB0C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0201AB10 + str r7, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r6] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + mov r1, #0 + bl FUN_020186B4 +_0222E294: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #7 + blo _0222E206 + ldr r0, [r6] + mov r1, #0 + bl FUN_02017CD0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_0222E1F8 + + thumb_func_start MOD83_0222E2A8 +MOD83_0222E2A8: ; 0x0222E2A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r2, r1, #0 + ldr r1, [r5, #0x54] + mov r7, #6 + add r4, r1, #0 + mov r0, #0 + sub r6, r7, #7 +_0222E2B8: + add r4, r4, r2 + cmp r4, r6 + bne _0222E2C0 + add r4, r0, #0 +_0222E2C0: + cmp r4, #7 + bne _0222E2C6 + add r4, r7, #0 +_0222E2C6: + cmp r4, r1 + beq _0222E2DC + lsl r3, r4, #2 + add r3, r5, r3 + add r3, #0xcc + ldr r3, [r3] + cmp r3, #0 + beq _0222E2B8 + ldr r0, _0222E2E0 ; =0x000005DC + bl FUN_020054C8 +_0222E2DC: + str r4, [r5, #0x54] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E2E0: .word 0x000005DC + thumb_func_end MOD83_0222E2A8 + + thumb_func_start MOD83_0222E2E4 +MOD83_0222E2E4: ; 0x0222E2E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x54] + add r1, r5, #0 + add r1, #0x5c + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_0201AB18 + sub r0, r0, #1 + lsl r4, r0, #3 + ldr r0, [r5, #0x54] + add r1, r5, #0 + add r1, #0x5c + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_0201AB10 + add r0, r0, #2 + lsl r3, r0, #3 + mov r0, #0x42 + lsl r0, r0, #2 + ldr r2, [r5, r0] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r2, r1, #0xc + cmp r2, r4 + ble _0222E322 + lsl r1, r4, #0xc + str r1, [r5, r0] +_0222E322: + add r2, #0xc0 + cmp r2, r4 + bgt _0222E334 + add r0, r4, r3 + sub r0, #0xc0 + lsl r1, r0, #0xc + mov r0, #0x42 + lsl r0, r0, #2 + str r1, [r5, r0] +_0222E334: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD83_0222E2E4 + + thumb_func_start MOD83_0222E338 +MOD83_0222E338: ; 0x0222E338 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0x42 + ldr r0, [sp] + lsl r1, r1, #2 + ldr r1, [r0, r1] + ldr r5, [sp] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r7, r0, #0xc + add r0, r7, #0 + str r0, [sp, #0xc] + add r0, #0xc0 + ldr r6, [sp, #4] + add r5, #0x5c + str r0, [sp, #0xc] +_0222E362: + add r0, r5, #0 + bl FUN_02019048 + cmp r0, #0 + beq _0222E38E + add r0, r5, #0 + bl FUN_0201AB18 + sub r0, r0, #1 + lsl r4, r0, #3 + add r0, r5, #0 + bl FUN_0201AB10 + cmp r7, r4 + ble _0222E384 + mov r0, #1 + str r0, [sp, #8] +_0222E384: + ldr r0, [sp, #0xc] + cmp r0, r4 + bgt _0222E38E + mov r0, #1 + str r0, [sp, #4] +_0222E38E: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #7 + blo _0222E362 + mov r1, #0x15 + ldr r0, [sp] + lsl r1, r1, #4 + ldr r0, [r0, r1] + ldr r1, [sp, #8] + bl FUN_020200A0 + mov r1, #0x55 + ldr r0, [sp] + lsl r1, r1, #2 + ldr r0, [r0, r1] + ldr r1, [sp, #4] + bl FUN_020200A0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD83_0222E338 + + thumb_func_start MOD83_0222E3B8 +MOD83_0222E3B8: ; 0x0222E3B8 + push {r3, r4, r5, r6, r7, lr} + bl FUN_02006278 + mov r1, #0x15 + add r7, r0, #0 + lsl r1, r1, #4 + ldr r0, [r7, r1] + cmp r0, #0 + bne _0222E3D2 + add r1, r1, #4 + ldr r1, [r7, r1] + cmp r1, #0 + beq _0222E3E4 +_0222E3D2: + bl FUN_0201FFC8 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_0201FFC8 + bl MOD83_02238E48 +_0222E3E4: + add r5, r7, #0 + mov r6, #0 + add r4, r7, #0 + add r5, #0x5c +_0222E3EC: + ldr r0, [r4, #0x5c] + cmp r0, #0 + beq _0222E3FE + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 +_0222E3FE: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #7 + blo _0222E3EC + ldr r0, [r7] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r7] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r7] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r7] + bl FUN_02016A18 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_0222E3B8 + + thumb_func_start MOD83_0222E430 +MOD83_0222E430: ; 0x0222E430 + mov r1, #0x56 + lsl r1, r1, #2 + ldr r2, [r0, r1] + lsl r3, r2, #1 + ldr r2, _0222E45C ; =0x0223A7B0 + ldrh r2, [r2, r3] + cmp r2, #0 + bne _0222E444 + mov r2, #0 + str r2, [r0, r1] +_0222E444: + mov r1, #0x56 + lsl r1, r1, #2 + ldr r3, [r0, r1] + add r2, r3, #1 + str r2, [r0, r1] + ldr r0, _0222E45C ; =0x0223A7B0 + lsl r1, r3, #1 + ldrh r1, [r0, r1] + ldr r0, _0222E460 ; =0x0500006C + strh r1, [r0] + bx lr + nop +_0222E45C: .word 0x0223A7B0 +_0222E460: .word 0x0500006C + thumb_func_end MOD83_0222E430 + + thumb_func_start MOD83_0222E464 +MOD83_0222E464: ; 0x0222E464 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201C30C + bl FUN_02009F80 + add r0, r4, #0 + bl FUN_0201AB60 + ldr r3, _0222E484 ; =0x027E0000 + ldr r1, _0222E488 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_0222E484: .word 0x027E0000 +_0222E488: .word 0x00003FF8 + thumb_func_end MOD83_0222E464 + + thumb_func_start MOD83_0222E48C +MOD83_0222E48C: ; 0x0222E48C + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x51 + lsl r2, r2, #0x12 + bl FUN_0201681C + mov r1, #0x57 + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #0x51 + bl FUN_02006268 + mov r2, #0x57 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x51 + bl FUN_02016B94 + str r0, [r4] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl FUN_0200628C + ldr r0, [r0, #8] + str r0, [r4, #4] + bl FUN_0202251C + str r0, [r4, #0x14] + mov r0, #0x41 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, [r4, #4] + bl FUN_020238F4 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + bl FUN_02024DA0 + str r0, [r4, #8] + ldr r0, [r4, #4] + bl FUN_02023918 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + bl FUN_02024D64 + str r0, [r4, #0x4c] + ldr r0, [r4, #0xc] + bl FUN_020239F4 + str r0, [r4, #0x50] + mov r0, #0x45 + mov r1, #0xf + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0x51 + bl MOD83_02238770 + ldr r0, [r4, #4] + bl FUN_02022804 + cmp r0, #0 + bne _0222E530 + mov r0, #0x4d + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] +_0222E530: + mov r0, #0 + bl FUN_0200516C + mov r0, #0 + bl FUN_0200415C + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD83_0222E48C + + thumb_func_start MOD83_0222E540 +MOD83_0222E540: ; 0x0222E540 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + bl CTRDG_IsExisting + add r0, r4, #0 + bl MOD83_0222D7E0 + cmp r0, #1 + bne _0222E570 + add r0, r4, #0 + bl MOD83_0222D6EC + add r0, r4, #0 + bl MOD83_0222D9C0 + mov r0, #0 + pop {r4, r5, r6, pc} +_0222E570: + add r0, r4, #0 + bl MOD83_0222E430 + ldr r0, [r5] + cmp r0, #9 + bhi _0222E5D8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E588: ; jump table + .short _0222E59C - _0222E588 - 2 ; case 0 + .short _0222E5A8 - _0222E588 - 2 ; case 1 + .short _0222E5CE - _0222E588 - 2 ; case 2 + .short _0222E5E8 - _0222E588 - 2 ; case 3 + .short _0222E616 - _0222E588 - 2 ; case 4 + .short _0222E656 - _0222E588 - 2 ; case 5 + .short _0222E74A - _0222E588 - 2 ; case 6 + .short _0222E772 - _0222E588 - 2 ; case 7 + .short _0222E77C - _0222E588 - 2 ; case 8 + .short _0222E784 - _0222E588 - 2 ; case 9 +_0222E59C: + add r0, r4, #0 + bl MOD83_0222DA50 + mov r0, #1 + str r0, [r5] + b _0222E788 +_0222E5A8: + add r0, r4, #0 + bl MOD83_0222D5C0 + cmp r0, #0 + bne _0222E5B8 + mov r0, #3 + str r0, [r5] + b _0222E788 +_0222E5B8: + mov r0, #1 + mov r1, #2 + add r2, r5, #0 + mov r3, #8 + bl MOD83_0223886C + mov r0, #5 + ldr r1, _0222E79C ; =0x00007D8C + lsl r0, r0, #0x18 + strh r1, [r0] + b _0222E788 +_0222E5CE: + add r0, r4, #0 + bl MOD83_0222D5C4 + cmp r0, #0 + beq _0222E5DA +_0222E5D8: + b _0222E788 +_0222E5DA: + mov r0, #0 + mov r1, #3 + add r2, r5, #0 + mov r3, #8 + bl MOD83_0223886C + b _0222E788 +_0222E5E8: + mov r0, #0x43 + mov r1, #0xc + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, #0x28 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222E60A + mov r0, #2 + str r0, [r4, #0x58] + mov r0, #0 + mov r1, #7 + add r2, r5, #0 + mov r3, #8 + bl MOD83_0223886C + b _0222E788 +_0222E60A: + add r0, r4, #0 + bl MOD83_0222D67C + mov r0, #4 + str r0, [r5] + b _0222E788 +_0222E616: + add r0, r4, #0 + bl MOD83_0222DB68 + add r0, r4, #0 + bl MOD83_0222DBD0 + ldr r0, _0222E7A0 ; =MOD83_0222E464 + ldr r1, [r4] + bl FUN_02015F10 + add r0, r4, #0 + bl MOD83_0222E0DC + ldr r1, [r4, #0x54] + add r0, r4, #0 + bl MOD83_0222E1F8 + mov r0, #1 + mov r1, #5 + add r2, r5, #0 + mov r3, #8 + bl MOD83_0223886C + mov r0, #5 + ldr r1, _0222E79C ; =0x00007D8C + lsl r0, r0, #0x18 + strh r1, [r0] + mov r0, #0x43 + mov r1, #0xa + lsl r0, r0, #2 + str r1, [r4, r0] + b _0222E788 +_0222E656: + ldr r0, _0222E7A4 ; =0x021C48B8 + mov r1, #3 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _0222E6E8 + mov r1, #1 + tst r0, r1 + ldr r0, _0222E7A8 ; =0x000005DC + beq _0222E69A + bl FUN_020054C8 + ldr r0, [r4, #0x54] + lsl r0, r0, #2 + add r0, r4, r0 + add r0, #0xcc + ldr r0, [r0] + str r0, [r4, #0x58] + cmp r0, #5 + bne _0222E6A8 + bl CTRDG_IsPulledOut + cmp r0, #1 + bne _0222E6A8 + mov r0, #0x43 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0xc + beq _0222E692 + bl FUN_02032D80 +_0222E692: + mov r0, #0x51 + bl FUN_02089F24 + b _0222E6A8 +_0222E69A: + bl FUN_020054C8 + mov r0, #0 + str r0, [r4, #0x58] + mov r0, #1 + bl MOD83_02238860 +_0222E6A8: + ldr r0, [r4, #0x58] + cmp r0, #2 + bne _0222E6C2 + ldr r1, [r4, #0x40] + mov r0, #0x80 + orr r1, r0 + str r1, [r4, #0x40] + mov r1, #1 + add r0, #0x98 + str r1, [r4, r0] + mov r0, #6 + str r0, [r5] + b _0222E6D8 +_0222E6C2: + cmp r0, #6 + bne _0222E6CC + mov r0, #1 + bl MOD83_02238860 +_0222E6CC: + mov r0, #0 + mov r1, #7 + add r2, r5, #0 + mov r3, #8 + bl MOD83_0223886C +_0222E6D8: + mov r0, #0x43 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0xd + bne _0222E788 + mov r1, #0xe + str r1, [r4, r0] + b _0222E788 +_0222E6E8: + ldr r1, [r4, #0x48] + cmp r1, #1 + bne _0222E6FA + add r0, r4, #0 + bl MOD83_0222E0DC + mov r0, #0 + str r0, [r4, #0x48] + b _0222E788 +_0222E6FA: + mov r1, #0x40 + tst r0, r1 + beq _0222E708 + add r0, r4, #0 + sub r1, #0x41 + bl MOD83_0222E2A8 +_0222E708: + ldr r0, _0222E7A4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x80 + tst r0, r1 + beq _0222E71A + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222E2A8 +_0222E71A: + ldr r1, [r4, #0x54] + add r0, r4, #0 + bl MOD83_0222E1F8 + add r0, r4, #0 + bl MOD83_0222E2E4 + add r0, r4, #0 + bl MOD83_0222E338 + ldr r0, [r5] + cmp r0, #5 + bne _0222E788 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #1 + bne _0222E788 + mov r1, #0 + str r1, [r4, r0] + mov r1, #1 + sub r0, #0x20 + str r1, [r4, r0] + b _0222E788 +_0222E74A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0xf + bne _0222E788 + add r0, #0xc + ldr r1, [r4, r0] + mov r0, #2 + tst r0, r1 + beq _0222E764 + mov r0, #5 + str r0, [r5] + b _0222E788 +_0222E764: + mov r0, #0 + mov r1, #7 + add r2, r5, #0 + mov r3, #8 + bl MOD83_0223886C + b _0222E788 +_0222E772: + add r0, r6, #0 + bl MOD83_0222E3B8 + mov r0, #1 + pop {r4, r5, r6, pc} +_0222E77C: + add r0, r5, #0 + bl MOD83_022388CC + b _0222E788 +_0222E784: + mov r0, #1 + pop {r4, r5, r6, pc} +_0222E788: + add r0, r4, #0 + bl MOD83_0222D6EC + add r0, r4, #0 + bl MOD83_0222D9C0 + bl MOD83_02238D58 + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222E79C: .word 0x00007D8C +_0222E7A0: .word MOD83_0222E464 +_0222E7A4: .word 0x021C48B8 +_0222E7A8: .word 0x000005DC + thumb_func_end MOD83_0222E540 + + thumb_func_start MOD83_0222E7AC +MOD83_0222E7AC: ; 0x0222E7AC + push {r3, lr} + ldr r0, [r0, #0x58] + cmp r0, #7 + bhi _0222E822 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E7C0: ; jump table + .short _0222E81A - _0222E7C0 - 2 ; case 0 + .short _0222E7D0 - _0222E7C0 - 2 ; case 1 + .short _0222E7DA - _0222E7C0 - 2 ; case 2 + .short _0222E7E4 - _0222E7C0 - 2 ; case 3 + .short _0222E7F8 - _0222E7C0 - 2 ; case 4 + .short _0222E7EE - _0222E7C0 - 2 ; case 5 + .short _0222E802 - _0222E7C0 - 2 ; case 6 + .short _0222E80A - _0222E7C0 - 2 ; case 7 +_0222E7D0: + ldr r0, _0222E824 ; =0x00000034 + ldr r1, _0222E828 ; =0x021D76C8 + bl FUN_02000E7C + pop {r3, pc} +_0222E7DA: + ldr r0, _0222E824 ; =0x00000034 + ldr r1, _0222E82C ; =0x021D76E8 + bl FUN_02000E7C + pop {r3, pc} +_0222E7E4: + ldr r0, _0222E830 ; =0x00000053 + ldr r1, _0222E834 ; =0x0223A434 + bl FUN_02000E7C + pop {r3, pc} +_0222E7EE: + ldr r0, _0222E830 ; =0x00000053 + ldr r1, _0222E838 ; =0x0223A4FC + bl FUN_02000E7C + pop {r3, pc} +_0222E7F8: + ldr r0, _0222E830 ; =0x00000053 + ldr r1, _0222E83C ; =0x0223A3A8 + bl FUN_02000E7C + pop {r3, pc} +_0222E802: + ldr r0, _0222E840 ; =0x0223A8C4 + bl FUN_020224D8 + pop {r3, pc} +_0222E80A: + bl FUN_0200541C + mov r0, #0 + ldr r1, _0222E844 ; =0x020FD6D4 + mvn r0, r0 + bl FUN_02000E7C + pop {r3, pc} +_0222E81A: + ldr r0, _0222E848 ; =0x0000003F + ldr r1, _0222E84C ; =0x021DBAB8 + bl FUN_02000E7C +_0222E822: + pop {r3, pc} + .align 2, 0 +_0222E824: .word 0x00000034 +_0222E828: .word 0x021D76C8 +_0222E82C: .word 0x021D76E8 +_0222E830: .word 0x00000053 +_0222E834: .word 0x0223A434 +_0222E838: .word 0x0223A4FC +_0222E83C: .word 0x0223A3A8 +_0222E840: .word 0x0223A8C4 +_0222E844: .word 0x020FD6D4 +_0222E848: .word 0x0000003F +_0222E84C: .word 0x021DBAB8 + thumb_func_end MOD83_0222E7AC + + thumb_func_start MOD83_0222E850 +MOD83_0222E850: ; 0x0222E850 + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + bl MOD83_0222E7AC + add r0, r4, #0 + bl FUN_0200627C + mov r0, #0x51 + bl FUN_020168D0 + mov r0, #0 + bl MOD83_02239450 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_0222E850 + + thumb_func_start MOD83_0222E874 +MOD83_0222E874: ; 0x0222E874 + push {r3, r4} + ldr r4, _0222E89C ; =0x0223A8E0 + ldr r1, _0222E8A0 ; =0x00000123 + mov r3, #0 +_0222E87C: + ldrh r2, [r4, #2] + cmp r0, r2 + bne _0222E88C + ldr r0, _0222E89C ; =0x0223A8E0 + lsl r1, r3, #2 + ldrh r0, [r0, r1] + pop {r3, r4} + bx lr +_0222E88C: + add r3, r3, #1 + add r4, r4, #4 + cmp r3, r1 + blo _0222E87C + mov r0, #0x3f + pop {r3, r4} + bx lr + nop +_0222E89C: .word 0x0223A8E0 +_0222E8A0: .word 0x00000123 + thumb_func_end MOD83_0222E874 + + thumb_func_start MOD83_0222E8A4 +MOD83_0222E8A4: ; 0x0222E8A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, _0222E90C ; =0x00002710 + add r0, r4, #0 + bl _s32_div_f + add r0, #0x30 + strh r0, [r5] + ldr r1, _0222E90C ; =0x00002710 + add r0, r4, #0 + bl _s32_div_f + add r4, r1, #0 + mov r1, #0xfa + add r0, r4, #0 + lsl r1, r1, #2 + bl _s32_div_f + add r0, #0x30 + mov r1, #0xfa + strh r0, [r5, #2] + add r0, r4, #0 + lsl r1, r1, #2 + bl _s32_div_f + add r4, r1, #0 + add r0, r4, #0 + mov r1, #0x64 + bl _s32_div_f + add r0, #0x30 + strh r0, [r5, #4] + add r0, r4, #0 + mov r1, #0x64 + bl _s32_div_f + add r4, r1, #0 + add r0, r4, #0 + mov r1, #0xa + bl _s32_div_f + add r0, #0x30 + strh r0, [r5, #6] + add r0, r4, #0 + mov r1, #0xa + bl _s32_div_f + add r4, r1, #0 + add r4, #0x30 + strh r4, [r5, #8] + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E90C: .word 0x00002710 + thumb_func_end MOD83_0222E8A4 + + thumb_func_start MOD83_0222E910 +MOD83_0222E910: ; 0x0222E910 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0x10] + bl FUN_0202398C + ldr r5, _0222E948 ; =0x0223B860 + add r4, r0, #0 + mov r6, #0 +_0222E920: + ldrh r0, [r4] + bl MOD83_0222E874 + strh r0, [r5] + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #8 + blt _0222E920 + ldr r0, [r7, #0x10] + bl FUN_020239C0 + add r1, r0, #0 + ldr r0, _0222E94C ; =0x0223B870 + bl MOD83_0222E8A4 + ldr r0, _0222E950 ; =0x0223B860 + mov r1, #0 + strh r1, [r0, #0x1a] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E948: .word 0x0223B860 +_0222E94C: .word 0x0223B870 +_0222E950: .word 0x0223B860 + thumb_func_end MOD83_0222E910 + + thumb_func_start MOD83_0222E954 +MOD83_0222E954: ; 0x0222E954 + push {r3, r4, r5, lr} + sub sp, #0x48 + ldr r5, _0222EA80 ; =0x0223A3C8 + add r4, r0, #0 + add r3, sp, #0x20 + mov r2, #5 +_0222E960: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222E960 + ldr r3, _0222EA84 ; =0x0223A3B8 + add r2, sp, #0x10 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, sp, #0x20 + bl FUN_0201E66C + add r0, sp, #0x10 + bl FUN_02016BBC + mov r1, #0 + str r1, [sp] + mov r3, #0xf + ldr r0, [r4, #4] + mov r2, #1 + lsl r3, r3, #0xc + bl MOD83_022387D8 + mov r0, #1 + lsl r0, r0, #0xe + str r0, [sp] + mov r1, #1 + mov r3, #0x3e + ldr r0, [r4, #4] + add r2, r1, #0 + lsl r3, r3, #0xa + bl MOD83_022387D8 + mov r0, #0 + str r0, [sp] + mov r3, #0x1e + ldr r0, [r4, #4] + mov r1, #4 + mov r2, #1 + lsl r3, r3, #0xa + bl MOD83_022387D8 + mov r0, #1 + lsl r0, r0, #0xe + str r0, [sp] + mov r3, #7 + ldr r0, [r4, #4] + mov r1, #5 + mov r2, #1 + lsl r3, r3, #0xc + bl MOD83_022387D8 + bl FUN_0201BD5C + mov r0, #0 + ldr r2, [r4] + add r1, r0, #0 + bl FUN_02002ED0 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + mov r2, #1 + str r0, [sp, #4] + ldr r0, [r4, #4] + add r3, r2, #0 + bl FUN_0200CB00 + ldr r0, [r4, #0x14] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4] + mov r1, #0 + str r0, [sp, #4] + ldr r0, [r4, #4] + mov r2, #0xa + mov r3, #2 + bl FUN_0200CD68 + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + mov r1, #0 + str r0, [sp, #4] + mov r0, #0x74 + add r3, r0, #0 + add r2, r1, #0 + add r3, #0x8c + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0xa + mov r1, #1 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r4] + add r3, r1, #0 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x74 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + ldr r0, [r4] + mov r1, #2 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x74 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4, #4] + mov r1, #1 + add r3, r2, #0 + bl FUN_020186B4 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD83_0222EA88 + add sp, #0x48 + pop {r3, r4, r5, pc} + nop +_0222EA80: .word 0x0223A3C8 +_0222EA84: .word 0x0223A3B8 + thumb_func_end MOD83_0222E954 + + thumb_func_start MOD83_0222EA88 +MOD83_0222EA88: ; 0x0222EA88 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + mov r2, #4 + add r3, r2, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0 + add r3, #0xfc + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, [r4] + mov r3, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x74 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #2 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x74 + mov r3, #4 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4, #4] + mov r1, #4 + add r3, r2, #0 + bl FUN_020186B4 + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_02017CD0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_0222EA88 + + thumb_func_start MOD83_0222EB04 +MOD83_0222EB04: ; 0x0222EB04 + push {r3, r4, lr} + sub sp, #0x5c + add r4, r0, #0 + add r0, #0x18 + bl FUN_02019048 + cmp r0, #0 + bne _0222EB4E + mov r0, #1 + str r0, [sp] + add r1, r4, #0 + str r0, [sp, #4] + add r0, sp, #8 + add r1, #0x18 + mov r2, #0 + mov r3, #0xc + bl MOD83_022388E4 + mov r3, #0x51 + lsl r3, r3, #2 + ldr r3, [r4, r3] + add r0, sp, #8 + mov r1, #0x16 + mov r2, #0x10 + bl MOD83_02238934 + mov r0, #2 + str r0, [sp] + ldr r0, [r4, #4] + add r1, sp, #8 + mov r2, #5 + mov r3, #4 + bl MOD83_02238A38 + add sp, #0x5c + mov r0, #1 + pop {r3, r4, pc} +_0222EB4E: + ldr r0, _0222EB78 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0222EB70 + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + bl FUN_0200CCF8 + add r4, #0x18 + add r0, r4, #0 + bl FUN_02019178 + add sp, #0x5c + mov r0, #0 + pop {r3, r4, pc} +_0222EB70: + mov r0, #1 + add sp, #0x5c + pop {r3, r4, pc} + nop +_0222EB78: .word 0x021C48B8 + thumb_func_end MOD83_0222EB04 + + thumb_func_start MOD83_0222EB7C +MOD83_0222EB7C: ; 0x0222EB7C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, #0 + ldr r3, _0222EC70 ; =0x00000172 + add r0, #0x48 + add r1, #0x28 + mov r2, #0 + bl MOD83_022388E4 + mov r3, #0x51 + lsl r3, r3, #2 + add r0, r4, #0 + ldr r3, [r4, r3] + add r0, #0x48 + mov r1, #0x1b + mov r2, #4 + bl MOD83_02238934 + add r0, r4, #0 + mov r1, #1 + add r0, #0x48 + add r2, r1, #0 + bl MOD83_0223893C + mov r0, #0x46 + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + add r0, r4, #0 + add r0, #0x48 + bl MOD83_02238AF4 + mov r3, #0x51 + lsl r3, r3, #2 + ldr r1, [r4, r3] + mov r2, #0 + add r0, r1, r0 + str r0, [r4, r3] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x9c + add r1, #0x18 + add r3, #0x2e + bl MOD83_022388E4 + mov r3, #0x51 + lsl r3, r3, #2 + add r0, r4, #0 + ldr r3, [r4, r3] + add r0, #0x9c + mov r1, #0x1e + mov r2, #4 + bl MOD83_02238934 + add r0, r4, #0 + add r0, #0x9c + mov r1, #0 + mov r2, #1 + bl MOD83_0223893C + mov r0, #0xb + str r0, [sp] + add r1, r4, #0 + mov r2, #1 + ldr r0, [r4, #4] + add r1, #0x9c + add r3, r2, #0 + bl MOD83_02238A38 + add r0, r4, #0 + add r0, #0x9c + bl MOD83_02238AF4 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r2, [r4, r1] + add r0, r2, r0 + str r0, [r4, r1] + bl MOD83_02238AFC + bl MOD83_02238B4C + mov r0, #8 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0xa + mov r2, #7 + mov r3, #9 + bl MOD83_02238BC4 + mov r0, #1 + str r0, [sp] + ldr r1, _0222EC74 ; =0x00003170 + mov r0, #0 + ldr r1, [r4, r1] + mov r2, #0x80 + mov r3, #0x4c + bl MOD83_02238DBC + ldr r1, _0222EC74 ; =0x00003170 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD83_0222EC78 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0222EC70: .word 0x00000172 +_0222EC74: .word 0x00003170 + thumb_func_end MOD83_0222EB7C + + thumb_func_start MOD83_0222EC78 +MOD83_0222EC78: ; 0x0222EC78 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5] + bl FUN_0200AA80 + add r4, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r5, #0 + ldr r3, _0222ED84 ; =0x00000172 + add r0, #0xf0 + add r1, #0x38 + mov r2, #0 + bl MOD83_022388E4 + mov r3, #0x51 + lsl r3, r3, #2 + add r0, r5, #0 + ldr r3, [r5, r3] + add r0, #0xf0 + mov r1, #0x1a + mov r2, #4 + bl MOD83_02238934 + add r0, r5, #0 + add r0, #0xf0 + mov r1, #0 + mov r2, #1 + bl MOD83_0223893C + mov r0, #0x41 + lsl r0, r0, #2 + str r4, [r5, r0] + ldr r2, [r5, #0x10] + add r0, r4, #0 + mov r1, #0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x10] + bl FUN_020239C0 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r1, #1 + add r0, r4, #0 + mov r3, #5 + str r1, [sp, #4] + bl FUN_0200AD38 + mov r0, #0x42 + str r0, [sp] + add r1, r5, #0 + ldr r0, [r5, #4] + add r1, #0xf0 + mov r2, #3 + mov r3, #0xd + bl MOD83_02238A38 + add r1, r5, #0 + mov r0, #0 + add r1, #0xf8 + str r0, [r1] + mov r1, #1 + bl FUN_02002E4C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0xf0 + mov r1, #0 + bl MOD83_02238944 + mov r2, #0x44 + str r2, [sp] + add r1, r5, #0 + sub r2, #0x45 + ldr r0, [r5, #4] + add r1, #0xf0 + add r3, r2, #0 + bl MOD83_02238A38 + add r0, sp, #0x10 + bl OS_GetMacAddress + add r0, sp, #0x10 + bl MOD83_02234704 + add r1, sp, #0x1c + add r2, sp, #0x18 + str r0, [sp, #8] + str r0, [sp, #0xc] + bl MOD83_02234748 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x1c] + add r0, r4, #0 + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + mov r0, #2 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r2, [sp, #0x18] + add r0, r4, #0 + mov r3, #4 + bl FUN_0200AD38 + add r0, r5, #0 + mov r1, #1 + add r0, #0xfc + str r1, [r0] + mov r2, #0x45 + str r2, [sp] + ldr r0, [r5, #4] + add r5, #0xf0 + sub r2, #0x46 + add r1, r5, #0 + add r3, r2, #0 + bl MOD83_02238A38 + add r0, r4, #0 + bl FUN_0200AB18 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_0222ED84: .word 0x00000172 + thumb_func_end MOD83_0222EC78 + + thumb_func_start MOD83_0222ED88 +MOD83_0222ED88: ; 0x0222ED88 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + bl MOD83_02238E48 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019048 + cmp r0, #1 + bne _0222EDD0 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x28 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x28 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x38 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x38 + bl FUN_02019178 +_0222EDD0: + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD83_0222ED88 + + thumb_func_start MOD83_0222EDF8 +MOD83_0222EDF8: ; 0x0222EDF8 + push {r3, r4, r5, lr} + mov r3, #2 + ldr r2, _0222EE80 ; =0x000034DC + mov r1, #0x55 + lsl r3, r3, #0x10 + add r5, r0, #0 + bl MOD83_022387A0 + add r4, r0, #0 + mov r0, #0x55 + str r0, [r4] + bl FUN_02016B94 + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_0200628C + ldr r0, [r0, #8] + str r0, [r4, #8] + bl FUN_020238F4 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + bl FUN_02024DA0 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + bl LoadPlayerDataAddress + str r0, [r4, #0x14] + ldr r0, [r4] + bl MOD83_02238770 + ldr r0, [r4, #8] + bl FUN_0202251C + ldr r1, _0222EE84 ; =0x00003174 + mov r2, #0x53 + str r0, [r4, r1] + mov r0, #9 + lsl r2, r2, #2 + str r0, [r4, r2] + add r0, r2, #0 + mov r1, #0x28 + sub r0, #8 + str r1, [r4, r0] + add r1, r2, #0 + mov r0, #0 + add r1, #8 + str r0, [r4, r1] + add r1, r2, #0 + add r1, #0x10 + str r0, [r4, r1] + add r2, #0xc + str r0, [r4, r2] + mov r2, #3 + mov r1, #0x5b + lsl r2, r2, #8 + bl FUN_0201681C + ldr r1, _0222EE88 ; =0x00000496 + mov r0, #9 + mov r2, #1 + bl FUN_0200433C + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0222EE80: .word 0x000034DC +_0222EE84: .word 0x00003174 +_0222EE88: .word 0x00000496 + thumb_func_end MOD83_0222EDF8 + + thumb_func_start MOD83_0222EE8C +MOD83_0222EE8C: ; 0x0222EE8C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0xd + bhi _0222EEF2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222EEAC: ; jump table + .short _0222EEC8 - _0222EEAC - 2 ; case 0 + .short _0222EEEA - _0222EEAC - 2 ; case 1 + .short _0222EF08 - _0222EEAC - 2 ; case 2 + .short _0222EF5A - _0222EEAC - 2 ; case 3 + .short _0222EF86 - _0222EEAC - 2 ; case 4 + .short _0222EFC2 - _0222EEAC - 2 ; case 5 + .short _0222EFFC - _0222EEAC - 2 ; case 6 + .short _0222F02C - _0222EEAC - 2 ; case 7 + .short _0222F02C - _0222EEAC - 2 ; case 8 + .short _0222F02C - _0222EEAC - 2 ; case 9 + .short _0222F02C - _0222EEAC - 2 ; case 10 + .short _0222F012 - _0222EEAC - 2 ; case 11 + .short _0222F01A - _0222EEAC - 2 ; case 12 + .short _0222F026 - _0222EEAC - 2 ; case 13 +_0222EEC8: + bl MOD83_0222E954 + ldr r0, [r4, #0xc] + bl FUN_02024D64 + cmp r0, #0 + bne _0222EEE4 + mov r0, #1 + add r1, r0, #0 + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222EEE4: + mov r0, #2 + str r0, [r5] + b _0222F02C +_0222EEEA: + bl MOD83_0222EB04 + cmp r0, #0 + beq _0222EEF4 +_0222EEF2: + b _0222F02C +_0222EEF4: + mov r0, #1 + bl MOD83_02238860 + mov r0, #0 + mov r1, #0xc + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222EF08: + bl MOD83_0222EB7C + ldr r0, _0222F038 ; =0x00003174 + ldr r0, [r4, r0] + bl FUN_0202ADF0 + cmp r0, #0 + bne _0222EF44 + add r0, r4, #0 + mov r1, #1 + add r0, #0x98 + str r1, [r0] + mov r0, #0x15 + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + ldr r1, _0222F03C ; =0x0000317C + add r2, r5, #0 + str r0, [r4, r1] + mov r0, #1 + mov r1, #3 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222EF44: + mov r0, #0x53 + mov r1, #7 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + mov r1, #4 + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222EF5A: + ldr r0, _0222F03C ; =0x0000317C + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F02C + ldr r0, _0222F040 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r1, r0 + beq _0222F02C + bl MOD83_02238860 + mov r0, #0 + mov r1, #0xc + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222EF86: + bl MOD83_0222F210 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #5 + bne _0222EFAA + mov r0, #1 + bl MOD83_02238860 + mov r0, #0 + mov r1, #0xc + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222EFAA: + cmp r0, #4 + bne _0222F02C + mov r0, #1 + bl MOD83_02238860 + mov r0, #0 + mov r1, #0xc + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222EFC2: + bl MOD83_0222EA88 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r1, #0xc6 + lsl r1, r1, #6 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0x55 + bl MOD83_02233168 + mov r0, #1 + mov r1, #6 + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + ldr r1, _0222F044 ; =0x000032D2 + mov r0, #4 + ldrb r2, [r4, r1] + bic r2, r0 + strb r2, [r4, r1] + b _0222F02C +_0222EFFC: + ldr r0, _0222F040 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _0222F02C + mov r0, #0 + mov r1, #0xb + add r2, r5, #0 + mov r3, #0xd + bl MOD83_0223886C + b _0222F02C +_0222F012: + mov r0, #0 + bl OS_ResetSystem + b _0222F02C +_0222F01A: + add r0, r6, #0 + bl MOD83_0222ED88 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0222F026: + add r0, r5, #0 + bl MOD83_022388CC +_0222F02C: + bl MOD83_02238D58 + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0222F038: .word 0x00003174 +_0222F03C: .word 0x0000317C +_0222F040: .word 0x021C48B8 +_0222F044: .word 0x000032D2 + thumb_func_end MOD83_0222EE8C + + thumb_func_start MOD83_0222F048 +MOD83_0222F048: ; 0x0222F048 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5b + bl FUN_020168D0 + ldr r0, _0222F06C ; =0x0000003F + ldr r1, _0222F070 ; =0x021DBAB8 + bl FUN_02000E7C + add r0, r4, #0 + bl FUN_0200627C + mov r0, #0x55 + bl FUN_020168D0 + mov r0, #1 + pop {r4, pc} + nop +_0222F06C: .word 0x0000003F +_0222F070: .word 0x021DBAB8 + thumb_func_end MOD83_0222F048 + + thumb_func_start MOD83_0222F074 +MOD83_0222F074: ; 0x0222F074 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0xc6 + lsl r0, r0, #6 + add r4, r5, r0 + mov r2, #0xd6 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + ldr r2, _0222F1A0 ; =0x00000172 + ldr r3, [r5] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + add r6, r0, #0 + ldr r0, [r5] + bl FUN_0200AA80 + mov r1, #0xc6 + mov r2, #7 + lsl r1, r1, #6 + strh r2, [r5, r1] + ldr r3, [r5] + add r1, r6, #0 + mov r2, #0x4c + str r0, [sp] + bl FUN_0200A9C4 + mov r1, #0x41 + lsl r1, r1, #2 + add r7, r0, #0 + add r1, r4, r1 + mov r2, #0x24 + bl FUN_02021EF0 + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #0xc + bl MOD83_02238EF4 + add r7, r0, #0 + mov r0, #0xa + bl MOD83_02238EF4 + str r0, [sp, #4] + mov r0, #0xb + bl MOD83_02238EF4 + ldr r1, [sp, #4] + mov r2, #1 + orr r0, r1 + add r1, r7, #0 + orr r1, r0 + mov r0, #0x53 + lsl r0, r0, #2 + str r1, [r4, r0] + add r1, r0, #4 + strh r2, [r4, r1] + add r1, r0, #6 + ldrb r2, [r4, r1] + mov r1, #1 + bic r2, r1 + add r1, r0, #6 + strb r2, [r4, r1] + ldrb r2, [r4, r1] + mov r1, #2 + bic r2, r1 + add r1, r0, #6 + strb r2, [r4, r1] + ldrb r2, [r4, r1] + mov r1, #4 + orr r2, r1 + add r1, r0, #6 + strb r2, [r4, r1] + ldrb r2, [r4, r1] + mov r1, #8 + orr r2, r1 + add r1, r0, #6 + strb r2, [r4, r1] + ldrb r2, [r4, r1] + mov r1, #0x20 + add r0, r0, #6 + bic r2, r1 + strb r2, [r4, r0] + ldr r0, [sp] + ldr r3, [r5] + add r1, r6, #0 + mov r2, #0x4b + bl FUN_0200A9C4 + add r7, r0, #0 + mov r1, #0x55 + lsl r1, r1, #2 + add r1, r4, r1 + mov r2, #0xfa + bl FUN_02021EF0 + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #0xd2 + lsl r0, r0, #2 + mov r1, #0 + ldr r3, _0222F1A4 ; =0x000001EA + strb r1, [r4, r0] + add r2, r0, #2 + strh r3, [r4, r2] + add r2, r0, #4 + strh r1, [r4, r2] + add r2, r0, #6 + strh r1, [r4, r2] + add r0, #8 + strb r1, [r4, r0] + add r0, sp, #8 + bl FUN_020126B4 + add r0, sp, #8 + bl RTC_ConvertDateToDay + mov r1, #0xd5 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp] + bl FUN_0200AB18 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r0, _0222F1A8 ; =0x00003174 + add r1, r4, #0 + ldr r0, [r5, r0] + mov r2, #0 + bl FUN_0202AC98 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + ldr r0, [r5, #4] + add r1, r4, #0 + bl MOD83_022391EC + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F1A0: .word 0x00000172 +_0222F1A4: .word 0x000001EA +_0222F1A8: .word 0x00003174 + thumb_func_end MOD83_0222F074 + + thumb_func_start MOD83_0222F1AC +MOD83_0222F1AC: ; 0x0222F1AC + mov r2, #0x16 + lsl r2, r2, #4 + str r1, [r0, r2] + bx lr + thumb_func_end MOD83_0222F1AC + + thumb_func_start MOD83_0222F1B4 +MOD83_0222F1B4: ; 0x0222F1B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x16 + lsl r1, r1, #4 + add r4, r3, #0 + ldr r3, [r0, r1] + sub r3, r3, #1 + str r3, [r0, r1] + ldr r0, [r0, r1] + cmp r0, #0 + bne _0222F1D6 + bl MOD83_02234518 + mov r0, #0x17 + str r0, [r5] + mov r0, #0 + pop {r3, r4, r5, pc} +_0222F1D6: + cmp r2, #0 + beq _0222F1EE + bl MOD83_022344E4 + cmp r0, #0 + bne _0222F1EE + bl MOD83_02234518 + mov r0, #0x16 + str r0, [r5] + mov r0, #0 + pop {r3, r4, r5, pc} +_0222F1EE: + cmp r4, #0 + beq _0222F206 + ldr r0, _0222F20C ; =0x021C48B8 + ldr r0, [r0, #0x48] + tst r0, r4 + beq _0222F206 + bl MOD83_02234518 + mov r0, #0x1a + str r0, [r5] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222F206: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222F20C: .word 0x021C48B8 + thumb_func_end MOD83_0222F1B4 + + thumb_func_start MOD83_0222F210 +MOD83_0222F210: ; 0x0222F210 + push {r3, r4, r5, lr} + mov r5, #0x57 + lsl r5, r5, #2 + add r4, r0, #0 + sub r0, r5, #4 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222F236 + bl MOD83_0223438C + mov r1, #3 + sub r0, r1, r0 + bl FUN_02033EEC + bl MOD83_02234238 + mov r0, #1 + bl MOD83_022345C8 +_0222F236: + ldr r0, [r4, r5] + cmp r0, #0x1e + bls _0222F23E + b _0222F736 +_0222F23E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222F24A: ; jump table + .short _0222F288 - _0222F24A - 2 ; case 0 + .short _0222F29E - _0222F24A - 2 ; case 1 + .short _0222F2C4 - _0222F24A - 2 ; case 2 + .short _0222F2E6 - _0222F24A - 2 ; case 3 + .short _0222F310 - _0222F24A - 2 ; case 4 + .short _0222F736 - _0222F24A - 2 ; case 5 + .short _0222F736 - _0222F24A - 2 ; case 6 + .short _0222F342 - _0222F24A - 2 ; case 7 + .short _0222F3B8 - _0222F24A - 2 ; case 8 + .short _0222F3D6 - _0222F24A - 2 ; case 9 + .short _0222F420 - _0222F24A - 2 ; case 10 + .short _0222F45C - _0222F24A - 2 ; case 11 + .short _0222F476 - _0222F24A - 2 ; case 12 + .short _0222F4AA - _0222F24A - 2 ; case 13 + .short _0222F4EC - _0222F24A - 2 ; case 14 + .short _0222F50C - _0222F24A - 2 ; case 15 + .short _0222F524 - _0222F24A - 2 ; case 16 + .short _0222F53E - _0222F24A - 2 ; case 17 + .short _0222F594 - _0222F24A - 2 ; case 18 + .short _0222F61C - _0222F24A - 2 ; case 19 + .short _0222F664 - _0222F24A - 2 ; case 20 + .short _0222F736 - _0222F24A - 2 ; case 21 + .short _0222F698 - _0222F24A - 2 ; case 22 + .short _0222F69C - _0222F24A - 2 ; case 23 + .short _0222F736 - _0222F24A - 2 ; case 24 + .short _0222F736 - _0222F24A - 2 ; case 25 + .short _0222F704 - _0222F24A - 2 ; case 26 + .short _0222F736 - _0222F24A - 2 ; case 27 + .short _0222F6D0 - _0222F24A - 2 ; case 28 + .short _0222F35E - _0222F24A - 2 ; case 29 + .short _0222F39C - _0222F24A - 2 ; case 30 +_0222F288: + add r0, r4, #0 + bl MOD83_0222E910 + bl FUN_0202E49C + mov r0, #0x52 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + str r1, [r4, r5] + b _0222F736 +_0222F29E: + bl FUN_0202E4C8 + cmp r0, #0 + beq _0222F356 + mov r1, #0x5b + lsl r1, r1, #2 + ldr r0, _0222F5E0 ; =0x0223A8D4 + add r1, r4, r1 + bl MOD83_02233F94 + mov r0, #0x56 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + bl FUN_02033E74 + mov r0, #2 + str r0, [r4, r5] + b _0222F736 +_0222F2C4: + bl MOD83_0223427C + mov r1, #0x19 + add r0, r4, #0 + lsl r1, r1, #6 + bl MOD83_0222F1AC + add r0, r4, #0 + add r0, #0x28 + mov r1, #0xa + bl FUN_0200D858 + ldr r1, _0222F5E4 ; =0x000034D8 + str r0, [r4, r1] + mov r0, #3 + str r0, [r4, r5] + b _0222F736 +_0222F2E6: + bl MOD83_022343A4 + cmp r0, #0 + beq _0222F302 + sub r1, r0, #1 + mov r0, #0x59 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r1, _0222F5E8 ; =0x00000708 + add r0, r4, #0 + bl MOD83_0222F1AC + mov r0, #4 + str r0, [r4, r5] +_0222F302: + add r0, r4, #0 + add r1, r4, r5 + mov r2, #0 + mov r3, #2 + bl MOD83_0222F1B4 + b _0222F736 +_0222F310: + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD83_022342C8 + cmp r0, #0 + beq _0222F334 + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD83_02234304 + mov r0, #7 + str r0, [r4, r5] + mov r0, #0x16 + ldr r1, _0222F5E8 ; =0x00000708 + lsl r0, r0, #4 + str r1, [r4, r0] +_0222F334: + add r0, r4, #0 + add r1, r4, r5 + mov r2, #0 + mov r3, #2 + bl MOD83_0222F1B4 + b _0222F736 +_0222F342: + add r0, r4, #0 + add r1, r4, r5 + mov r2, #0 + mov r3, #2 + bl MOD83_0222F1B4 + bl MOD83_022344E4 + cmp r0, #0 + bne _0222F358 +_0222F356: + b _0222F736 +_0222F358: + mov r0, #0x1d + str r0, [r4, r5] + b _0222F736 +_0222F35E: + mov r0, #0x1e + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + ldr r0, _0222F5EC ; =0x00003170 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0222F5E4 ; =0x000034D8 + ldr r0, [r4, r0] + bl FUN_0200DBFC + ldr r0, _0222F5E4 ; =0x000034D8 + mov r1, #0 + str r1, [r4, r0] + ldr r0, _0222F5F0 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x16 + ldr r1, _0222F5E8 ; =0x00000708 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0x1e + str r0, [r4, r5] + b _0222F736 +_0222F39C: + ldr r0, _0222F5F4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0222F3AA + mov r0, #8 + str r0, [r4, r5] +_0222F3AA: + add r0, r4, #0 + add r1, r4, r5 + mov r2, #1 + mov r3, #2 + bl MOD83_0222F1B4 + b _0222F736 +_0222F3B8: + bl MOD83_022343C4 + mov r0, #9 + str r0, [r4, r5] + mov r0, #0x16 + ldr r1, _0222F5E8 ; =0x00000708 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + add r1, r4, r5 + mov r2, #1 + mov r3, #2 + bl MOD83_0222F1B4 + b _0222F736 +_0222F3D6: + bl MOD83_02234450 + cmp r0, #0 + beq _0222F412 + bl MOD83_022343F8 + mov r0, #0xa + str r0, [r4, r5] + mov r1, #0x32 + mov r0, #0x16 + lsl r1, r1, #6 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0x22 + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + ldr r0, _0222F5F0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0222F5E4 ; =0x000034D8 + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222F412: + add r0, r4, #0 + add r1, r4, r5 + mov r2, #1 + mov r3, #2 + bl MOD83_0222F1B4 + b _0222F736 +_0222F420: + bl MOD83_02234450 + cmp r0, #0 + beq _0222F44E + mov r0, #0x47 + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + ldr r0, _0222F5EC ; =0x00003170 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020200A0 + add r0, r4, #0 + bl MOD83_0222EC78 + mov r0, #0xb + str r0, [r4, r5] +_0222F44E: + add r0, r4, #0 + add r1, r4, r5 + mov r2, #1 + mov r3, #2 + bl MOD83_0222F1B4 + b _0222F736 +_0222F45C: + ldr r0, _0222F5F8 ; =0x0223AD6C + mov r1, #0x2a + mov r2, #1 + bl MOD83_02234424 + mov r0, #0xc + str r0, [r4, r5] + mov r1, #0x32 + mov r0, #0x16 + lsl r1, r1, #6 + lsl r0, r0, #4 + str r1, [r4, r0] + b _0222F736 +_0222F476: + bl MOD83_0223447C + cmp r0, #0 + beq _0222F49C + mov r0, #0xd + str r0, [r4, r5] + mov r0, #0x16 + mov r1, #0x3c + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0x47 + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 +_0222F49C: + add r0, r4, #0 + add r1, r4, r5 + mov r2, #1 + mov r3, #2 + bl MOD83_0222F1B4 + b _0222F736 +_0222F4AA: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222F51C + mov r0, #0x48 + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + add r0, r4, #0 + add r0, #0x28 + mov r1, #0xa + bl FUN_0200D858 + ldr r1, _0222F5E4 ; =0x000034D8 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD83_0222F074 + ldr r0, [r4, #8] + bl MOD83_022394BC + mov r0, #0xe + str r0, [r4, r5] + b _0222F736 +_0222F4EC: + bl MOD83_022394CC + cmp r0, #1 + bne _0222F51C + mov r0, #0xf + str r0, [r4, r5] + bl OS_GetTickLo + mov r1, #0x36 + bl _s32_div_f + mov r0, #0x16 + add r1, r1, #6 + lsl r0, r0, #4 + str r1, [r4, r0] + b _0222F736 +_0222F50C: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222F51E +_0222F51C: + b _0222F736 +_0222F51E: + mov r0, #0x10 + str r0, [r4, r5] + b _0222F736 +_0222F524: + ldr r0, _0222F5F8 ; =0x0223AD6C + mov r1, #0x2a + mov r2, #2 + bl MOD83_02234424 + mov r0, #0x11 + str r0, [r4, r5] + mov r1, #0x4b + mov r0, #0x16 + lsl r1, r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _0222F736 +_0222F53E: + bl MOD83_022344A8 + cmp r0, #0 + beq _0222F55A + bl MOD83_02239544 + mov r0, #0x12 + str r0, [r4, r5] + mov r1, #0x32 + mov r0, #0x16 + lsl r1, r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _0222F736 +_0222F55A: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222F57A + bl MOD83_02234518 + mov r0, #0x17 + mov r1, #0x78 + str r0, [r4, r5] + add r0, r1, #0 + add r0, #0xe8 + str r1, [r4, r0] +_0222F57A: + bl MOD83_022344E4 + cmp r0, #0 + bne _0222F62C + bl MOD83_02234518 + mov r0, #0x16 + mov r1, #0x78 + str r0, [r4, r5] + add r0, r1, #0 + add r0, #0xe8 + str r1, [r4, r0] + b _0222F736 +_0222F594: + bl MOD83_02239574 + cmp r0, #3 + bne _0222F5AE + bl MOD83_02234518 + mov r0, #0x16 + mov r1, #0x78 + str r0, [r4, r5] + add r0, r1, #0 + add r0, #0xe8 + str r1, [r4, r0] + b _0222F5FC +_0222F5AE: + bl MOD83_02239574 + cmp r0, #2 + beq _0222F5BC + bl MOD83_022394CC + b _0222F5FC +_0222F5BC: + bl MOD83_0223447C + cmp r0, #0 + bne _0222F5CC + bl MOD83_022344E4 + cmp r0, #0 + bne _0222F5FC +_0222F5CC: + mov r0, #0x13 + str r0, [r4, r5] + mov r0, #0x16 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + bl MOD83_02234518 + b _0222F736 + nop +_0222F5E0: .word 0x0223A8D4 +_0222F5E4: .word 0x000034D8 +_0222F5E8: .word 0x00000708 +_0222F5EC: .word 0x00003170 +_0222F5F0: .word 0x000005DC +_0222F5F4: .word 0x021C48B8 +_0222F5F8: .word 0x0223AD6C +_0222F5FC: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222F61C + bl MOD83_02234518 + mov r0, #0x17 + str r0, [r4, r5] + mov r0, #0x16 + mov r1, #0xa + lsl r0, r0, #4 + str r1, [r4, r0] +_0222F61C: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222F62E +_0222F62C: + b _0222F736 +_0222F62E: + mov r0, #0x14 + str r0, [r4, r5] + mov r0, #0x49 + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + ldr r0, _0222F73C ; =0x00003170 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0222F740 ; =0x000034D8 + ldr r0, [r4, r0] + bl FUN_0200DBFC + ldr r0, _0222F744 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0222F740 ; =0x000034D8 + mov r1, #0 + str r1, [r4, r0] + b _0222F736 +_0222F664: + bl MOD83_02234558 + cmp r0, #0 + beq _0222F736 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222F686 + bl FUN_0202E4F0 + bl FUN_02033ED0 + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0222F686: + ldr r0, _0222F748 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0222F736 + mov r0, #0x1b + str r0, [r4, r5] + mov r0, #4 + pop {r3, r4, r5, pc} +_0222F698: + mov r0, #0x17 + str r0, [r4, r5] +_0222F69C: + mov r0, #0x4a + str r0, [sp] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #2 + mov r3, #0x13 + bl MOD83_02238A38 + ldr r0, _0222F73C ; =0x00003170 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0222F740 ; =0x000034D8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222F6C4 + bl FUN_0200DBFC +_0222F6C4: + ldr r0, _0222F740 ; =0x000034D8 + mov r1, #0 + str r1, [r4, r0] + mov r0, #0x1c + str r0, [r4, r5] + b _0222F736 +_0222F6D0: + bl MOD83_02234558 + cmp r0, #0 + beq _0222F736 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222F6F2 + bl FUN_0202E4F0 + bl FUN_02033ED0 + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0222F6F2: + ldr r0, _0222F748 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0222F736 + mov r0, #0 + bl OS_ResetSystem + b _0222F736 +_0222F704: + bl MOD83_02234558 + cmp r0, #0 + beq _0222F736 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222F736 + bl FUN_0202E4F0 + bl FUN_02033ED0 + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, _0222F740 ; =0x000034D8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222F732 + bl FUN_0200DBFC +_0222F732: + mov r0, #5 + pop {r3, r4, r5, pc} +_0222F736: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222F73C: .word 0x00003170 +_0222F740: .word 0x000034D8 +_0222F744: .word 0x000005DC +_0222F748: .word 0x021C48B8 + thumb_func_end MOD83_0222F210 + + thumb_func_start MOD83_0222F74C +MOD83_0222F74C: ; 0x0222F74C + push {r4, lr} + ldr r1, _0222F79C ; =0x0223B884 + add r4, r0, #0 + ldr r1, [r1] + cmp r1, #0 + bne _0222F798 + bl MOD83_0222F9F8 + mov r1, #0xf5 + mov r0, #0xf + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, _0222F79C ; =0x0223B884 + mov r2, #0xf5 + str r0, [r1] + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + ldr r0, _0222F79C ; =0x0223B884 + mov r1, #0x32 + ldr r0, [r0] + mov r2, #0xa + strh r1, [r0, #0x24] + ldr r0, _0222F7A0 ; =MOD83_0222F89C + mov r1, #0 + bl FUN_0200CA44 + ldr r1, _0222F79C ; =0x0223B884 + ldr r2, [r1] + str r0, [r2, #0x1c] + ldr r0, [r1] + str r4, [r0] + ldr r0, [r1] + add r0, r0, #4 + bl FUN_020312BC +_0222F798: + pop {r4, pc} + nop +_0222F79C: .word 0x0223B884 +_0222F7A0: .word MOD83_0222F89C + thumb_func_end MOD83_0222F74C + + thumb_func_start MOD83_0222F7A4 +MOD83_0222F7A4: ; 0x0222F7A4 + ldr r2, _0222F7B0 ; =0x0223B884 + ldr r3, [r2] + str r0, [r3, #0x20] + ldr r0, [r2] + strh r1, [r0, #0x24] + bx lr + .align 2, 0 +_0222F7B0: .word 0x0223B884 + thumb_func_end MOD83_0222F7A4 + + thumb_func_start MOD83_0222F7B4 +MOD83_0222F7B4: ; 0x0222F7B4 + push {r4, lr} + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0 + beq _0222F7E2 + mov r4, #0 + ldr r1, _0222F7E4 ; =0x0223B884 + ldr r0, _0222F7E8 ; =0x000003C1 + add r3, r4, #0 +_0222F7CA: + ldr r2, [r1] + add r2, r2, r4 + add r4, r4, #1 + strb r3, [r2, r0] + cmp r4, #0x10 + blt _0222F7CA + bl FUN_0202DBE0 + ldr r0, _0222F7EC ; =MOD83_0222F7F0 + mov r1, #0 + bl MOD83_0222F7A4 +_0222F7E2: + pop {r4, pc} + .align 2, 0 +_0222F7E4: .word 0x0223B884 +_0222F7E8: .word 0x000003C1 +_0222F7EC: .word MOD83_0222F7F0 + thumb_func_end MOD83_0222F7B4 + + thumb_func_start MOD83_0222F7F0 +MOD83_0222F7F0: ; 0x0222F7F0 + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _0222F824 ; =0x0223B884 + add r5, r4, #0 +_0222F7F8: + ldr r0, [r6] + add r0, r0, r5 + ldr r0, [r0, #0x28] + cmp r0, #0 + bne _0222F81A + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #1 + bne _0222F81A + add r0, r4, #0 + bl FUN_0202DFA4 + ldr r1, [r6] + add r1, r1, r5 + str r0, [r1, #0x28] +_0222F81A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _0222F7F8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222F824: .word 0x0223B884 + thumb_func_end MOD83_0222F7F0 + + thumb_func_start MOD83_0222F828 +MOD83_0222F828: ; 0x0222F828 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0 + beq _0222F83A + ldr r0, _0222F83C ; =MOD83_0222F840 + mov r1, #0 + bl MOD83_0222F7A4 +_0222F83A: + pop {r3, pc} + .align 2, 0 +_0222F83C: .word MOD83_0222F840 + thumb_func_end MOD83_0222F828 + + thumb_func_start MOD83_0222F840 +MOD83_0222F840: ; 0x0222F840 + bx lr + .align 2, 0 + thumb_func_end MOD83_0222F840 + + thumb_func_start MOD83_0222F844 +MOD83_0222F844: ; 0x0222F844 + push {r3, lr} + ldr r0, _0222F85C ; =0x0223B884 + ldr r0, [r0] + add r0, #0x27 + ldrb r0, [r0] + bl FUN_020319D8 + ldr r0, _0222F860 ; =MOD83_0222F864 + mov r1, #0 + bl MOD83_0222F7A4 + pop {r3, pc} + .align 2, 0 +_0222F85C: .word 0x0223B884 +_0222F860: .word MOD83_0222F864 + thumb_func_end MOD83_0222F844 + + thumb_func_start MOD83_0222F864 +MOD83_0222F864: ; 0x0222F864 + push {r3, lr} + bl FUN_02031A2C + cmp r0, #0 + beq _0222F88C + ldr r0, _0222F890 ; =0x0223B884 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xf + lsl r0, r0, #6 + strb r2, [r1, r0] + bl FUN_0202DBE0 + mov r0, #0xab + bl FUN_02031588 + ldr r0, _0222F894 ; =MOD83_0222F898 + mov r1, #0 + bl MOD83_0222F7A4 +_0222F88C: + pop {r3, pc} + nop +_0222F890: .word 0x0223B884 +_0222F894: .word MOD83_0222F898 + thumb_func_end MOD83_0222F864 + + thumb_func_start MOD83_0222F898 +MOD83_0222F898: ; 0x0222F898 + bx lr + .align 2, 0 + thumb_func_end MOD83_0222F898 + + thumb_func_start MOD83_0222F89C +MOD83_0222F89C: ; 0x0222F89C + push {r3, lr} + ldr r1, _0222F8C0 ; =0x0223B884 + ldr r2, [r1] + cmp r2, #0 + bne _0222F8AC + bl FUN_0200CAB4 + pop {r3, pc} +_0222F8AC: + ldr r1, [r2, #0x20] + cmp r1, #0 + beq _0222F8BC + add r2, #0x26 + ldrb r0, [r2] + cmp r0, #0 + bne _0222F8BC + blx r1 +_0222F8BC: + pop {r3, pc} + nop +_0222F8C0: .word 0x0223B884 + thumb_func_end MOD83_0222F89C + + thumb_func_start MOD83_0222F8C4 +MOD83_0222F8C4: ; 0x0222F8C4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl FUN_02030F40 + cmp r0, #0 + bne _0222F8EA + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02031C74 + add r0, r5, #0 + bl MOD83_0222F74C + ldr r0, _0222F8EC ; =MOD83_0222F7B4 + mov r1, #0 + bl MOD83_0222F7A4 +_0222F8EA: + pop {r4, r5, r6, pc} + .align 2, 0 +_0222F8EC: .word MOD83_0222F7B4 + thumb_func_end MOD83_0222F8C4 + + thumb_func_start MOD83_0222F8F0 +MOD83_0222F8F0: ; 0x0222F8F0 + add r3, r0, #0 + add r2, r1, #0 + add r1, r3, #0 + ldr r3, _0222F8FC ; =FUN_02030B3C + mov r0, #0x16 + bx r3 + .align 2, 0 +_0222F8FC: .word FUN_02030B3C + thumb_func_end MOD83_0222F8F0 + + thumb_func_start MOD83_0222F900 +MOD83_0222F900: ; 0x0222F900 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02030F40 + cmp r0, #0 + bne _0222F92C + bl MOD83_02231364 + bl FUN_0200628C + ldr r0, [r0, #8] + add r1, r4, #0 + bl FUN_02031CA8 + add r0, r5, #0 + bl MOD83_0222F74C + ldr r0, _0222F930 ; =MOD83_0222F828 + mov r1, #0 + bl MOD83_0222F7A4 +_0222F92C: + pop {r3, r4, r5, pc} + nop +_0222F930: .word MOD83_0222F828 + thumb_func_end MOD83_0222F900 + + thumb_func_start MOD83_0222F934 +MOD83_0222F934: ; 0x0222F934 + ldr r1, _0222F944 ; =0x0223B884 + ldr r3, _0222F948 ; =MOD83_0222F7A4 + ldr r1, [r1] + add r1, #0x27 + strb r0, [r1] + ldr r0, _0222F94C ; =MOD83_0222F844 + mov r1, #0 + bx r3 + .align 2, 0 +_0222F944: .word 0x0223B884 +_0222F948: .word MOD83_0222F7A4 +_0222F94C: .word MOD83_0222F844 + thumb_func_end MOD83_0222F934 + + thumb_func_start MOD83_0222F950 +MOD83_0222F950: ; 0x0222F950 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0222F956: + add r0, r4, #0 + bl FUN_0202F124 + add r1, r0, #0 + beq _0222F976 + add r0, #0x4c + ldrh r0, [r0] + cmp r0, #0 + beq _0222F976 + add r5, #0x8c + add r0, r5, #0 + mov r2, #0x50 + bl memcpy + add r0, r4, #0 + pop {r3, r4, r5, pc} +_0222F976: + add r4, r4, #1 + cmp r4, #0x10 + blt _0222F956 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD83_0222F950 + + thumb_func_start MOD83_0222F984 +MOD83_0222F984: ; 0x0222F984 + ldr r1, _0222F99C ; =0x0223B884 + ldr r2, [r1] + add r1, r2, #0 + add r1, #0x27 + ldrb r1, [r1] + cmp r1, r0 + bne _0222F99A + mov r0, #0xf + mov r1, #1 + lsl r0, r0, #6 + strb r1, [r2, r0] +_0222F99A: + bx lr + .align 2, 0 +_0222F99C: .word 0x0223B884 + thumb_func_end MOD83_0222F984 + + thumb_func_start MOD83_0222F9A0 +MOD83_0222F9A0: ; 0x0222F9A0 + ldr r0, _0222F9AC ; =0x0223B884 + ldr r1, [r0] + mov r0, #0xf + lsl r0, r0, #6 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_0222F9AC: .word 0x0223B884 + thumb_func_end MOD83_0222F9A0 + + thumb_func_start MOD83_0222F9B0 +MOD83_0222F9B0: ; 0x0222F9B0 + mov r0, #0xd6 + lsl r0, r0, #2 + bx lr + .align 2, 0 + thumb_func_end MOD83_0222F9B0 + + thumb_func_start MOD83_0222F9B8 +MOD83_0222F9B8: ; 0x0222F9B8 + ldr r0, _0222F9C0 ; =0x0223B884 + ldr r0, [r0] + add r0, #0x68 + bx lr + .align 2, 0 +_0222F9C0: .word 0x0223B884 + thumb_func_end MOD83_0222F9B8 + + thumb_func_start MOD83_0222F9C4 +MOD83_0222F9C4: ; 0x0222F9C4 + ldr r1, _0222F9D4 ; =0x0223B884 + mov r2, #1 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _0222F9D8 ; =0x000003C1 + strb r2, [r1, r0] + bx lr + nop +_0222F9D4: .word 0x0223B884 +_0222F9D8: .word 0x000003C1 + thumb_func_end MOD83_0222F9C4 + + thumb_func_start MOD83_0222F9DC +MOD83_0222F9DC: ; 0x0222F9DC + push {r3, lr} + ldr r1, _0222F9F4 ; =0x0223B884 + mov r0, #0xf + ldr r1, [r1] + bl FUN_02016A8C + ldr r0, _0222F9F4 ; =0x0223B884 + mov r1, #0 + str r1, [r0] + bl FUN_02031A08 + pop {r3, pc} + .align 2, 0 +_0222F9F4: .word 0x0223B884 + thumb_func_end MOD83_0222F9DC + + thumb_func_start MOD83_0222F9F8 +MOD83_0222F9F8: ; 0x0222F9F8 + ldr r3, _0222FA04 ; =FUN_0202D8D0 + add r2, r0, #0 + ldr r0, _0222FA08 ; =0x0223A3F0 + mov r1, #2 + bx r3 + nop +_0222FA04: .word FUN_0202D8D0 +_0222FA08: .word 0x0223A3F0 + thumb_func_end MOD83_0222F9F8 + + thumb_func_start MOD83_0222FA0C +MOD83_0222FA0C: ; 0x0222FA0C + push {r4, lr} + add r4, r0, #0 + cmp r1, #1 + ldr r0, _0222FA40 ; =0x00002994 + bne _0222FA2C + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222FA3C + add r0, r4, #0 + add r0, #0x18 + mov r1, #1 + bl FUN_0200D858 + ldr r1, _0222FA40 ; =0x00002994 + str r0, [r4, r1] + pop {r4, pc} +_0222FA2C: + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222FA36 + bl FUN_0200DBFC +_0222FA36: + ldr r0, _0222FA40 ; =0x00002994 + mov r1, #0 + str r1, [r4, r0] +_0222FA3C: + pop {r4, pc} + nop +_0222FA40: .word 0x00002994 + thumb_func_end MOD83_0222FA0C + + thumb_func_start MOD83_0222FA44 +MOD83_0222FA44: ; 0x0222FA44 + ldr r3, _0222FA48 ; =MOD83_0222FA0C + bx r3 + .align 2, 0 +_0222FA48: .word MOD83_0222FA0C + thumb_func_end MOD83_0222FA44 + + thumb_func_start MOD83_0222FA4C +MOD83_0222FA4C: ; 0x0222FA4C + push {r3, r4, r5, r6, r7, lr} + bl FUN_02006278 + add r7, r0, #0 + bl MOD83_02238E48 + ldr r0, [r7, #0x7c] + cmp r0, #0 + beq _0222FA62 + bl FUN_02012870 +_0222FA62: + ldr r0, [r7, #0x78] + cmp r0, #0 + beq _0222FA70 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 +_0222FA70: + add r0, r7, #0 + add r0, #0x18 + bl FUN_02019570 + add r0, r7, #0 + add r0, #0x18 + bl FUN_02019178 + add r0, r7, #0 + add r0, #0x58 + bl FUN_02019048 + cmp r0, #0 + beq _0222FA9C + add r0, r7, #0 + add r0, #0x58 + bl FUN_02019570 + add r0, r7, #0 + add r0, #0x58 + bl FUN_02019178 +_0222FA9C: + add r5, r7, #0 + mov r6, #0 + add r4, r7, #0 + add r5, #0x28 +_0222FAA4: + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _0222FAB6 + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 +_0222FAB6: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #3 + blt _0222FAA4 + ldr r0, [r7] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r7] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r7] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r7] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r7] + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_0222FA4C + + thumb_func_start MOD83_0222FAE8 +MOD83_0222FAE8: ; 0x0222FAE8 + push {r3, lr} + sub sp, #8 + bl MOD83_02238AFC + bl MOD83_02238B4C + mov r0, #8 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0xa + mov r2, #7 + mov r3, #9 + bl MOD83_02238BC4 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD83_0222FAE8 + + thumb_func_start MOD83_0222FB0C +MOD83_0222FB0C: ; 0x0222FB0C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _0222FB32 + str r1, [sp] + ldr r1, _0222FB40 ; =0x000005C4 + mov r0, #0 + ldr r1, [r4, r1] + mov r2, #0x80 + mov r3, #0x64 + bl MOD83_02238DBC + ldr r1, _0222FB40 ; =0x000005C4 + add sp, #4 + str r0, [r4, r1] + pop {r3, r4, pc} +_0222FB32: + ldr r0, _0222FB40 ; =0x000005C4 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020200A0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222FB40: .word 0x000005C4 + thumb_func_end MOD83_0222FB0C + + thumb_func_start MOD83_0222FB44 +MOD83_0222FB44: ; 0x0222FB44 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02019048 + cmp r0, #1 + bne _0222FB5A + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CCF8 +_0222FB5A: + pop {r3, r4, r5, pc} + thumb_func_end MOD83_0222FB44 + + thumb_func_start MOD83_0222FB5C +MOD83_0222FB5C: ; 0x0222FB5C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, _0222FBB0 ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #2 + beq _0222FB7A + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x18 + mov r2, #3 + bl MOD83_0223050C +_0222FB7A: + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + ldr r0, _0222FBB0 ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #2 + beq _0222FBAA + add r0, r4, #0 + mov r1, #0xf + bl MOD83_0222F900 + ldr r1, _0222FBB4 ; =0x00001C20 + ldr r0, _0222FBB8 ; =0x00000434 + str r1, [r4, r0] + bl FUN_02033E74 + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C + mov r0, #7 + pop {r3, r4, r5, pc} +_0222FBAA: + mov r0, #0x13 + pop {r3, r4, r5, pc} + nop +_0222FBB0: .word 0x000015D4 +_0222FBB4: .word 0x00001C20 +_0222FBB8: .word 0x00000434 + thumb_func_end MOD83_0222FB5C + + thumb_func_start MOD83_0222FBBC +MOD83_0222FBBC: ; 0x0222FBBC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0x80 + ldr r1, [r0] + cmp r1, #1 + bne _0222FBD2 + mov r0, #0x30 + pop {r3, r4, r5, pc} +_0222FBD2: + sub r0, r1, #2 + cmp r0, #2 + bhi _0222FBDC + mov r0, #0x30 + pop {r3, r4, r5, pc} +_0222FBDC: + cmp r1, #5 + bne _0222FBE4 + mov r0, #0x30 + pop {r3, r4, r5, pc} +_0222FBE4: + ldr r0, _0222FC38 ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222FBF4 + ldr r0, _0222FC3C ; =0x00000438 + ldr r0, [r4, r0] + bl MOD83_0222F934 +_0222FBF4: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x18 + mov r2, #6 + bl MOD83_0223050C + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + ldr r0, _0222FC38 ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222FC22 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FB0C + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C +_0222FC22: + ldr r0, _0222FC38 ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222FC34 + mov r0, #0xab + bl FUN_02031588 + mov r0, #9 + pop {r3, r4, r5, pc} +_0222FC34: + mov r0, #0x15 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222FC38: .word 0x000015D4 +_0222FC3C: .word 0x00000438 + thumb_func_end MOD83_0222FBBC + + thumb_func_start MOD83_0222FC40 +MOD83_0222FC40: ; 0x0222FC40 + push {r3, r4, r5, r6, r7, lr} + bl FUN_02006278 + add r4, r0, #0 + ldr r0, _0222FCA4 ; =0x000015D4 + add r5, r4, #0 + add r6, r4, #0 + ldr r0, [r4, r0] + add r5, #0xdc + add r6, #0x8c + cmp r0, #1 + beq _0222FC5E + cmp r0, #3 + beq _0222FC84 + b _0222FC9E +_0222FC5E: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl MOD83_0222F9B8 + mov r2, #0xd6 + add r1, r0, #0 + add r0, r5, #0 + lsl r2, r2, #2 + bl memcpy + add r0, r4, #0 + add r4, #0xdc + add r0, #0x8c + add r1, r4, #0 + mov r2, #0x56 + bl MOD83_02239374 + b _0222FC9E +_0222FC84: + ldr r7, _0222FCA8 ; =0x000005D4 + mov r2, #0xd6 + add r1, r4, r7 + add r0, r5, #0 + add r1, #0x50 + lsl r2, r2, #2 + bl memcpy + add r0, r6, #0 + add r1, r4, r7 + mov r2, #0x50 + bl memcpy +_0222FC9E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222FCA4: .word 0x000015D4 +_0222FCA8: .word 0x000005D4 + thumb_func_end MOD83_0222FC40 + + thumb_func_start MOD83_0222FCAC +MOD83_0222FCAC: ; 0x0222FCAC + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222FCD8 ; =0x00002990 + ldr r1, [r4, r0] + cmp r1, #1 + bne _0222FCBE + mov r1, #0 + sub r0, r0, #4 + str r1, [r4, r0] +_0222FCBE: + bl MOD83_022394CC + sub r0, r0, #2 + cmp r0, #1 + bhi _0222FCD4 + ldr r0, _0222FCDC ; =0x0000061B + bl FUN_020054C8 + ldr r0, _0222FCE0 ; =0x0000298C + mov r1, #0 + str r1, [r4, r0] +_0222FCD4: + pop {r4, pc} + nop +_0222FCD8: .word 0x00002990 +_0222FCDC: .word 0x0000061B +_0222FCE0: .word 0x0000298C + thumb_func_end MOD83_0222FCAC + + thumb_func_start MOD83_0222FCE4 +MOD83_0222FCE4: ; 0x0222FCE4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + bl FUN_02006278 + add r6, r0, #0 + add r4, r6, #0 + add r5, r6, #0 + add r0, r7, #0 + add r4, #0x8c + add r5, #0xdc + bl FUN_0200628C + ldr r0, [r0, #8] + str r0, [sp] + add r0, r4, #0 + add r0, #0x4e + ldrb r0, [r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0222FD12 + mov r7, #0 + b _0222FD3E +_0222FD12: + mov r1, #0x35 + add r2, r4, #0 + mov r0, #0 + lsl r1, r1, #4 + strb r0, [r5, r1] + add r2, #0x4e + ldrb r2, [r2] + mov r7, #1 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1f + bne _0222FD2C + sub r1, #8 + strb r0, [r5, r1] +_0222FD2C: + add r0, sp, #8 + bl FUN_020126B4 + add r0, sp, #8 + bl RTC_ConvertDateToDay + mov r1, #0xd5 + lsl r1, r1, #2 + str r0, [r5, r1] +_0222FD3E: + ldr r0, [sp] + bl FUN_0202251C + add r4, #0x4c + ldrh r1, [r4] + str r0, [sp, #4] + bl FUN_0202AF24 + cmp r7, #0 + bne _0222FD5E + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #0 + bl FUN_0202AC98 + b _0222FD66 +_0222FD5E: + ldr r0, [sp, #4] + add r1, r5, #0 + bl FUN_0202AD08 +_0222FD66: + ldr r0, [sp] + bl MOD83_022394BC + ldr r0, _0222FD7C ; =0x00002990 + mov r1, #0 + str r1, [r6, r0] + ldr r1, _0222FD80 ; =MOD83_0222FCAC + sub r0, r0, #4 + str r1, [r6, r0] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222FD7C: .word 0x00002990 +_0222FD80: .word MOD83_0222FCAC + thumb_func_end MOD83_0222FCE4 + + thumb_func_start MOD83_0222FD84 +MOD83_0222FD84: ; 0x0222FD84 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r0, #0 + add r4, r1, #0 + bl FUN_02006278 + cmp r4, #0 + bne _0222FD98 + mov r5, #4 + b _0222FD9C +_0222FD98: + mov r5, #0 + mvn r5, r5 +_0222FD9C: + ldr r1, [r0, #0x48] + add r4, r0, #0 + add r4, #0x48 + cmp r1, #0 + bne _0222FDC6 + mov r1, #0xa + str r1, [sp] + mov r1, #6 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r2, #0 + mov r1, #0x6b + str r2, [sp, #0xc] + lsl r1, r1, #2 + str r1, [sp, #0x10] + ldr r0, [r0] + add r1, r4, #0 + mov r3, #0x17 + bl FUN_02019064 +_0222FDC6: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + ldr r1, _0222FDE4 ; =0x0223ADD8 + add r0, r6, #0 + mov r2, #2 + add r3, r4, #0 + str r5, [sp] + bl MOD83_022303B0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222FDE4: .word 0x0223ADD8 + thumb_func_end MOD83_0222FD84 + + thumb_func_start MOD83_0222FDE8 +MOD83_0222FDE8: ; 0x0222FDE8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl MOD83_0222FB44 + ldr r0, _0222FE20 ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0222FE14 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C +_0222FE14: + bl FUN_02033ED0 + add r0, r5, #0 + bl MOD83_02230118 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222FE20: .word 0x000015D4 + thumb_func_end MOD83_0222FDE8 + + thumb_func_start MOD83_0222FE24 +MOD83_0222FE24: ; 0x0222FE24 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_02006278 + add r5, r0, #0 + bl MOD83_02238700 + cmp r0, #0 + beq _0222FE3C + mov r1, #2 + b _0222FE3E +_0222FE3C: + mov r1, #1 +_0222FE3E: + ldr r0, _0222FE98 ; =0x000015D4 + str r1, [r5, r0] + add r0, r5, #0 + add r0, #0x38 + mov r1, #0 + bl MOD83_0222FB44 + add r4, r5, #0 + ldr r0, [r5, #0x48] + add r4, #0x48 + cmp r0, #0 + bne _0222FE76 + mov r0, #0xa + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + mov r0, #0x6b + str r2, [sp, #0xc] + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, r4, #0 + mov r3, #0x17 + bl FUN_02019064 +_0222FE76: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + mov r2, #2 + ldr r1, _0222FE9C ; =0x0223ADC8 + add r0, r6, #0 + add r3, r4, #0 + str r2, [sp] + bl MOD83_022303B0 + mov r0, #5 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_0222FE98: .word 0x000015D4 +_0222FE9C: .word 0x0223ADC8 + thumb_func_end MOD83_0222FE24 + + thumb_func_start MOD83_0222FEA0 +MOD83_0222FEA0: ; 0x0222FEA0 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, _0222FF08 ; =0x000015D4 + mov r1, #4 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0x38 + mov r1, #0 + bl MOD83_0222FB44 + add r5, r4, #0 + ldr r0, [r4, #0x48] + add r5, #0x48 + cmp r0, #0 + bne _0222FEE6 + mov r0, #0xa + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + mov r0, #0x6b + str r2, [sp, #0xc] + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, r5, #0 + mov r3, #0x17 + bl FUN_02019064 +_0222FEE6: + add r0, r5, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + mov r0, #0x4e + str r0, [sp] + ldr r1, _0222FF0C ; =0x0223AD98 + add r0, r6, #0 + mov r2, #2 + add r3, r5, #0 + bl MOD83_022303B0 + mov r0, #5 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222FF08: .word 0x000015D4 +_0222FF0C: .word 0x0223AD98 + thumb_func_end MOD83_0222FEA0 + + thumb_func_start MOD83_0222FF10 +MOD83_0222FF10: ; 0x0222FF10 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, _0222FF78 ; =0x000015D4 + mov r1, #3 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0x38 + mov r1, #0 + bl MOD83_0222FB44 + add r5, r4, #0 + ldr r0, [r4, #0x48] + add r5, #0x48 + cmp r0, #0 + bne _0222FF56 + mov r0, #0xa + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + mov r0, #0x6b + str r2, [sp, #0xc] + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, r5, #0 + mov r3, #0x17 + bl FUN_02019064 +_0222FF56: + add r0, r5, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + mov r0, #0x4d + str r0, [sp] + ldr r1, _0222FF7C ; =0x0223ADA8 + add r0, r6, #0 + mov r2, #2 + add r3, r5, #0 + bl MOD83_022303B0 + mov r0, #5 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222FF78: .word 0x000015D4 +_0222FF7C: .word 0x0223ADA8 + thumb_func_end MOD83_0222FF10 + + thumb_func_start MOD83_0222FF80 +MOD83_0222FF80: ; 0x0222FF80 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r1, [r0, #0x48] + add r4, #0x48 + cmp r1, #0 + bne _0222FFB4 + mov r1, #0xa + str r1, [sp] + mov r1, #6 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r2, #0 + mov r1, #0x6b + str r2, [sp, #0xc] + lsl r1, r1, #2 + str r1, [sp, #0x10] + ldr r0, [r0] + add r1, r4, #0 + mov r3, #0x17 + bl FUN_02019064 +_0222FFB4: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + mov r0, #4 + str r0, [sp] + ldr r1, _0222FFD4 ; =0x0223ADB8 + add r0, r5, #0 + mov r2, #2 + add r3, r4, #0 + bl MOD83_022303B0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_0222FFD4: .word 0x0223ADB8 + thumb_func_end MOD83_0222FF80 + + thumb_func_start MOD83_0222FFD8 +MOD83_0222FFD8: ; 0x0222FFD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl MOD83_0222FB44 + bl FUN_02033ED0 + ldr r0, _0223000C ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #1 + bne _02230004 + bl MOD83_0222F9DC +_02230004: + add r0, r5, #0 + bl MOD83_02230118 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223000C: .word 0x000015D4 + thumb_func_end MOD83_0222FFD8 + + thumb_func_start MOD83_02230010 +MOD83_02230010: ; 0x02230010 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x18 + mov r2, #3 + bl MOD83_0223050C + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C + ldr r0, _02230044 ; =0x0223B888 + mov r1, #0x24 + str r1, [r0, #0x10] + mov r0, #0x20 + pop {r3, r4, r5, pc} + nop +_02230044: .word 0x0223B888 + thumb_func_end MOD83_02230010 + + thumb_func_start MOD83_02230048 +MOD83_02230048: ; 0x02230048 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + sub r0, r0, #2 + cmp r0, #2 + bhi _02230060 + mov r0, #0x30 + pop {r3, r4, r5, pc} +_02230060: + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FB0C + add r4, #0x18 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #7 + bl MOD83_0223050C + mov r0, #0x21 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD83_02230048 + + thumb_func_start MOD83_02230084 +MOD83_02230084: ; 0x02230084 + push {r3, lr} + ldr r0, _022300A8 ; =0x0223B888 + ldr r0, [r0, #0x10] + cmp r0, #0x27 + beq _02230096 + cmp r0, #0x28 + beq _02230096 + cmp r0, #0x2f + bne _022300A4 +_02230096: + bl MOD83_02239A14 + cmp r0, #0 + beq _022300A4 + ldr r0, _022300A8 ; =0x0223B888 + mov r1, #0x2a + str r1, [r0, #0x10] +_022300A4: + mov r0, #0x23 + pop {r3, pc} + .align 2, 0 +_022300A8: .word 0x0223B888 + thumb_func_end MOD83_02230084 + + thumb_func_start MOD83_022300AC +MOD83_022300AC: ; 0x022300AC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x18 + mov r2, #3 + bl MOD83_0223050C + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C + mov r1, #1 + ldr r0, _022300F0 ; =0x000015DC + lsl r1, r1, #0xc + str r1, [r4, r0] + ldr r0, _022300F4 ; =0x00002620 + mov r1, #0 + str r1, [r4, r0] + mov r0, #0x1b + pop {r3, r4, r5, pc} + nop +_022300F0: .word 0x000015DC +_022300F4: .word 0x00002620 + thumb_func_end MOD83_022300AC + + thumb_func_start MOD83_022300F8 +MOD83_022300F8: ; 0x022300F8 + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + add r0, #0x38 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r4, #0 + mov r1, #0xc4 + mov r2, #0 + bl MOD83_02230464 + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_022300F8 + + thumb_func_start MOD83_02230118 +MOD83_02230118: ; 0x02230118 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_02006278 + add r5, r0, #0 + ldr r0, [r5, #4] + bl FUN_0202251C + ldr r0, _02230194 ; =0x000005C8 + ldr r1, [r5, r0] + cmp r1, #0x1e + bne _0223013E + mov r1, #1 + add r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD83_022313E4 +_0223013E: + add r0, r5, #0 + add r0, #0x28 + mov r1, #0 + bl MOD83_0222FB44 + add r4, r5, #0 + ldr r0, [r5, #0x38] + add r4, #0x38 + cmp r0, #0 + bne _02230172 + mov r0, #9 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r2, #0 + mov r0, #0x49 + str r2, [sp, #0xc] + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, r4, #0 + mov r3, #0xf + bl FUN_02019064 +_02230172: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + mov r0, #1 + str r0, [sp] + ldr r1, _02230198 ; =0x0223AE20 + add r0, r6, #0 + mov r2, #4 + add r3, r4, #0 + bl MOD83_022303B0 + mov r0, #4 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02230194: .word 0x000005C8 +_02230198: .word 0x0223AE20 + thumb_func_end MOD83_02230118 + + thumb_func_start MOD83_0223019C +MOD83_0223019C: ; 0x0223019C + push {r4, lr} + bl FUN_02006278 + ldr r1, _022301CC ; =0x000005C8 + add r4, r0, #0 + ldr r2, [r4, r1] + cmp r2, #0x1e + bne _022301B6 + mov r2, #1 + add r1, r1, #4 + str r2, [r4, r1] + bl MOD83_022313E4 +_022301B6: + ldr r2, _022301D0 ; =0x000015D8 + mov r0, #0 + ldr r2, [r4, r2] + mov r1, #0x35 + mov r3, #2 + bl MOD83_0223886C + mov r0, #0 + mvn r0, r0 + pop {r4, pc} + nop +_022301CC: .word 0x000005C8 +_022301D0: .word 0x000015D8 + thumb_func_end MOD83_0223019C + + thumb_func_start MOD83_022301D4 +MOD83_022301D4: ; 0x022301D4 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + ldr r0, _02230204 ; =0x000005C8 + ldr r1, [r4, r0] + cmp r1, #0x1e + bne _022301EA + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_022301EA: + mov r0, #1 + bl MOD83_02238860 + ldr r2, _02230208 ; =0x000015D8 + mov r0, #0 + ldr r2, [r4, r2] + mov r1, #0x34 + mov r3, #2 + bl MOD83_0223886C + mov r0, #0 + mvn r0, r0 + pop {r4, pc} + .align 2, 0 +_02230204: .word 0x000005C8 +_02230208: .word 0x000015D8 + thumb_func_end MOD83_022301D4 + + thumb_func_start MOD83_0223020C +MOD83_0223020C: ; 0x0223020C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r3, #0 + ldr r3, _02230254 ; =0x0223A418 + add r7, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r2, sp, #0 + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + lsr r1, r6, #0xb + str r0, [r2] + add r0, sp, #0 + strb r1, [r0, #0x12] + lsr r1, r5, #0xe + strb r1, [r0, #0x13] + lsl r1, r4, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + mov r2, ip + mov r3, #0 + bl FUN_02016C18 + lsl r1, r4, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + bl FUN_02018744 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02230254: .word 0x0223A418 + thumb_func_end MOD83_0223020C + + thumb_func_start MOD83_02230258 +MOD83_02230258: ; 0x02230258 + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r5, _022302B0 ; =0x0223A408 + add r3, sp, #0 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r1, #0 + mov r2, #0xf + add r0, r4, #0 + lsl r2, r2, #0xc + add r3, r1, #0 + bl MOD83_0223020C + mov r1, #1 + mov r2, #0x3e + add r0, r4, #0 + lsl r2, r2, #0xa + lsl r3, r1, #0xf + bl MOD83_0223020C + mov r2, #0xe + add r0, r4, #0 + mov r1, #4 + lsl r2, r2, #0xa + mov r3, #0 + bl MOD83_0223020C + mov r2, #0x1e + mov r3, #1 + add r0, r4, #0 + mov r1, #5 + lsl r2, r2, #0xa + lsl r3, r3, #0xe + bl MOD83_0223020C + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022302B0: .word 0x0223A408 + thumb_func_end MOD83_02230258 + + thumb_func_start MOD83_022302B4 +MOD83_022302B4: ; 0x022302B4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x20 + mov r2, #4 + str r0, [sp] + mov r0, #0x56 + add r3, r2, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0 + add r3, #0xfc + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x56 + str r0, [sp, #0xc] + mov r0, #0x74 + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x56 + str r0, [sp, #0xc] + mov r0, #0x74 + mov r1, #2 + add r2, r4, #0 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #8 + mov r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #5 + add r3, r2, #0 + bl FUN_020186B4 + add r0, r4, #0 + mov r1, #5 + bl FUN_02017CD0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_022302B4 + + thumb_func_start MOD83_02230330 +MOD83_02230330: ; 0x02230330 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x56 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0 + add r3, r0, #0 + add r2, r1, #0 + add r3, #0x8c + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x56 + str r0, [sp, #0xc] + mov r0, #0x74 + add r2, r4, #0 + add r3, r1, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x56 + str r0, [sp, #0xc] + mov r0, #0x74 + mov r1, #2 + add r2, r4, #0 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #8 + mov r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020186B4 + add r0, r4, #0 + mov r1, #1 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD83_022302B4 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02230330 + + thumb_func_start MOD83_022303B0 +MOD83_022303B0: ; 0x022303B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp] + add r5, r1, #0 + add r7, r2, #0 + str r3, [sp, #4] + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x7c] + cmp r0, #0 + beq _022303CC + bl FUN_02012870 +_022303CC: + add r0, r7, #0 + mov r1, #0x56 + bl FUN_02012838 + str r0, [r4, #0x7c] + ldr r2, _0223045C ; =0x00000172 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x56 + bl FUN_0200A86C + mov r6, #0 + str r0, [r4, #0x10] + cmp r7, #0 + ble _022303FE +_022303EA: + ldr r0, [r4, #0x7c] + ldr r1, [r4, #0x10] + ldr r2, [r5] + ldr r3, [r5, #4] + bl FUN_02012880 + add r6, r6, #1 + add r5, #8 + cmp r6, r7 + blt _022303EA +_022303FE: + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + ldr r3, _02230460 ; =0x0223AE00 + add r2, sp, #8 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x7c] + str r0, [sp, #8] + add r0, sp, #8 + strh r7, [r0, #0x12] + ldrh r1, [r0, #0x12] + strh r1, [r0, #0x10] + ldr r0, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [r4, #0x78] + cmp r0, #0 + beq _02230436 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 +_02230436: + mov r1, #0 + add r0, sp, #8 + add r2, r1, #0 + mov r3, #0x56 + bl FUN_020010A8 + str r0, [r4, #0x78] + mov r0, #0 + ldr r2, [sp, #0x40] + mvn r0, r0 + cmp r2, r0 + beq _02230458 + add r4, #0x18 + ldr r0, [sp] + add r1, r4, #0 + bl MOD83_0223050C +_02230458: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223045C: .word 0x00000172 +_02230460: .word 0x0223AE00 + thumb_func_end MOD83_022303B0 + + thumb_func_start MOD83_02230464 +MOD83_02230464: ; 0x02230464 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r0, [sp, #0x14] + str r1, [sp, #0x1c] + str r2, [sp, #0x18] + bl FUN_02006278 + add r7, r0, #0 + ldr r0, [r7, #4] + mov r5, #0 + bl FUN_0202251C + ldr r1, _02230508 ; =0x0223AD98 + add r4, r7, #0 + ldr r2, [r1, #0x50] + ldr r1, [r1, #0x54] + add r4, #0x28 + add r5, r5, #1 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + bl FUN_0202AE70 + cmp r0, #0 + beq _022304A8 + lsl r6, r5, #3 + add r0, sp, #0x20 + add r1, r0, r6 + ldr r0, _02230508 ; =0x0223AD98 + add r5, r5, #1 + ldr r3, [r0, #0x58] + ldr r2, [r0, #0x5c] + add r0, sp, #0x20 + str r3, [r0, r6] + str r2, [r1, #4] +_022304A8: + lsl r6, r5, #3 + add r0, sp, #0x20 + add r1, r0, r6 + ldr r0, _02230508 ; =0x0223AD98 + ldr r3, [r0, #0x60] + ldr r2, [r0, #0x64] + add r0, sp, #0x20 + str r3, [r0, r6] + str r2, [r1, #4] + ldr r0, [r4] + cmp r0, #0 + bne _022304E6 + mov r0, #7 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r5, #1 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + mov r2, #0 + lsl r0, r0, #0x10 + str r2, [sp, #0xc] + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r7] + add r1, r4, #0 + mov r3, #8 + bl FUN_02019064 +_022304E6: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + ldr r0, [sp, #0x18] + add r1, sp, #0x20 + str r0, [sp] + ldr r0, [sp, #0x14] + add r2, r5, #1 + add r3, r4, #0 + bl MOD83_022303B0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_02230508: .word 0x0223AD98 + thumb_func_end MOD83_02230464 + + thumb_func_start MOD83_0223050C +MOD83_0223050C: ; 0x0223050C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r7, r2, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r2, _0223059C ; =0x00000172 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x56 + bl FUN_0200A86C + str r0, [r4, #0x10] + mov r0, #0x56 + bl FUN_0200AA80 + str r0, [r4, #0xc] + mov r0, #1 + mov r1, #6 + bl FUN_02002E4C + add r1, r0, #0 + add r0, r5, #0 + bl FUN_02019620 + ldr r6, [r4, #0x14] + cmp r6, #0 + bne _02230554 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r2, r7, #0 + mov r3, #0x56 + bl FUN_0200A9C4 + add r6, r0, #0 +_02230554: + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #0x68] + mov r1, #1 + str r0, [sp, #4] + ldr r0, _022305A0 ; =0x0001020F + add r2, r6, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + add r0, r5, #0 + bl FUN_0201BDE0 + str r0, [r4, #0x6c] + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0223057A + add r0, r6, #0 + bl FUN_02021A20 +_0223057A: + add r0, r5, #0 + mov r1, #0 + mov r2, #1 + mov r3, #2 + bl FUN_0200D0BC + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + ldr r0, [r4, #0xc] + bl FUN_0200AB18 + mov r0, #0xff + str r0, [r4, #0x68] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223059C: .word 0x00000172 +_022305A0: .word 0x0001020F + thumb_func_end MOD83_0223050C + + thumb_func_start MOD83_022305A4 +MOD83_022305A4: ; 0x022305A4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r2, #0 + bl FUN_02006278 + mov r0, #0x25 + mov r1, #0x56 + bl FUN_020219F4 + add r1, r6, #0 + mov r2, #0x24 + add r4, r0, #0 + bl FUN_02021E8C + mov r0, #0 + mov r1, #6 + bl FUN_02002E4C + add r1, r0, #0 + add r0, r5, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02230600 ; =0x0001020F + add r2, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + mov r1, #0 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CCA4 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_02230600: .word 0x0001020F + thumb_func_end MOD83_022305A4 + + thumb_func_start MOD83_02230604 +MOD83_02230604: ; 0x02230604 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl FUN_02006278 + ldr r0, [r0, #0x78] + bl FUN_02001204 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02230628 + add r0, r0, #1 + cmp r4, r0 + beq _0223065E + b _02230642 +_02230628: + ldr r0, _02230660 ; =0x000005DC + bl FUN_020054C8 + cmp r6, #0 + beq _0223065E + add r0, r7, #0 + blx r6 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223065E + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02230642: + ldr r0, _02230660 ; =0x000005DC + bl FUN_020054C8 + cmp r4, #0 + beq _0223065E + ldr r0, _02230664 ; =0x0223B888 + str r4, [r0, #0xc] + add r0, r7, #0 + blx r4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223065E + str r0, [r5] +_0223065E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02230660: .word 0x000005DC +_02230664: .word 0x0223B888 + thumb_func_end MOD83_02230604 + + thumb_func_start MOD83_02230668 +MOD83_02230668: ; 0x02230668 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0201BD5C + mov r0, #0 + add r1, r0, #0 + mov r2, #0x56 + bl FUN_02002ED0 + mov r0, #0 + mov r1, #0x20 + mov r2, #0x56 + bl FUN_02002ED0 + ldr r0, [r4, #8] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x56 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + mov r3, #2 + bl FUN_0200CD68 + mov r0, #1 + str r0, [sp] + mov r0, #0x56 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #0 + mov r2, #0x1f + mov r3, #3 + bl FUN_0200CB00 + mov r0, #5 + ldr r1, _02230710 ; =0x00007D8C + lsl r0, r0, #0x18 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019048 + cmp r0, #0 + bne _022306EC + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + add r1, r4, #0 + str r2, [sp, #0xc] + mov r0, #0x28 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, #0x18 + mov r3, #2 + bl FUN_02019064 +_022306EC: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x18 + mov r2, #0 + bl MOD83_0223050C + add r0, r5, #0 + mov r1, #0xc4 + mov r2, #0 + bl MOD83_02230464 + ldr r0, [r4] + bl MOD83_02230330 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02230710: .word 0x00007D8C + thumb_func_end MOD83_02230668 + + thumb_func_start MOD83_02230714 +MOD83_02230714: ; 0x02230714 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r1, _022307A4 ; =0x000015DC + add r0, r6, #0 + add r1, r4, r1 + bl MOD83_02239F34 + cmp r0, #4 + bhi _022307A2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223073A: ; jump table + .short _022307A2 - _0223073A - 2 ; case 0 + .short _02230744 - _0223073A - 2 ; case 1 + .short _02230768 - _0223073A - 2 ; case 2 + .short _02230768 - _0223073A - 2 ; case 3 + .short _02230776 - _0223073A - 2 ; case 4 +_02230744: + ldr r1, _022307A8 ; =0x000015FC + add r0, r4, #0 + mov r2, #0xea + add r0, #0x8c + add r1, r4, r1 + lsl r2, r2, #2 + bl memcpy + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r0, #0x1b + add r4, #0x84 + str r0, [r4] + mov r0, #0x13 + str r0, [r5] + pop {r4, r5, r6, pc} +_02230768: + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r0, #0x11 + str r0, [r5] + pop {r4, r5, r6, pc} +_02230776: + ldr r0, _022307AC ; =0x00002624 + add r0, r4, r0 + bl FUN_02019570 + ldr r0, _022307AC ; =0x00002624 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, [r4] + mov r1, #0 + bl FUN_02018744 + ldr r0, _022307B0 ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + mov r1, #0xc4 + mov r2, #0 + bl MOD83_02230464 + mov r0, #3 + str r0, [r5] +_022307A2: + pop {r4, r5, r6, pc} + .align 2, 0 +_022307A4: .word 0x000015DC +_022307A8: .word 0x000015FC +_022307AC: .word 0x00002624 +_022307B0: .word 0x000005DC + thumb_func_end MOD83_02230714 + + thumb_func_start MOD83_022307B4 +MOD83_022307B4: ; 0x022307B4 + push {r3, r4, r5, r6, lr} + sub sp, #0x5c + add r5, r0, #0 + ldr r0, _0223083C ; =0x00002610 + ldr r4, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _022307C8 + mov r4, #0xb +_022307C8: + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r5] + mov r1, #0 + bl FUN_02018744 + mov r0, #0x56 + bl FUN_0200AA80 + mov r1, #2 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r2, _02230840 ; =0x00002614 + mov r1, #0 + ldr r2, [r5, r2] + mov r3, #5 + add r6, r0, #0 + bl FUN_0200AD38 + mov r0, #0x1f + ldr r1, _02230844 ; =0x00002624 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r3, _02230848 ; =0x00000265 + add r0, sp, #8 + add r1, r5, r1 + mov r2, #1 + bl MOD83_022388E4 + add r0, sp, #8 + mov r1, #0x18 + mov r2, #0x10 + mov r3, #0x64 + bl MOD83_02238934 + add r0, sp, #8 + mov r1, #0 + mov r2, #1 + bl MOD83_0223893C + str r6, [sp, #0x1c] + str r4, [sp] + mov r2, #4 + ldr r0, [r5] + add r1, sp, #8 + add r3, r2, #0 + bl MOD83_02238A38 + add r0, r6, #0 + bl FUN_0200AB18 + add sp, #0x5c + pop {r3, r4, r5, r6, pc} + nop +_0223083C: .word 0x00002610 +_02230840: .word 0x00002614 +_02230844: .word 0x00002624 +_02230848: .word 0x00000265 + thumb_func_end MOD83_022307B4 + + thumb_func_start MOD83_0223084C +MOD83_0223084C: ; 0x0223084C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r1, r0, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #3 + bne _02230862 + mov r4, #0x15 + b _0223088C +_02230862: + cmp r0, #4 + bne _0223086A + mov r4, #0x19 + b _0223088C +_0223086A: + cmp r0, #2 + bne _02230872 + mov r4, #0x16 + b _0223088C +_02230872: + cmp r0, #1 + bne _0223087A + mov r4, #0x1b + b _0223088C +_0223087A: + cmp r0, #5 + bne _0223088C + add r0, r5, #0 + add r1, #0x18 + mov r2, #9 + mov r3, #0x33 + bl MOD83_0223089C + pop {r3, r4, r5, pc} +_0223088C: + add r0, r5, #0 + add r1, #0x18 + add r2, r4, #0 + mov r3, #0x32 + bl MOD83_0223089C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD83_0223084C + + thumb_func_start MOD83_0223089C +MOD83_0223089C: ; 0x0223089C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + add r6, r1, #0 + add r5, r2, #0 + str r3, [sp, #4] + bl FUN_02006278 + add r4, r0, #0 + cmp r6, #0 + beq _022308F8 + cmp r5, #0 + beq _022308F8 + ldr r2, _02230920 ; =0x00000172 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x56 + bl FUN_0200A86C + add r7, r0, #0 + mov r0, #0x56 + bl FUN_0200AA80 + add r1, r7, #0 + add r2, r5, #0 + mov r3, #0x56 + str r0, [sp, #8] + bl FUN_0200A9C4 + str r0, [r4, #0x14] + mov r0, #1 + str r0, [r4, #0x68] + ldr r0, [sp] + add r1, r6, #0 + add r2, r5, #0 + bl MOD83_0223050C + ldr r0, [sp, #4] + str r0, [r4, #0x74] + ldr r0, [sp, #8] + bl FUN_0200AB18 + add r0, r7, #0 + bl FUN_0200A8B8 + b _02230918 +_022308F8: + ldr r0, [r4, #0x6c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02230918 + ldr r0, [r4, #0x14] + bl FUN_02021A20 + mov r0, #0 + str r0, [r4, #0x14] + str r0, [r4, #0x68] + add sp, #0xc + ldr r0, [r4, #0x74] + pop {r4, r5, r6, r7, pc} +_02230918: + mov r0, #0x31 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02230920: .word 0x00000172 + thumb_func_end MOD83_0223089C + + thumb_func_start MOD83_02230924 +MOD83_02230924: ; 0x02230924 + push {r3, lr} + ldr r1, _02230950 ; =0x000015D4 + ldr r0, [r0, r1] + cmp r0, #4 + bhi _0223094C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223093A: ; jump table + .short _0223094C - _0223093A - 2 ; case 0 + .short _02230944 - _0223093A - 2 ; case 1 + .short _0223094C - _0223093A - 2 ; case 2 + .short _0223094C - _0223093A - 2 ; case 3 + .short _0223094C - _0223093A - 2 ; case 4 +_02230944: + bl MOD83_0222F9DC + bl FUN_02033ED0 +_0223094C: + pop {r3, pc} + nop +_02230950: .word 0x000015D4 + thumb_func_end MOD83_02230924 + + thumb_func_start MOD83_02230954 +MOD83_02230954: ; 0x02230954 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD83_02231370 + mov r0, #3 + mov r1, #0x56 + lsl r2, r0, #0x10 + bl FUN_0201681C + ldr r1, _022309FC ; =0x00002998 + add r0, r5, #0 + mov r2, #0x56 + bl FUN_02006268 + ldr r2, _022309FC ; =0x00002998 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x56 + bl FUN_02016B94 + str r0, [r4] + bl FUN_0201E6D8 + bl FUN_0201E740 + bl MOD83_022331C0 + ldr r0, [r4] + bl MOD83_02230258 + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r1, _02230A00 ; =0x00000496 + mov r0, #0xa + mov r2, #1 + bl FUN_0200433C + mov r0, #0x56 + bl MOD83_022385FC + bl MOD83_02238700 + cmp r0, #0 + beq _022309D0 + ldr r0, _02230A04 ; =0x000015D4 + mov r1, #2 + str r1, [r4, r0] + ldr r0, _02230A08 ; =0x020ECAC0 + ldrb r0, [r0] + bl FUN_02016438 + mov r0, #1 + bl MOD83_02239450 +_022309D0: + ldr r0, _02230A0C ; =0x000005C8 + mov r1, #0x1d + str r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200628C + ldr r0, [r0, #8] + str r0, [r4, #4] + bl LoadPlayerDataAddress + str r0, [r4, #8] + mov r0, #0xff + mov r2, #3 + str r0, [r4, #0x68] + mov r0, #0 + mov r1, #0x5b + lsl r2, r2, #8 + bl FUN_0201681C + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_022309FC: .word 0x00002998 +_02230A00: .word 0x00000496 +_02230A04: .word 0x000015D4 +_02230A08: .word 0x020ECAC0 +_02230A0C: .word 0x000005C8 + thumb_func_end MOD83_02230954 + + thumb_func_start MOD83_02230A10 +MOD83_02230A10: ; 0x02230A10 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + bl CTRDG_IsExisting + ldr r0, _02230D5C ; =0x000005C8 + ldr r0, [r4, r0] + cmp r0, #0x1d + beq _02230A30 + add r0, r4, #0 + bl MOD83_022313E4 +_02230A30: + ldr r3, [r5] + cmp r3, #0x38 + bls _02230A3A + bl _02231334 +_02230A3A: + add r0, r3, r3 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02230A46: ; jump table + .short _02230AB8 - _02230A46 - 2 ; case 0 + .short _02230ACA - _02230A46 - 2 ; case 1 + .short _02230AE8 - _02230A46 - 2 ; case 2 + .short _02230AF2 - _02230A46 - 2 ; case 3 + .short _02230B00 - _02230A46 - 2 ; case 4 + .short _02230B0E - _02230A46 - 2 ; case 5 + .short _02231334 - _02230A46 - 2 ; case 6 + .short _02230CA0 - _02230A46 - 2 ; case 7 + .short _02230D50 - _02230A46 - 2 ; case 8 + .short _02230D8C - _02230A46 - 2 ; case 9 + .short _02230E4C - _02230A46 - 2 ; case 10 + .short _02230E9A - _02230A46 - 2 ; case 11 + .short _02230EBC - _02230A46 - 2 ; case 12 + .short _02230F4C - _02230A46 - 2 ; case 13 + .short _02230FA2 - _02230A46 - 2 ; case 14 + .short _02230FCE - _02230A46 - 2 ; case 15 + .short _0223100E - _02230A46 - 2 ; case 16 + .short _02231030 - _02230A46 - 2 ; case 17 + .short _0223105A - _02230A46 - 2 ; case 18 + .short _0223107A - _02230A46 - 2 ; case 19 + .short _0223110E - _02230A46 - 2 ; case 20 + .short _0223111A - _02230A46 - 2 ; case 21 + .short _0223113C - _02230A46 - 2 ; case 22 + .short _02231172 - _02230A46 - 2 ; case 23 + .short _0223118C - _02230A46 - 2 ; case 24 + .short _02231204 - _02230A46 - 2 ; case 25 + .short _02231334 - _02230A46 - 2 ; case 26 + .short _02230B1C - _02230A46 - 2 ; case 27 + .short _02231334 - _02230A46 - 2 ; case 28 + .short _02231334 - _02230A46 - 2 ; case 29 + .short _02231334 - _02230A46 - 2 ; case 30 + .short _02230BD6 - _02230A46 - 2 ; case 31 + .short _02230B28 - _02230A46 - 2 ; case 32 + .short _02230BE8 - _02230A46 - 2 ; case 33 + .short _02230C0A - _02230A46 - 2 ; case 34 + .short _02230C7C - _02230A46 - 2 ; case 35 + .short _02231334 - _02230A46 - 2 ; case 36 + .short _02231334 - _02230A46 - 2 ; case 37 + .short _02231334 - _02230A46 - 2 ; case 38 + .short _02231334 - _02230A46 - 2 ; case 39 + .short _02231334 - _02230A46 - 2 ; case 40 + .short _02231334 - _02230A46 - 2 ; case 41 + .short _02231334 - _02230A46 - 2 ; case 42 + .short _02231334 - _02230A46 - 2 ; case 43 + .short _02231334 - _02230A46 - 2 ; case 44 + .short _02231334 - _02230A46 - 2 ; case 45 + .short _02231334 - _02230A46 - 2 ; case 46 + .short _02231334 - _02230A46 - 2 ; case 47 + .short _02231220 - _02230A46 - 2 ; case 48 + .short _02231244 - _02230A46 - 2 ; case 49 + .short _02231252 - _02230A46 - 2 ; case 50 + .short _0223126E - _02230A46 - 2 ; case 51 + .short _02231284 - _02230A46 - 2 ; case 52 + .short _02231298 - _02230A46 - 2 ; case 53 + .short _022312AA - _02230A46 - 2 ; case 54 + .short _022312EC - _02230A46 - 2 ; case 55 + .short _0223132E - _02230A46 - 2 ; case 56 +_02230AB8: + mov r0, #0x56 + bl MOD83_02238770 + ldr r0, _02230D60 ; =0x000015D8 + str r5, [r4, r0] + mov r0, #1 + str r0, [r5] + bl _02231334 +_02230ACA: + add r0, r6, #0 + add r1, r4, #0 + bl MOD83_02230668 + add r0, r4, #0 + bl MOD83_0222FAE8 + mov r0, #1 + mov r1, #3 + add r2, r5, #0 + mov r3, #2 + bl MOD83_0223886C + bl _02231334 +_02230AE8: + add r0, r5, #0 + bl MOD83_022388CC + bl _02231334 +_02230AF2: + ldr r2, _02230D64 ; =MOD83_022301D4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02230604 + bl _02231334 +_02230B00: + ldr r2, _02230D68 ; =MOD83_022300F8 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02230604 + bl _02231334 +_02230B0E: + ldr r2, _02230D6C ; =MOD83_0222FDE8 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02230604 + bl _02231334 +_02230B1C: + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02230714 + bl _02231334 +_02230B28: + add r0, r4, #0 + bl MOD83_022314B4 + ldr r0, _02230D70 ; =0x0223B888 + ldr r0, [r0, #0x10] + cmp r0, #0x2c + bne _02230BC0 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + add r0, r6, #0 + bl MOD83_0222FC40 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x8c + bl MOD83_022332B4 + add r1, r4, #0 + add r1, #0x80 + str r0, [r1] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _02230B6C + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r0, #0x30 + str r0, [r5] + b _02230BC0 +_02230B6C: + add r0, r4, #0 + add r0, #0x58 + bl FUN_02019048 + cmp r0, #0 + bne _02230B9A + mov r0, #2 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + mov r0, #0x71 + add r1, r4, #0 + str r2, [sp, #0xc] + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, #0x58 + mov r3, #3 + bl FUN_02019064 +_02230B9A: + bl MOD83_02239DA0 + add r1, r4, #0 + add r2, r0, #0 + add r0, r6, #0 + add r1, #0x58 + bl MOD83_022305A4 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #4 + bl MOD83_0223050C + add r0, r6, #0 + bl MOD83_0222FF80 + mov r0, #0x1f + str r0, [r5] +_02230BC0: + ldr r0, _02230D70 ; =0x0223B888 + ldr r0, [r0, #0x10] + sub r0, #0x2d + cmp r0, #1 + bls _02230BCC + b _02231334 +_02230BCC: + bl MOD83_02231494 + mov r0, #0x11 + str r0, [r5] + b _02231334 +_02230BD6: + ldr r2, _02230D74 ; =MOD83_02230084 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02230604 + add r0, r4, #0 + bl MOD83_022314B4 + b _02231334 +_02230BE8: + add r0, r6, #0 + bl MOD83_0222FC40 + add r1, r0, #0 + ldr r0, [r4] + bl MOD83_022391EC + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C + add r0, r6, #0 + bl MOD83_0222FCE4 + mov r0, #0x22 + str r0, [r5] + b _02231334 +_02230C0A: + bl MOD83_02239574 + cmp r0, #4 + bne _02230C16 + bl MOD83_02239544 +_02230C16: + bl MOD83_02239574 + cmp r0, #2 + bne _02230C48 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + ldr r0, _02230D78 ; =0x00000624 + bl FUN_020054C8 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #8 + mov r3, #0x36 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_02230C48: + bl MOD83_02239574 + cmp r0, #3 + bne _02230D38 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + add r0, r4, #0 + add r0, #0xda + ldrb r1, [r0] + mov r0, #4 + mov r2, #0x1a + bic r1, r0 + add r0, r4, #0 + add r0, #0xda + strb r1, [r0] + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r3, #0x36 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_02230C7C: + add r0, r4, #0 + bl MOD83_022314B4 + ldr r0, _02230D70 ; =0x0223B888 + ldr r1, [r0, #0x10] + add r0, r1, #0 + sub r0, #0x2c + cmp r0, #2 + bhi _02230D38 + cmp r1, #0x2e + bne _02230C96 + bl MOD83_02231494 +_02230C96: + add r0, r6, #0 + bl MOD83_0222FFD8 + str r0, [r5] + b _02231334 +_02230CA0: + add r0, r4, #0 + bl MOD83_0222F950 + ldr r1, _02230D7C ; =0x00000438 + str r0, [r4, r1] + mov r0, #0 + ldr r1, [r4, r1] + mvn r0, r0 + cmp r1, r0 + beq _02230D20 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x8c + bl MOD83_022332B4 + add r1, r4, #0 + add r1, #0x80 + str r0, [r1] + add r0, r4, #0 + add r0, #0x58 + bl FUN_02019048 + cmp r0, #0 + bne _02230CFA + mov r0, #2 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + mov r0, #0x71 + add r1, r4, #0 + str r2, [sp, #0xc] + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, #0x58 + mov r3, #3 + bl FUN_02019064 +_02230CFA: + add r1, r4, #0 + add r2, r4, #0 + add r0, r6, #0 + add r1, #0x58 + add r2, #0x8c + bl MOD83_022305A4 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #4 + bl MOD83_0223050C + add r0, r6, #0 + mov r1, #0 + bl MOD83_0222FD84 + mov r0, #8 + str r0, [r5] +_02230D20: + ldr r0, _02230D80 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + bne _02230D3A + ldr r0, _02230D84 ; =0x00000434 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + beq _02230D3A +_02230D38: + b _02231334 +_02230D3A: + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + bl MOD83_0222F9DC + bl FUN_02033ED0 + mov r0, #0x11 + str r0, [r5] + b _02231334 +_02230D50: + ldr r2, _02230D88 ; =MOD83_0222FFD8 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02230604 + b _02231334 + .align 2, 0 +_02230D5C: .word 0x000005C8 +_02230D60: .word 0x000015D8 +_02230D64: .word MOD83_022301D4 +_02230D68: .word MOD83_022300F8 +_02230D6C: .word MOD83_0222FDE8 +_02230D70: .word 0x0223B888 +_02230D74: .word MOD83_02230084 +_02230D78: .word 0x00000624 +_02230D7C: .word 0x00000438 +_02230D80: .word 0x021C48B8 +_02230D84: .word 0x00000434 +_02230D88: .word MOD83_0222FFD8 +_02230D8C: + bl FUN_02031190 + add r7, r0, #0 + beq _02230DE4 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _02230DE4 + mov r0, #0xab + bl FUN_020315D8 + cmp r0, #1 + bne _02230E14 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r0, #1 + add r1, r0, #0 + bl FUN_020334E8 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #7 + bl MOD83_0223050C + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FB0C + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C + mov r1, #0x96 + ldr r0, _02231120 ; =0x00000434 + lsl r1, r1, #2 + str r1, [r4, r0] + mov r0, #0xa + str r0, [r5] + b _02230E14 +_02230DE4: + cmp r7, #0 + beq _02230E14 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _02230E14 + bl MOD83_0222F9DC + bl FUN_02033ED0 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r0, #0x10 + str r0, [r5] + b _02231334 +_02230E14: + ldr r0, _02231124 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + bne _02230E2C + ldr r0, _02231120 ; =0x00000434 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02230F1C +_02230E2C: + bl MOD83_0222F9DC + bl FUN_02033ED0 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r0, #0x11 + str r0, [r5] + b _02231334 +_02230E4C: + bl MOD83_0222F9A0 + cmp r0, #0 + beq _02230E58 + mov r0, #0xb + str r0, [r5] +_02230E58: + bl FUN_02031190 + ldr r1, _02231124 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #2 + tst r1, r2 + bne _02230E84 + ldr r1, _02231120 ; =0x00000434 + ldr r2, [r4, r1] + sub r2, r2, #1 + str r2, [r4, r1] + ldr r1, [r4, r1] + cmp r1, #0 + beq _02230E84 + cmp r0, #0 + beq _02230F1C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _02230F1C +_02230E84: + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + bl MOD83_0222F9DC + bl FUN_02033ED0 + mov r0, #0x11 + str r0, [r5] + b _02231334 +_02230E9A: + add r0, r6, #0 + bl MOD83_0222FC40 + add r1, r0, #0 + ldr r0, [r4] + bl MOD83_022391EC + mov r0, #0 + add r1, r0, #0 + bl FUN_020334E8 + add r0, r6, #0 + bl MOD83_0222FCE4 + mov r0, #0xc + str r0, [r5] + b _02231334 +_02230EBC: + bl FUN_02031190 + cmp r0, #0 + beq _02230EFA + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _02230EFA + bl MOD83_0222F9DC + ldr r0, _02231128 ; =0x00002990 + mov r1, #1 + str r1, [r4, r0] + bl MOD83_0223955C + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + bl FUN_02033ED0 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + mov r0, #0xe + str r0, [r5] + b _02231334 +_02230EFA: + bl MOD83_02239574 + cmp r0, #4 + bne _02230F14 + mov r0, #0x93 + bl FUN_02031588 + mov r0, #0xd + str r0, [r5] + ldr r0, _0223112C ; =0x0000043C + mov r1, #0x78 + str r1, [r4, r0] + b _02231334 +_02230F14: + bl MOD83_02239574 + cmp r0, #3 + beq _02230F1E +_02230F1C: + b _02231334 +_02230F1E: + bl MOD83_0223955C + add r0, r4, #0 + add r0, #0xda + ldrb r1, [r0] + mov r0, #4 + bic r1, r0 + add r0, r4, #0 + add r0, #0xda + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #0x1a + mov r3, #0x36 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_02230F4C: + mov r0, #0x93 + bl FUN_020315D8 + cmp r0, #1 + bne _02230F66 + bl MOD83_02239544 + ldr r0, _0223112C ; =0x0000043C + mov r1, #0xa + str r1, [r4, r0] + mov r0, #0xf + str r0, [r5] + b _02231334 +_02230F66: + ldr r0, _0223112C ; =0x0000043C + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02231062 + bl MOD83_0223955C + add r0, r4, #0 + add r0, #0xda + ldrb r1, [r0] + mov r0, #4 + bic r1, r0 + add r0, r4, #0 + add r0, #0xda + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #0x1a + mov r3, #0x36 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_02230FA2: + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r4, #0 + add r0, #0xda + ldrb r1, [r0] + mov r0, #4 + mov r2, #0x1c + bic r1, r0 + add r0, r4, #0 + add r0, #0xda + strb r1, [r0] + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r3, #0x36 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_02230FCE: + ldr r0, _0223112C ; =0x0000043C + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02231062 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + bl MOD83_0222F9DC + bl FUN_02033ED0 + ldr r0, _02231130 ; =0x00000624 + bl FUN_020054C8 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #8 + mov r3, #0x36 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_0223100E: + ldr r0, _02231134 ; =0x000005DC + bl FUN_020054C8 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #0x18 + bl MOD83_0223050C + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl MOD83_0222FB44 + mov r0, #0x12 + str r0, [r5] + b _02231334 +_02231030: + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + ldr r0, _02231134 ; =0x000005DC + bl FUN_020054C8 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #0x17 + bl MOD83_0223050C + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl MOD83_0222FB44 + mov r0, #0x12 + str r0, [r5] + b _02231334 +_0223105A: + ldr r0, _02231124 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + bne _02231064 +_02231062: + b _02231334 +_02231064: + ldr r0, _02231134 ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + mov r1, #0xc4 + mov r2, #0 + bl MOD83_02230464 + mov r0, #3 + str r0, [r5] + b _02231334 +_0223107A: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0x1b + beq _02231090 + add r0, r4, #0 + mov r1, #0xea + add r0, #0x8c + lsl r1, r1, #2 + bl MOD83_02238728 +_02231090: + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x8c + bl MOD83_022332B4 + add r1, r4, #0 + add r1, #0x80 + str r0, [r1] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _022310B8 + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r0, #0x30 + str r0, [r5] + b _02231334 +_022310B8: + add r0, r4, #0 + add r0, #0x58 + bl FUN_02019048 + cmp r0, #0 + bne _022310E6 + mov r0, #2 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #0 + mov r0, #0x71 + add r1, r4, #0 + str r2, [sp, #0xc] + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, #0x58 + mov r3, #3 + bl FUN_02019064 +_022310E6: + add r1, r4, #0 + add r2, r4, #0 + add r0, r6, #0 + add r1, #0x58 + add r2, #0x8c + bl MOD83_022305A4 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #4 + bl MOD83_0223050C + add r0, r6, #0 + mov r1, #0 + bl MOD83_0222FD84 + mov r0, #0x14 + str r0, [r5] + b _02231334 +_0223110E: + ldr r2, _02231138 ; =MOD83_0222FFD8 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02230604 + b _02231334 +_0223111A: + mov r0, #0x16 + str r0, [r5] + b _02231334 + .align 2, 0 +_02231120: .word 0x00000434 +_02231124: .word 0x021C48B8 +_02231128: .word 0x00002990 +_0223112C: .word 0x0000043C +_02231130: .word 0x00000624 +_02231134: .word 0x000005DC +_02231138: .word MOD83_0222FFD8 +_0223113C: + add r0, r6, #0 + bl MOD83_0222FC40 + add r1, r0, #0 + ldr r0, [r4] + bl MOD83_022391EC + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #7 + bl MOD83_0223050C + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FB0C + add r0, r4, #0 + mov r1, #1 + bl MOD83_0222FA0C + ldr r0, _0223134C ; =0x0000043C + mov r1, #0x3c + str r1, [r4, r0] + mov r0, #0x17 + str r0, [r5] + b _02231334 +_02231172: + ldr r0, _0223134C ; =0x0000043C + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02231212 + add r0, r6, #0 + bl MOD83_0222FCE4 + mov r0, #0x18 + str r0, [r5] + b _02231334 +_0223118C: + bl MOD83_02239574 + cmp r0, #4 + bne _02231198 + bl MOD83_02239544 +_02231198: + bl MOD83_02239574 + cmp r0, #2 + bne _022311D0 + ldr r0, _0223134C ; =0x0000043C + mov r1, #1 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0 + bl MOD83_0222FA0C + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + ldr r0, _02231350 ; =0x00000624 + bl FUN_020054C8 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r2, #8 + mov r3, #0x19 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_022311D0: + bl MOD83_02239574 + cmp r0, #3 + bne _02231212 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + bl MOD83_0222FB0C + add r0, r4, #0 + add r0, #0xda + ldrb r1, [r0] + mov r0, #4 + mov r2, #0x1a + bic r1, r0 + add r0, r4, #0 + add r0, #0xda + strb r1, [r0] + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + mov r3, #0x36 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_02231204: + ldr r0, _0223134C ; =0x0000043C + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + beq _02231214 +_02231212: + b _02231334 +_02231214: + mov r1, #1 + lsl r1, r1, #0x10 + str r1, [r4, r0] + mov r0, #0x36 + str r0, [r5] + b _02231334 +_02231220: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #5 + beq _02231230 + add r0, r4, #0 + bl MOD83_02230924 +_02231230: + add r0, r6, #0 + bl MOD83_0223084C + str r0, [r5] + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl MOD83_0222FB44 + b _02231334 +_02231244: + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + bl MOD83_0223089C + str r0, [r5] + b _02231334 +_02231252: + ldr r0, _02231354 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02231334 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl MOD83_0222FB44 + add r0, r6, #0 + bl MOD83_022300F8 + str r0, [r5] + b _02231334 +_0223126E: + add r0, r6, #0 + mov r1, #1 + bl MOD83_0222FD84 + mov r0, #8 + str r0, [r5] + add r0, r4, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + b _02231334 +_02231284: + add r0, r6, #0 + bl MOD83_0222FA4C + mov r0, #0x11 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02231298: + add r0, r6, #0 + bl MOD83_0222FA4C + mov r1, #0x11 + mov r0, #1 + lsl r1, r1, #6 + add sp, #0x14 + str r0, [r4, r1] + pop {r4, r5, r6, r7, pc} +_022312AA: + ldr r0, _02231354 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02231334 + ldr r0, _02231358 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0xda + ldrb r0, [r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + cmp r0, #1 + bne _022312D6 + ldr r2, _0223135C ; =0x000015D8 + mov r0, #0 + ldr r2, [r4, r2] + mov r1, #0x37 + mov r3, #2 + bl MOD83_0223886C + b _02231334 +_022312D6: + mov r0, #1 + bl MOD83_02238860 + ldr r2, _0223135C ; =0x000015D8 + mov r0, #0 + ldr r2, [r4, r2] + mov r1, #0x38 + mov r3, #2 + bl MOD83_0223886C + b _02231334 +_022312EC: + ldr r0, [r4] + bl MOD83_022302B4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + add r1, r4, #0 + ldr r0, [r4] + add r1, #0xdc + mov r2, #0x56 + bl MOD83_02233168 + ldr r2, _0223135C ; =0x000015D8 + mov r0, #1 + ldr r2, [r4, r2] + mov r1, #0x36 + mov r3, #2 + bl MOD83_0223886C + add r0, r4, #0 + add r0, #0xda + ldrb r1, [r0] + mov r0, #4 + bic r1, r0 + add r0, r4, #0 + add r0, #0xda + strb r1, [r0] + b _02231334 +_0223132E: + mov r0, #0 + bl OS_ResetSystem +_02231334: + ldr r0, _02231360 ; =0x0000298C + ldr r1, [r4, r0] + cmp r1, #0 + beq _02231340 + add r0, r4, #0 + blx r1 +_02231340: + bl MOD83_02238D58 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223134C: .word 0x0000043C +_02231350: .word 0x00000624 +_02231354: .word 0x021C48B8 +_02231358: .word 0x000005DC +_0223135C: .word 0x000015D8 +_02231360: .word 0x0000298C + thumb_func_end MOD83_02230A10 + + thumb_func_start MOD83_02231364 +MOD83_02231364: ; 0x02231364 + ldr r0, _0223136C ; =0x0223B888 + ldr r0, [r0, #4] + bx lr + nop +_0223136C: .word 0x0223B888 + thumb_func_end MOD83_02231364 + + thumb_func_start MOD83_02231370 +MOD83_02231370: ; 0x02231370 + ldr r1, _02231378 ; =0x0223B888 + str r0, [r1, #4] + bx lr + nop +_02231378: .word 0x0223B888 + thumb_func_end MOD83_02231370 + + thumb_func_start MOD83_0223137C +MOD83_0223137C: ; 0x0223137C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + mov r0, #0x11 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0223139A + ldr r0, _022313D0 ; =0x0000003F + ldr r1, _022313D4 ; =0x021DBAB8 + bl FUN_02000E7C + b _022313A6 +_0223139A: + cmp r0, #1 + bne _022313A6 + ldr r0, _022313D8 ; =0x00000053 + ldr r1, _022313DC ; =0x0223A444 + bl FUN_02000E7C +_022313A6: + mov r0, #0x5b + bl FUN_020168D0 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x56 + bl FUN_020168D0 + ldr r0, _022313E0 ; =0x000015D4 + ldr r0, [r4, r0] + cmp r0, #2 + bne _022313C6 + mov r0, #0 + bl FUN_02016438 +_022313C6: + mov r0, #0 + bl MOD83_02239450 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_022313D0: .word 0x0000003F +_022313D4: .word 0x021DBAB8 +_022313D8: .word 0x00000053 +_022313DC: .word 0x0223A444 +_022313E0: .word 0x000015D4 + thumb_func_end MOD83_0223137C + + thumb_func_start MOD83_022313E4 +MOD83_022313E4: ; 0x022313E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02231438 ; =0x000005C8 + ldr r0, [r4, r0] + cmp r0, #0x1c + beq _022313FA + cmp r0, #0x1d + beq _02231436 + cmp r0, #0x1e + beq _0223140E + pop {r4, pc} +_022313FA: + ldr r0, [r4, #4] + bl FUN_02032D44 + ldr r0, _0223143C ; =0x000005CC + mov r1, #0x78 + str r1, [r4, r0] + mov r1, #0x1e + sub r0, r0, #4 + str r1, [r4, r0] + pop {r4, pc} +_0223140E: + bl FUN_02032D9C + mov r1, #1 + tst r0, r1 + beq _0223141E + mov r0, #0x5d + lsl r0, r0, #4 + str r1, [r4, r0] +_0223141E: + ldr r0, _0223143C ; =0x000005CC + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02231436 + bl FUN_02032D80 + ldr r0, _02231438 ; =0x000005C8 + mov r1, #0x1d + str r1, [r4, r0] +_02231436: + pop {r4, pc} + .align 2, 0 +_02231438: .word 0x000005C8 +_0223143C: .word 0x000005CC + thumb_func_end MOD83_022313E4 + + thumb_func_start MOD83_02231440 +MOD83_02231440: ; 0x02231440 + cmp r0, #4 + bhi _0223148C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02231450: ; jump table + .short _0223145A - _02231450 - 2 ; case 0 + .short _02231462 - _02231450 - 2 ; case 1 + .short _0223146A - _02231450 - 2 ; case 2 + .short _02231472 - _02231450 - 2 ; case 3 + .short _02231486 - _02231450 - 2 ; case 4 +_0223145A: + ldr r0, _02231490 ; =0x0223B888 + mov r1, #0x27 + str r1, [r0, #0x10] + bx lr +_02231462: + ldr r0, _02231490 ; =0x0223B888 + mov r1, #0x28 + str r1, [r0, #0x10] + bx lr +_0223146A: + ldr r0, _02231490 ; =0x0223B888 + mov r1, #0x29 + str r1, [r0, #0x10] + bx lr +_02231472: + ldr r0, _02231490 ; =0x0223B888 + ldr r1, [r0, #0x10] + cmp r1, #0x29 + bne _02231480 + mov r1, #0x2b + str r1, [r0, #0x10] + bx lr +_02231480: + mov r1, #0x2e + str r1, [r0, #0x10] + bx lr +_02231486: + ldr r0, _02231490 ; =0x0223B888 + mov r1, #0x2f + str r1, [r0, #0x10] +_0223148C: + bx lr + nop +_02231490: .word 0x0223B888 + thumb_func_end MOD83_02231440 + + thumb_func_start MOD83_02231494 +MOD83_02231494: ; 0x02231494 + push {r3, lr} + bl FUN_0202E4F0 + ldr r0, _022314B0 ; =0x0223B888 + ldr r0, [r0, #8] + bl FUN_02016A18 + bl FUN_02033ED0 + ldr r0, _022314B0 ; =0x0223B888 + mov r1, #0 + str r1, [r0, #8] + pop {r3, pc} + nop +_022314B0: .word 0x0223B888 + thumb_func_end MOD83_02231494 + + thumb_func_start MOD83_022314B4 +MOD83_022314B4: ; 0x022314B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022315C0 ; =0x0223B888 + ldr r0, [r0, #0x10] + cmp r0, #0x2b + bne _022314DA + bl MOD83_02231494 + bl MOD83_02239CEC + cmp r0, #0 + beq _022314D4 + ldr r0, _022315C0 ; =0x0223B888 + mov r1, #0x2c + str r1, [r0, #0x10] + b _022314DA +_022314D4: + ldr r0, _022315C0 ; =0x0223B888 + mov r1, #0x2d + str r1, [r0, #0x10] +_022314DA: + ldr r0, _022315C0 ; =0x0223B888 + ldr r0, [r0, #0x10] + cmp r0, #0x24 + beq _022314F6 + cmp r0, #0x25 + beq _022314F6 + cmp r0, #0x26 + beq _022314F6 + cmp r0, #0x27 + beq _022314F6 + cmp r0, #0x28 + beq _022314F6 + cmp r0, #0x2a + bne _02231502 +_022314F6: + bl WM_GetLinkLevel + mov r1, #3 + sub r0, r1, r0 + bl FUN_02033EEC +_02231502: + ldr r1, _022315C0 ; =0x0223B888 + ldr r0, [r1, #0x10] + sub r0, #0x24 + cmp r0, #0xb + bhi _0223157C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02231518: ; jump table + .short _02231530 - _02231518 - 2 ; case 0 + .short _0223153C - _02231518 - 2 ; case 1 + .short _0223157C - _02231518 - 2 ; case 2 + .short _0223157C - _02231518 - 2 ; case 3 + .short _02231572 - _02231518 - 2 ; case 4 + .short _0223157C - _02231518 - 2 ; case 5 + .short _0223157C - _02231518 - 2 ; case 6 + .short _0223157C - _02231518 - 2 ; case 7 + .short _0223157C - _02231518 - 2 ; case 8 + .short _0223157C - _02231518 - 2 ; case 9 + .short _0223157A - _02231518 - 2 ; case 10 + .short _0223157C - _02231518 - 2 ; case 11 +_02231530: + bl FUN_0202E49C + ldr r0, _022315C0 ; =0x0223B888 + mov r1, #0x25 + str r1, [r0, #0x10] + b _0223157C +_0223153C: + bl FUN_0202E4C8 + cmp r0, #1 + bne _0223157C + ldr r0, _022315C0 ; =0x0223B888 + mov r1, #0 + str r1, [r0] + bl MOD83_02239D98 + add r1, r0, #0 + mov r0, #0x56 + bl FUN_02016998 + add r2, r0, #0 + ldr r0, _022315C0 ; =0x0223B888 + ldr r1, _022315C4 ; =MOD83_02231440 + str r2, [r0, #8] + ldr r0, _022315C8 ; =0x000005D4 + add r0, r4, r0 + bl MOD83_02239A98 + ldr r0, _022315C0 ; =0x0223B888 + mov r1, #0x26 + str r1, [r0, #0x10] + bl FUN_02033E74 + b _0223157C +_02231572: + ldr r0, [r1] + add r0, r0, #1 + str r0, [r1] + b _0223157C +_0223157A: + pop {r4, pc} +_0223157C: + ldr r0, _022315CC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _022315BC + ldr r0, _022315C0 ; =0x0223B888 + ldr r0, [r0, #0x10] + sub r0, #0x27 + cmp r0, #8 + bhi _022315BC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223159C: ; jump table + .short _022315AE - _0223159C - 2 ; case 0 + .short _022315AE - _0223159C - 2 ; case 1 + .short _022315BC - _0223159C - 2 ; case 2 + .short _022315BC - _0223159C - 2 ; case 3 + .short _022315BC - _0223159C - 2 ; case 4 + .short _022315BC - _0223159C - 2 ; case 5 + .short _022315BC - _0223159C - 2 ; case 6 + .short _022315BC - _0223159C - 2 ; case 7 + .short _022315AE - _0223159C - 2 ; case 8 +_022315AE: + bl MOD83_02239A14 + cmp r0, #0 + beq _022315BC + ldr r0, _022315C0 ; =0x0223B888 + mov r1, #0x2a + str r1, [r0, #0x10] +_022315BC: + pop {r4, pc} + nop +_022315C0: .word 0x0223B888 +_022315C4: .word MOD83_02231440 +_022315C8: .word 0x000005D4 +_022315CC: .word 0x021C48B8 + thumb_func_end MOD83_022314B4 + + thumb_func_start MOD83_022315D0 +MOD83_022315D0: ; 0x022315D0 + push {r3, lr} + sub sp, #8 + bl MOD83_022315F8 + bl MOD83_02238AFC + bl MOD83_02238B4C + mov r0, #0xd + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0xf + mov r2, #0xc + mov r3, #0xe + bl MOD83_02238BC4 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD83_022315D0 + + thumb_func_start MOD83_022315F8 +MOD83_022315F8: ; 0x022315F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223165C ; =0x00002D64 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02231608 + bl FUN_0201FFC8 +_02231608: + ldr r0, _02231660 ; =0x00002D68 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02231614 + bl FUN_0201FFC8 +_02231614: + ldr r0, _02231660 ; =0x00002D68 + mov r1, #0 + str r1, [r4, r0] + ldr r2, [r4, r0] + sub r1, r0, #4 + str r2, [r4, r1] + add r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223162C + bl FUN_0201FFC8 +_0223162C: + ldr r0, _02231664 ; =0x00002D70 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02231638 + bl FUN_0201FFC8 +_02231638: + ldr r0, _02231668 ; =0x00002D74 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02231644 + bl FUN_0201FFC8 +_02231644: + ldr r1, _02231668 ; =0x00002D74 + mov r0, #0 + str r0, [r4, r1] + ldr r2, [r4, r1] + sub r0, r1, #4 + str r2, [r4, r0] + ldr r0, [r4, r0] + sub r1, #8 + str r0, [r4, r1] + bl MOD83_02238E48 + pop {r4, pc} + .align 2, 0 +_0223165C: .word 0x00002D64 +_02231660: .word 0x00002D68 +_02231664: .word 0x00002D70 +_02231668: .word 0x00002D74 + thumb_func_end MOD83_022315F8 + + thumb_func_start MOD83_0223166C +MOD83_0223166C: ; 0x0223166C + push {r3, r4, lr} + sub sp, #4 + ldr r1, _022316B4 ; =0x00003CEC + add r4, r0, #0 + mov r0, #0 + str r0, [r4, r1] + mov r1, #1 + str r1, [sp] + ldr r1, _022316B8 ; =0x00002D64 + mov r2, #0x48 + ldr r1, [r4, r1] + mov r3, #0xa8 + bl MOD83_02238DBC + ldr r1, _022316B8 ; =0x00002D64 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #2 + bl FUN_02020238 + mov r0, #0 + ldr r1, _022316BC ; =0x00002D68 + str r0, [sp] + ldr r1, [r4, r1] + mov r2, #0xb8 + mov r3, #0xa8 + bl MOD83_02238DBC + ldr r1, _022316BC ; =0x00002D68 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #2 + bl FUN_02020238 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022316B4: .word 0x00003CEC +_022316B8: .word 0x00002D64 +_022316BC: .word 0x00002D68 + thumb_func_end MOD83_0223166C + + thumb_func_start MOD83_022316C0 +MOD83_022316C0: ; 0x022316C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02019048 + cmp r0, #1 + bne _022316D6 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CCF8 +_022316D6: + pop {r3, r4, r5, pc} + thumb_func_end MOD83_022316C0 + + thumb_func_start MOD83_022316D8 +MOD83_022316D8: ; 0x022316D8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02019048 + cmp r0, #1 + bne _022316EE + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200D0E0 +_022316EE: + pop {r3, r4, r5, pc} + thumb_func_end MOD83_022316D8 + + thumb_func_start MOD83_022316F0 +MOD83_022316F0: ; 0x022316F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, _02231794 ; =0x00002B6C + add r4, r1, #0 + ldr r0, [r5, r0] + add r7, r2, #0 + str r3, [sp] + cmp r0, #0 + beq _02231708 + bl FUN_02012870 +_02231708: + ldr r0, _02231798 ; =0x00002B68 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02231718 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 +_02231718: + add r0, r7, #0 + mov r1, #0x57 + bl FUN_02012838 + ldr r1, _02231794 ; =0x00002B6C + ldr r2, _0223179C ; =0x00000172 + str r0, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r3, #0x57 + bl FUN_0200A86C + ldr r1, _022317A0 ; =0x000029A4 + mov r6, #0 + str r0, [r5, r1] + cmp r7, #0 + ble _02231752 +_0223173A: + ldr r0, _02231794 ; =0x00002B6C + ldr r1, _022317A0 ; =0x000029A4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r6, r6, #1 + add r4, #8 + cmp r6, r7 + blt _0223173A +_02231752: + ldr r0, _022317A0 ; =0x000029A4 + ldr r0, [r5, r0] + bl FUN_0200A8B8 + ldr r4, _022317A4 ; =0x0223AE90 + add r3, sp, #4 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, _02231794 ; =0x00002B6C + mov r1, #0 + ldr r0, [r5, r0] + mov r3, #0x57 + str r0, [sp, #4] + add r0, sp, #4 + strh r7, [r0, #0x10] + ldr r0, [sp] + str r0, [sp, #0x10] + add r0, r2, #0 + add r2, r1, #0 + bl FUN_020010A8 + ldr r1, _02231798 ; =0x00002B68 + str r0, [r5, r1] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02231794: .word 0x00002B6C +_02231798: .word 0x00002B68 +_0223179C: .word 0x00000172 +_022317A0: .word 0x000029A4 +_022317A4: .word 0x0223AE90 + thumb_func_end MOD83_022316F0 + + thumb_func_start MOD83_022317A8 +MOD83_022317A8: ; 0x022317A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r2, _02231818 ; =0x00000172 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x57 + bl FUN_0200A86C + add r4, r0, #0 + mov r0, #0x57 + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #1 + mov r1, #6 + bl FUN_02002E4C + add r1, r0, #0 + add r0, r5, #0 + bl FUN_02019620 + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + mov r3, #0x57 + bl FUN_0200A9C4 + add r7, r0, #0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0223181C ; =0x00010200 + mov r1, #1 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r7, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_020191D0 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + bl FUN_0200AB18 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231818: .word 0x00000172 +_0223181C: .word 0x00010200 + thumb_func_end MOD83_022317A8 + + thumb_func_start MOD83_02231820 +MOD83_02231820: ; 0x02231820 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x57 + mov r3, #0x1e + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0xb + mov r2, #0 + lsl r3, r3, #4 + bl FUN_02006930 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x57 + mov r3, #6 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0x10 + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #3 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x57 + str r0, [sp, #0xc] + mov r0, #0x74 + mov r1, #0x11 + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x57 + str r0, [sp, #0xc] + mov r0, #0x74 + mov r1, #0x12 + add r2, r4, #0 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0xc + mov r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020186B4 + add r0, r4, #0 + mov r1, #1 + bl FUN_02017CD0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02231820 + + thumb_func_start MOD83_022318B0 +MOD83_022318B0: ; 0x022318B0 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + bl MOD83_02231A00 + ldr r0, _022318DC ; =0x00002B70 + mov r1, #0x2e + add r0, r4, r0 + bl MOD83_022317A8 + mov r3, #0xae + lsl r3, r3, #6 + add r1, r4, r3 + add r3, #0x10 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r2, #0xa + bl MOD83_02231F88 + mov r0, #0xd + pop {r4, pc} + .align 2, 0 +_022318DC: .word 0x00002B70 + thumb_func_end MOD83_022318B0 + + thumb_func_start MOD83_022318E0 +MOD83_022318E0: ; 0x022318E0 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + bl MOD83_02231A00 + mov r1, #0xad + lsl r1, r1, #6 + ldr r0, [r4, r1] + add r1, #0x20 + ldr r1, [r4, r1] + add r1, r1, #1 + bl FUN_0202AE90 + cmp r0, #1 + ldr r0, _0223192C ; =0x00002B70 + bne _0223190C + add r0, r4, r0 + mov r1, #0x3e + bl MOD83_022317A8 + b _02231914 +_0223190C: + add r0, r4, r0 + mov r1, #0x3d + bl MOD83_022317A8 +_02231914: + mov r3, #0xae + lsl r3, r3, #6 + add r1, r4, r3 + add r3, #0x10 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r2, #9 + bl MOD83_02231F88 + mov r0, #0xc + pop {r4, pc} + nop +_0223192C: .word 0x00002B70 + thumb_func_end MOD83_022318E0 + + thumb_func_start MOD83_02231930 +MOD83_02231930: ; 0x02231930 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + bl MOD83_02231A00 + ldr r0, _022319C0 ; =0x00002B70 + mov r1, #0x3f + add r0, r4, r0 + bl MOD83_022317A8 + ldr r0, _022319C0 ; =0x00002B70 + mov r1, #0x13 + add r0, r4, r0 + bl FUN_0200D858 + ldr r1, _022319C4 ; =0x00003CF0 + str r0, [r4, r1] + mov r1, #0xad + lsl r1, r1, #6 + ldr r0, [r4, r1] + add r1, #0x20 + ldr r1, [r4, r1] + bl FUN_0202ADC8 + ldr r0, _022319C8 ; =0x00002B44 + ldr r0, [r4, r0] + bl FUN_02022720 + ldr r0, _022319C4 ; =0x00003CF0 + ldr r0, [r4, r0] + bl FUN_0200DBFC + mov r0, #0xad + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0202AE70 + cmp r0, #0 + bne _02231984 + mov r0, #0x1a + pop {r4, pc} +_02231984: + ldr r1, _022319CC ; =0x00002B60 + add r0, r4, #0 + ldr r1, [r4, r1] + mov r2, #1 + bl MOD83_022320A4 + ldr r1, _022319CC ; =0x00002B60 + str r0, [r4, r1] + add r1, #0x10 + add r0, r4, r1 + mov r1, #0x24 + bl MOD83_022317A8 + mov r3, #0xae + lsl r3, r3, #6 + add r1, r4, r3 + add r3, #0x10 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r2, #8 + bl MOD83_02231F88 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD83_02231DF0 + mov r0, #5 + pop {r4, pc} + nop +_022319C0: .word 0x00002B70 +_022319C4: .word 0x00003CF0 +_022319C8: .word 0x00002B44 +_022319CC: .word 0x00002B60 + thumb_func_end MOD83_02231930 + + thumb_func_start MOD83_022319D0 +MOD83_022319D0: ; 0x022319D0 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + bl MOD83_02231A00 + ldr r0, _022319FC ; =0x00002B70 + mov r1, #0x24 + add r0, r4, r0 + bl MOD83_022317A8 + mov r3, #0xae + lsl r3, r3, #6 + add r1, r4, r3 + add r3, #0x10 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r2, #8 + bl MOD83_02231F88 + mov r0, #5 + pop {r4, pc} + .align 2, 0 +_022319FC: .word 0x00002B70 + thumb_func_end MOD83_022319D0 + + thumb_func_start MOD83_02231A00 +MOD83_02231A00: ; 0x02231A00 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02231A40 ; =0x00002B6C + ldr r0, [r4, r0] + bl FUN_02012870 + mov r1, #0 + ldr r0, _02231A40 ; =0x00002B6C + add r2, r1, #0 + str r1, [r4, r0] + sub r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02001300 + ldr r0, _02231A44 ; =0x00002B68 + mov r1, #0 + str r1, [r4, r0] + add r0, #0x18 + add r0, r4, r0 + bl MOD83_022316C0 + mov r0, #0xae + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_02019570 + mov r0, #0xae + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 +_02231A40: .word 0x00002B6C +_02231A44: .word 0x00002B68 + thumb_func_end MOD83_02231A00 + + thumb_func_start MOD83_02231A48 +MOD83_02231A48: ; 0x02231A48 + mov r0, #1 + bx lr + thumb_func_end MOD83_02231A48 + + thumb_func_start MOD83_02231A4C +MOD83_02231A4C: ; 0x02231A4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r7, r1, #0 + ldr r1, [r5] + mov r0, #0x25 + add r4, r2, #0 + bl FUN_020219F4 + ldr r1, _02231A9C ; =0x00002B60 + add r6, r0, #0 + ldr r2, [r5, r1] + sub r1, #0xc + lsl r2, r2, #2 + add r2, r5, r2 + ldr r2, [r2, r1] + mov r1, #0x41 + lsl r1, r1, #2 + add r1, r2, r1 + mov r2, #0x24 + bl FUN_02021E8C + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r4, [sp, #8] + add r0, r7, #0 + mov r1, #1 + add r2, r6, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02231A9C: .word 0x00002B60 + thumb_func_end MOD83_02231A4C + + thumb_func_start MOD83_02231AA0 +MOD83_02231AA0: ; 0x02231AA0 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _02231B10 ; =0x00002B60 + add r6, r1, #0 + ldr r1, [r4, r0] + add r5, r2, #0 + lsl r2, r1, #2 + add r3, r4, r2 + add r2, r0, #0 + sub r2, #0xc + ldr r3, [r3, r2] + ldr r2, _02231B14 ; =0x00000152 + ldrb r2, [r3, r2] + lsl r2, r2, #0x1c + lsr r2, r2, #0x1f + bne _02231AC6 + mov r2, #0x27 + b _02231ADE +_02231AC6: + sub r0, #0x20 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02231AD8 + add r1, r1, #1 + bl FUN_0202AE90 + cmp r0, #1 + bne _02231ADC +_02231AD8: + mov r2, #0x25 + b _02231ADE +_02231ADC: + mov r2, #0x26 +_02231ADE: + ldr r1, _02231B18 ; =0x000029A0 + ldr r3, [r4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0200A9C4 + add r4, r0, #0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r5, [sp, #8] + add r0, r6, #0 + mov r1, #1 + add r2, r4, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #1 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_02231B10: .word 0x00002B60 +_02231B14: .word 0x00000152 +_02231B18: .word 0x000029A0 + thumb_func_end MOD83_02231AA0 + + thumb_func_start MOD83_02231B1C +MOD83_02231B1C: ; 0x02231B1C + push {r4, lr} + sub sp, #0x18 + ldr r1, _02231B7C ; =0x00002B60 + add r4, r0, #0 + ldr r2, [r4, r1] + sub r1, #0xc + lsl r2, r2, #2 + add r2, r4, r2 + ldr r2, [r2, r1] + mov r1, #0xd5 + lsl r1, r1, #2 + ldr r1, [r2, r1] + add r0, sp, #8 + bl RTC_ConvertDayToDate + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02231B80 ; =0x000029A0 + mov r2, #0x7d + ldr r3, [sp, #8] + lsl r2, r2, #4 + add r2, r3, r2 + ldr r0, [r4, r0] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + ldr r0, _02231B80 ; =0x000029A0 + ldr r2, [sp, #0xc] + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200B764 + mov r1, #2 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02231B80 ; =0x000029A0 + ldr r2, [sp, #0x10] + ldr r0, [r4, r0] + add r3, r1, #0 + bl FUN_0200AD38 + mov r0, #1 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_02231B7C: .word 0x00002B60 +_02231B80: .word 0x000029A0 + thumb_func_end MOD83_02231B1C + + thumb_func_start MOD83_02231B84 +MOD83_02231B84: ; 0x02231B84 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #0xfb + mov r1, #0x57 + add r4, r2, #0 + bl FUN_020219F4 + ldr r1, _02231BD4 ; =0x00002B60 + add r6, r0, #0 + ldr r2, [r5, r1] + sub r1, #0xc + lsl r2, r2, #2 + add r2, r5, r2 + ldr r2, [r2, r1] + mov r1, #0x55 + lsl r1, r1, #2 + add r1, r2, r1 + mov r2, #0xfa + bl FUN_02021E8C + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r4, [sp, #8] + add r0, r7, #0 + mov r1, #1 + add r2, r6, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02231BD4: .word 0x00002B60 + thumb_func_end MOD83_02231B84 + + thumb_func_start MOD83_02231BD8 +MOD83_02231BD8: ; 0x02231BD8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r3, r0, #0 + ldr r0, _02231C50 ; =0x00002B60 + add r6, r1, #0 + ldr r1, [r3, r0] + sub r0, #0xc + lsl r1, r1, #2 + add r1, r3, r1 + ldr r1, [r1, r0] + mov r0, #0xd2 + lsl r0, r0, #2 + add r5, r2, #0 + ldrb r2, [r1, r0] + cmp r2, #0xff + bne _02231C2C + ldr r1, _02231C54 ; =0x000029A0 + mov r2, #0x33 + ldr r0, [r3, r1] + add r1, r1, #4 + ldr r1, [r3, r1] + mov r3, #0x57 + bl FUN_0200A9C4 + add r4, r0, #0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r5, [sp, #8] + add r0, r6, #0 + mov r1, #1 + add r2, r4, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + mov r0, #0 + pop {r4, r5, r6, pc} +_02231C2C: + cmp r2, #0 + beq _02231C48 + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02231C54 ; =0x000029A0 + ldr r0, [r3, r0] + mov r3, #3 + bl FUN_0200AD38 + add sp, #0x10 + mov r0, #1 + pop {r4, r5, r6, pc} +_02231C48: + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02231C50: .word 0x00002B60 +_02231C54: .word 0x000029A0 + thumb_func_end MOD83_02231BD8 + + thumb_func_start MOD83_02231C58 +MOD83_02231C58: ; 0x02231C58 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #0 + add r7, r1, #0 + add r1, r0, #1 + ldr r0, _02231D38 ; =0x0223AE40 + ldr r2, _02231D38 ; =0x0223AE40 + ldr r0, [r0, #0x30] + ldr r2, [r2, #0x34] + str r0, [sp, #0x14] + ldr r0, _02231D3C ; =0x00002B60 + str r2, [sp, #0x18] + ldr r2, [r5, r0] + sub r0, #0xc + lsl r2, r2, #2 + add r2, r5, r2 + ldr r2, [r2, r0] + mov r0, #0xd2 + lsl r0, r0, #2 + ldrb r0, [r2, r0] + add r4, r1, #0 + add r6, sp, #0x14 + cmp r0, #0 + beq _02231C9C + ldr r0, _02231D38 ; =0x0223AE40 + ldr r2, _02231D38 ; =0x0223AE40 + ldr r0, [r0, #0x38] + add r4, r1, #1 + lsl r1, r1, #3 + ldr r2, [r2, #0x3c] + add r3, r6, r1 + str r0, [r6, r1] + str r2, [r3, #4] +_02231C9C: + mov r1, #0xad + lsl r1, r1, #6 + ldr r0, [r5, r1] + add r1, #0x20 + ldr r1, [r5, r1] + add r1, r1, #1 + bl FUN_0202AE90 + cmp r0, #0 + bne _02231CC2 + ldr r2, _02231D38 ; =0x0223AE40 + lsl r1, r4, #3 + ldr r0, [r2, #0x40] + add r6, sp, #0x14 + ldr r2, [r2, #0x44] + add r3, r6, r1 + str r0, [r6, r1] + add r4, r4, #1 + str r2, [r3, #4] +_02231CC2: + ldr r2, _02231D38 ; =0x0223AE40 + lsl r1, r4, #3 + ldr r0, [r2, #0x48] + add r6, sp, #0x14 + str r0, [r6, r1] + ldr r2, [r2, #0x4c] + add r3, r6, r1 + ldr r0, _02231D40 ; =0x00002B3C + str r2, [r3, #4] + ldr r6, [r5, r0] + add r0, r7, #0 + bl FUN_02019570 + add r0, r7, #0 + bl FUN_02019178 + add r1, r4, #1 + mov r0, #4 + sub r0, r0, r1 + ldr r1, [r6, #8] + lsl r0, r0, #1 + add r1, r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + ldr r1, [r6, #0xc] + mov r2, #2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #4] + ldr r1, [r6, #0x10] + sub r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + ldr r0, _02231D44 ; =0x00002B38 + add r1, r7, #0 + ldr r0, [r5, r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, _02231D48 ; =0x0000299C + ldr r3, [r6, #4] + ldr r0, [r5, r0] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, #0 + add r1, sp, #0x14 + add r2, r4, #1 + add r3, r7, #0 + bl MOD83_022316F0 + mov r0, #1 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02231D38: .word 0x0223AE40 +_02231D3C: .word 0x00002B60 +_02231D40: .word 0x00002B3C +_02231D44: .word 0x00002B38 +_02231D48: .word 0x0000299C + thumb_func_end MOD83_02231C58 + + thumb_func_start MOD83_02231D4C +MOD83_02231D4C: ; 0x02231D4C + push {r3, lr} + add r3, r1, #0 + ldr r1, _02231D5C ; =0x0223AE40 + mov r2, #2 + bl MOD83_022316F0 + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02231D5C: .word 0x0223AE40 + thumb_func_end MOD83_02231D4C + + thumb_func_start MOD83_02231D60 +MOD83_02231D60: ; 0x02231D60 + push {r3, lr} + add r3, r1, #0 + ldr r1, _02231D70 ; =0x0223AE60 + mov r2, #2 + bl MOD83_022316F0 + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02231D70: .word 0x0223AE60 + thumb_func_end MOD83_02231D60 + + thumb_func_start MOD83_02231D74 +MOD83_02231D74: ; 0x02231D74 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02231D94 ; =0x00002B70 + add r4, r1, #0 + add r0, r5, r0 + mov r1, #2 + bl MOD83_022317A8 + ldr r1, _02231D98 ; =0x0223AE50 + add r0, r5, #0 + mov r2, #2 + add r3, r4, #0 + bl MOD83_022316F0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_02231D94: .word 0x00002B70 +_02231D98: .word 0x0223AE50 + thumb_func_end MOD83_02231D74 + + thumb_func_start MOD83_02231D9C +MOD83_02231D9C: ; 0x02231D9C + push {r3, lr} + sub sp, #8 + mov r3, #1 + str r3, [sp] + ldr r1, _02231DB8 ; =0x000029A0 + str r3, [sp, #4] + ldr r0, [r0, r1] + mov r1, #0 + add r2, r1, #0 + bl FUN_0200AD38 + mov r0, #1 + add sp, #8 + pop {r3, pc} + .align 2, 0 +_02231DB8: .word 0x000029A0 + thumb_func_end MOD83_02231D9C + + thumb_func_start MOD83_02231DBC +MOD83_02231DBC: ; 0x02231DBC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x57 + str r0, [sp, #8] + add r6, r2, #0 + mov r0, #0 + add r4, r3, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + cmp r4, #0 + beq _02231DE4 + mov r0, #0x1b + str r0, [r4] +_02231DE4: + ldr r0, _02231DEC ; =0x00002BE0 + str r6, [r5, r0] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02231DEC: .word 0x00002BE0 + thumb_func_end MOD83_02231DBC + + thumb_func_start MOD83_02231DF0 +MOD83_02231DF0: ; 0x02231DF0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + str r2, [sp, #0x14] + ldr r2, _02231F68 ; =0x00000172 + ldr r3, [r5] + mov r0, #1 + mov r1, #0x1a + ldr r4, _02231F6C ; =0x0223AEB0 + bl FUN_0200A86C + ldr r1, _02231F70 ; =0x000029A4 + str r0, [r5, r1] + ldr r0, [r5] + bl FUN_0200AA80 + ldr r1, _02231F74 ; =0x000029A0 + str r0, [r5, r1] + ldr r1, _02231F78 ; =0x00002B64 + ldr r0, [sp, #0x14] + str r0, [r5, r1] + ldr r1, [sp, #0x14] + add r0, r5, #0 + bl MOD83_02232118 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, _02231F7C ; =0x000029A8 + add r7, r4, #0 + str r5, [sp, #0x1c] + add r6, r5, r0 +_02231E2E: + ldr r1, [r7] + ldr r0, [sp, #0x14] + cmp r0, r1 + beq _02231E50 + cmp r1, #2 + beq _02231E50 + ldr r1, [sp, #0x1c] + ldr r0, _02231F7C ; =0x000029A8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02231E50 + add r0, r6, #0 + bl FUN_02019570 + add r0, r6, #0 + bl FUN_02019178 +_02231E50: + ldr r0, [sp, #0x1c] + add r7, #0x30 + add r0, #0x10 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x2c] + add r6, #0x10 + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, #0x13 + blo _02231E2E + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, _02231F7C ; =0x000029A8 + mov r7, #0x31 + str r5, [sp, #0x24] + str r5, [sp, #0x20] + add r6, r5, r0 +_02231E72: + ldr r1, [r4] + ldr r0, [sp, #0x14] + cmp r0, r1 + bne _02231F2E + ldr r1, [sp, #0x24] + ldr r0, _02231F7C ; =0x000029A8 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02231EBE + ldr r1, [sp, #0x20] + ldr r0, _02231F80 ; =0x00002AE8 + mov r2, #0 + str r7, [r1, r0] + ldr r0, [r4, #8] + add r1, r6, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [r4, #0x10] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, _02231F84 ; =0x0000299C + ldr r3, [r4, #4] + ldr r0, [r5, r0] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 +_02231EBE: + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x1c] + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_02002E4C + add r1, r0, #0 + add r0, r6, #0 + bl FUN_02019620 + ldr r0, [r4, #0x18] + ldr r3, [r4, #0x24] + str r0, [sp, #0x28] + ldr r2, [sp, #0x28] + add r0, r5, #0 + add r1, r6, #0 + blx r3 + cmp r0, #1 + bne _02231F20 + ldr r2, [r4, #0x20] + cmp r2, #0 + beq _02231F20 + ldr r0, _02231F74 ; =0x000029A0 + ldr r1, _02231F70 ; =0x000029A4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r3, [r5] + bl FUN_0200A9C4 + str r0, [sp, #0x30] + ldr r0, [r4, #0x2c] + ldr r2, [sp, #0x30] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x28] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r1, [r4, #0x14] + ldr r3, [r4, #0x28] + add r0, r6, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x30] + bl FUN_02021A20 +_02231F20: + add r0, r6, #0 + bl FUN_020191D0 + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x10] + mul r0, r1 + add r7, r7, r0 +_02231F2E: + ldr r0, [sp, #0x24] + add r4, #0x30 + add r0, #0x10 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r6, #0x10 + add r0, r0, #4 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #0x13 + blo _02231E72 + ldr r0, _02231F70 ; =0x000029A4 + ldr r0, [r5, r0] + bl FUN_0200A8B8 + ldr r0, _02231F74 ; =0x000029A0 + ldr r0, [r5, r0] + bl FUN_0200AB18 + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02231F64 + add r0, r5, #0 + bl MOD83_0223227C +_02231F64: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02231F68: .word 0x00000172 +_02231F6C: .word 0x0223AEB0 +_02231F70: .word 0x000029A4 +_02231F74: .word 0x000029A0 +_02231F78: .word 0x00002B64 +_02231F7C: .word 0x000029A8 +_02231F80: .word 0x00002AE8 +_02231F84: .word 0x0000299C + thumb_func_end MOD83_02231DF0 + + thumb_func_start MOD83_02231F88 +MOD83_02231F88: ; 0x02231F88 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r3, #0 + mov r3, #0x30 + ldr r0, _02232084 ; =0x0223AEB0 + mul r3, r2 + add r6, r1, #0 + add r4, r0, r3 + ldr r0, [r6] + cmp r0, #0 + bne _02231FD2 + ldr r0, [r4, #8] + mov r2, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [r4, #0x10] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, _02232088 ; =0x0000299C + ldr r3, [r4, #4] + ldr r0, [r5, r0] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 +_02231FD2: + ldr r1, [r4, #0x1c] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02019620 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02231FFE + ldr r2, _0223208C ; =0x00000172 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x57 + bl FUN_0200A86C + ldr r1, _02232090 ; =0x000029A4 + str r0, [r5, r1] + mov r0, #0x57 + bl FUN_0200AA80 + ldr r1, _02232094 ; =0x000029A0 + str r0, [r5, r1] +_02231FFE: + ldr r0, _02232098 ; =0x00002B38 + ldr r2, _0223209C ; =0x00010200 + str r7, [r5, r0] + add r0, r0, #4 + str r4, [r5, r0] + ldr r3, [r4, #0x24] + add r0, r5, #0 + add r1, r6, #0 + blx r3 + ldr r2, [r4, #0x20] + cmp r2, #0 + beq _02232054 + ldr r1, _02232094 ; =0x000029A0 + mov r3, #0x57 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200A9C4 + str r0, [sp, #0x14] + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [r4, #0x18] + ldr r2, [sp, #0x14] + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r1, [r4, #0x14] + add r0, r6, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + ldr r0, _02232090 ; =0x000029A4 + ldr r0, [r5, r0] + bl FUN_0200A8B8 + ldr r0, _02232094 ; =0x000029A0 + ldr r0, [r5, r0] + bl FUN_0200AB18 +_02232054: + ldr r0, _022320A0 ; =0x00002B70 + add r0, r5, r0 + cmp r6, r0 + bne _0223206A + add r0, r6, #0 + mov r1, #0 + mov r2, #0x13 + mov r3, #0xa + bl FUN_0200D0BC + b _02232076 +_0223206A: + add r0, r6, #0 + mov r1, #0 + mov r2, #0xa + mov r3, #0xe + bl FUN_0200CCA4 +_02232076: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x10] + mul r0, r1 + add r0, r7, r0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232084: .word 0x0223AEB0 +_02232088: .word 0x0000299C +_0223208C: .word 0x00000172 +_02232090: .word 0x000029A4 +_02232094: .word 0x000029A0 +_02232098: .word 0x00002B38 +_0223209C: .word 0x00010200 +_022320A0: .word 0x00002B70 + thumb_func_end MOD83_02231F88 + + thumb_func_start MOD83_022320A4 +MOD83_022320A4: ; 0x022320A4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r7, r4, #0 +_022320AE: + add r4, r4, r6 + cmp r4, #3 + bne _022320B6 + mov r4, #0 +_022320B6: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _022320C0 + mov r4, #2 +_022320C0: + cmp r7, r4 + beq _022320D4 + mov r0, #0xad + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_0202AE4C + cmp r0, #0 + beq _022320AE +_022320D4: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_022320A4 + + thumb_func_start MOD83_022320D8 +MOD83_022320D8: ; 0x022320D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r2, #0 + mov r2, #1 + add r5, r0, #0 + str r2, [sp] + add r6, r3, #0 + ldr r3, [r5] + mov r0, #0x74 + bl FUN_02006C98 + add r1, sp, #4 + add r7, r0, #0 + bl FUN_020B0180 + ldr r0, _02232114 ; =0x0000299C + ldr r2, [sp, #4] + lsl r1, r4, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + add r2, #0xc + add r3, r6, #0 + bl FUN_02017DFC + add r0, r7, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232114: .word 0x0000299C + thumb_func_end MOD83_022320D8 + + thumb_func_start MOD83_02232118 +MOD83_02232118: ; 0x02232118 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5] + mov r2, #0 + add r4, r1, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #3 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + ldr r0, [r5] + ldr r2, _02232204 ; =0x0000299C + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x74 + mov r1, #6 + bl FUN_0200687C + cmp r4, #0 + beq _0223215E + cmp r4, #1 + beq _0223217E + b _0223219C +_0223215E: + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + ldr r0, [r5] + ldr r2, _02232204 ; =0x0000299C + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x74 + mov r1, #4 + bl FUN_020068C8 + b _0223219C +_0223217E: + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + ldr r0, [r5] + ldr r2, _02232204 ; =0x0000299C + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x74 + mov r1, #5 + bl FUN_020068C8 +_0223219C: + mov r0, #0x20 + str r0, [sp] + ldr r0, [r5] + mov r1, #0 + str r0, [sp, #4] + mov r0, #0x74 + add r3, r0, #0 + add r2, r1, #0 + add r3, #0xec + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, [r5] + ldr r2, _02232204 ; =0x0000299C + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x74 + mov r3, #3 + bl FUN_0200687C + mov r2, #3 + add r0, r5, #0 + mov r1, #2 + lsl r3, r2, #9 + bl MOD83_022320D8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0xb + str r0, [sp, #8] + ldr r0, _02232204 ; =0x0000299C + mov r2, #0 + ldr r0, [r5, r0] + mov r1, #3 + add r3, r2, #0 + bl FUN_020186B4 + ldr r0, _02232204 ; =0x0000299C + mov r1, #3 + ldr r0, [r5, r0] + bl FUN_02017CD0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02232204: .word 0x0000299C + thumb_func_end MOD83_02232118 + + thumb_func_start MOD83_02232208 +MOD83_02232208: ; 0x02232208 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl FUN_02006278 + ldr r1, _02232270 ; =0x00002B68 + ldr r0, [r0, r1] + bl FUN_02001204 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0223222E + add r0, r0, #1 + cmp r4, r0 + beq _0223226C + b _02232248 +_0223222E: + ldr r0, _02232274 ; =0x000005DC + bl FUN_020054C8 + cmp r6, #0 + beq _0223226C + add r0, r7, #0 + blx r6 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223226C + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02232248: + ldr r0, _02232274 ; =0x000005DC + bl FUN_020054C8 + cmp r4, #0 + beq _0223226C + cmp r4, #0x1e + bhs _0223225A + str r4, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0223225A: + ldr r0, _02232278 ; =0x0223B89C + str r4, [r0] + add r0, r7, #0 + blx r4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223226C + str r0, [r5] +_0223226C: + pop {r3, r4, r5, r6, r7, pc} + nop +_02232270: .word 0x00002B68 +_02232274: .word 0x000005DC +_02232278: .word 0x0223B89C + thumb_func_end MOD83_02232208 + + thumb_func_start MOD83_0223227C +MOD83_0223227C: ; 0x0223227C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r1, _02232398 ; =0x00002D6C + add r5, r0, #0 + ldr r0, [r5, r1] + cmp r0, #0 + bne _022322DC + add r0, r1, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _022322DC + add r1, #8 + ldr r0, [r5, r1] + cmp r0, #0 + bne _022322DC + bl MOD83_02238B38 + cmp r0, #1 + bne _022322A8 + add r0, r5, #0 + bl MOD83_022315F8 +_022322A8: + bl MOD83_02238AFC + bl MOD83_02238B4C + mov r0, #0x18 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0x1a + mov r2, #0x17 + mov r3, #0x19 + bl MOD83_02238BC4 + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5] + mov r2, #1 + str r0, [sp, #4] + mov r0, #0x13 + mov r3, #0x60 + bl FUN_02006930 +_022322DC: + mov r0, #0xb2 + mov r6, #0 + str r0, [sp, #0x10] + str r6, [sp, #8] + add r4, r5, #0 + mov r7, #0x64 +_022322E8: + ldr r0, _0223239C ; =0x00002B60 + ldr r0, [r5, r0] + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _022323A0 ; =0x00002B54 + ldr r1, [r1, r0] + ldr r0, [sp, #8] + add r1, r1, r0 + ldr r0, _022323A4 ; =0x0000034A + ldrh r0, [r1, r0] + str r0, [sp, #0xc] + cmp r0, #0 + bne _02232312 + ldr r0, _02232398 ; =0x00002D6C + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223237C + mov r1, #0 + bl FUN_020200A0 + b _0223237C +_02232312: + add r0, r6, #0 + add r0, #0xa + str r0, [sp] + ldr r1, _02232398 ; =0x00002D6C + ldr r2, [sp, #0x10] + ldr r1, [r4, r1] + mov r0, #0 + mov r3, #0x10 + bl MOD83_02238DBC + ldr r1, _02232398 ; =0x00002D6C + str r0, [r4, r1] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r1, #0 + bl FUN_0206B6D4 + add r1, r0, #0 + ldr r0, [r5] + mov r2, #0 + str r0, [sp] + mov r0, #0x13 + add r3, sp, #0x18 + bl FUN_02006BB0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #0x18] + mov r2, #2 + ldr r0, [r0, #0x14] + lsl r1, r7, #5 + lsl r2, r2, #8 + bl GX_LoadOBJ + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r1, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, _02232398 ; =0x00002D6C + add r1, r1, #3 + ldr r0, [r4, r0] + bl FUN_02020248 + ldr r0, [sp, #0x14] + bl FUN_02016A18 +_0223237C: + ldr r0, [sp, #8] + add r6, r6, #1 + add r0, r0, #2 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r4, r4, #4 + add r0, #0x19 + add r7, #0x10 + str r0, [sp, #0x10] + cmp r6, #3 + blt _022322E8 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02232398: .word 0x00002D6C +_0223239C: .word 0x00002B60 +_022323A0: .word 0x00002B54 +_022323A4: .word 0x0000034A + thumb_func_end MOD83_0223227C + + thumb_func_start MOD83_022323A8 +MOD83_022323A8: ; 0x022323A8 + push {r4, lr} + mov r2, #2 + add r4, r0, #0 + mov r0, #3 + mov r1, #0x57 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0223240C ; =0x00003CF4 + add r0, r4, #0 + mov r2, #0x57 + bl FUN_02006268 + ldr r2, _0223240C ; =0x00003CF4 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x57 + bl FUN_02016B94 + ldr r1, _02232410 ; =0x0000299C + str r0, [r4, r1] + mov r0, #0x57 + str r0, [r4] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, _02232414 ; =0x00002B60 + mov r1, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, #0x7c + str r1, [r4, r0] + mov r0, #0x57 + bl MOD83_02238770 + mov r2, #3 + mov r0, #0 + mov r1, #0x5b + lsl r2, r2, #8 + bl FUN_0201681C + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_0223240C: .word 0x00003CF4 +_02232410: .word 0x0000299C +_02232414: .word 0x00002B60 + thumb_func_end MOD83_022323A8 + + thumb_func_start MOD83_02232418 +MOD83_02232418: ; 0x02232418 + push {r4, lr} + add r4, r1, #0 + bl FUN_020129C8 + mov r0, #3 + lsl r0, r0, #0xa + ldr r0, [r4, r0] + bl FUN_0201299C + ldr r1, _02232438 ; =0x04000010 + mov r2, #8 + mov r3, #1 + bl FUN_020129D8 + pop {r4, pc} + nop +_02232438: .word 0x04000010 + thumb_func_end MOD83_02232418 + + thumb_func_start MOD83_0223243C +MOD83_0223243C: ; 0x0223243C + push {r3, r4, r5, lr} + ldr r4, _02232490 ; =0x000030D0 + ldr r5, _02232494 ; =0x00000C14 + add r4, r0, r4 + add r0, r5, #0 + str r1, [r4, r5] + sub r0, #0xc + str r2, [r4, r0] + add r0, r5, #0 + sub r0, #8 + sub r5, #0x14 + str r3, [r4, r0] + ldr r0, [r4, r5] + cmp r0, #0 + bne _0223246E + mov r2, #6 + lsl r2, r2, #8 + mov r0, #0x57 + add r1, r4, #0 + add r2, r4, r2 + bl FUN_02012944 + mov r1, #3 + lsl r1, r1, #0xa + str r0, [r4, r1] +_0223246E: + ldr r0, _02232498 ; =0x00000C04 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02232486 + mov r2, #1 + ldr r0, _0223249C ; =MOD83_02232418 + add r1, r4, #0 + lsl r2, r2, #0xa + bl FUN_0200CA60 + ldr r1, _02232498 ; =0x00000C04 + str r0, [r4, r1] +_02232486: + mov r0, #0xc1 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02232490: .word 0x000030D0 +_02232494: .word 0x00000C14 +_02232498: .word 0x00000C04 +_0223249C: .word MOD83_02232418 + thumb_func_end MOD83_0223243C + + thumb_func_start MOD83_022324A0 +MOD83_022324A0: ; 0x022324A0 + push {r4, lr} + ldr r1, _022324D4 ; =0x000030D0 + add r4, r0, r1 + mov r0, #3 + lsl r0, r0, #0xa + ldr r0, [r4, r0] + cmp r0, #0 + beq _022324B4 + bl FUN_02012974 +_022324B4: + ldr r0, _022324D8 ; =0x00000C04 + ldr r0, [r4, r0] + cmp r0, #0 + beq _022324C0 + bl FUN_0200CAB4 +_022324C0: + mov r0, #3 + mov r1, #0 + lsl r0, r0, #0xa + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + bl FUN_020129C8 + pop {r4, pc} + nop +_022324D4: .word 0x000030D0 +_022324D8: .word 0x00000C04 + thumb_func_end MOD83_022324A0 + + thumb_func_start MOD83_022324DC +MOD83_022324DC: ; 0x022324DC + push {r3, r4, r5, r6, r7, lr} + ldr r1, _022325E4 ; =0x000030D0 + mov r5, #0x15 + add r4, r0, r1 + mov r0, #0xc1 + lsl r0, r0, #4 + ldr r1, [r4, r0] + lsl r5, r5, #0xe + cmp r1, #0 + bne _022324F4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022324F4: + add r1, r0, #4 + ldr r1, [r4, r1] + cmp r1, #1 + bne _02232542 + add r1, r0, #0 + sub r1, #8 + ldr r2, [r4, r1] + sub r1, r0, #4 + ldr r1, [r4, r1] + add r2, r2, r1 + add r1, r0, #0 + sub r1, #8 + str r2, [r4, r1] + sub r1, r0, #4 + ldr r2, [r4, r1] + add r1, r2, #0 + add r2, r2, r1 + sub r1, r0, #4 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #8 + ldr r2, [r4, r1] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r2, r1, #0xc + mov r1, #0xfa + lsl r1, r1, #2 + cmp r2, r1 + ble _0223257C + mov r2, #0 + add r1, r0, #0 + str r2, [r4, r0] + sub r1, #8 + str r2, [r4, r1] + sub r0, r0, #4 + mov r5, #0xa8 + str r2, [r4, r0] + b _0223257C +_02232542: + add r1, r0, #0 + sub r1, #8 + ldr r2, [r4, r1] + sub r1, r0, #4 + ldr r1, [r4, r1] + sub r2, r2, r1 + add r1, r0, #0 + sub r1, #8 + str r2, [r4, r1] + sub r1, r0, #4 + ldr r2, [r4, r1] + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r2, r1, #1 + sub r1, r0, #4 + str r2, [r4, r1] + mov r2, #1 + ldr r1, [r4, r1] + lsl r2, r2, #0xa + cmp r1, r2 + bge _0223257C + mov r1, #0 + lsl r3, r2, #2 + add r2, r0, #0 + str r1, [r4, r0] + sub r2, #8 + str r3, [r4, r2] + sub r0, r0, #4 + str r1, [r4, r0] +_0223257C: + mov r0, #3 + lsl r0, r0, #0xa + ldr r0, [r4, r0] + bl FUN_02012988 + add r2, r0, #0 + mov r0, #0x54 + add r3, r0, #0 + add r3, #0xfc +_0223258E: + asr r1, r5, #0xb + lsr r1, r1, #0x14 + add r1, r5, r1 + asr r1, r1, #0xc + bpl _0223259A + mov r1, #0 +_0223259A: + cmp r1, #0xa8 + ble _022325A0 + mov r1, #0xa8 +_022325A0: + lsl r6, r3, #1 + add r7, r2, r6 + sub r6, r1, r0 + strh r6, [r7, #6] + ldrh r6, [r7, #6] + sub r1, r0, r1 + add r3, r3, #4 + strh r6, [r7, #2] + mov r6, #0xa8 + sub r6, r6, r0 + lsl r6, r6, #3 + add r6, r2, r6 + strh r1, [r6, #6] + ldrh r1, [r6, #6] + add r0, r0, #1 + strh r1, [r6, #2] + ldr r1, _022325E8 ; =0x00000C08 + ldr r1, [r4, r1] + add r5, r5, r1 + cmp r0, #0xa8 + blt _0223258E + mov r1, #6 + add r0, r2, #0 + lsl r1, r1, #8 + bl DC_FlushRange + mov r0, #3 + lsl r0, r0, #0xa + ldr r0, [r4, r0] + bl FUN_020129B4 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022325E4: .word 0x000030D0 +_022325E8: .word 0x00000C08 + thumb_func_end MOD83_022324DC + + thumb_func_start MOD83_022325EC +MOD83_022325EC: ; 0x022325EC + push {r4, lr} + add r4, r0, #0 + bl MOD83_022394CC + sub r0, r0, #2 + cmp r0, #1 + bhi _02232606 + ldr r0, _02232608 ; =0x0000061B + bl FUN_020054C8 + ldr r0, _0223260C ; =0x00003CE8 + mov r1, #0 + str r1, [r4, r0] +_02232606: + pop {r4, pc} + .align 2, 0 +_02232608: .word 0x0000061B +_0223260C: .word 0x00003CE8 + thumb_func_end MOD83_022325EC + + thumb_func_start MOD83_02232610 +MOD83_02232610: ; 0x02232610 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02232658 ; =0x00002B60 + ldr r1, [r4, r0] + sub r0, #0xc + lsl r1, r1, #2 + add r1, r4, r1 + ldr r2, [r1, r0] + mov r0, #0x35 + lsl r0, r0, #4 + ldrb r1, [r2, r0] + cmp r1, #0xff + beq _0223262E + add r1, r1, #1 + strb r1, [r2, r0] +_0223262E: + ldr r0, _02232658 ; =0x00002B60 + ldr r1, [r4, r0] + sub r0, #0xc + lsl r1, r1, #2 + add r1, r4, r1 + ldr r2, [r1, r0] + mov r0, #0xd2 + lsl r0, r0, #2 + ldrb r1, [r2, r0] + cmp r1, #0xff + beq _02232648 + sub r1, r1, #1 + strb r1, [r2, r0] +_02232648: + ldr r0, _0223265C ; =0x00002B44 + ldr r0, [r4, r0] + bl MOD83_022394BC + ldr r1, _02232660 ; =MOD83_022325EC + ldr r0, _02232664 ; =0x00003CE8 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_02232658: .word 0x00002B60 +_0223265C: .word 0x00002B44 +_02232660: .word MOD83_022325EC +_02232664: .word 0x00003CE8 + thumb_func_end MOD83_02232610 + + thumb_func_start MOD83_02232668 +MOD83_02232668: ; 0x02232668 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + ldr r2, _02232768 ; =0x021C48B8 + add r6, r1, #0 + ldr r3, [r2, #0x48] + ldr r1, _0223276C ; =0x00003CEC + add r5, r0, #0 + mov r2, #0x10 + ldr r0, [r5, r1] + tst r2, r3 + beq _02232686 + cmp r0, #1 + beq _02232686 + mov r2, #1 + str r2, [r5, r1] +_02232686: + ldr r1, _02232768 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x20 + tst r1, r2 + beq _0223269C + ldr r1, _0223276C ; =0x00003CEC + ldr r2, [r5, r1] + cmp r2, #0 + beq _0223269C + mov r2, #0 + str r2, [r5, r1] +_0223269C: + ldr r1, _0223276C ; =0x00003CEC + ldr r1, [r5, r1] + cmp r0, r1 + beq _022326CC + cmp r1, #0 + bne _022326AC + mov r1, #1 + b _022326AE +_022326AC: + mov r1, #0 +_022326AE: + ldr r0, _02232770 ; =0x00002D64 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _0223276C ; =0x00003CEC + ldr r0, [r5, r0] + cmp r0, #0 + beq _022326C2 + mov r1, #1 + b _022326C4 +_022326C2: + mov r1, #0 +_022326C4: + ldr r0, _02232774 ; =0x00002D68 + ldr r0, [r5, r0] + bl FUN_02020130 +_022326CC: + ldr r0, _02232768 ; =0x021C48B8 + mov r4, #0 + ldr r1, [r0, #0x48] + mov r0, #2 + add r2, r1, #0 + tst r2, r0 + beq _022326DE + add r4, r0, #0 + b _0223270E +_022326DE: + mov r0, #1 + and r1, r0 + beq _022326F4 + cmp r6, #0 + beq _022326F4 + ldr r2, _0223276C ; =0x00003CEC + ldr r2, [r5, r2] + cmp r2, #0 + bne _022326F4 + add r4, r0, #0 + b _0223270E +_022326F4: + cmp r1, #0 + beq _02232704 + ldr r0, _0223276C ; =0x00003CEC + ldr r0, [r5, r0] + cmp r0, #1 + bne _02232704 + mov r4, #2 + b _0223270E +_02232704: + cmp r1, #0 + beq _0223270E + cmp r6, #0 + bne _0223270E + mov r4, #3 +_0223270E: + cmp r4, #1 + bne _02232746 + ldr r0, _02232778 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xab + bl FUN_02031588 + mov r3, #0xa + ldr r1, _0223277C ; =0x00002BD4 + mov r0, #1 + str r0, [r5, r1] + mov r0, #0x15 + sub r1, #0x64 + str r0, [r7] + add r0, r5, #0 + add r1, r5, r1 + mov r2, #0x11 + lsl r3, r3, #6 + bl MOD83_02231F88 + ldr r0, _02232780 ; =0x00002B70 + mov r1, #0x13 + add r0, r5, r0 + bl FUN_0200D858 + ldr r1, _02232784 ; =0x00003CF0 + str r0, [r5, r1] +_02232746: + cmp r4, #2 + bne _0223275A + ldr r0, _02232778 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x13 + bl MOD83_02233084 +_0223275A: + cmp r4, #3 + bne _02232764 + ldr r0, _02232778 ; =0x000005DC + bl FUN_020054C8 +_02232764: + pop {r3, r4, r5, r6, r7, pc} + nop +_02232768: .word 0x021C48B8 +_0223276C: .word 0x00003CEC +_02232770: .word 0x00002D64 +_02232774: .word 0x00002D68 +_02232778: .word 0x000005DC +_0223277C: .word 0x00002BD4 +_02232780: .word 0x00002B70 +_02232784: .word 0x00003CF0 + thumb_func_end MOD83_02232668 + + thumb_func_start MOD83_02232788 +MOD83_02232788: ; 0x02232788 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0x1d + bls _0223279E + b _02232CF4 +_0223279E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022327AA: ; jump table + .short _022327E6 - _022327AA - 2 ; case 0 + .short _02232854 - _022327AA - 2 ; case 1 + .short _02232866 - _022327AA - 2 ; case 2 + .short _022328DC - _022327AA - 2 ; case 3 + .short _02232956 - _022327AA - 2 ; case 4 + .short _0223297E - _022327AA - 2 ; case 5 + .short _0223299E - _022327AA - 2 ; case 6 + .short _022329D6 - _022327AA - 2 ; case 7 + .short _022329FA - _022327AA - 2 ; case 8 + .short _02232A20 - _022327AA - 2 ; case 9 + .short _02232A4C - _022327AA - 2 ; case 10 + .short _02232A88 - _022327AA - 2 ; case 11 + .short _02232AAC - _022327AA - 2 ; case 12 + .short _02232AB8 - _022327AA - 2 ; case 13 + .short _02232AC4 - _022327AA - 2 ; case 14 + .short _02232AD6 - _022327AA - 2 ; case 15 + .short _02232AE2 - _022327AA - 2 ; case 16 + .short _02232B24 - _022327AA - 2 ; case 17 + .short _02232B3A - _022327AA - 2 ; case 18 + .short _02232BDC - _022327AA - 2 ; case 19 + .short _02232BE8 - _022327AA - 2 ; case 20 + .short _02232C36 - _022327AA - 2 ; case 21 + .short _02232C26 - _022327AA - 2 ; case 22 + .short _02232C6A - _022327AA - 2 ; case 23 + .short _02232C7E - _022327AA - 2 ; case 24 + .short _02232CB8 - _022327AA - 2 ; case 25 + .short _02232CC8 - _022327AA - 2 ; case 26 + .short _02232CD4 - _022327AA - 2 ; case 27 + .short _02232CE4 - _022327AA - 2 ; case 28 + .short _02232CF4 - _022327AA - 2 ; case 29 +_022327E6: + add r0, r6, #0 + bl FUN_0200628C + ldr r1, [r0, #8] + ldr r0, _02232B54 ; =0x00002B44 + str r1, [r4, r0] + ldr r0, [r4, r0] + bl FUN_0202251C + mov r1, #0xad + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r1, #4 + ldr r0, [r4, r0] + bl LoadPlayerDataAddress + ldr r1, _02232B58 ; =0x00002B48 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_02025084 + ldr r1, _02232B5C ; =0x00002B4C + str r0, [r4, r1] + sub r1, #0xc + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_0202AC64 + ldr r1, _02232B60 ; =0x00002B54 + str r0, [r4, r1] + sub r1, #0x14 + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_0202AC64 + ldr r1, _02232B64 ; =0x00002B58 + str r0, [r4, r1] + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #2 + bl FUN_0202AC64 + ldr r1, _02232B68 ; =0x00002B5C + mov r2, #1 + str r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD83_022320A4 + ldr r1, _02232B6C ; =0x00002B60 + str r0, [r4, r1] + mov r0, #1 + str r0, [r5] + b _02232CF4 +_02232854: + bl MOD83_022331C0 + ldr r0, _02232B70 ; =0x0000299C + ldr r0, [r4, r0] + bl MOD83_022331E0 + mov r0, #2 + str r0, [r5] + b _02232CF4 +_02232866: + bl FUN_0201BD5C + add r0, r4, #0 + mov r1, #0 + bl MOD83_02232118 + mov r1, #0x1e + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x57 + bl FUN_02002ED0 + mov r1, #0 + str r1, [sp] + mov r0, #0x57 + str r0, [sp, #4] + ldr r0, _02232B70 ; =0x0000299C + mov r2, #1 + ldr r0, [r4, r0] + mov r3, #0xd + bl FUN_0200CB00 + mov r0, #1 + str r0, [sp] + mov r0, #0x57 + str r0, [sp, #4] + ldr r0, _02232B70 ; =0x0000299C + mov r1, #0 + ldr r0, [r4, r0] + mov r2, #0xa + mov r3, #0xe + bl FUN_0200CB00 + ldr r0, _02232B5C ; =0x00002B4C + mov r1, #0 + ldr r0, [r4, r0] + mov r2, #0x13 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x57 + str r0, [sp, #4] + ldr r0, _02232B70 ; =0x0000299C + mov r3, #0xa + ldr r0, [r4, r0] + bl FUN_0200CD68 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD83_02231DF0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + add r3, r5, #0 + bl MOD83_02231DBC + b _02232CF4 +_022328DC: + ldr r1, _02232B6C ; =0x00002B60 + mov r2, #0x40 + ldr r6, [r4, r1] + ldr r1, _02232B74 ; =0x021C48B8 + ldr r1, [r1, #0x48] + add r3, r1, #0 + tst r3, r2 + beq _022328F8 + add r1, r6, #0 + sub r2, #0x41 + bl MOD83_022320A4 + add r6, r0, #0 + b _02232934 +_022328F8: + mov r2, #0x80 + tst r2, r1 + beq _0223290A + add r1, r6, #0 + mov r2, #1 + bl MOD83_022320A4 + add r6, r0, #0 + b _02232934 +_0223290A: + mov r0, #2 + tst r0, r1 + beq _02232924 + ldr r0, _02232B78 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x1c + add r3, r5, #0 + bl MOD83_02231DBC + b _02232934 +_02232924: + mov r0, #1 + tst r0, r1 + beq _02232934 + ldr r0, _02232B78 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + str r0, [r5] +_02232934: + ldr r0, _02232B6C ; =0x00002B60 + ldr r0, [r4, r0] + cmp r0, r6 + bne _0223293E + b _02232CF4 +_0223293E: + mov r0, #6 + lsl r0, r0, #8 + bl FUN_020054C8 + ldr r0, _02232B6C ; =0x00002B60 + mov r1, #1 + str r6, [r4, r0] + add r0, r4, #0 + mov r2, #0 + bl MOD83_02231DF0 + b _02232CF4 +_02232956: + ldr r1, _02232B7C ; =0x00002B70 + mov r3, #0xa + add r1, r4, r1 + mov r2, #7 + lsl r3, r3, #6 + bl MOD83_02231F88 + ldr r3, _02232B80 ; =0x00002B90 + mov r2, #8 + add r1, r3, #0 + str r0, [r4, r3] + sub r1, #0x10 + ldr r3, [r4, r3] + add r0, r4, #0 + add r1, r4, r1 + bl MOD83_02231F88 + mov r0, #5 + str r0, [r5] + b _02232CF4 +_0223297E: + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0 + bl MOD83_02232208 + ldr r0, _02232B74 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _02232A54 + ldr r0, _02232B78 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xb + str r0, [r5] + b _02232CF4 +_0223299E: + mov r0, #6 + lsl r0, r0, #8 + bl FUN_020054C8 + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, _02232B7C ; =0x00002B70 + mov r1, #0 + add r0, r4, r0 + bl MOD83_022316D8 + mov r0, #0xae + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0 + bl MOD83_022316C0 + mov r1, #1 + add r0, r4, #0 + lsl r2, r1, #0xc + mov r3, #0x66 + bl MOD83_0223243C + mov r0, #7 + str r0, [r5] + b _02232CF4 +_022329D6: + bl MOD83_022324DC + cmp r0, #0 + beq _02232A54 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD83_02231DF0 + ldr r2, _02232B84 ; =0x00708000 + add r0, r4, #0 + mov r1, #0 + lsr r3, r2, #1 + bl MOD83_0223243C + mov r0, #8 + str r0, [r5] + b _02232CF4 +_022329FA: + bl MOD83_022324DC + ldr r0, _02232B74 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r1, r0 + beq _02232A54 + lsl r0, r0, #9 + bl FUN_020054C8 + mov r1, #1 + add r0, r4, #0 + lsl r2, r1, #0xc + mov r3, #0x66 + bl MOD83_0223243C + mov r0, #9 + str r0, [r5] + b _02232CF4 +_02232A20: + bl MOD83_022324DC + cmp r0, #0 + beq _02232A54 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD83_02231DF0 + ldr r2, _02232B84 ; =0x00708000 + add r0, r4, #0 + mov r1, #0 + lsr r3, r2, #1 + bl MOD83_0223243C + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0xa + str r0, [r5] + b _02232CF4 +_02232A4C: + bl MOD83_022324DC + cmp r0, #0 + bne _02232A56 +_02232A54: + b _02232CF4 +_02232A56: + ldr r0, _02232B7C ; =0x00002B70 + mov r1, #0 + add r0, r4, r0 + mov r2, #0x13 + mov r3, #0xa + bl FUN_0200D0BC + mov r0, #0xae + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0 + mov r2, #0xa + mov r3, #0xe + bl FUN_0200CCA4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD83_022324A0 + mov r0, #5 + str r0, [r5] + b _02232CF4 +_02232A88: + bl MOD83_02231A00 + ldr r0, _02232B7C ; =0x00002B70 + mov r1, #0 + add r0, r4, r0 + bl MOD83_022316D8 + ldr r0, _02232B7C ; =0x00002B70 + add r0, r4, r0 + bl FUN_02019570 + ldr r0, _02232B7C ; =0x00002B70 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #3 + str r0, [r5] + b _02232CF4 +_02232AAC: + ldr r2, _02232B88 ; =MOD83_022319D0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02232208 + b _02232CF4 +_02232AB8: + ldr r2, _02232B88 ; =MOD83_022319D0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD83_02232208 + b _02232CF4 +_02232AC4: + mov r1, #0xae + lsl r1, r1, #6 + ldr r2, _02232B8C ; =0x00010200 + add r1, r4, r1 + bl MOD83_02231D74 + mov r0, #0xd + str r0, [r5] + b _02232CF4 +_02232AD6: + mov r1, #0 + mov r2, #0x10 + add r3, r5, #0 + bl MOD83_02231DBC + b _02232CF4 +_02232AE2: + bl MOD83_02231A00 + ldr r0, _02232B7C ; =0x00002B70 + mov r1, #0 + add r0, r4, r0 + bl MOD83_022316D8 + ldr r0, _02232B7C ; =0x00002B70 + add r0, r4, r0 + bl FUN_02019570 + ldr r0, _02232B7C ; =0x00002B70 + add r0, r4, r0 + bl FUN_02019178 + add r0, r4, #0 + mov r1, #0 + mov r2, #3 + bl MOD83_02231DF0 + ldr r0, _02232B70 ; =0x0000299C + ldr r0, [r4, r0] + bl MOD83_02231820 + add r0, r4, #0 + bl MOD83_022315D0 + add r0, r4, #0 + bl MOD83_0223166C + mov r0, #0x11 + str r0, [r5] + b _02232CF4 +_02232B24: + bl MOD83_02232D44 + bl FUN_02033E74 + add r0, r4, #0 + mov r1, #1 + mov r2, #0x12 + add r3, r5, #0 + bl MOD83_02231DBC + b _02232CF4 +_02232B3A: + mov r6, #0 + add r0, r6, #0 + bl FUN_02030E7C + cmp r0, #0 + beq _02232BD0 + add r0, r4, #0 + add r0, #0x90 + bl FUN_0202F10C + ldr r1, _02232B90 ; =0x00002AA8 + b _02232B94 + nop +_02232B54: .word 0x00002B44 +_02232B58: .word 0x00002B48 +_02232B5C: .word 0x00002B4C +_02232B60: .word 0x00002B54 +_02232B64: .word 0x00002B58 +_02232B68: .word 0x00002B5C +_02232B6C: .word 0x00002B60 +_02232B70: .word 0x0000299C +_02232B74: .word 0x021C48B8 +_02232B78: .word 0x000005DC +_02232B7C: .word 0x00002B70 +_02232B80: .word 0x00002B90 +_02232B84: .word 0x00708000 +_02232B88: .word MOD83_022319D0 +_02232B8C: .word 0x00010200 +_02232B90: .word 0x00002AA8 +_02232B94: + add r0, r4, #0 + add r1, r4, r1 + bl MOD83_02232E0C + add r6, r0, #0 + bne _02232BC0 + ldr r0, _02232D18 ; =0x00002BD0 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BC0 + ldr r0, _02232D1C ; =0x00002AA8 + mov r1, #0 + add r0, r4, r0 + bl FUN_02019620 + ldr r0, _02232D1C ; =0x00002AA8 + add r0, r4, r0 + bl FUN_020191D0 + ldr r0, _02232D18 ; =0x00002BD0 + mov r1, #0 + str r1, [r4, r0] +_02232BC0: + ldr r1, _02232D20 ; =0x00002A98 + add r0, r4, #0 + add r1, r4, r1 + add r2, r6, #0 + bl MOD83_02232FE4 + ldr r0, _02232D18 ; =0x00002BD0 + str r6, [r4, r0] +_02232BD0: + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD83_02232668 + b _02232CF4 +_02232BDC: + mov r1, #0 + mov r2, #0x14 + add r3, r5, #0 + bl MOD83_02231DBC + b _02232CF4 +_02232BE8: + bl MOD83_022315F8 + ldr r0, _02232D24 ; =0x00002B70 + mov r1, #0 + add r0, r4, r0 + bl MOD83_022316D8 + mov r0, #0xae + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0 + bl MOD83_022316C0 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD83_02231DF0 + mov r1, #0x1e + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x57 + bl FUN_02002ED0 + add r0, r4, #0 + mov r1, #1 + mov r2, #4 + add r3, r5, #0 + bl MOD83_02231DBC + b _02232CF4 +_02232C26: + bl FUN_02031810 + cmp r0, #0 + bne _02232CF4 + ldr r0, _02232D28 ; =0x00002BE0 + ldr r0, [r4, r0] + str r0, [r5] + b _02232CF4 +_02232C36: + ldr r0, _02232D2C ; =0x00002BD4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02232CF4 + ldr r1, _02232D30 ; =0x00002D78 + add r0, r4, #0 + ldr r2, [r4] + add r0, #0x90 + add r1, r4, r1 + bl MOD83_022392EC + ldr r0, _02232D30 ; =0x00002D78 + mov r1, #0xd6 + add r0, r4, r0 + lsl r1, r1, #2 + bl MOD83_0222F8F0 + add r0, r4, #0 + bl MOD83_02232610 + mov r0, #0x17 + str r0, [r5] + b _02232CF4 +_02232C6A: + bl MOD83_02239574 + cmp r0, #4 + bne _02232CF4 + mov r0, #0x93 + bl FUN_02031588 + mov r0, #0x18 + str r0, [r5] + b _02232CF4 +_02232C7E: + bl MOD83_02232DF0 + cmp r0, #0 + beq _02232C90 + mov r0, #0x93 + bl FUN_020315D8 + cmp r0, #1 + bne _02232CF4 +_02232C90: + bl MOD83_02239544 + ldr r1, _02232D24 ; =0x00002B70 + mov r3, #0xa + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0x12 + lsl r3, r3, #6 + bl MOD83_02231F88 + ldr r0, _02232D34 ; =0x00003CF0 + ldr r0, [r4, r0] + bl FUN_0200DBFC + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x19 + bl MOD83_02233084 + b _02232CF4 +_02232CB8: + ldr r0, _02232D38 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02232CF4 + mov r0, #0x13 + str r0, [r5] + b _02232CF4 +_02232CC8: + mov r1, #0 + mov r2, #0x1c + add r3, r5, #0 + bl MOD83_02231DBC + b _02232CF4 +_02232CD4: + bl FUN_0200E308 + cmp r0, #0 + beq _02232CF4 + ldr r0, _02232D28 ; =0x00002BE0 + ldr r0, [r4, r0] + str r0, [r5] + b _02232CF4 +_02232CE4: + bl MOD83_022315F8 + add r0, r4, #0 + bl MOD83_022324A0 + add sp, #8 + mov r0, #1 + pop {r4, r5, r6, pc} +_02232CF4: + ldr r0, _02232D3C ; =0x00002BE4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232D00 + bl FUN_0201FDEC +_02232D00: + bl MOD83_02238D58 + ldr r0, _02232D40 ; =0x00003CE8 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02232D10 + add r0, r4, #0 + blx r1 +_02232D10: + mov r0, #0 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02232D18: .word 0x00002BD0 +_02232D1C: .word 0x00002AA8 +_02232D20: .word 0x00002A98 +_02232D24: .word 0x00002B70 +_02232D28: .word 0x00002BE0 +_02232D2C: .word 0x00002BD4 +_02232D30: .word 0x00002D78 +_02232D34: .word 0x00003CF0 +_02232D38: .word 0x021C48B8 +_02232D3C: .word 0x00002BE4 +_02232D40: .word 0x00003CE8 + thumb_func_end MOD83_02232788 + + thumb_func_start MOD83_02232D44 +MOD83_02232D44: ; 0x02232D44 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02232DA8 ; =0x00002B60 + mov r2, #0xd6 + ldr r1, [r5, r0] + sub r0, #0xc + lsl r1, r1, #2 + add r1, r5, r1 + ldr r4, [r1, r0] + add r0, r5, #0 + add r0, #0xe0 + add r1, r4, #0 + lsl r2, r2, #2 + bl memcpy + mov r1, #0x41 + add r0, r5, #0 + lsl r1, r1, #2 + add r0, #0x90 + add r1, r4, r1 + mov r2, #0x50 + bl memcpy + ldr r0, _02232DAC ; =0x00000428 + mov r1, #0 + strb r1, [r5, r0] + add r0, r5, #0 + add r0, #0xde + ldrb r1, [r0] + mov r0, #0x10 + mov r2, #0xf + bic r1, r0 + add r0, r5, #0 + add r0, #0xde + strb r1, [r0] + add r0, r5, #0 + add r0, #0xde + ldrb r1, [r0] + mov r0, #0x20 + orr r1, r0 + add r0, r5, #0 + add r0, #0xde + strb r1, [r0] + ldr r1, _02232DB0 ; =0x00002B44 + add r0, r5, #4 + ldr r1, [r5, r1] + bl MOD83_0222F8C4 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02232DA8: .word 0x00002B60 +_02232DAC: .word 0x00000428 +_02232DB0: .word 0x00002B44 + thumb_func_end MOD83_02232D44 + + thumb_func_start MOD83_02232DB4 +MOD83_02232DB4: ; 0x02232DB4 + push {r3, r4} + ldr r3, [r0] + ldr r1, [r0, #4] + add r2, r0, #0 + mov r4, #0 + cmp r1, r3 + bge _02232DC8 + add r3, r1, #0 + mov r4, #1 + add r2, r0, #4 +_02232DC8: + ldr r1, [r0, #8] + cmp r1, r3 + bge _02232DD6 + add r2, r0, #0 + add r3, r1, #0 + mov r4, #2 + add r2, #8 +_02232DD6: + ldr r1, [r0, #0xc] + cmp r1, r3 + bge _02232DE2 + add r2, r0, #0 + mov r4, #3 + add r2, #0xc +_02232DE2: + ldr r0, _02232DEC ; =0x3FFF0001 + str r0, [r2] + add r0, r4, #1 + pop {r3, r4} + bx lr + .align 2, 0 +_02232DEC: .word 0x3FFF0001 + thumb_func_end MOD83_02232DB4 + + thumb_func_start MOD83_02232DF0 +MOD83_02232DF0: ; 0x02232DF0 + push {r3, r4, r5, lr} + mov r5, #0 + mov r4, #1 +_02232DF6: + add r0, r4, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _02232E02 + add r5, r5, #1 +_02232E02: + add r4, r4, #1 + cmp r4, #5 + blt _02232DF6 + add r0, r5, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD83_02232DF0 + + thumb_func_start MOD83_02232E0C +MOD83_02232E0C: ; 0x02232E0C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + add r5, r0, #0 + mov r6, #0 + mov r0, #1 + str r1, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #0x24] + add r4, r5, #4 +_02232E1E: + ldr r0, [sp, #0x24] + bl FUN_0202DFA4 + cmp r0, #0 + bne _02232E40 + ldr r0, _02232FCC ; =0x00002BA8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232E32 + add r7, r7, #1 +_02232E32: + ldr r0, _02232FCC ; =0x00002BA8 + mov r1, #0 + str r1, [r4, r0] + ldr r1, _02232FD0 ; =0x3FFF0001 + add r0, #0x14 + str r1, [r4, r0] + b _02232E68 +_02232E40: + ldr r1, _02232FCC ; =0x00002BA8 + ldr r1, [r4, r1] + cmp r1, r0 + beq _02232E66 + ldr r1, _02232FCC ; =0x00002BA8 + add r7, r7, #1 + str r0, [r4, r1] + add r0, r1, #0 + add r1, #0x34 + ldr r1, [r5, r1] + add r0, #0x34 + add r2, r1, #1 + ldr r0, [r5, r0] + ldr r1, _02232FD4 ; =0x00002BDC + add r6, r6, #1 + str r2, [r5, r1] + sub r1, #0x20 + str r0, [r4, r1] + b _02232E68 +_02232E66: + add r6, r6, #1 +_02232E68: + ldr r0, [sp, #0x24] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #5 + blt _02232E1E + cmp r7, #0 + bne _02232E7E + add sp, #0x48 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_02232E7E: + mov r1, #0xaf + lsl r1, r1, #6 + ldr r0, [r5, r1] + str r0, [sp, #0x38] + add r0, r1, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x3c] + add r0, r1, #0 + add r0, #8 + ldr r0, [r5, r0] + add r1, #0xc + str r0, [sp, #0x40] + ldr r0, [r5, r1] + str r0, [sp, #0x44] + add r0, sp, #0x38 + bl MOD83_02232DB4 + str r0, [sp, #0x28] + add r0, sp, #0x38 + bl MOD83_02232DB4 + str r0, [sp, #0x2c] + add r0, sp, #0x38 + bl MOD83_02232DB4 + str r0, [sp, #0x30] + add r0, sp, #0x38 + bl MOD83_02232DB4 + str r0, [sp, #0x34] + mov r0, #0x57 + bl FUN_0200AA80 + add r4, r0, #0 + ldr r2, _02232FD8 ; =0x00000172 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x57 + bl FUN_0200A86C + str r0, [sp, #0x1c] + mov r5, #0 + ldr r0, [sp, #0x10] + add r1, r5, #0 + bl FUN_02019620 + add r0, r5, #0 + str r0, [sp, #0x14] + cmp r6, #0 + ble _02232FAE + add r0, sp, #0x28 + str r0, [sp, #0x18] +_02232EE6: + ldr r0, [sp, #0x18] + ldr r0, [r0] + bl FUN_0202DFA4 + add r7, r0, #0 + beq _02232F9E + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + bl FUN_0200ABC0 + ldr r1, [sp, #0x1c] + add r0, r4, #0 + mov r2, #0x35 + mov r3, #0x57 + bl FUN_0200A9C4 + str r0, [sp, #0x20] + add r0, r7, #0 + bl FUN_020239CC + cmp r0, #0 + str r5, [sp] + bne _02232F30 + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02232FDC ; =0x00050600 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x20] + add r3, r1, #0 + bl FUN_0201BDE0 + b _02232F4A +_02232F30: + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #0 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x20] + add r3, r1, #0 + bl FUN_0201BDE0 +_02232F4A: + ldr r0, [sp, #0x20] + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_020239BC + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #5 + bl FUN_0200AD38 + ldr r1, [sp, #0x1c] + add r0, r4, #0 + mov r2, #0x36 + mov r3, #0x57 + bl FUN_0200A9C4 + add r7, r0, #0 + str r5, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02232FE0 ; =0x000E0F00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r7, #0 + mov r3, #0x50 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add r5, #0x18 +_02232F9E: + ldr r0, [sp, #0x18] + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r6 + blt _02232EE6 +_02232FAE: + cmp r6, #0 + beq _02232FB8 + ldr r0, [sp, #0x10] + bl FUN_020191D0 +_02232FB8: + ldr r0, [sp, #0x1c] + bl FUN_0200A8B8 + add r0, r4, #0 + bl FUN_0200AB18 + add r0, r6, #0 + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232FCC: .word 0x00002BA8 +_02232FD0: .word 0x3FFF0001 +_02232FD4: .word 0x00002BDC +_02232FD8: .word 0x00000172 +_02232FDC: .word 0x00050600 +_02232FE0: .word 0x000E0F00 + thumb_func_end MOD83_02232E0C + + thumb_func_start MOD83_02232FE4 +MOD83_02232FE4: ; 0x02232FE4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _02233070 ; =0x00002B94 + add r4, r1, #0 + str r2, [r5, r0] + ldr r2, _02233074 ; =0x00000172 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x57 + bl FUN_0200A86C + ldr r1, _02233078 ; =0x000029A4 + str r0, [r5, r1] + mov r0, #0x57 + bl FUN_0200AA80 + ldr r1, _0223307C ; =0x000029A0 + str r0, [r5, r1] + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + mov r3, #1 + str r3, [sp] + ldr r0, _0223307C ; =0x000029A0 + str r3, [sp, #4] + ldr r2, _02233070 ; =0x00002B94 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + mov r1, #0 + bl FUN_0200AD38 + ldr r1, _0223307C ; =0x000029A0 + mov r2, #0x38 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r3, #0x57 + bl FUN_0200A9C4 + add r6, r0, #0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02233080 ; =0x00010200 + mov r1, #1 + str r0, [sp, #8] + add r0, r4, #0 + add r2, r6, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_020191D0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02233078 ; =0x000029A4 + ldr r0, [r5, r0] + bl FUN_0200A8B8 + ldr r0, _0223307C ; =0x000029A0 + ldr r0, [r5, r0] + bl FUN_0200AB18 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_02233070: .word 0x00002B94 +_02233074: .word 0x00000172 +_02233078: .word 0x000029A4 +_0223307C: .word 0x000029A0 +_02233080: .word 0x00010200 + thumb_func_end MOD83_02232FE4 + + thumb_func_start MOD83_02233084 +MOD83_02233084: ; 0x02233084 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD83_0222F9DC + bl FUN_02033ED0 + ldr r0, _022330A0 ; =0x00002BE0 + str r6, [r5, r0] + mov r0, #0x16 + str r0, [r4] + pop {r4, r5, r6, pc} + nop +_022330A0: .word 0x00002BE0 + thumb_func_end MOD83_02233084 + + thumb_func_start MOD83_022330A4 +MOD83_022330A4: ; 0x022330A4 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + bl FUN_02006278 + add r7, r0, #0 + ldr r0, _02233154 ; =0x000029A8 + mov r6, #0 + add r4, r7, #0 + add r5, r7, r0 +_022330B6: + ldr r0, _02233154 ; =0x000029A8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _022330CA + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 +_022330CA: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #0x13 + blo _022330B6 + ldr r0, _02233158 ; =0x00002B70 + ldr r1, [r7, r0] + cmp r1, #0 + beq _022330EA + add r0, r7, r0 + bl FUN_02019570 + ldr r0, _02233158 ; =0x00002B70 + add r0, r7, r0 + bl FUN_02019178 +_022330EA: + mov r0, #0xae + lsl r0, r0, #6 + ldr r1, [r7, r0] + cmp r1, #0 + beq _02233104 + add r0, r7, r0 + bl FUN_02019570 + mov r0, #0xae + lsl r0, r0, #6 + add r0, r7, r0 + bl FUN_02019178 +_02233104: + ldr r0, _0223315C ; =0x0000299C + mov r1, #0 + ldr r0, [r7, r0] + bl FUN_020178A0 + ldr r0, _0223315C ; =0x0000299C + mov r1, #1 + ldr r0, [r7, r0] + bl FUN_020178A0 + ldr r0, _0223315C ; =0x0000299C + mov r1, #2 + ldr r0, [r7, r0] + bl FUN_020178A0 + ldr r0, _0223315C ; =0x0000299C + mov r1, #3 + ldr r0, [r7, r0] + bl FUN_020178A0 + ldr r0, _0223315C ; =0x0000299C + ldr r0, [r7, r0] + bl FUN_02016A18 + ldr r0, _02233160 ; =0x00000053 + ldr r1, _02233164 ; =0x0223A434 + bl FUN_02000E7C + mov r0, #0x5b + bl FUN_020168D0 + ldr r0, [sp] + bl FUN_0200627C + mov r0, #0x57 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233154: .word 0x000029A8 +_02233158: .word 0x00002B70 +_0223315C: .word 0x0000299C +_02233160: .word 0x00000053 +_02233164: .word 0x0223A434 + thumb_func_end MOD83_022330A4 + + thumb_func_start MOD83_02233168 +MOD83_02233168: ; 0x02233168 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + bl MOD83_022331E0 + ldr r1, _022331B4 ; =0x00003CF4 + add r0, r5, #0 + bl FUN_020169D8 + ldr r2, _022331B4 ; =0x00003CF4 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _022331B8 ; =0x0000299C + mov r1, #0x1e + str r6, [r4, r0] + mov r0, #0 + lsl r1, r1, #4 + add r2, r5, #0 + str r5, [r4] + bl FUN_02002ED0 + ldr r0, _022331BC ; =0x00002B54 + mov r2, #0 + str r7, [r4, r0] + add r0, #0xc + str r2, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD83_02231DF0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022331B4: .word 0x00003CF4 +_022331B8: .word 0x0000299C +_022331BC: .word 0x00002B54 + thumb_func_end MOD83_02233168 + + thumb_func_start MOD83_022331C0 +MOD83_022331C0: ; 0x022331C0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _022331DC ; =0x0223A4D4 + add r3, sp, #0 + mov r2, #5 +_022331CA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022331CA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_022331DC: .word 0x0223A4D4 + thumb_func_end MOD83_022331C0 + + thumb_func_start MOD83_022331E0 +MOD83_022331E0: ; 0x022331E0 + push {r3, r4, r5, lr} + sub sp, #0x80 + ldr r5, _022332A0 ; =0x0223A454 + add r3, sp, #0x70 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _022332A4 ; =0x0223A480 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _022332A8 ; =0x0223A4B8 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _022332AC ; =0x0223A49C + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _022332B0 ; =0x0223A464 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + add sp, #0x80 + pop {r3, r4, r5, pc} + nop +_022332A0: .word 0x0223A454 +_022332A4: .word 0x0223A480 +_022332A8: .word 0x0223A4B8 +_022332AC: .word 0x0223A49C +_022332B0: .word 0x0223A464 + thumb_func_end MOD83_022331E0 + + thumb_func_start MOD83_022332B4 +MOD83_022332B4: ; 0x022332B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + bl FUN_0202251C + mov r1, #0 + ldr r4, [r5, #0x48] + mvn r1, r1 + add r6, r0, #0 + cmp r4, r1 + bne _022332E8 + add r2, r5, #0 + add r2, #0x4c + ldrh r2, [r2] + lsr r1, r1, #0x10 + cmp r2, r1 + bne _022332E8 + bl FUN_0202AC28 + add r0, r7, #0 + mov r1, #0 + bl FUN_020227A0 + mov r0, #0 + bl OS_ResetSystem +_022332E8: + cmp r4, #0 + bne _022332F0 + mov r4, #0 + mvn r4, r4 +_022332F0: + mov r0, #1 + lsl r0, r0, #0xa + tst r0, r4 + bne _022332FC + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022332FC: + add r0, r5, #0 + add r0, #0x4e + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223331E + add r1, r5, #0 + add r1, #0x4c + ldrh r1, [r1] + add r0, r6, #0 + bl FUN_0202AEF4 + cmp r0, #1 + bne _0223331E + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_0223331E: + add r0, r5, #0 + add r0, #0x4e + ldrb r0, [r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223333A + add r0, r6, #0 + bl FUN_0202AE0C + cmp r0, #0 + bne _0223333A + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_0223333A: + add r0, r6, #0 + bl FUN_0202ADF0 + cmp r0, #0 + bne _02233348 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_02233348: + add r5, #0x4e + ldrb r0, [r5] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02233358 + mov r0, #5 + pop {r3, r4, r5, r6, r7, pc} +_02233358: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_022332B4 + + thumb_func_start MOD83_0223335C +MOD83_0223335C: ; 0x0223335C + push {r3, lr} + mov r0, #4 + bl MOD83_02234580 + bl MOD83_02234C34 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_0223335C + + thumb_func_start MOD83_0223336C +MOD83_0223336C: ; 0x0223336C + push {r3, lr} + bl MOD83_02234704 + str r0, [sp] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_0223336C + + thumb_func_start MOD83_02233378 +MOD83_02233378: ; 0x02233378 + push {r3, lr} + bl MOD83_02234724 + add r1, sp, #0 + strh r0, [r1] + mov r0, #0 + ldrsh r0, [r1, r0] + pop {r3, pc} + thumb_func_end MOD83_02233378 + + thumb_func_start MOD83_02233388 +MOD83_02233388: ; 0x02233388 + push {r4, lr} + bl MOD83_0223458C + cmp r0, #0xc + bne _022333AA + bl MOD83_0223456C + add r4, r0, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _022333A6 + bl MOD83_02234C34 + mov r0, #1 + str r0, [r4, #0x1c] +_022333A6: + mov r0, #1 + pop {r4, pc} +_022333AA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02233388 + + thumb_func_start MOD83_022333B0 +MOD83_022333B0: ; 0x022333B0 + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223466C + mov r3, #0 + add r1, r3, #0 +_022333BC: + ldr r2, [r0] + cmp r2, #0 + beq _022333CC + ldrh r2, [r0, #6] + cmp r4, r2 + bne _022333CC + strb r1, [r0, #8] + strb r1, [r0, #0xa] +_022333CC: + add r3, r3, #1 + add r0, #0xc + cmp r3, #8 + blt _022333BC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_022333B0 + + thumb_func_start MOD83_022333D8 +MOD83_022333D8: ; 0x022333D8 + push {r3, lr} + bl MOD83_0223466C + add r1, r0, #0 + add r1, #0x62 + ldrh r3, [r1] + mov r2, #1 + add r1, r3, #0 + tst r1, r2 + beq _022333FE + add r1, r0, #0 + add r1, #0x62 + ldrh r3, [r1] + mov r1, #1 + add r0, #0x62 + bic r3, r1 + strh r3, [r0] + add r0, r2, #0 + pop {r3, pc} +_022333FE: + mov r1, #0x40 + add r2, r3, #0 + tst r2, r1 + beq _02233418 + add r1, r0, #0 + add r1, #0x62 + ldrh r2, [r1] + mov r1, #0x40 + add r0, #0x62 + bic r2, r1 + strh r2, [r0] + mov r0, #7 + pop {r3, pc} +_02233418: + lsl r1, r1, #6 + tst r1, r3 + beq _02233430 + add r1, r0, #0 + add r1, #0x62 + ldrh r2, [r1] + ldr r1, _02233434 ; =0xFFFFEFFF + add r0, #0x62 + and r1, r2 + strh r1, [r0] + mov r0, #0xd + pop {r3, pc} +_02233430: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_02233434: .word 0xFFFFEFFF + thumb_func_end MOD83_022333D8 + + thumb_func_start MOD83_02233438 +MOD83_02233438: ; 0x02233438 + push {r4, lr} + bl MOD83_0223466C + add r4, r0, #0 + mov r1, #1 + add r0, #0x60 + strb r1, [r0] + bl WM_GetAllowedChannel + add r1, r4, #0 + add r1, #0x62 + strh r0, [r1] + add r0, r4, #0 + add r0, #0x62 + ldrh r1, [r0] + cmp r1, #0 + beq _02233462 + mov r0, #2 + lsl r0, r0, #0xe + cmp r1, r0 + bne _02233466 +_02233462: + mov r0, #0 + pop {r4, pc} +_02233466: + add r0, r4, #0 + mov r1, #0x66 + add r0, #0x61 + strb r1, [r0] + mov r0, #0 + add r4, #0x64 + strb r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD83_02233438 + + thumb_func_start MOD83_02233478 +MOD83_02233478: ; 0x02233478 + push {r4, lr} + bl MOD83_02234564 + add r4, r0, #0 + bl WM_GetDispersionBeaconPeriod + strh r0, [r4, #0x18] + bl WM_GetNextTgid + strh r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02233478 + + thumb_func_start MOD83_02233490 +MOD83_02233490: ; 0x02233490 + push {r4, lr} + bl MOD83_022345D4 + add r4, r0, #0 + bl MOD83_02234610 + str r0, [r4] + bl MOD83_02234564 + ldrh r0, [r0, #0x32] + strh r0, [r4, #4] + bl WM_GetDispersionScanPeriod + strh r0, [r4, #6] + mov r0, #0xff + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + strb r0, [r4, #0xc] + strb r0, [r4, #0xd] + pop {r4, pc} + thumb_func_end MOD83_02233490 + + thumb_func_start MOD83_022334BC +MOD83_022334BC: ; 0x022334BC + push {r3, r4, r5, r6, r7, lr} + bl MOD83_022345D4 + add r7, r0, #0 + bl WM_GetAllowedChannel + add r3, r0, #0 + beq _02233508 + ldrh r2, [r7, #4] + mov r1, #0 + mov r0, #1 + mov ip, r2 + mov r4, #0x1c +_022334D6: + lsr r6, r2, #0x1f + lsl r5, r2, #0x1c + sub r5, r5, r6 + ror r5, r4 + add r5, r6, r5 + add r6, r0, #0 + lsl r6, r5 + add r5, r3, #0 + tst r5, r6 + beq _02233500 + mov r0, ip + add r0, r0, r1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1c + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + add r0, r0, #1 + strh r0, [r7, #4] + pop {r3, r4, r5, r6, r7, pc} +_02233500: + add r1, r1, #1 + add r2, r2, #1 + cmp r1, #0x10 + blt _022334D6 +_02233508: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD83_022334BC + + thumb_func_start MOD83_0223350C +MOD83_0223350C: ; 0x0223350C + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #4] + bl MOD83_0223495C + ldrh r0, [r4, #2] + cmp r0, #8 + bne _02233524 + bl MOD83_02234958 + bl MOD83_0223335C +_02233524: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_0223350C + + thumb_func_start MOD83_02233528 +MOD83_02233528: ; 0x02233528 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #8] + bl MOD83_0223495C + ldrh r0, [r4, #2] + cmp r0, #0 + beq _0223353C + bl MOD83_02234958 +_0223353C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02233528 + + thumb_func_start MOD83_02233540 +MOD83_02233540: ; 0x02233540 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _02233576 + mov r0, #2 + bl MOD83_02234580 + bl MOD83_0223458C + cmp r0, #0xc + bne _02233562 + bl MOD83_022349CC + mov r0, #2 + bl MOD83_02234580 + pop {r3, pc} +_02233562: + bl MOD83_02234BF8 + cmp r0, #0 + bne _0223357E + bl MOD83_022349CC + mov r0, #2 + bl MOD83_02234580 + pop {r3, pc} +_02233576: + bl MOD83_02234958 + bl MOD83_022349CC +_0223357E: + pop {r3, pc} + thumb_func_end MOD83_02233540 + + thumb_func_start MOD83_02233580 +MOD83_02233580: ; 0x02233580 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _022335AA + bl MOD83_0223458C + cmp r0, #0xc + bne _022335A2 + bl WM_Finish + mov r0, #0xc + bl MOD83_02234580 + mov r0, #1 + bl MOD83_0223464C + pop {r3, pc} +_022335A2: + mov r0, #1 + bl MOD83_02234580 + pop {r3, pc} +_022335AA: + bl MOD83_02234958 + mov r0, #4 + bl MOD83_02234580 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02233580 + + thumb_func_start MOD83_022335B8 +MOD83_022335B8: ; 0x022335B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r5, #2] + cmp r0, #0 + bne _02233616 + bl MOD83_0223466C + add r4, r0, #0 + add r0, #0x61 + ldrh r1, [r5, #0xa] + ldrb r0, [r0] + cmp r0, r1 + ble _022335E0 + add r0, r4, #0 + add r0, #0x61 + strb r1, [r0] + add r0, r4, #0 + ldrh r1, [r5, #8] + add r0, #0x64 + strb r1, [r0] +_022335E0: + bl MOD83_022333D8 + cmp r0, #0 + beq _022335F6 + bl MOD83_022349EC + cmp r0, #0 + bne _0223361E + bl MOD83_0223335C + pop {r3, r4, r5, pc} +_022335F6: + add r4, #0x61 + ldrb r0, [r4] + cmp r0, #0x66 + bhs _02233610 + bl MOD83_02233478 + bl MOD83_02234A18 + cmp r0, #0 + bne _0223361E + bl MOD83_0223335C + pop {r3, r4, r5, pc} +_02233610: + bl MOD83_0223335C + pop {r3, r4, r5, pc} +_02233616: + bl MOD83_02234958 + bl MOD83_0223335C +_0223361E: + pop {r3, r4, r5, pc} + thumb_func_end MOD83_022335B8 + + thumb_func_start MOD83_02233620 +MOD83_02233620: ; 0x02233620 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _0223363E + bl MOD83_02233388 + cmp r0, #0 + bne _02233646 + bl MOD83_02234A54 + cmp r0, #0 + bne _02233646 + bl MOD83_0223335C + pop {r3, pc} +_0223363E: + bl MOD83_02234958 + bl MOD83_0223335C +_02233646: + pop {r3, pc} + thumb_func_end MOD83_02233620 + + thumb_func_start MOD83_02233648 +MOD83_02233648: ; 0x02233648 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldrh r0, [r5, #8] + bl MOD83_0223495C + ldrh r0, [r5, #2] + cmp r0, #0 + beq _0223365C + b _0223376E +_0223365C: + bl MOD83_0223466C + add r4, r0, #0 + mov r0, #8 + bl MOD83_02234580 + bl MOD83_02233388 + cmp r0, #0 + beq _02233672 + b _02233776 +_02233672: + add r0, r4, #0 + add r0, #0x60 + ldrb r0, [r0] + cmp r0, #1 + bne _02233684 + add r0, r4, #0 + mov r1, #2 + add r0, #0x60 + strb r1, [r0] +_02233684: + ldrh r0, [r5, #8] + cmp r0, #7 + bgt _0223369C + bge _022336BE + cmp r0, #2 + bgt _02233776 + cmp r0, #0 + blt _02233776 + beq _022336A4 + add sp, #0xc + cmp r0, #2 + pop {r4, r5, pc} +_0223369C: + cmp r0, #9 + beq _02233764 + add sp, #0xc + pop {r4, r5, pc} +_022336A4: + bl MOD83_02234B80 + cmp r0, #0 + bne _022336B4 + bl MOD83_0223335C + add sp, #0xc + pop {r4, r5, pc} +_022336B4: + mov r0, #0 + bl MOD83_0223461C + add sp, #0xc + pop {r4, r5, pc} +_022336BE: + bl MOD83_0223466C + bl MOD83_02234968 + add r4, #0x60 + ldrb r0, [r4] + cmp r0, #2 + bne _02233776 + add r4, r5, #0 + add r4, #0x14 + bl MOD83_022346BC + ldr r1, [r5, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r0 + bne _02233776 + bl MOD83_022346CC + ldr r1, [r4] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + cmp r1, r0 + bhi _02233776 + bl MOD83_022346DC + ldr r1, [r4, #4] + lsr r1, r1, #0x10 + cmp r1, r0 + bne _02233776 + bl MOD83_0223466C + add r4, r0, #0 + add r0, r5, #0 + add r0, #0xa + bl MOD83_0223336C + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa + bl MOD83_02233378 + add r1, sp, #0 + strh r0, [r1] + ldrh r0, [r1] + ldr r2, [sp, #8] + add r3, r4, #0 + strh r0, [r1, #2] + mov r0, #0 +_02233722: + ldr r1, [r3] + cmp r1, r2 + bne _0223373A + mov r1, #0xc + mul r1, r0 + ldrh r0, [r5, #0x10] + add r1, r4, r1 + add sp, #0xc + strh r0, [r1, #6] + mov r0, #1 + strb r0, [r1, #0xa] + pop {r4, r5, pc} +_0223373A: + cmp r1, #0 + bne _02233758 + mov r1, #0xc + mul r1, r0 + str r2, [r4, r1] + add r0, sp, #0 + ldrh r0, [r0, #2] + add r1, r4, r1 + add sp, #0xc + strh r0, [r1, #4] + ldrh r0, [r5, #0x10] + strh r0, [r1, #6] + mov r0, #1 + strb r0, [r1, #0xa] + pop {r4, r5, pc} +_02233758: + add r0, r0, #1 + add r3, #0xc + cmp r0, #8 + blt _02233722 + add sp, #0xc + pop {r4, r5, pc} +_02233764: + ldrh r0, [r5, #0x10] + bl MOD83_022333B0 + add sp, #0xc + pop {r4, r5, pc} +_0223376E: + bl MOD83_02234958 + bl MOD83_0223335C +_02233776: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD83_02233648 + + thumb_func_start MOD83_0223377C +MOD83_0223377C: ; 0x0223377C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + str r0, [sp] + bl MOD83_02234664 + add r7, r0, #0 + add r0, r4, #4 + bl MOD83_0223336C + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #4 + bl MOD83_02233378 + add r2, sp, #4 + strh r0, [r2] + ldrh r0, [r2] + ldr r6, [sp, #0xc] + add r1, r7, #0 + strh r0, [r2, #2] + ldrh r3, [r2, #2] + mov r0, #0 +_022337AA: + ldr r2, [r1] + add r5, r1, #0 + add r5, #0x34 + cmp r2, r6 + bne _022337C0 + ldrh r5, [r5] + cmp r5, r3 + bne _022337C0 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022337C0: + cmp r2, #0 + bne _0223380C + mov r1, #0x38 + mul r1, r0 + ldr r0, [sp, #0xc] + add r5, r4, #0 + str r0, [r7, r1] + add r0, r7, r1 + add r5, #0x58 + add r3, r0, #4 + mov r2, #0xc +_022337D6: + ldrh r0, [r5] + add r5, r5, #2 + strh r0, [r3] + add r3, r3, #2 + sub r2, r2, #1 + bne _022337D6 + add r3, r7, r1 + add r4, #0x70 + add r3, #0x1c + mov r2, #0xc +_022337EA: + ldrh r0, [r4] + add r4, r4, #2 + strh r0, [r3] + add r3, r3, #2 + sub r2, r2, #1 + bne _022337EA + add r0, sp, #4 + ldrh r0, [r0, #2] + add r1, r7, r1 + strh r0, [r1, #0x34] + ldr r0, [sp] + add r1, #0x36 + ldrh r0, [r0, #0x12] + add sp, #0x10 + strb r0, [r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223380C: + add r0, r0, #1 + add r1, #0x38 + cmp r0, #8 + blt _022337AA + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD83_0223377C + + thumb_func_start MOD83_0223381C +MOD83_0223381C: ; 0x0223381C + push {r3, lr} + bl MOD83_022334BC + bl MOD83_02234A70 + cmp r0, #0 + bne _0223382E + bl MOD83_0223335C +_0223382E: + pop {r3, pc} + thumb_func_end MOD83_0223381C + + thumb_func_start MOD83_02233830 +MOD83_02233830: ; 0x02233830 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD83_02234610 + add r4, r0, #0 + bl MOD83_02234664 + add r5, r0, #0 + bl MOD83_02233388 + cmp r0, #0 + beq _0223384C + mov r0, #1 + pop {r4, r5, r6, pc} +_0223384C: + mov r1, #0 + add r2, r1, #0 + add r3, r5, #0 +_02233852: + ldr r0, [r3] + cmp r0, #0 + beq _0223385C + mov r1, #1 + b _02233864 +_0223385C: + add r2, r2, #1 + add r3, #0x38 + cmp r2, #8 + blt _02233852 +_02233864: + cmp r1, #0 + beq _02233882 + mov r0, #7 + lsl r0, r0, #6 + ldrh r0, [r5, r0] + cmp r0, #0 + bne _02233882 + bl MOD83_02234B2C + cmp r0, #0 + bne _0223387E + bl MOD83_0223335C +_0223387E: + mov r0, #1 + pop {r4, r5, r6, pc} +_02233882: + add r0, r4, #0 + mov r1, #0xc0 + bl DC_InvalidateRange + bl MOD83_02234664 + bl MOD83_02234964 + ldrh r0, [r6, #0x36] + cmp r0, #8 + blo _0223390C + bl MOD83_022346B0 + ldr r1, [r4, #0x44] + cmp r1, r0 + bne _0223390C + add r5, r4, #0 + add r5, #0x50 + bl MOD83_022346BC + ldr r1, [r4, #0x50] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r0 + bne _0223390C + bl MOD83_022346CC + ldr r1, [r5] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + cmp r1, r0 + bhi _0223390C + bl MOD83_022346DC + ldr r1, [r5, #4] + lsr r1, r1, #0x10 + cmp r1, r0 + bne _0223390C + add r0, r6, #0 + add r1, r4, #0 + bl MOD83_0223377C + cmp r0, #0 + beq _022338FC + bl MOD83_02234664 + ldr r1, _02233910 ; =0x000001C2 + ldrb r2, [r0, r1] + add r2, r2, #1 + strb r2, [r0, r1] + ldrb r0, [r0, r1] + cmp r0, #0x1c + bls _0223390C + bl MOD83_02234B2C + cmp r0, #0 + bne _0223390C + bl MOD83_0223335C + mov r0, #1 + pop {r4, r5, r6, pc} +_022338FC: + bl MOD83_02234B2C + cmp r0, #0 + bne _02233908 + bl MOD83_0223335C +_02233908: + mov r0, #1 + pop {r4, r5, r6, pc} +_0223390C: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02233910: .word 0x000001C2 + thumb_func_end MOD83_02233830 + + thumb_func_start MOD83_02233914 +MOD83_02233914: ; 0x02233914 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #8] + bl MOD83_0223495C + ldrh r0, [r4, #2] + cmp r0, #0 + bne _0223397A + bl MOD83_02234610 + bl MOD83_02234960 + mov r0, #6 + bl MOD83_02234580 + bl MOD83_02233388 + cmp r0, #0 + bne _02233982 + bl MOD83_022345A4 + cmp r0, #1 + bne _02233954 + bl MOD83_02234664 + ldr r2, _02233984 ; =0x000001C3 + mov r1, #0xf0 + ldrb r3, [r0, r2] + bic r3, r1 + mov r1, #0x10 + orr r1, r3 + strb r1, [r0, r2] +_02233954: + ldrh r0, [r4, #8] + cmp r0, #4 + beq _02233968 + cmp r0, #5 + bne _0223396E + add r0, r4, #0 + bl MOD83_02233830 + cmp r0, #0 + bne _02233982 +_02233968: + bl MOD83_0223381C + pop {r4, pc} +_0223396E: + ldrh r0, [r4, #2] + bl MOD83_02234958 + bl MOD83_0223335C + pop {r4, pc} +_0223397A: + bl MOD83_02234958 + bl MOD83_0223335C +_02233982: + pop {r4, pc} + .align 2, 0 +_02233984: .word 0x000001C3 + thumb_func_end MOD83_02233914 + + thumb_func_start MOD83_02233988 +MOD83_02233988: ; 0x02233988 + push {r4, r5, r6, lr} + sub sp, #8 + bl MOD83_02234610 + add r4, r0, #0 + bl MOD83_02234664 + add r6, r0, #0 + bl MOD83_02234564 + bl MOD83_02233388 + cmp r0, #0 + beq _022339AA + add sp, #8 + mov r0, #1 + pop {r4, r5, r6, pc} +_022339AA: + add r0, r4, #0 + mov r1, #0xc0 + bl DC_InvalidateRange + bl MOD83_02234664 + bl MOD83_02234964 + ldrh r0, [r4, #0x3c] + cmp r0, #8 + blo _02233A24 + bl MOD83_022346B0 + ldr r1, [r4, #0x44] + cmp r1, r0 + bne _02233A24 + add r5, r4, #0 + add r5, #0x50 + bl MOD83_022346BC + ldr r1, [r4, #0x50] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r0 + bne _02233A24 + bl MOD83_022346CC + ldr r1, [r5] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + cmp r1, r0 + bhi _02233A24 + bl MOD83_022346DC + ldr r1, [r5, #4] + lsr r1, r1, #0x10 + cmp r1, r0 + bne _02233A24 + add r0, r4, #4 + bl MOD83_0223336C + ldr r1, _02233A2C ; =0x000001C3 + str r0, [sp] + ldrb r1, [r6, r1] + str r0, [sp, #4] + lsl r1, r1, #0x1c + lsr r2, r1, #0x1c + mov r1, #0x38 + mul r1, r2 + ldr r1, [r6, r1] + cmp r1, r0 + bne _02233A24 + bl MOD83_02234B2C + cmp r0, #0 + bne _02233A1E + bl MOD83_0223335C +_02233A1E: + add sp, #8 + mov r0, #1 + pop {r4, r5, r6, pc} +_02233A24: + mov r0, #0 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02233A2C: .word 0x000001C3 + thumb_func_end MOD83_02233988 + + thumb_func_start MOD83_02233A30 +MOD83_02233A30: ; 0x02233A30 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #8] + bl MOD83_0223495C + ldrh r0, [r4, #2] + cmp r0, #0 + bne _02233A90 + bl MOD83_02234664 + ldr r2, _02233A9C ; =0x000001C3 + mov r1, #0xf0 + ldrb r3, [r0, r2] + bic r3, r1 + mov r1, #0x20 + orr r1, r3 + strb r1, [r0, r2] + mov r0, #6 + bl MOD83_02234580 + bl MOD83_02233388 + cmp r0, #0 + bne _02233A98 + ldrh r0, [r4, #8] + cmp r0, #4 + beq _02233A72 + cmp r0, #5 + bne _02233A84 + bl MOD83_02233988 + cmp r0, #0 + bne _02233A98 +_02233A72: + bl MOD83_022334BC + bl MOD83_02234A94 + cmp r0, #0 + bne _02233A98 + bl MOD83_0223335C + pop {r4, pc} +_02233A84: + ldrh r0, [r4, #2] + bl MOD83_02234958 + bl MOD83_0223335C + pop {r4, pc} +_02233A90: + bl MOD83_02234958 + bl MOD83_0223335C +_02233A98: + pop {r4, pc} + nop +_02233A9C: .word 0x000001C3 + thumb_func_end MOD83_02233A30 + + thumb_func_start MOD83_02233AA0 +MOD83_02233AA0: ; 0x02233AA0 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _02233AE4 + mov r0, #7 + bl MOD83_02234580 + bl MOD83_02233388 + cmp r0, #0 + bne _02233AEC + bl MOD83_022345A4 + cmp r0, #1 + bne _02233AEC + bl MOD83_02234664 + ldr r1, _02233AF0 ; =0x000001C3 + ldrb r0, [r0, r1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + cmp r0, #2 + bne _02233AEC + bl MOD83_02234B48 + cmp r0, #0 + bne _02233ADC + bl MOD83_0223335C + pop {r3, pc} +_02233ADC: + mov r0, #3 + bl MOD83_02234580 + pop {r3, pc} +_02233AE4: + bl MOD83_02234958 + bl MOD83_0223335C +_02233AEC: + pop {r3, pc} + nop +_02233AF0: .word 0x000001C3 + thumb_func_end MOD83_02233AA0 + + thumb_func_start MOD83_02233AF4 +MOD83_02233AF4: ; 0x02233AF4 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #8] + bl MOD83_0223495C + ldrh r0, [r4, #2] + cmp r0, #0 + bne _02233B7A + mov r0, #9 + bl MOD83_02234580 + bl MOD83_02233388 + cmp r0, #0 + bne _02233B82 + ldrh r0, [r4, #8] + cmp r0, #9 + bhi _02233B6E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233B24: ; jump table + .short _02233B6E - _02233B24 - 2 ; case 0 + .short _02233B6E - _02233B24 - 2 ; case 1 + .short _02233B6E - _02233B24 - 2 ; case 2 + .short _02233B6E - _02233B24 - 2 ; case 3 + .short _02233B6E - _02233B24 - 2 ; case 4 + .short _02233B6E - _02233B24 - 2 ; case 5 + .short _02233B82 - _02233B24 - 2 ; case 6 + .short _02233B38 - _02233B24 - 2 ; case 7 + .short _02233B82 - _02233B24 - 2 ; case 8 + .short _02233B58 - _02233B24 - 2 ; case 9 +_02233B38: + ldrh r0, [r4, #0xa] + bl MOD83_0223461C + mov r0, #1 + bl MOD83_02234634 + mov r0, #0 + bl MOD83_02234640 + bl MOD83_02234B80 + cmp r0, #0 + bne _02233B82 + bl MOD83_0223335C + pop {r4, pc} +_02233B58: + bl MOD83_02234628 + cmp r0, #0 + beq _02233B66 + mov r0, #1 + bl MOD83_02234640 +_02233B66: + mov r0, #0 + bl MOD83_02234634 + pop {r4, pc} +_02233B6E: + ldrh r0, [r4, #2] + bl MOD83_02234958 + bl MOD83_0223335C + pop {r4, pc} +_02233B7A: + bl MOD83_02234958 + bl MOD83_0223335C +_02233B82: + pop {r4, pc} + thumb_func_end MOD83_02233AF4 + + thumb_func_start MOD83_02233B84 +MOD83_02233B84: ; 0x02233B84 + push {r3, lr} + bl MOD83_022345A4 + cmp r0, #1 + beq _02233BBE + cmp r0, #2 + bne _02233BD6 + bl MOD83_02233438 + cmp r0, #0 + beq _02233BB8 + bl MOD83_022333D8 + bl MOD83_022349EC + cmp r0, #0 + beq _02233BB8 + bl MOD83_0223466C + mov r1, #1 + add r0, #0x60 + strb r1, [r0] + mov r0, #3 + bl MOD83_02234580 + pop {r3, pc} +_02233BB8: + bl MOD83_0223335C + pop {r3, pc} +_02233BBE: + bl MOD83_02233490 + bl MOD83_02234A70 + cmp r0, #0 + bne _02233BD0 + bl MOD83_0223335C + pop {r3, pc} +_02233BD0: + mov r0, #3 + bl MOD83_02234580 +_02233BD6: + pop {r3, pc} + thumb_func_end MOD83_02233B84 + + thumb_func_start MOD83_02233BD8 +MOD83_02233BD8: ; 0x02233BD8 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #4] + bl MOD83_0223495C + ldrh r0, [r4, #2] + cmp r0, #0 + bne _02233C12 + ldrh r0, [r4] + cmp r0, #0xe + bne _02233BF6 + bl MOD83_02233388 + cmp r0, #0 + bne _02233C22 +_02233BF6: + bl MOD83_022345A4 + cmp r0, #1 + beq _02233C0A + cmp r0, #2 + bne _02233C22 + mov r0, #0xa + bl MOD83_02234580 + pop {r4, pc} +_02233C0A: + mov r0, #0xb + bl MOD83_02234580 + pop {r4, pc} +_02233C12: + cmp r0, #9 + beq _02233C22 + cmp r0, #0xd + beq _02233C22 + cmp r0, #0xf + beq _02233C22 + bl MOD83_0223335C +_02233C22: + pop {r4, pc} + thumb_func_end MOD83_02233BD8 + + thumb_func_start MOD83_02233C24 +MOD83_02233C24: ; 0x02233C24 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD83_02234694 + add r4, r0, #0 + ldrb r0, [r4, #0x19] + cmp r0, #1 + bne _02233C9A + ldrh r1, [r6, #0x10] + ldr r0, [r6, #0xc] + ldr r5, [r4, #0xc] + bl DC_FlushRange + ldrh r2, [r6, #0x10] + ldr r0, [r6, #0xc] + ldr r1, [r4, #0xc] + bl MI_CpuCopy8 + bl MOD83_022346BC + ldr r1, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r0 + bne _02233C9A + bl MOD83_022346CC + ldr r1, [r5] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + cmp r1, r0 + bhi _02233C9A + ldr r0, [r4, #0xc] + bl MOD83_02234900 + ldr r0, [r5, #8] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r4, #0x1c] + cmp r1, r0 + bne _02233C9A + ldr r0, [r4, #0xc] + bl MOD83_0223496C + ldr r0, [r4, #0xc] + bl MOD83_02234934 + cmp r0, #0 + beq _02233C96 + ldr r0, [r5, #8] + lsl r0, r0, #0x10 + lsr r0, r0, #0x18 + cmp r0, #1 + beq _02233C96 + mov r0, #2 + strb r0, [r4, #0x19] + pop {r4, r5, r6, pc} +_02233C96: + mov r0, #0 + strb r0, [r4, #0x19] +_02233C9A: + pop {r4, r5, r6, pc} + thumb_func_end MOD83_02233C24 + + thumb_func_start MOD83_02233C9C +MOD83_02233C9C: ; 0x02233C9C + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD83_02234694 + add r4, r0, #0 + bl MOD83_022345A4 + cmp r0, #2 + bne _02233D24 + ldrb r0, [r4, #0x19] + cmp r0, #2 + beq _02233D24 + ldrh r1, [r6, #0x10] + ldr r0, [r6, #0xc] + ldr r5, [r4, #0xc] + bl DC_FlushRange + ldrh r2, [r6, #0x10] + ldr r0, [r6, #0xc] + ldr r1, [r4, #0xc] + bl MI_CpuCopy8 + bl MOD83_022346BC + ldr r1, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r0 + bne _02233D24 + bl MOD83_022346CC + ldr r1, [r5] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + cmp r1, r0 + bhi _02233D24 + ldr r0, [r4, #0xc] + bl MOD83_02234900 + ldr r0, [r5, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xfd + bne _02233D24 + bl MOD83_0223466C + ldrh r5, [r6, #0x12] + mov r2, #0 + add r3, r0, #0 +_02233CFE: + ldrh r1, [r3, #6] + cmp r5, r1 + bne _02233D1C + mov r1, #0xc + mul r1, r2 + add r1, r0, r1 + mov r2, #1 + strb r2, [r1, #8] + mov r0, #3 + strb r0, [r1, #9] + mov r0, #0xb4 + strb r0, [r4, #0x1a] + mov r0, #0 + strb r0, [r4, #0x19] + pop {r4, r5, r6, pc} +_02233D1C: + add r2, r2, #1 + add r3, #0xc + cmp r2, #8 + blt _02233CFE +_02233D24: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD83_02233C9C + + thumb_func_start MOD83_02233D28 +MOD83_02233D28: ; 0x02233D28 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD83_02234694 + add r4, r0, #0 + ldrb r0, [r4, #0x1c] + cmp r0, #0xfd + bne _02233D40 + add r0, r6, #0 + bl MOD83_02233C9C + pop {r4, r5, r6, pc} +_02233D40: + ldrb r0, [r4, #0x19] + cmp r0, #1 + beq _02233D4C + ldrb r0, [r4, #0x19] + cmp r0, #3 + bne _02233DE8 +_02233D4C: + ldrb r0, [r4, #0x1b] + cmp r0, #0 + bne _02233DE8 + ldrh r1, [r6, #0x10] + ldr r0, [r6, #0xc] + ldr r5, [r4, #0xc] + bl DC_FlushRange + ldrh r2, [r6, #0x10] + ldr r0, [r6, #0xc] + ldr r1, [r4, #0xc] + bl MI_CpuCopy8 + bl MOD83_022346BC + ldr r1, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r0 + bne _02233DE8 + bl MOD83_022346CC + ldr r1, [r5] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + cmp r1, r0 + bhi _02233DE8 + ldr r0, [r4, #0xc] + bl MOD83_02234900 + ldr r0, [r5, #8] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r4, #0x1c] + cmp r1, r0 + bne _02233DE8 + ldr r0, [r4, #0xc] + bl MOD83_0223496C + mov r0, #0 + strb r0, [r4, #0x19] + ldr r0, [r4, #0xc] + bl MOD83_02234934 + cmp r0, #0 + beq _02233DDA + ldr r0, [r5, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xfd + bne _02233DBA + add r0, r6, #0 + bl MOD83_02233C9C + b _02233DCC +_02233DBA: + ldr r2, [r5, #0xc] + ldr r1, [r4, #0xc] + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + add r0, r1, r0 + ldr r1, [r4, #4] + lsr r2, r2, #8 + bl MI_CpuCopy8 +_02233DCC: + ldr r1, [r5, #8] + ldr r0, _02233DEC ; =0xFFFF00FF + and r0, r1 + str r0, [r5, #8] + mov r0, #4 + strb r0, [r4, #0x1b] + pop {r4, r5, r6, pc} +_02233DDA: + ldr r1, [r5, #8] + ldr r0, _02233DEC ; =0xFFFF00FF + and r1, r0 + mov r0, #1 + lsl r0, r0, #8 + orr r0, r1 + str r0, [r5, #8] +_02233DE8: + pop {r4, r5, r6, pc} + nop +_02233DEC: .word 0xFFFF00FF + thumb_func_end MOD83_02233D28 + + thumb_func_start MOD83_02233DF0 +MOD83_02233DF0: ; 0x02233DF0 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #4] + bl MOD83_0223495C + ldrh r0, [r4, #2] + cmp r0, #0 + bne _02233E72 + ldrh r0, [r4, #4] + cmp r0, #7 + beq _02233E3A + cmp r0, #9 + beq _02233E48 + cmp r0, #0x15 + bne _02233E72 + bl MOD83_02234574 + cmp r0, #0xa + beq _02233E1A + cmp r0, #0xb + bne _02233E72 +_02233E1A: + bl MOD83_02234694 + ldrb r0, [r0, #0x18] + cmp r0, #1 + beq _02233E2A + cmp r0, #2 + beq _02233E32 + pop {r4, pc} +_02233E2A: + add r0, r4, #0 + bl MOD83_02233C24 + pop {r4, pc} +_02233E32: + add r0, r4, #0 + bl MOD83_02233D28 + pop {r4, pc} +_02233E3A: + mov r0, #1 + bl MOD83_02234634 + mov r0, #0 + bl MOD83_02234640 + pop {r4, pc} +_02233E48: + bl MOD83_02234628 + cmp r0, #0 + beq _02233E56 + mov r0, #1 + bl MOD83_02234640 +_02233E56: + bl MOD83_02234574 + cmp r0, #0xa + beq _02233E64 + cmp r0, #0xb + beq _02233E6C + pop {r4, pc} +_02233E64: + ldrh r0, [r4, #0x12] + bl MOD83_022333B0 + pop {r4, pc} +_02233E6C: + mov r0, #0 + bl MOD83_02234634 +_02233E72: + pop {r4, pc} + thumb_func_end MOD83_02233DF0 + + thumb_func_start MOD83_02233E74 +MOD83_02233E74: ; 0x02233E74 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _02233E8A + bl MOD83_02233388 + cmp r0, #0 + bne _02233E94 + bl MOD83_02233B84 + pop {r3, pc} +_02233E8A: + bl MOD83_02234958 + mov r0, #4 + bl MOD83_02234580 +_02233E94: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02233E74 + + thumb_func_start MOD83_02233E98 +MOD83_02233E98: ; 0x02233E98 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _02233EB0 + bl MOD83_022349CC + cmp r0, #0 + beq _02233EB8 + mov r0, #2 + bl MOD83_02234580 + pop {r3, pc} +_02233EB0: + bl MOD83_02234958 + bl MOD83_0223335C +_02233EB8: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02233E98 + + thumb_func_start MOD83_02233EBC +MOD83_02233EBC: ; 0x02233EBC + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _02233EF2 + mov r0, #0 + bl MOD83_0223461C + bl MOD83_0223458C + cmp r0, #0xc + bne _02233EE2 + bl MOD83_02234C54 + cmp r0, #0 + beq _02233EFC + mov r0, #3 + bl MOD83_02234580 + pop {r3, pc} +_02233EE2: + bl MOD83_02234C14 + cmp r0, #0 + beq _02233EFC + mov r0, #3 + bl MOD83_02234580 + pop {r3, pc} +_02233EF2: + bl MOD83_02234958 + mov r0, #4 + bl MOD83_02234580 +_02233EFC: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02233EBC + + thumb_func_start MOD83_02233F00 +MOD83_02233F00: ; 0x02233F00 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + bne _02233F16 + mov r0, #0xc + bl MOD83_02234580 + mov r0, #1 + bl MOD83_0223464C + pop {r3, pc} +_02233F16: + bl MOD83_02234958 + mov r0, #4 + bl MOD83_02234580 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02233F00 + + thumb_func_start MOD83_02233F24 +MOD83_02233F24: ; 0x02233F24 + push {r3, lr} + ldr r0, _02233F40 ; =MOD83_0223350C + bl WM_SetIndCallback + cmp r0, #0 + beq _02233F3A + mov r0, #4 + bl MOD83_02234580 + mov r0, #0 + pop {r3, pc} +_02233F3A: + mov r0, #1 + pop {r3, pc} + nop +_02233F40: .word MOD83_0223350C + thumb_func_end MOD83_02233F24 + + thumb_func_start MOD83_02233F44 +MOD83_02233F44: ; 0x02233F44 + push {r3, lr} + bl MOD83_02234574 + cmp r0, #0 + beq _02233F56 + cmp r0, #1 + beq _02233F56 + cmp r0, #2 + bne _02233F5A +_02233F56: + bl MOD83_022349B0 +_02233F5A: + pop {r3, pc} + thumb_func_end MOD83_02233F44 + + thumb_func_start MOD83_02233F5C +MOD83_02233F5C: ; 0x02233F5C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD83_02234564 + ldrh r0, [r0, #0x34] + cmp r4, r0 + bhi _02233F80 + add r0, r5, #0 + add r1, r4, #0 + bl DC_FlushRange + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD83_02234970 +_02233F80: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD83_02233F5C + + thumb_func_start MOD83_02233F84 +MOD83_02233F84: ; 0x02233F84 + mov r0, #0x17 + lsl r0, r0, #6 + bx lr + .align 2, 0 + thumb_func_end MOD83_02233F84 + + thumb_func_start MOD83_02233F8C +MOD83_02233F8C: ; 0x02233F8C + mov r0, #0x17 + lsl r0, r0, #6 + bx lr + .align 2, 0 + thumb_func_end MOD83_02233F8C + + thumb_func_start MOD83_02233F94 +MOD83_02233F94: ; 0x02233F94 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + bl MOD83_02234564 + bl MOD83_0223456C + add r4, r0, #0 + mov r0, #0x1f + add r1, r7, #0 + and r1, r0 + beq _02233FB2 + mov r0, #0x20 + sub r0, r0, r1 + add r7, r7, r0 +_02233FB2: + mov r1, #0 + strb r1, [r4] + strb r1, [r4, #1] + strb r1, [r4, #2] + mov r0, #4 + strb r0, [r4, #3] + ldr r0, _022340B8 ; =0x00400131 + str r0, [r4, #4] + mov r0, #0xf + strh r1, [r4, #0xc] + lsl r0, r0, #8 + str r7, [r4, #0x34] + add r7, r7, r0 + str r7, [r4, #0x38] + bl MOD83_02233F84 + str r0, [r4, #0x2c] + add r7, r7, r0 + str r7, [r4, #0x3c] + bl MOD83_02233F8C + add r7, r7, r0 + str r0, [r4, #0x30] + add r0, r7, #0 + str r7, [r4, #0x28] + add r0, #0xc0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x34] + mov r1, #2 + add r7, #0xe0 + bl WM_Init + bl MOD83_02233F24 + str r0, [r4, #0x10] + mov r2, #0 + str r2, [r4, #0x14] + str r2, [r4, #0x18] + str r2, [r4, #0x1c] + str r2, [r4, #0x20] + ldr r0, [r4, #0x40] + mov r6, #0xff + bic r0, r6 + add r3, r0, #0 + mov r1, #0xf + orr r3, r1 + ldr r0, _022340BC ; =0xFFFFF0FF + add r1, #0xf1 + and r0, r3 + orr r1, r0 + ldr r0, _022340C0 ; =0xFFFF0FFF + and r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + orr r0, r1 + str r0, [r4, #0x40] + ldr r3, [r5] + ldr r1, [r4, #0x44] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + lsl r3, r3, #0x18 + add r0, r4, #0 + bic r1, r6 + lsr r3, r3, #0x18 + orr r3, r1 + ldr r1, _022340BC ; =0xFFFFF0FF + str r3, [r4, #0x44] + and r1, r3 + ldr r3, [r5] + add r0, #0x44 + lsl r3, r3, #0x14 + lsr r3, r3, #0x1c + lsl r3, r3, #0x1c + lsr r3, r3, #0x14 + orr r3, r1 + ldr r1, _022340C0 ; =0xFFFF0FFF + str r3, [r4, #0x44] + and r1, r3 + ldr r3, [r5] + lsl r3, r3, #0x10 + lsr r3, r3, #0x1c + lsl r3, r3, #0x1c + lsr r3, r3, #0x10 + orr r1, r3 + str r1, [r4, #0x44] + ldr r1, [r0] + ldr r3, [r5] + lsl r1, r1, #0x10 + lsr r3, r3, #0x10 + lsr r1, r1, #0x10 + lsl r3, r3, #0x10 + orr r1, r3 + str r1, [r0] + ldr r0, [r5, #8] + ldr r1, [r5, #4] + add r3, r4, #0 + b _0223408C +_02234074: + ldrh r6, [r0] + add r5, r3, #0 + add r5, #0x48 + strh r6, [r5] + add r5, r3, #0 + ldrh r6, [r1] + add r5, #0x60 + add r3, r3, #2 + strh r6, [r5] + add r2, r2, #1 + add r0, r0, #2 + add r1, r1, #2 +_0223408C: + cmp r0, #0 + beq _02234094 + cmp r2, #0xc + blo _02234074 +_02234094: + ldr r1, [r4, #0x40] + ldr r0, [r4, #0x44] + str r1, [r4, #0x78] + str r0, [r4, #0x7c] + bl MOD83_022346A4 + bl MOD83_02234694 + str r7, [r0, #8] + ldr r0, [r4, #0x2c] + add r7, r7, r0 + bl MOD83_02234694 + str r7, [r0, #0xc] + bl WM_GetNextTgid + pop {r3, r4, r5, r6, r7, pc} + nop +_022340B8: .word 0x00400131 +_022340BC: .word 0xFFFFF0FF +_022340C0: .word 0xFFFF0FFF + thumb_func_end MOD83_02233F94 + + thumb_func_start MOD83_022340C4 +MOD83_022340C4: ; 0x022340C4 + push {r3, r4, r5, lr} + bl MOD83_02234694 + add r4, r0, #0 + ldrb r0, [r4, #0x19] + cmp r0, #1 + bne _022340E2 + ldrb r0, [r4, #0x1a] + sub r0, r0, #1 + strb r0, [r4, #0x1a] + ldrb r0, [r4, #0x1a] + cmp r0, #0 + bne _02234118 + mov r0, #0 + strb r0, [r4, #0x19] +_022340E2: + ldrb r0, [r4, #0x19] + cmp r0, #0 + bne _02234118 + bl MOD83_02234770 + mov r1, #0x40 + sub r5, r1, r0 + ldrb r0, [r4, #0x1c] + add r2, r5, #0 + mov r3, #3 + str r0, [sp] + ldr r0, [r4, #8] + ldr r1, [r4, #4] + bl MOD83_022347D0 + bl MOD83_02234770 + add r1, r0, #0 + ldr r0, [r4, #8] + ldr r2, _0223411C ; =0x0000FFFF + add r1, r5, r1 + bl MOD83_02233F5C + mov r0, #1 + strb r0, [r4, #0x19] + mov r0, #0x3c + strb r0, [r4, #0x1a] +_02234118: + pop {r3, r4, r5, pc} + nop +_0223411C: .word 0x0000FFFF + thumb_func_end MOD83_022340C4 + + thumb_func_start MOD83_02234120 +MOD83_02234120: ; 0x02234120 + push {r3, r4, r5, r6, r7, lr} + bl MOD83_02234694 + add r4, r0, #0 + ldrb r0, [r4, #0x19] + cmp r0, #0 + bne _022341D6 + ldrb r0, [r4, #0x1c] + cmp r0, #0xfd + bne _02234198 + bl MOD83_0223466C + add r5, r0, #0 + mov r1, #0 + add r2, r5, #0 +_0223413E: + ldrb r0, [r2, #9] + cmp r0, #0 + beq _0223417E + add r6, r1, #0 + mov r0, #0xc + mul r6, r0 + add r0, r5, r6 + ldrh r0, [r0, #6] + mov r1, #1 + mov r2, #0 + lsl r1, r0 + lsl r0, r1, #0x10 + lsr r7, r0, #0x10 + mov r0, #0xfd + str r0, [sp] + ldr r0, [r4, #8] + ldr r1, [r4, #4] + add r3, r2, #0 + bl MOD83_022347D0 + bl MOD83_02234770 + add r1, r0, #0 + ldr r0, [r4, #8] + add r2, r7, #0 + bl MOD83_02233F5C + add r5, #9 + ldrb r0, [r5, r6] + sub r0, r0, #1 + strb r0, [r5, r6] + pop {r3, r4, r5, r6, r7, pc} +_0223417E: + add r1, r1, #1 + add r2, #0xc + cmp r1, #8 + blt _0223413E + ldrb r0, [r4, #0x1a] + sub r0, r0, #1 + strb r0, [r4, #0x1a] + ldrb r0, [r4, #0x1a] + cmp r0, #0 + bne _022341D6 + mov r0, #2 + strb r0, [r4, #0x19] + pop {r3, r4, r5, r6, r7, pc} +_02234198: + bl MOD83_02234770 + bl MOD83_02233F84 + ldr r0, [r4, #0xc] + ldr r0, [r0, #8] + lsl r0, r0, #0x10 + lsr r3, r0, #0x18 + bne _022341BA + ldrb r0, [r4, #0x1b] + cmp r0, #0 + bne _022341B6 + mov r0, #2 + strb r0, [r4, #0x19] + pop {r3, r4, r5, r6, r7, pc} +_022341B6: + sub r0, r0, #1 + strb r0, [r4, #0x1b] +_022341BA: + ldrb r0, [r4, #0x1c] + mov r2, #0 + str r0, [sp] + ldr r0, [r4, #8] + ldr r1, [r4, #4] + bl MOD83_022347D0 + bl MOD83_02234770 + add r1, r0, #0 + ldr r0, [r4, #8] + ldr r2, _022341D8 ; =0x0000FFFF + bl MOD83_02233F5C +_022341D6: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022341D8: .word 0x0000FFFF + thumb_func_end MOD83_02234120 + + thumb_func_start MOD83_022341DC +MOD83_022341DC: ; 0x022341DC + push {r3, lr} + bl MOD83_02234694 + ldrb r0, [r0, #0x18] + cmp r0, #1 + beq _022341EE + cmp r0, #2 + beq _022341F4 + pop {r3, pc} +_022341EE: + bl MOD83_022340C4 + pop {r3, pc} +_022341F4: + bl MOD83_02234120 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022341DC + + thumb_func_start MOD83_022341FC +MOD83_022341FC: ; 0x022341FC + push {r4, lr} + bl MOD83_02234664 + add r4, r0, #0 + bl MOD83_02234574 + cmp r0, #6 + beq _02234212 + cmp r0, #0xb + beq _02234222 + pop {r4, pc} +_02234212: + mov r0, #7 + lsl r0, r0, #6 + ldrh r1, [r4, r0] + cmp r1, #0 + beq _02234226 + sub r1, r1, #1 + strh r1, [r4, r0] + pop {r4, pc} +_02234222: + bl MOD83_022341DC +_02234226: + pop {r4, pc} + thumb_func_end MOD83_022341FC + + thumb_func_start MOD83_02234228 +MOD83_02234228: ; 0x02234228 + push {r3, lr} + bl MOD83_02234574 + cmp r0, #0xa + bne _02234236 + bl MOD83_022341DC +_02234236: + pop {r3, pc} + thumb_func_end MOD83_02234228 + + thumb_func_start MOD83_02234238 +MOD83_02234238: ; 0x02234238 + push {r3, lr} + bl MOD83_02234574 + cmp r0, #0xc + beq _0223427A + bl MOD83_0223458C + cmp r0, #0xc + bne _02234258 + bl MOD83_02234574 + cmp r0, #7 + bne _0223427A + bl MOD83_02234C34 + pop {r3, pc} +_02234258: + bl MOD83_022345A4 + cmp r0, #1 + beq _02234266 + cmp r0, #2 + beq _0223426C + b _02234272 +_02234266: + bl MOD83_022341FC + pop {r3, pc} +_0223426C: + bl MOD83_02234228 + pop {r3, pc} +_02234272: + bl MOD83_0223456C + bl MOD83_02234574 +_0223427A: + pop {r3, pc} + thumb_func_end MOD83_02234238 + + thumb_func_start MOD83_0223427C +MOD83_0223427C: ; 0x0223427C + push {r3, lr} + bl MOD83_02234674 + mov r0, #1 + bl MOD83_022345B0 + bl MOD83_02233F44 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_0223427C + + thumb_func_start MOD83_02234290 +MOD83_02234290: ; 0x02234290 + push {r4, lr} + bl MOD83_022345A4 + mov r4, #0 + cmp r0, #1 + bne _022342BE + bl MOD83_02234664 + ldr r1, _022342C4 ; =0x000001C3 + ldrb r1, [r0, r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + cmp r1, #1 + bne _022342BE + add r2, r4, #0 +_022342AE: + ldr r1, [r0] + cmp r1, #0 + beq _022342B6 + add r4, r4, #1 +_022342B6: + add r2, r2, #1 + add r0, #0x38 + cmp r2, #8 + blo _022342AE +_022342BE: + add r0, r4, #0 + pop {r4, pc} + nop +_022342C4: .word 0x000001C3 + thumb_func_end MOD83_02234290 + + thumb_func_start MOD83_022342C8 +MOD83_022342C8: ; 0x022342C8 + push {r4, lr} + add r4, r0, #0 + bl MOD83_022345A4 + cmp r0, #1 + bne _022342FA + bl MOD83_02234574 + cmp r0, #7 + bne _022342FA + bl MOD83_02234664 + ldr r1, _02234300 ; =0x000001C3 + ldrb r1, [r0, r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + cmp r1, #1 + bne _022342FA + mov r1, #0x38 + mul r1, r4 + ldr r0, [r0, r1] + cmp r0, #0 + beq _022342FA + mov r0, #1 + pop {r4, pc} +_022342FA: + mov r0, #0 + pop {r4, pc} + nop +_02234300: .word 0x000001C3 + thumb_func_end MOD83_022342C8 + + thumb_func_start MOD83_02234304 +MOD83_02234304: ; 0x02234304 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD83_022345A4 + cmp r0, #1 + bne _0223434E + bl MOD83_02234574 + cmp r0, #7 + bne _0223434E + bl MOD83_02234664 + ldr r2, _02234350 ; =0x000001C3 + ldrb r3, [r0, r2] + lsl r1, r3, #0x18 + lsr r1, r1, #0x1c + cmp r1, #1 + bne _0223434E + mov r1, #0x38 + add r5, r4, #0 + mul r5, r1 + ldr r5, [r0, r5] + cmp r5, #0 + beq _0223434E + mov r5, #0xf + lsl r4, r4, #0x18 + bic r3, r5 + lsr r5, r4, #0x18 + mov r4, #0xf + and r4, r5 + orr r3, r4 + strb r3, [r0, r2] + mov r2, #0x78 + lsl r1, r1, #3 + strh r2, [r0, r1] + bl MOD83_02234A94 +_0223434E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02234350: .word 0x000001C3 + thumb_func_end MOD83_02234304 + + thumb_func_start MOD83_02234354 +MOD83_02234354: ; 0x02234354 + push {r4, lr} + bl MOD83_022345A4 + mov r4, #0 + cmp r0, #2 + bne _02234386 + bl MOD83_0223466C + add r1, r0, #0 + add r1, #0x60 + ldrb r1, [r1] + cmp r1, #2 + bne _02234386 + add r2, r4, #0 +_02234370: + ldr r1, [r0] + cmp r1, #0 + beq _0223437E + ldrb r1, [r0, #0xa] + cmp r1, #0 + beq _0223437E + add r4, r4, #1 +_0223437E: + add r2, r2, #1 + add r0, #0xc + cmp r2, #8 + blo _02234370 +_02234386: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02234354 + + thumb_func_start MOD83_0223438C +MOD83_0223438C: ; 0x0223438C + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _0223439C + mov r0, #0 + pop {r3, pc} +_0223439C: + bl WM_GetLinkLevel + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_0223438C + + thumb_func_start MOD83_022343A4 +MOD83_022343A4: ; 0x022343A4 + push {r3, lr} + bl MOD83_022345A4 + cmp r0, #1 + beq _022343B4 + cmp r0, #2 + beq _022343BA + b _022343C0 +_022343B4: + bl MOD83_02234290 + pop {r3, pc} +_022343BA: + bl MOD83_02234354 + pop {r3, pc} +_022343C0: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD83_022343A4 + + thumb_func_start MOD83_022343C4 +MOD83_022343C4: ; 0x022343C4 + push {r3, r4, r5, lr} + bl MOD83_02234694 + add r5, r0, #0 + bl MOD83_022346EC + add r4, r0, #0 + bl MOD83_022345A4 + cmp r0, #1 + bne _022343F6 + mov r0, #1 + strb r0, [r5, #0x18] + mov r1, #0 + strb r1, [r5, #0x19] + add r4, #8 + str r4, [r5] + str r4, [r5, #4] + str r1, [r5, #0x10] + str r1, [r5, #0x14] + mov r0, #0x78 + strb r0, [r5, #0x1a] + strb r1, [r5, #0x1b] + mov r0, #0xfd + strb r0, [r5, #0x1c] +_022343F6: + pop {r3, r4, r5, pc} + thumb_func_end MOD83_022343C4 + + thumb_func_start MOD83_022343F8 +MOD83_022343F8: ; 0x022343F8 + push {r4, lr} + bl MOD83_02234694 + add r4, r0, #0 + bl MOD83_022346EC + mov r1, #1 + strb r1, [r4, #0x18] + mov r1, #0 + strb r1, [r4, #0x19] + add r0, #8 + str r0, [r4] + str r0, [r4, #4] + mov r0, #0x30 + str r0, [r4, #0x10] + str r0, [r4, #0x14] + mov r0, #0x78 + strb r0, [r4, #0x1a] + strb r1, [r4, #0x1b] + mov r0, #0xfe + strb r0, [r4, #0x1c] + pop {r4, pc} + thumb_func_end MOD83_022343F8 + + thumb_func_start MOD83_02234424 +MOD83_02234424: ; 0x02234424 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD83_02234694 + cmp r4, #0xf0 + bgt _0223444E + mov r1, #2 + strb r1, [r0, #0x18] + mov r1, #3 + strb r1, [r0, #0x19] + str r5, [r0] + str r5, [r0, #4] + str r6, [r0, #0x10] + mov r2, #0 + str r2, [r0, #0x14] + mov r1, #0x78 + strb r1, [r0, #0x1a] + strb r2, [r0, #0x1b] + strb r4, [r0, #0x1c] +_0223444E: + pop {r4, r5, r6, pc} + thumb_func_end MOD83_02234424 + + thumb_func_start MOD83_02234450 +MOD83_02234450: ; 0x02234450 + push {r3, lr} + bl MOD83_022345A4 + cmp r0, #1 + beq _0223445E + cmp r0, #2 + bne _02234478 +_0223445E: + bl MOD83_02234574 + cmp r0, #0xa + beq _0223446A + cmp r0, #0xb + bne _02234478 +_0223446A: + bl MOD83_02234694 + ldrb r0, [r0, #0x19] + cmp r0, #2 + bne _02234478 + mov r0, #1 + pop {r3, pc} +_02234478: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD83_02234450 + + thumb_func_start MOD83_0223447C +MOD83_0223447C: ; 0x0223447C + push {r3, lr} + bl MOD83_022345A4 + cmp r0, #1 + beq _0223448A + cmp r0, #2 + bne _022344A4 +_0223448A: + bl MOD83_02234574 + cmp r0, #0xa + beq _02234496 + cmp r0, #0xb + bne _022344A4 +_02234496: + bl MOD83_02234694 + ldrb r0, [r0, #0x19] + cmp r0, #2 + bne _022344A4 + mov r0, #1 + pop {r3, pc} +_022344A4: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD83_0223447C + + thumb_func_start MOD83_022344A8 +MOD83_022344A8: ; 0x022344A8 + push {r3, lr} + bl MOD83_022345A4 + cmp r0, #1 + beq _022344B6 + cmp r0, #2 + bne _022344E0 +_022344B6: + bl MOD83_02234574 + cmp r0, #0xa + beq _022344C2 + cmp r0, #0xb + bne _022344E0 +_022344C2: + bl MOD83_02234694 + ldrb r1, [r0, #0x19] + cmp r1, #0 + bne _022344E0 + ldr r1, [r0, #0xc] + ldr r1, [r1, #8] + lsl r1, r1, #0x10 + lsr r1, r1, #0x18 + bne _022344E0 + ldrb r0, [r0, #0x1b] + cmp r0, #4 + bhs _022344E0 + mov r0, #1 + pop {r3, pc} +_022344E0: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD83_022344A8 + + thumb_func_start MOD83_022344E4 +MOD83_022344E4: ; 0x022344E4 + push {r3, lr} + bl MOD83_022345A4 + cmp r0, #2 + bne _02234510 + bl MOD83_0223466C + mov r2, #0 +_022344F4: + ldr r1, [r0] + cmp r1, #0 + beq _02234504 + ldrb r1, [r0, #0xa] + cmp r1, #0 + beq _02234504 + mov r0, #1 + pop {r3, pc} +_02234504: + add r2, r2, #1 + add r0, #0xc + cmp r2, #8 + blt _022344F4 + mov r0, #0 + pop {r3, pc} +_02234510: + bl MOD83_02234628 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022344E4 + + thumb_func_start MOD83_02234518 +MOD83_02234518: ; 0x02234518 + push {r4, lr} + mov r0, #0xc + bl MOD83_02234598 + bl MOD83_02234574 + cmp r0, #0 + beq _02234532 + cmp r0, #1 + beq _02234532 + cmp r0, #9 + beq _0223453E + pop {r4, pc} +_02234532: + bl WM_Finish + mov r0, #1 + bl MOD83_0223464C + pop {r4, pc} +_0223453E: + bl MOD83_02234628 + cmp r0, #0 + bne _02234554 + bl MOD83_0223456C + add r4, r0, #0 + bl MOD83_02234C34 + mov r0, #1 + str r0, [r4, #0x1c] +_02234554: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02234518 + + thumb_func_start MOD83_02234558 +MOD83_02234558: ; 0x02234558 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x20] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02234558 + + thumb_func_start MOD83_02234564 +MOD83_02234564: ; 0x02234564 + ldr r0, _02234568 ; =0x0223B240 + bx lr + .align 2, 0 +_02234568: .word 0x0223B240 + thumb_func_end MOD83_02234564 + + thumb_func_start MOD83_0223456C +MOD83_0223456C: ; 0x0223456C + ldr r0, _02234570 ; =0x0223B8A0 + bx lr + .align 2, 0 +_02234570: .word 0x0223B8A0 + thumb_func_end MOD83_0223456C + + thumb_func_start MOD83_02234574 +MOD83_02234574: ; 0x02234574 + push {r3, lr} + bl MOD83_0223456C + ldrb r0, [r0] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02234574 + + thumb_func_start MOD83_02234580 +MOD83_02234580: ; 0x02234580 + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223456C + strb r4, [r0] + pop {r4, pc} + thumb_func_end MOD83_02234580 + + thumb_func_start MOD83_0223458C +MOD83_0223458C: ; 0x0223458C + push {r3, lr} + bl MOD83_0223456C + ldrb r0, [r0, #1] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_0223458C + + thumb_func_start MOD83_02234598 +MOD83_02234598: ; 0x02234598 + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223456C + strb r4, [r0, #1] + pop {r4, pc} + thumb_func_end MOD83_02234598 + + thumb_func_start MOD83_022345A4 +MOD83_022345A4: ; 0x022345A4 + push {r3, lr} + bl MOD83_0223456C + ldrb r0, [r0, #2] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022345A4 + + thumb_func_start MOD83_022345B0 +MOD83_022345B0: ; 0x022345B0 + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223456C + strb r4, [r0, #2] + pop {r4, pc} + thumb_func_end MOD83_022345B0 + + thumb_func_start MOD83_022345BC +MOD83_022345BC: ; 0x022345BC + push {r3, lr} + bl MOD83_0223456C + ldrb r0, [r0, #3] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022345BC + + thumb_func_start MOD83_022345C8 +MOD83_022345C8: ; 0x022345C8 + push {r4, lr} + add r4, r0, #0 + bl MOD83_02234564 + strh r4, [r0, #0x32] + pop {r4, pc} + thumb_func_end MOD83_022345C8 + + thumb_func_start MOD83_022345D4 +MOD83_022345D4: ; 0x022345D4 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x24] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022345D4 + + thumb_func_start MOD83_022345E0 +MOD83_022345E0: ; 0x022345E0 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x2c] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022345E0 + + thumb_func_start MOD83_022345EC +MOD83_022345EC: ; 0x022345EC + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x30] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022345EC + + thumb_func_start MOD83_022345F8 +MOD83_022345F8: ; 0x022345F8 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x38] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022345F8 + + thumb_func_start MOD83_02234604 +MOD83_02234604: ; 0x02234604 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x3c] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02234604 + + thumb_func_start MOD83_02234610 +MOD83_02234610: ; 0x02234610 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x28] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02234610 + + thumb_func_start MOD83_0223461C +MOD83_0223461C: ; 0x0223461C + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223456C + strh r4, [r0, #0xc] + pop {r4, pc} + thumb_func_end MOD83_0223461C + + thumb_func_start MOD83_02234628 +MOD83_02234628: ; 0x02234628 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x14] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02234628 + + thumb_func_start MOD83_02234634 +MOD83_02234634: ; 0x02234634 + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223456C + str r4, [r0, #0x14] + pop {r4, pc} + thumb_func_end MOD83_02234634 + + thumb_func_start MOD83_02234640 +MOD83_02234640: ; 0x02234640 + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223456C + str r4, [r0, #0x18] + pop {r4, pc} + thumb_func_end MOD83_02234640 + + thumb_func_start MOD83_0223464C +MOD83_0223464C: ; 0x0223464C + push {r4, lr} + add r4, r0, #0 + bl MOD83_0223456C + str r4, [r0, #0x20] + pop {r4, pc} + thumb_func_end MOD83_0223464C + + thumb_func_start MOD83_02234658 +MOD83_02234658: ; 0x02234658 + push {r3, lr} + bl MOD83_0223456C + add r0, #0x90 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02234658 + + thumb_func_start MOD83_02234664 +MOD83_02234664: ; 0x02234664 + ldr r3, _02234668 ; =MOD83_02234658 + bx r3 + .align 2, 0 +_02234668: .word MOD83_02234658 + thumb_func_end MOD83_02234664 + + thumb_func_start MOD83_0223466C +MOD83_0223466C: ; 0x0223466C + ldr r3, _02234670 ; =MOD83_02234658 + bx r3 + .align 2, 0 +_02234670: .word MOD83_02234658 + thumb_func_end MOD83_0223466C + + thumb_func_start MOD83_02234674 +MOD83_02234674: ; 0x02234674 + push {r4, lr} + bl MOD83_02234664 + mov r2, #0x71 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + mov r1, #0x46 + lsl r1, r1, #2 + add r0, r1, #0 + add r0, #0xa8 + strh r1, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02234674 + + thumb_func_start MOD83_02234694 +MOD83_02234694: ; 0x02234694 + push {r3, lr} + bl MOD83_0223456C + mov r1, #0x95 + lsl r1, r1, #2 + add r0, r0, r1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_02234694 + + thumb_func_start MOD83_022346A4 +MOD83_022346A4: ; 0x022346A4 + push {r3, lr} + bl MOD83_02234694 + mov r1, #0 + strb r1, [r0, #0x18] + pop {r3, pc} + thumb_func_end MOD83_022346A4 + + thumb_func_start MOD83_022346B0 +MOD83_022346B0: ; 0x022346B0 + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022346B0 + + thumb_func_start MOD83_022346BC +MOD83_022346BC: ; 0x022346BC + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022346BC + + thumb_func_start MOD83_022346CC +MOD83_022346CC: ; 0x022346CC + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x40] + lsl r0, r0, #0x14 + lsr r0, r0, #0x1c + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022346CC + + thumb_func_start MOD83_022346DC +MOD83_022346DC: ; 0x022346DC + push {r3, lr} + bl MOD83_0223456C + ldr r0, [r0, #0x44] + lsr r0, r0, #0x10 + pop {r3, pc} + thumb_func_end MOD83_022346DC + + thumb_func_start MOD83_022346E8 +MOD83_022346E8: ; 0x022346E8 + mov r0, #0x38 + bx lr + thumb_func_end MOD83_022346E8 + + thumb_func_start MOD83_022346EC +MOD83_022346EC: ; 0x022346EC + push {r3, lr} + bl MOD83_0223456C + add r0, #0x40 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022346EC + + thumb_func_start MOD83_022346F8 +MOD83_022346F8: ; 0x022346F8 + push {r3, lr} + bl MOD83_0223456C + add r0, #0x78 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022346F8 + + thumb_func_start MOD83_02234704 +MOD83_02234704: ; 0x02234704 + push {r3} + sub sp, #4 + mov r2, #0 + str r2, [sp] + add r3, sp, #0 +_0223470E: + add r1, r0, r2 + ldrb r1, [r1, #2] + add r2, r2, #1 + strb r1, [r3] + add r3, r3, #1 + cmp r2, #4 + blo _0223470E + ldr r0, [sp] + add sp, #4 + pop {r3} + bx lr + thumb_func_end MOD83_02234704 + + thumb_func_start MOD83_02234724 +MOD83_02234724: ; 0x02234724 + push {r3} + sub sp, #4 + mov r2, #0 + add r1, sp, #0 + strh r2, [r1] + add r3, sp, #0 +_02234730: + ldrb r1, [r0, r2] + add r2, r2, #1 + strb r1, [r3] + add r3, r3, #1 + cmp r2, #2 + blo _02234730 + add r1, sp, #0 + mov r0, #0 + ldrsh r0, [r1, r0] + add sp, #4 + pop {r3} + bx lr + thumb_func_end MOD83_02234724 + + thumb_func_start MOD83_02234748 +MOD83_02234748: ; 0x02234748 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _0223476C ; =0x00002710 + add r6, r0, #0 + add r4, r2, #0 + bl _u32_div_f + str r1, [r5] + ldr r1, _0223476C ; =0x00002710 + add r0, r6, #0 + bl _u32_div_f + ldr r1, _0223476C ; =0x00002710 + bl _u32_div_f + str r1, [r4] + pop {r4, r5, r6, pc} + nop +_0223476C: .word 0x00002710 + thumb_func_end MOD83_02234748 + + thumb_func_start MOD83_02234770 +MOD83_02234770: ; 0x02234770 + mov r0, #0x10 + bx lr + thumb_func_end MOD83_02234770 + + thumb_func_start MOD83_02234774 +MOD83_02234774: ; 0x02234774 + push {r4, lr} + ldr r0, _02234788 ; =0x04000006 + ldrh r4, [r0] + bl OS_GetTick + add r1, r0, r4 + mov r0, #1 + bic r1, r0 + add r0, r1, #1 + pop {r4, pc} + .align 2, 0 +_02234788: .word 0x04000006 + thumb_func_end MOD83_02234774 + + thumb_func_start MOD83_0223478C +MOD83_0223478C: ; 0x0223478C + push {r4, r5, r6, r7} + add r3, r0, #0 + mov r0, #0 + lsr r1, r1, #2 + beq _022347C2 + ldr r4, _022347C8 ; =0x00269EC3 +_02234798: + ldr r5, _022347CC ; =0x5D588B65 + ldr r6, _022347CC ; =0x5D588B65 + mul r5, r3 + ldr r3, _022347C8 ; =0x00269EC3 + add r0, r0, #1 + add r3, r5, r3 + lsr r5, r3, #0x10 + mul r6, r3 + add r3, r6, r4 + lsl r5, r5, #0x10 + lsr r7, r3, #0x10 + lsr r5, r5, #0x10 + lsl r7, r7, #0x10 + ldr r6, [r2] + lsl r5, r5, #0x10 + lsr r7, r7, #0x10 + orr r5, r7 + eor r5, r6 + stmia r2!, {r5} + cmp r0, r1 + blo _02234798 +_022347C2: + add r0, r3, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_022347C8: .word 0x00269EC3 +_022347CC: .word 0x5D588B65 + thumb_func_end MOD83_0223478C + + thumb_func_start MOD83_022347D0 +MOD83_022347D0: ; 0x022347D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl MOD83_022346EC + add r4, r0, #0 + ldr r0, [r5] + mov r1, #0xff + bic r0, r1 + ldr r1, [r4] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + orr r1, r0 + ldr r0, _022348F4 ; =0xFFFFF0FF + str r1, [r5] + and r0, r1 + ldr r1, [r4] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + lsl r1, r1, #0x1c + lsr r1, r1, #0x14 + orr r1, r0 + ldr r0, _022348F8 ; =0xFFFF0FFF + str r1, [r5] + and r0, r1 + ldr r1, [r4] + lsl r1, r1, #0x10 + lsr r1, r1, #0x1c + lsl r1, r1, #0x1c + lsr r1, r1, #0x10 + orr r0, r1 + str r0, [r5] + bl MOD83_02234774 + ldr r1, [r5] + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + lsl r0, r0, #0x10 + orr r0, r1 + str r0, [r5] + ldr r2, [r4, #4] + ldr r1, [r5, #4] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r0, #0xff + lsl r2, r2, #0x18 + bic r1, r0 + lsr r2, r2, #0x18 + orr r2, r1 + ldr r1, _022348F4 ; =0xFFFFF0FF + str r2, [r5, #4] + and r1, r2 + ldr r2, [r4, #4] + lsl r2, r2, #0x14 + lsr r2, r2, #0x1c + lsl r2, r2, #0x1c + lsr r2, r2, #0x14 + orr r2, r1 + ldr r1, _022348F8 ; =0xFFFF0FFF + str r2, [r5, #4] + and r1, r2 + ldr r2, [r4, #4] + lsl r2, r2, #0x10 + lsr r2, r2, #0x1c + lsl r2, r2, #0x1c + lsr r2, r2, #0x10 + orr r1, r2 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + str r1, [r5, #4] + ldr r1, [r5, #8] + bic r1, r0 + ldr r0, [sp, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + orr r1, r0 + ldr r0, _022348FC ; =0xFFFF00FF + and r0, r1 + ldr r1, [sp] + lsl r1, r1, #0x18 + lsr r1, r1, #0x10 + orr r0, r1 + str r0, [r5, #8] + mov r0, #0 + add r1, r7, #0 + add r2, r6, #0 + bl SVC_GetCRC16 + ldr r1, [r5, #8] + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + orr r0, r1 + str r0, [r5, #8] + bl MOD83_02234770 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x18 + ldr r1, [r5, #0xc] + mov r2, #0xff + bic r1, r2 + lsr r0, r0, #0x18 + orr r0, r1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + lsl r0, r6, #8 + orr r0, r1 + str r0, [r5, #0xc] + cmp r6, #0 + beq _022348CE + ldr r1, [r5, #0xc] + add r0, r7, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r1, r5, r1 + add r2, r6, #0 + bl MI_CpuCopy8 +_022348CE: + add r0, r5, #0 + bl MOD83_0223496C + ldr r0, [r4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1c + cmp r0, #1 + bne _022348F2 + ldr r1, [r5, #0xc] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r1, r6, r1 + lsr r0, r0, #0x10 + sub r1, r1, #4 + add r2, r5, #4 + bl MOD83_0223478C +_022348F2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022348F4: .word 0xFFFFF0FF +_022348F8: .word 0xFFFF0FFF +_022348FC: .word 0xFFFF00FF + thumb_func_end MOD83_022347D0 + + thumb_func_start MOD83_02234900 +MOD83_02234900: ; 0x02234900 + push {r4, lr} + add r4, r0, #0 + bl MOD83_022346EC + ldr r0, [r4] + lsl r1, r0, #0x10 + lsr r1, r1, #0x1c + cmp r1, #1 + bne _02234930 + lsr r0, r0, #0x10 + mov r1, #0xc + add r2, r4, #4 + bl MOD83_0223478C + ldr r1, [r4, #0xc] + add r4, #0x10 + lsl r2, r1, #0x18 + lsr r2, r2, #0x18 + lsr r1, r1, #8 + add r1, r2, r1 + sub r1, #0x10 + add r2, r4, #0 + bl MOD83_0223478C +_02234930: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02234900 + + thumb_func_start MOD83_02234934 +MOD83_02234934: ; 0x02234934 + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4, #0xc] + mov r0, #0 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + add r1, r4, r1 + lsr r2, r2, #8 + bl SVC_GetCRC16 + ldr r1, [r4, #8] + lsr r1, r1, #0x10 + cmp r1, r0 + bne _02234954 + mov r0, #1 + pop {r4, pc} +_02234954: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD83_02234934 + + thumb_func_start MOD83_02234958 +MOD83_02234958: ; 0x02234958 + bx lr + .align 2, 0 + thumb_func_end MOD83_02234958 + + thumb_func_start MOD83_0223495C +MOD83_0223495C: ; 0x0223495C + bx lr + .align 2, 0 + thumb_func_end MOD83_0223495C + + thumb_func_start MOD83_02234960 +MOD83_02234960: ; 0x02234960 + bx lr + .align 2, 0 + thumb_func_end MOD83_02234960 + + thumb_func_start MOD83_02234964 +MOD83_02234964: ; 0x02234964 + bx lr + .align 2, 0 + thumb_func_end MOD83_02234964 + + thumb_func_start MOD83_02234968 +MOD83_02234968: ; 0x02234968 + bx lr + .align 2, 0 + thumb_func_end MOD83_02234968 + + thumb_func_start MOD83_0223496C +MOD83_0223496C: ; 0x0223496C + bx lr + .align 2, 0 + thumb_func_end MOD83_0223496C + + thumb_func_start MOD83_02234970 +MOD83_02234970: ; 0x02234970 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + bl MOD83_022345BC + lsl r0, r0, #0x10 + lsl r3, r5, #0x10 + lsr r0, r0, #0x10 + str r4, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + ldr r0, _022349AC ; =MOD83_02233528 + mov r1, #0 + add r2, r6, #0 + lsr r3, r3, #0x10 + bl WM_SetMPDataToPortEx + cmp r0, #2 + beq _022349A6 + bl MOD83_02234958 + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_022349A6: + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022349AC: .word MOD83_02233528 + thumb_func_end MOD83_02234970 + + thumb_func_start MOD83_022349B0 +MOD83_022349B0: ; 0x022349B0 + push {r3, lr} + ldr r0, _022349C8 ; =MOD83_02233540 + bl WM_Enable + cmp r0, #2 + beq _022349C4 + bl MOD83_02234958 + mov r0, #0 + pop {r3, pc} +_022349C4: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_022349C8: .word MOD83_02233540 + thumb_func_end MOD83_022349B0 + + thumb_func_start MOD83_022349CC +MOD83_022349CC: ; 0x022349CC + push {r3, lr} + ldr r0, _022349E8 ; =MOD83_02233580 + bl WM_Disable + cmp r0, #2 + beq _022349E4 + bl MOD83_02234958 + bl OS_Terminate + mov r0, #0 + pop {r3, pc} +_022349E4: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_022349E8: .word MOD83_02233580 + thumb_func_end MOD83_022349CC + + thumb_func_start MOD83_022349EC +MOD83_022349EC: ; 0x022349EC + push {r3, lr} + add r3, r0, #0 + mov r0, #0x1e + str r0, [sp] + lsl r3, r3, #0x10 + ldr r0, _02234A14 ; =MOD83_022335B8 + mov r1, #3 + mov r2, #0x11 + lsr r3, r3, #0x10 + bl WM_MeasureChannel + cmp r0, #2 + beq _02234A0E + bl MOD83_02234958 + mov r0, #0 + pop {r3, pc} +_02234A0E: + mov r0, #1 + pop {r3, pc} + nop +_02234A14: .word MOD83_022335B8 + thumb_func_end MOD83_022349EC + + thumb_func_start MOD83_02234A18 +MOD83_02234A18: ; 0x02234A18 + push {r3, r4, r5, lr} + bl MOD83_02234564 + add r5, r0, #0 + bl MOD83_022346EC + add r4, r0, #0 + bl MOD83_0223466C + add r0, #0x64 + ldrb r0, [r0] + strh r0, [r5, #0x32] + str r4, [r5] + bl MOD83_022346E8 + strh r0, [r5, #4] + ldr r0, _02234A50 ; =MOD83_02233620 + add r1, r5, #0 + bl WM_SetParentParameter + cmp r0, #2 + beq _02234A4C + bl MOD83_02234958 + mov r0, #0 + pop {r3, r4, r5, pc} +_02234A4C: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_02234A50: .word MOD83_02233620 + thumb_func_end MOD83_02234A18 + + thumb_func_start MOD83_02234A54 +MOD83_02234A54: ; 0x02234A54 + push {r3, lr} + ldr r0, _02234A6C ; =MOD83_02233648 + bl WM_StartParent + cmp r0, #2 + beq _02234A68 + bl MOD83_02234958 + mov r0, #0 + pop {r3, pc} +_02234A68: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02234A6C: .word MOD83_02233648 + thumb_func_end MOD83_02234A54 + + thumb_func_start MOD83_02234A70 +MOD83_02234A70: ; 0x02234A70 + push {r3, lr} + bl MOD83_022345D4 + add r1, r0, #0 + ldr r0, _02234A90 ; =MOD83_02233914 + bl WM_StartScan + cmp r0, #2 + beq _02234A8A + bl MOD83_02234958 + mov r0, #0 + pop {r3, pc} +_02234A8A: + mov r0, #1 + pop {r3, pc} + nop +_02234A90: .word MOD83_02233914 + thumb_func_end MOD83_02234A70 + + thumb_func_start MOD83_02234A94 +MOD83_02234A94: ; 0x02234A94 + push {r3, r4, r5, lr} + bl MOD83_022345D4 + add r4, r0, #0 + bl MOD83_02234664 + ldr r2, _02234B24 ; =0x000001C3 + mov r3, #0x38 + ldrb r1, [r0, r2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r5, r1, #0 + mul r5, r3 + add r1, r0, r5 + add r1, #0x34 + ldrb r1, [r1] + strb r1, [r4, #8] + ldrb r1, [r0, r2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r5, r1, #0 + mul r5, r3 + add r1, r0, r5 + add r1, #0x35 + ldrb r1, [r1] + strb r1, [r4, #9] + ldrb r1, [r0, r2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r5, r1, #0 + mul r5, r3 + ldrb r1, [r0, r5] + strb r1, [r4, #0xa] + ldrb r1, [r0, r2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r5, r1, #0 + mul r5, r3 + add r1, r0, r5 + ldrb r1, [r1, #1] + strb r1, [r4, #0xb] + ldrb r1, [r0, r2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r5, r1, #0 + mul r5, r3 + add r1, r0, r5 + ldrb r1, [r1, #2] + strb r1, [r4, #0xc] + ldrb r1, [r0, r2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r1, #0 + mul r2, r3 + add r0, r0, r2 + ldrb r0, [r0, #3] + strb r0, [r4, #0xd] + bl MOD83_022345D4 + add r1, r0, #0 + ldr r0, _02234B28 ; =MOD83_02233A30 + bl WM_StartScan + cmp r0, #2 + beq _02234B1E + bl MOD83_02234958 + mov r0, #0 + pop {r3, r4, r5, pc} +_02234B1E: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_02234B24: .word 0x000001C3 +_02234B28: .word MOD83_02233A30 + thumb_func_end MOD83_02234A94 + + thumb_func_start MOD83_02234B2C +MOD83_02234B2C: ; 0x02234B2C + push {r3, lr} + ldr r0, _02234B44 ; =MOD83_02233AA0 + bl WM_EndScan + cmp r0, #2 + beq _02234B40 + bl MOD83_02234958 + mov r0, #0 + pop {r3, pc} +_02234B40: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02234B44: .word MOD83_02233AA0 + thumb_func_end MOD83_02234B2C + + thumb_func_start MOD83_02234B48 +MOD83_02234B48: ; 0x02234B48 + push {r3, r4, lr} + sub sp, #4 + bl MOD83_022346F8 + add r4, r0, #0 + bl MOD83_02234610 + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02234B7C ; =MOD83_02233AF4 + add r2, r4, #0 + mov r3, #1 + bl WM_StartConnectEx + cmp r0, #2 + beq _02234B74 + bl MOD83_02234958 + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_02234B74: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + nop +_02234B7C: .word MOD83_02233AF4 + thumb_func_end MOD83_02234B48 + + thumb_func_start MOD83_02234B80 +MOD83_02234B80: ; 0x02234B80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _02234BF0 ; =MOD83_02233DF0 + mov r0, #4 + mov r2, #0 + bl WM_SetPortCallback + cmp r0, #0 + beq _02234B9C + bl MOD83_02234958 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02234B9C: + bl MOD83_02234564 + ldrh r0, [r0, #0x16] + cmp r0, #0 + bne _02234BAA + mov r5, #1 + b _02234BAC +_02234BAA: + mov r5, #0 +_02234BAC: + bl MOD83_02234604 + add r6, r0, #0 + bl MOD83_022345EC + add r4, r0, #0 + bl MOD83_022345F8 + add r7, r0, #0 + bl MOD83_022345E0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r2, r4, #0x10 + ldr r0, _02234BF4 ; =MOD83_02233BD8 + add r1, r6, #0 + lsr r2, r2, #0x10 + add r3, r7, #0 + bl WM_StartMP + cmp r0, #2 + beq _02234BEA + bl MOD83_02234958 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02234BEA: + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234BF0: .word MOD83_02233DF0 +_02234BF4: .word MOD83_02233BD8 + thumb_func_end MOD83_02234B80 + + thumb_func_start MOD83_02234BF8 +MOD83_02234BF8: ; 0x02234BF8 + push {r3, lr} + ldr r0, _02234C10 ; =MOD83_02233E74 + bl WM_PowerOn + cmp r0, #2 + beq _02234C0C + bl MOD83_02234958 + mov r0, #0 + pop {r3, pc} +_02234C0C: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02234C10: .word MOD83_02233E74 + thumb_func_end MOD83_02234BF8 + + thumb_func_start MOD83_02234C14 +MOD83_02234C14: ; 0x02234C14 + push {r3, lr} + ldr r0, _02234C30 ; =MOD83_02233E98 + bl WM_PowerOff + cmp r0, #2 + beq _02234C2C + bl MOD83_02234958 + bl OS_Terminate + mov r0, #0 + pop {r3, pc} +_02234C2C: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02234C30: .word MOD83_02233E98 + thumb_func_end MOD83_02234C14 + + thumb_func_start MOD83_02234C34 +MOD83_02234C34: ; 0x02234C34 + push {r3, lr} + ldr r0, _02234C50 ; =MOD83_02233EBC + bl WM_Reset + cmp r0, #2 + beq _02234C4C + bl MOD83_02234958 + bl OS_Terminate + mov r0, #0 + pop {r3, pc} +_02234C4C: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02234C50: .word MOD83_02233EBC + thumb_func_end MOD83_02234C34 + + thumb_func_start MOD83_02234C54 +MOD83_02234C54: ; 0x02234C54 + push {r3, lr} + ldr r0, _02234C70 ; =MOD83_02233F00 + bl WM_End + cmp r0, #2 + beq _02234C6C + bl MOD83_02234958 + bl OS_Terminate + mov r0, #0 + pop {r3, pc} +_02234C6C: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02234C70: .word MOD83_02233F00 + thumb_func_end MOD83_02234C54 + + thumb_func_start MOD83_02234C74 +MOD83_02234C74: ; 0x02234C74 + cmp r0, #0 + bgt _02234C7C + mov r0, #1 + bx lr +_02234C7C: + cmp r0, #0xfb + bgt _02234C84 + mov r0, #0 + bx lr +_02234C84: + ldr r1, _02234C9C ; =0x00000115 + cmp r0, r1 + bge _02234C8E + mov r0, #1 + bx lr +_02234C8E: + add r1, #0x86 + cmp r0, r1 + ble _02234C98 + mov r0, #1 + bx lr +_02234C98: + mov r0, #0 + bx lr + .align 2, 0 +_02234C9C: .word 0x00000115 + thumb_func_end MOD83_02234C74 + + thumb_func_start MOD83_02234CA0 +MOD83_02234CA0: ; 0x02234CA0 + push {r4, lr} + add r4, r0, #0 + bl MOD83_02236E9C + cmp r0, #4 + bhi _02234CE0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234CB8: ; jump table + .short _02234CC2 - _02234CB8 - 2 ; case 0 + .short _02234CC8 - _02234CB8 - 2 ; case 1 + .short _02234CCE - _02234CB8 - 2 ; case 2 + .short _02234CD4 - _02234CB8 - 2 ; case 3 + .short _02234CDA - _02234CB8 - 2 ; case 4 +_02234CC2: + mov r0, #2 + str r0, [r4] + pop {r4, pc} +_02234CC8: + mov r0, #1 + str r0, [r4] + pop {r4, pc} +_02234CCE: + mov r0, #5 + str r0, [r4] + pop {r4, pc} +_02234CD4: + mov r0, #4 + str r0, [r4] + pop {r4, pc} +_02234CDA: + mov r0, #3 + str r0, [r4] + pop {r4, pc} +_02234CE0: + mov r0, #0 + mvn r0, r0 + str r0, [r4] + pop {r4, pc} + thumb_func_end MOD83_02234CA0 + + thumb_func_start MOD83_02234CE8 +MOD83_02234CE8: ; 0x02234CE8 + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r1, _02234E3C ; =0x0000E890 + add r5, r0, #0 + add r4, r5, r1 + ldr r1, [r4] + cmp r1, #9 + bls _02234CFA + b _02234E34 +_02234CFA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02234D06: ; jump table + .short _02234D1A - _02234D06 - 2 ; case 0 + .short _02234D3A - _02234D06 - 2 ; case 1 + .short _02234D52 - _02234D06 - 2 ; case 2 + .short _02234D62 - _02234D06 - 2 ; case 3 + .short _02234D72 - _02234D06 - 2 ; case 4 + .short _02234D8E - _02234D06 - 2 ; case 5 + .short _02234DA2 - _02234D06 - 2 ; case 6 + .short _02234DBE - _02234D06 - 2 ; case 7 + .short _02234DEA - _02234D06 - 2 ; case 8 + .short _02234E10 - _02234D06 - 2 ; case 9 +_02234D1A: + bl MOD83_02234E6C + ldr r0, [r5, #0x10] + bl FUN_02022528 + add r5, r0, #0 + bl MOD83_02237448 + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0202BF90 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234D3A: + bl OS_GetTick + mov r2, #0x78 + mov r3, #0 + bl _ull_mod + add r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234D52: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _02234E34 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234D62: + ldr r0, [r5, #0x10] + mov r1, #2 + bl FUN_02022840 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234D72: + ldr r0, [r5, #0x10] + bl FUN_02022854 + cmp r0, #3 + bne _02234D82 + add sp, #0x10 + mov r0, #0xc + pop {r3, r4, r5, pc} +_02234D82: + cmp r0, #1 + bne _02234E34 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234D8E: + mov r0, #0 + add r1, r0, #0 + add r2, sp, #0 + mov r3, #0x10 + bl CTRDG_ReadAgbFlash + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234DA2: + bl MOD83_0223736C + cmp r0, #0 + bne _02234DB6 + mov r0, #1 + bl FUN_02016454 + add sp, #0x10 + mov r0, #0xc + pop {r3, r4, r5, pc} +_02234DB6: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234DBE: + bl MOD83_022373F4 + cmp r0, #9 + beq _02234E34 + bl MOD83_022373F4 + cmp r0, #0xb + bne _02234DD6 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234DD6: + bl MOD83_022373B4 + cmp r0, #8 + bne _02234E34 + mov r0, #1 + bl FUN_02016454 + add sp, #0x10 + mov r0, #0xc + pop {r3, r4, r5, pc} +_02234DEA: + ldr r0, [r5, #0x10] + bl FUN_02022854 + cmp r0, #3 + bne _02234DFA + add sp, #0x10 + mov r0, #0xc + pop {r3, r4, r5, pc} +_02234DFA: + cmp r0, #2 + bne _02234DEA + bl MOD83_022373B4 + mov r0, #1 + bl FUN_02016444 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02234E34 +_02234E10: + bl MOD83_022373B4 + cmp r0, #8 + bne _02234E24 + mov r0, #1 + bl FUN_02016454 + add sp, #0x10 + mov r0, #0xc + pop {r3, r4, r5, pc} +_02234E24: + cmp r0, #0 + bne _02234E34 + mov r0, #1 + bl FUN_02016454 + add sp, #0x10 + mov r0, #0xb + pop {r3, r4, r5, pc} +_02234E34: + mov r0, #0xa + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02234E3C: .word 0x0000E890 + thumb_func_end MOD83_02234CE8 + + thumb_func_start MOD83_02234E40 +MOD83_02234E40: ; 0x02234E40 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_02022528 + add r4, r0, #0 + bl MOD83_02237448 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0202BF90 + mov r0, #4 + bl FUN_020166A8 + ldr r0, [r5, #0x10] + bl FUN_02022720 + mov r0, #4 + bl FUN_020166B8 + pop {r3, r4, r5, pc} + thumb_func_end MOD83_02234E40 + + thumb_func_start MOD83_02234E6C +MOD83_02234E6C: ; 0x02234E6C + push {r4, r5, r6, r7, lr} + sub sp, #0xf4 + add r7, r0, #0 + ldr r0, [r7, #0x10] + bl FUN_02022528 + str r0, [sp] + add r0, sp, #8 + bl FUN_020690E4 + add r6, r0, #0 + mov r4, #0 + add r5, r7, #0 +_02234E86: + ldr r0, _02234F04 ; =0x0000E880 + mov r1, #0x3d + lsl r1, r1, #4 + ldr r0, [r7, r0] + ldr r2, [r5, r1] + mov r1, #0x96 + lsl r1, r1, #4 + add r0, r0, #4 + mul r1, r2 + add r0, r0, r1 + mov r1, #0xf3 + lsl r1, r1, #2 + ldr r2, [r5, r1] + mov r1, #0x50 + mul r1, r2 + add r0, r0, r1 + add r1, r6, #0 + bl MOD83_02237F6C + ldr r0, [sp] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0202BF7C + add r4, r4, #1 + add r5, #0xc + cmp r4, #6 + blt _02234E86 + mov r5, #0 + add r0, sp, #4 + strh r5, [r0] + add r4, r7, #0 + sub r6, r5, #1 +_02234EC8: + mov r0, #0xf3 + lsl r0, r0, #2 + ldr r2, [r4, r0] + add r0, r0, #4 + ldr r1, [r4, r0] + cmp r2, r6 + beq _02234EF6 + cmp r1, #0xe + beq _02234EF6 + ldr r0, _02234F04 ; =0x0000E880 + mov r3, #0x96 + ldr r0, [r7, r0] + lsl r3, r3, #4 + mul r3, r1 + add r0, r0, #4 + mov r1, #0x50 + mul r1, r2 + add r0, r0, r3 + add r0, r0, r1 + mov r1, #0xb + add r2, sp, #4 + bl MOD83_02237D90 +_02234EF6: + add r5, r5, #1 + add r4, #0xc + cmp r5, #6 + blt _02234EC8 + add sp, #0xf4 + pop {r4, r5, r6, r7, pc} + nop +_02234F04: .word 0x0000E880 + thumb_func_end MOD83_02234E6C + + thumb_func_start MOD83_02234F08 +MOD83_02234F08: ; 0x02234F08 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + tst r2, r0 + beq _02234F26 + mov r2, #0 + bl FUN_02002E14 + ldr r1, [r4, #0x10] + lsl r1, r1, #3 + sub r1, r1, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + pop {r4, pc} +_02234F26: + ldr r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02234F08 + + thumb_func_start MOD83_02234F2C +MOD83_02234F2C: ; 0x02234F2C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r1, #0 + ldr r6, [r5, #0x44] + add r4, r2, #0 + cmp r6, #0 + bne _02234F3C + mov r6, #0xff +_02234F3C: + ldr r1, [r5] + ldr r2, [r1] + cmp r2, #0 + bne _02234F7A + ldr r2, [r5, #0xc] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + str r2, [sp] + ldr r2, [r5, #0x10] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldr r2, [r5, #0x14] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #8] + mov r2, #0xf + str r2, [sp, #0xc] + ldr r2, [r5, #0x20] + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + str r2, [sp, #0x10] + ldr r2, [r5, #0x24] + ldr r3, [r5, #8] + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r0, #0x20] + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 +_02234F7A: + mov r0, #2 + tst r0, r4 + bne _02234F8C + ldr r1, [r5, #0x30] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02019620 +_02234F8C: + mov r0, #0 + ldr r1, [r5, #0x34] + mvn r0, r0 + cmp r1, r0 + beq _02235004 + ldr r2, _022350B4 ; =0x00000193 + mov r0, #1 + mov r1, #0x1a + mov r3, #0x4e + bl FUN_0200A86C + ldr r7, [r5, #0x40] + str r0, [sp, #0x14] + cmp r7, #0 + bne _02234FB2 + mov r0, #0x4e + bl FUN_0200AA80 + add r7, r0, #0 +_02234FB2: + ldr r1, [sp, #0x14] + ldr r2, [r5, #0x34] + add r0, r7, #0 + mov r3, #0x4e + bl FUN_0200A9C4 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r4, #0 + bl MOD83_02234F08 + add r3, r0, #0 + ldr r0, [r5, #0x1c] + ldr r2, [sp, #0x18] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [r5, #0x2c] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r5] + ldr r1, [r5, #0x28] + bl FUN_0201BDE0 + str r0, [r5, #0x48] + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [r5, #0x40] + cmp r0, #0 + bne _02234FF8 + add r0, r7, #0 + bl FUN_0200AB18 +_02234FF8: + ldr r0, [sp, #0x14] + bl FUN_0200A8B8 + mov r0, #0 + mvn r0, r0 + str r0, [r5, #0x34] +_02235004: + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _0223504C + mov r0, #0x40 + mov r1, #0x4e + bl FUN_020219F4 + ldr r1, [r5, #0x38] + add r7, r0, #0 + mov r2, #0x40 + bl FUN_02021E8C + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD83_02234F08 + add r3, r0, #0 + ldr r0, [r5, #0x1c] + add r2, r7, #0 + str r0, [sp] + str r6, [sp, #4] + ldr r0, [r5, #0x2c] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r5] + ldr r1, [r5, #0x28] + bl FUN_0201BDE0 + str r0, [r5, #0x48] + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #0 + str r0, [r5, #0x38] +_0223504C: + ldr r1, [r5, #0x3c] + cmp r1, #0 + beq _0223507A + add r0, r5, #0 + add r2, r4, #0 + bl MOD83_02234F08 + add r3, r0, #0 + ldr r0, [r5, #0x1c] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [r5, #0x2c] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r5] + ldr r1, [r5, #0x28] + ldr r2, [r5, #0x3c] + bl FUN_0201BDE0 + str r0, [r5, #0x48] + mov r0, #0 + str r0, [r5, #0x3c] +_0223507A: + mov r0, #4 + tst r0, r4 + bne _02235086 + ldr r0, [r5] + bl FUN_020191D0 +_02235086: + mov r0, #8 + tst r0, r4 + beq _022350AE + mov r0, #0x10 + tst r0, r4 + ldr r0, [r5] + beq _022350A2 + ldr r2, _022350B8 ; =0x000003D2 + mov r1, #0 + mov r3, #0xd + bl FUN_0200D0BC + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_022350A2: + mov r2, #0x3f + mov r1, #0 + lsl r2, r2, #4 + mov r3, #0xe + bl FUN_0200CCA4 +_022350AE: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_022350B4: .word 0x00000193 +_022350B8: .word 0x000003D2 + thumb_func_end MOD83_02234F2C + + thumb_func_start MOD83_022350BC +MOD83_022350BC: ; 0x022350BC + push {r4, lr} + sub sp, #0x10 + ldr r4, _022350E8 ; =0x0223A50C + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x4e + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_022350E8: .word 0x0223A50C + thumb_func_end MOD83_022350BC + + thumb_func_start MOD83_022350EC +MOD83_022350EC: ; 0x022350EC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7e + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x4e + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r6, #0 + mov r0, #0x50 + add r1, #0x2c + mov r2, #0x4e + bl FUN_02008C9C + str r0, [r6, #0x28] + add r0, r6, #0 + mov r2, #1 + add r0, #0x2c + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r7, #0x55 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02235132: + mov r0, #3 + add r1, r4, #0 + mov r2, #0x4e + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02235132 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #0x4e + str r0, [sp, #8] + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #0x74 + mov r2, #0x1a + bl FUN_02008F34 + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r6, r1] + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x4e + sub r1, #0x14 + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x74 + mov r2, #0x17 + bl FUN_02008FEC + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r6, r1] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4e + sub r1, #0x14 + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x74 + mov r2, #0x19 + mov r3, #1 + bl FUN_020090AC + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r6, r1] + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4e + sub r1, #0x14 + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x74 + mov r2, #0x18 + mov r3, #1 + bl FUN_020090AC + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009A50 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009CF0 + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0 + mov r2, #1 + str r0, [sp] + mov r0, #0x4e + add r3, r2, #0 + str r0, [sp, #4] + mov r0, #0x13 + add r3, #0xff + bl FUN_02006930 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD83_022350EC + + thumb_func_start MOD83_022351F8 +MOD83_022351F8: ; 0x022351F8 + push {lr} + sub sp, #0x2c + mov r1, #0 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + mov r3, #0x55 + str r1, [sp, #0x10] + lsl r3, r3, #2 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x30 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x2c + pop {pc} + thumb_func_end MOD83_022351F8 + + thumb_func_start MOD83_02235244 +MOD83_02235244: ; 0x02235244 + ldr r2, [r1, #0x28] + str r2, [r0] + mov r2, #0x61 + lsl r2, r2, #2 + add r1, r1, r2 + str r1, [r0, #4] + mov r2, #0 + mov r1, #1 + str r2, [r0, #0x10] + lsl r1, r1, #0xc + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + strh r2, [r0, #0x20] + mov r1, #0x14 + str r1, [r0, #0x24] + str r3, [r0, #0x28] + mov r1, #0x4e + str r1, [r0, #0x2c] + bx lr + thumb_func_end MOD83_02235244 + + thumb_func_start MOD83_0223526C +MOD83_0223526C: ; 0x0223526C + ldr r3, _02235288 ; =0x0000E880 + ldr r0, [r0, r3] + add r3, r0, #4 + mov r0, #0x96 + lsl r0, r0, #4 + mul r0, r1 + add r1, r3, r0 + mov r0, #0x50 + mul r0, r2 + add r0, r1, r0 + ldr r3, _0223528C ; =MOD83_02237A10 + mov r1, #0xb + mov r2, #0 + bx r3 + .align 2, 0 +_02235288: .word 0x0000E880 +_0223528C: .word MOD83_02237A10 + thumb_func_end MOD83_0223526C + + thumb_func_start MOD83_02235290 +MOD83_02235290: ; 0x02235290 + ldr r3, _022352AC ; =0x0000E880 + ldr r0, [r0, r3] + add r3, r0, #4 + mov r0, #0x96 + lsl r0, r0, #4 + mul r0, r1 + add r1, r3, r0 + mov r0, #0x50 + mul r0, r2 + add r0, r1, r0 + ldr r3, _022352B0 ; =MOD83_02237A10 + mov r1, #0x2d + mov r2, #0 + bx r3 + .align 2, 0 +_022352AC: .word 0x0000E880 +_022352B0: .word MOD83_02237A10 + thumb_func_end MOD83_02235290 + + thumb_func_start MOD83_022352B4 +MOD83_022352B4: ; 0x022352B4 + ldr r3, _022352D0 ; =0x0000E880 + ldr r0, [r0, r3] + add r3, r0, #4 + mov r0, #0x96 + lsl r0, r0, #4 + mul r0, r1 + add r1, r3, r0 + mov r0, #0x50 + mul r0, r2 + add r0, r1, r0 + mov r1, #0 + ldr r3, _022352D4 ; =MOD83_02237A10 + add r2, r1, #0 + bx r3 + .align 2, 0 +_022352D0: .word 0x0000E880 +_022352D4: .word MOD83_02237A10 + thumb_func_end MOD83_022352B4 + + thumb_func_start MOD83_022352D8 +MOD83_022352D8: ; 0x022352D8 + push {r4, r5} + ldr r5, [sp, #8] + lsr r4, r5, #0x1f + add r4, r5, r4 + asr r4, r4, #1 + sub r5, r2, r4 + strb r5, [r0] + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r5, r5, #1 + sub r3, r1, r5 + strb r3, [r0, #2] + add r2, r2, r4 + strb r2, [r0, #1] + add r1, r1, r5 + strb r1, [r0, #3] + pop {r4, r5} + bx lr + thumb_func_end MOD83_022352D8 + + thumb_func_start MOD83_022352FC +MOD83_022352FC: ; 0x022352FC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #1 + add r5, r0, #0 + add r0, r3, #0 + lsl r1, r1, #0xc + add r7, r2, #0 + bl FUN_020169D8 + add r4, r0, #0 + beq _02235330 + add r1, r5, #0 + add r2, r6, #0 + bl LoadFromNARC + add r0, r4, #0 + add r1, r7, #0 + bl FUN_020B0030 + cmp r0, #0 + bne _02235330 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02235330: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_022352FC + + thumb_func_start MOD83_02235334 +MOD83_02235334: ; 0x02235334 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r0, r3, #0 + add r1, r6, #0 + bl FUN_02006774 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020B0030 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD83_02235334 + + thumb_func_start MOD83_02235350 +MOD83_02235350: ; 0x02235350 + push {r4, lr} + add r3, r1, #0 + mov r4, #0 + cmp r0, #0xc9 + beq _02235362 + ldr r1, _022353BC ; =0x00000182 + cmp r0, r1 + beq _0223538C + b _022353B6 +_02235362: + mov r4, #3 + lsl r0, r4, #8 + add r2, r3, #0 + and r0, r3 + lsr r1, r0, #6 + lsl r0, r4, #0x18 + and r2, r4 + and r0, r3 + lsl r4, r4, #0x10 + and r3, r4 + lsr r0, r0, #0x12 + lsr r3, r3, #0xc + orr r0, r3 + orr r0, r1 + orr r0, r2 + mov r1, #0x1c + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r4, r0, #0x18 + b _022353B6 +_0223538C: + cmp r2, #5 + bhi _022353A8 + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223539C: ; jump table + .short _022353A8 - _0223539C - 2 ; case 0 + .short _022353A8 - _0223539C - 2 ; case 1 + .short _022353A8 - _0223539C - 2 ; case 2 + .short _022353B4 - _0223539C - 2 ; case 3 + .short _022353AC - _0223539C - 2 ; case 4 + .short _022353B0 - _0223539C - 2 ; case 5 +_022353A8: + mov r4, #0 + b _022353B6 +_022353AC: + mov r4, #1 + b _022353B6 +_022353B0: + mov r4, #2 + b _022353B6 +_022353B4: + mov r4, #3 +_022353B6: + add r0, r4, #0 + pop {r4, pc} + nop +_022353BC: .word 0x00000182 + thumb_func_end MOD83_02235350 + + thumb_func_start MOD83_022353C0 +MOD83_022353C0: ; 0x022353C0 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r7, r3, #0 + add r5, r1, #0 + bl MOD83_02237EBC + add r1, r6, #0 + add r2, r7, #0 + add r4, r0, #0 + bl MOD83_02235350 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + add r2, r7, #0 + bl FUN_0206B6D4 + add r1, r0, #0 + mov r0, #0x13 + add r2, sp, #0 + mov r3, #0x4e + bl MOD83_022352FC + add r6, r0, #0 + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r1, [sp, #0x18] + ldr r0, [sp] + lsl r1, r1, #4 + add r1, #0x64 + mov r2, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #5 + lsl r2, r2, #8 + bl GX_LoadOBJ + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [sp, #0x1c] + add r1, #8 + bl FUN_02020248 + add r0, r6, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_022353C0 + + thumb_func_start MOD83_0223542C +MOD83_0223542C: ; 0x0223542C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + ldr r1, _022354A8 ; =0x0223BB14 + str r2, [sp] + ldr r2, [r1] + mov r1, #0x83 + add r5, r3, #0 + lsl r1, r1, #2 + mul r1, r5 + add r4, r2, r1 + ldr r1, [sp, #0x20] + add r6, r0, #0 + cmp r1, #0 + beq _022354A0 + bl MOD83_02234C74 + cmp r0, #0 + bne _0223545C + add r0, r6, #0 + bl MOD83_02237EBC + add r6, r0, #0 + b _0223545E +_0223545C: + mov r6, #0 +_0223545E: + ldr r2, [sp] + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0206B6D4 + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + add r1, sp, #4 + bl MOD83_02235334 + ldr r0, [sp, #4] + add r1, r4, #0 + mov r2, #2 + ldr r0, [r0, #0x14] + add r1, #0xc + lsl r2, r2, #8 + bl MIi_CpuCopyFast + lsl r0, r5, #4 + add r0, #0x64 + lsl r0, r0, #5 + str r0, [r4] + ldr r0, [sp, #0x20] + ldr r1, [sp] + str r0, [r4, #8] + add r0, r6, #0 + add r2, r7, #0 + bl FUN_0206B7BC + add r0, #8 + add sp, #8 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_022354A0: + mov r0, #0 + str r0, [r4, #8] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022354A8: .word 0x0223BB14 + thumb_func_end MOD83_0223542C + + thumb_func_start MOD83_022354AC +MOD83_022354AC: ; 0x022354AC + push {r3, r4, r5, r6, r7, lr} + ldr r0, _022354EC ; =0x0223BB14 + mov r6, #2 + lsl r6, r6, #8 + add r7, r6, #0 + ldr r5, [r0] + mov r4, #0 + add r7, #0xc +_022354BC: + ldr r0, [r5, #8] + cmp r0, #0 + beq _022354E0 + add r0, r5, #0 + add r0, #0xc + add r1, r6, #0 + bl DC_FlushRange + add r0, r5, #0 + ldr r1, [r5] + add r0, #0xc + add r2, r6, #0 + bl GX_LoadOBJ + ldr r0, [r5, #8] + ldr r1, [r5, #4] + bl FUN_02020248 +_022354E0: + add r4, r4, #1 + add r5, r5, r7 + cmp r4, #0x1e + blt _022354BC + pop {r3, r4, r5, r6, r7, pc} + nop +_022354EC: .word 0x0223BB14 + thumb_func_end MOD83_022354AC + + thumb_func_start MOD83_022354F0 +MOD83_022354F0: ; 0x022354F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0x13 + mov r1, #0x4e + bl FUN_02006670 + mov r1, #1 + str r0, [sp, #0xc] + mov r0, #0x4e + lsl r1, r1, #0xc + bl FUN_020169D8 + mov r6, #0 + str r0, [sp, #0x10] + add r7, r6, #0 + add r4, r5, #0 +_02235512: + ldr r0, _02235634 ; =0x0000E880 + ldr r1, _02235638 ; =0x0000E884 + ldr r0, [r5, r0] + ldr r2, [r5, r1] + mov r1, #0x96 + lsl r1, r1, #4 + mul r1, r2 + add r0, r0, #4 + add r0, r0, r1 + add r0, r0, r7 + mov r1, #5 + mov r2, #0 + bl MOD83_02237A10 + cmp r0, #0 + beq _022355D2 + ldr r1, _02235638 ; =0x0000E884 + add r0, r5, #0 + ldr r1, [r5, r1] + add r2, r6, #0 + bl MOD83_0223526C + ldr r1, _02235638 ; =0x0000E884 + str r0, [sp, #0x1c] + ldr r1, [r5, r1] + add r0, r5, #0 + add r2, r6, #0 + bl MOD83_02235290 + ldr r1, _02235638 ; =0x0000E884 + str r0, [sp, #0x18] + ldr r1, [r5, r1] + add r0, r5, #0 + add r2, r6, #0 + bl MOD83_022352B4 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + bl MOD83_02237EBC + ldr r2, _0223563C ; =0x021C4918 + ldr r1, [sp, #0x20] + ldrb r2, [r2, #6] + bl MOD83_02235350 + str r0, [sp, #0x14] + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x14] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r3, r6, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + bl MOD83_0223542C + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _02235634 ; =0x0000E880 + ldr r1, _02235638 ; =0x0000E884 + ldr r0, [r5, r0] + ldr r2, [r5, r1] + mov r1, #0x96 + lsl r1, r1, #4 + mul r1, r2 + add r0, r0, #4 + add r0, r0, r1 + add r0, r0, r7 + mov r1, #0xc + mov r2, #0 + bl MOD83_02237A10 + cmp r0, #0 + beq _022355C4 + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + b _02235602 +_022355C4: + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + b _02235602 +_022355D2: + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x14] + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r3, r6, #0 + bl MOD83_0223542C + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 +_02235602: + add r6, r6, #1 + add r7, #0x50 + add r4, #0xc + cmp r6, #0x1e + blt _02235512 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + ldr r0, [sp, #0xc] + bl FUN_020066F4 + ldr r1, _02235640 ; =MOD83_022354AC + ldr r0, _02235644 ; =0x00012604 + str r1, [r5, r0] + ldr r1, _02235638 ; =0x0000E884 + add r0, r5, #0 + ldr r1, [r5, r1] + bl MOD83_02235B6C + add r0, r5, #0 + bl MOD83_02235B20 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02235634: .word 0x0000E880 +_02235638: .word 0x0000E884 +_0223563C: .word 0x021C4918 +_02235640: .word MOD83_022354AC +_02235644: .word 0x00012604 + thumb_func_end MOD83_022354F0 + + thumb_func_start MOD83_02235648 +MOD83_02235648: ; 0x02235648 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + mov r2, #0x61 + add r5, r0, #0 + lsl r2, r2, #2 + add r0, sp, #0x14 + add r1, r5, #0 + add r2, r5, r2 + mov r3, #1 + bl MOD83_02235244 + mov r0, #0x28 + str r0, [sp, #8] + mov r0, #0x31 + mov r4, #0 + lsl r0, r0, #4 + str r4, [sp, #0xc] + add r7, r5, r0 +_0223566C: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + mov r6, #0x1c + lsl r0, r0, #0xc + str r0, [sp, #4] +_02235678: + mov r0, #0x1c + str r0, [sp] + ldr r2, [sp, #8] + add r0, r7, #0 + add r1, r6, #0 + mov r3, #0x1c + bl MOD83_022352D8 + lsl r0, r6, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #4] + str r0, [sp, #0x20] + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + bne _022356A6 + add r0, sp, #0x14 + bl FUN_0201FE94 + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r5, r1] +_022356A6: + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x6a + lsl r0, r0, #2 + add r1, r4, #0 + ldr r0, [r5, r0] + add r1, #0xa + bl FUN_02020130 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x6a + lsl r0, r0, #2 + add r1, r4, #0 + ldr r0, [r5, r0] + add r1, #0x64 + bl FUN_02020310 + mov r0, #6 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x1c] + mov r0, #3 + ldr r1, [sp, #0x20] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x20] + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + bne _02235710 + add r0, sp, #0x14 + bl FUN_0201FE94 + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r5, r1] +_02235710: + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x28 + bl FUN_02020130 + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020310 + add r4, r4, #1 + add r7, r7, #4 + add r5, #0xc + cmp r4, #0x1e + beq _02235774 + ldr r0, [sp, #0x10] + add r6, #0x28 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #6 + blt _02235678 + ldr r0, [sp, #8] + add r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #5 + bge _02235774 + b _0223566C +_02235774: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD83_02235648 + + thumb_func_start MOD83_02235778 +MOD83_02235778: ; 0x02235778 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r2, #0 + mov r2, #0x61 + add r6, r0, #0 + lsl r2, r2, #2 + add r5, r1, #0 + add r7, r3, #0 + add r0, sp, #0 + add r1, r6, #0 + add r2, r6, r2 + mov r3, #1 + bl MOD83_02235244 + lsl r0, r5, #0xc + str r0, [sp, #8] + lsl r0, r4, #0xc + str r0, [sp, #0xc] + mov r0, #0xa + str r0, [sp, #0x24] + add r0, sp, #0 + bl FUN_0201FE94 + add r4, r0, #0 + mov r1, #1 + bl FUN_020200BC + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02020130 + add r0, r4, #0 + mov r1, #1 + bl FUN_02020238 + ldr r1, [sp, #0x48] + add r0, r4, #0 + bl FUN_020200A0 + add r0, r4, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_02235778 + + thumb_func_start MOD83_022357CC +MOD83_022357CC: ; 0x022357CC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0xe2 + lsl r0, r0, #2 + add r0, r6, r0 + mov r1, #0xe4 + mov r2, #0xb0 + mov r3, #0x32 + bl MOD83_022352D8 + mov r0, #1 + str r0, [sp] + add r0, r6, #0 + mov r1, #0xe4 + mov r2, #0xb0 + mov r3, #6 + bl MOD83_02235778 + mov r1, #0xe6 + lsl r1, r1, #2 + str r0, [r6, r1] + sub r1, #8 + add r0, r6, r1 + mov r1, #0xb0 + mov r3, #0x20 + add r2, r1, #0 + str r3, [sp] + bl MOD83_022352D8 + mov r0, #1 + mov r1, #0xb0 + str r0, [sp] + add r0, r6, #0 + add r2, r1, #0 + mov r3, #3 + bl MOD83_02235778 + mov r1, #0xea + lsl r1, r1, #2 + str r0, [r6, r1] + sub r1, #0x1c + mov r3, #0x20 + add r0, r6, r1 + mov r1, #0x18 + mov r2, #0xb0 + str r3, [sp] + bl MOD83_022352D8 + mov r0, #1 + str r0, [sp] + add r0, r6, #0 + mov r1, #0x18 + mov r2, #0xb0 + mov r3, #0 + bl MOD83_02235778 + mov r1, #0xee + lsl r1, r1, #2 + str r0, [r6, r1] + mov r7, #0 + mov r0, #0xff + sub r1, #0x24 + strb r0, [r6, r1] + add r4, r7, #0 + add r5, r6, #0 +_02235852: + mov r0, #0 + str r0, [sp] + add r0, r6, #0 + add r1, r4, #0 + mov r2, #0x40 + mov r3, #9 + bl MOD83_02235778 + mov r1, #0xf2 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r1, #0 + mov r0, #0xf3 + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0xe + add r0, r0, #4 + str r1, [r5, r0] + add r7, r7, #1 + add r4, #0x24 + add r5, #0xc + cmp r7, #6 + blt _02235852 + mov r0, #0x41 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_022357CC + + thumb_func_start MOD83_0223588C +MOD83_0223588C: ; 0x0223588C + push {r3, lr} + ldr r3, _022358C0 ; =0x0000E880 + ldr r2, [r0, r3] + add r3, r3, #4 + ldr r3, [r0, r3] + mov r0, #0x96 + lsl r0, r0, #4 + add r2, r2, #4 + mul r0, r3 + add r2, r2, r0 + mov r0, #0x50 + mul r0, r1 + add r0, r2, r0 + mov r1, #0x41 + mov r2, #0 + bl MOD83_02237A10 + mov r1, #0x67 + lsl r1, r1, #2 + cmp r0, r1 + bne _022358BA + mov r0, #1 + pop {r3, pc} +_022358BA: + mov r0, #0 + pop {r3, pc} + nop +_022358C0: .word 0x0000E880 + thumb_func_end MOD83_0223588C + + thumb_func_start MOD83_022358C4 +MOD83_022358C4: ; 0x022358C4 + push {r3, r4, r5, r6, r7, lr} + ldr r3, _02235910 ; =0x0000E880 + mov r5, #0 + ldr r2, [r0, r3] + add r3, r3, #4 + ldr r3, [r0, r3] + mov r0, #0x96 + lsl r0, r0, #4 + add r2, r2, #4 + mul r0, r3 + add r4, r2, r0 + mov r0, #0x50 + add r6, r1, #0 + mul r6, r0 + add r7, r5, #0 +_022358E2: + add r1, r5, #0 + add r0, r4, r6 + add r1, #0xd + add r2, r7, #0 + bl MOD83_02237A10 + ldr r3, _02235914 ; =0x0223B2B8 + add r2, r0, #0 + mov r1, #0 +_022358F4: + ldr r0, [r3] + cmp r2, r0 + bne _022358FE + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022358FE: + add r1, r1, #1 + add r3, r3, #4 + cmp r1, #8 + blo _022358F4 + add r5, r5, #1 + cmp r5, #4 + blt _022358E2 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235910: .word 0x0000E880 +_02235914: .word 0x0223B2B8 + thumb_func_end MOD83_022358C4 + + thumb_func_start MOD83_02235918 +MOD83_02235918: ; 0x02235918 + push {r3, lr} + ldr r3, _0223595C ; =0x0000E880 + ldr r2, [r0, r3] + add r3, r3, #4 + ldr r3, [r0, r3] + mov r0, #0x96 + lsl r0, r0, #4 + add r2, r2, #4 + mul r0, r3 + add r2, r2, r0 + mov r0, #0x50 + mul r0, r1 + add r0, r2, r0 + mov r1, #0xc + mov r2, #0 + bl MOD83_02237A10 + ldr r1, _02235960 ; =0x0223B2C8 + ldrh r1, [r1, #0x30] + cmp r1, #0 + beq _02235956 + ldr r2, _02235964 ; =0x0223B2F8 +_02235944: + ldrh r1, [r2] + cmp r0, r1 + bne _0223594E + mov r0, #1 + pop {r3, pc} +_0223594E: + add r2, r2, #2 + ldrh r1, [r2] + cmp r1, #0 + bne _02235944 +_02235956: + mov r0, #0 + pop {r3, pc} + nop +_0223595C: .word 0x0000E880 +_02235960: .word 0x0223B2C8 +_02235964: .word 0x0223B2F8 + thumb_func_end MOD83_02235918 + + thumb_func_start MOD83_02235968 +MOD83_02235968: ; 0x02235968 + push {r3, lr} + ldr r3, _02235990 ; =0x0000E880 + ldr r2, [r0, r3] + add r3, r3, #4 + ldr r3, [r0, r3] + mov r0, #0x96 + lsl r0, r0, #4 + add r2, r2, #4 + mul r0, r3 + add r2, r2, r0 + mov r0, #0x50 + mul r0, r1 + add r0, r2, r0 + mov r1, #0xb + mov r2, #0 + bl MOD83_02237A10 + bl MOD83_02234C74 + pop {r3, pc} + .align 2, 0 +_02235990: .word 0x0000E880 + thumb_func_end MOD83_02235968 + + thumb_func_start MOD83_02235994 +MOD83_02235994: ; 0x02235994 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x6a + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp] + add r6, r1, #0 + mov r0, #0xc + mul r0, r6 + ldr r1, [sp] + str r0, [sp, #4] + ldr r0, [r1, r0] + cmp r0, #0 + beq _022359C0 + bl FUN_02020128 + cmp r0, #0 + bne _022359C0 + add sp, #0x14 + mov r0, #3 + pop {r4, r5, r6, r7, pc} +_022359C0: + mov r5, #0 + mov r7, #0x3d + mvn r5, r5 + mov r2, #0 + add r3, r4, #0 + lsl r7, r7, #4 + b _022359E8 +_022359CE: + ldr r0, _02235B1C ; =0x0000E884 + ldr r1, [r4, r0] + ldr r0, [r3, r7] + cmp r1, r0 + bne _022359E4 + mov r0, #0xf3 + lsl r0, r0, #2 + ldr r0, [r3, r0] + cmp r6, r0 + bne _022359E4 + add r5, r2, #0 +_022359E4: + add r3, #0xc + add r2, r2, #1 +_022359E8: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _022359F4 + cmp r2, #6 + blt _022359CE +_022359F4: + add r0, r4, #0 + add r1, r6, #0 + bl MOD83_0223588C + cmp r0, #1 + bne _02235A06 + add sp, #0x14 + mov r0, #4 + pop {r4, r5, r6, r7, pc} +_02235A06: + add r0, r4, #0 + add r1, r6, #0 + bl MOD83_022358C4 + cmp r0, #1 + bne _02235A18 + add sp, #0x14 + mov r0, #5 + pop {r4, r5, r6, r7, pc} +_02235A18: + add r0, r4, #0 + add r1, r6, #0 + bl MOD83_02235918 + cmp r0, #1 + bne _02235A2A + add sp, #0x14 + mov r0, #6 + pop {r4, r5, r6, r7, pc} +_02235A2A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD83_02235968 + cmp r0, #1 + bne _02235A3C + add sp, #0x14 + mov r0, #7 + pop {r4, r5, r6, r7, pc} +_02235A3C: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _02235AE4 + mov r0, #0x41 + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #6 + bne _02235A54 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02235A54: + mov r5, #0 + mov r0, #0xf3 + add r3, r4, #0 + lsl r0, r0, #2 + sub r1, r5, #1 +_02235A5E: + ldr r2, [r3, r0] + cmp r2, r1 + bne _02235ADA + ldr r1, [sp] + ldr r0, [sp, #4] + ldr r0, [r1, r0] + bl FUN_0202011C + add r1, r0, #0 + mov r0, #0xc + add r7, r5, #0 + mul r7, r0 + mov r0, #0xf2 + lsl r0, r0, #2 + add r5, r4, r0 + ldr r0, [r5, r7] + bl FUN_02020044 + ldr r0, [r5, r7] + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #8 + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + ldr r0, [sp, #8] + lsl r1, r1, #0xe + sub r0, r0, r1 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + lsr r1, r1, #1 + sub r0, r0, r1 + str r0, [sp, #0xc] + ldr r0, [r5, r7] + mov r1, ip + bl FUN_02020044 + ldr r0, [r5, r7] + mov r1, #1 + bl FUN_020200A0 + mov r1, #0xf3 + add r3, r4, r7 + lsl r1, r1, #2 + ldr r0, _02235B1C ; =0x0000E884 + str r6, [r3, r1] + ldr r2, [r4, r0] + add r0, r1, #4 + str r2, [r3, r0] + add r0, r1, #0 + add r0, #0x44 + ldr r0, [r4, r0] + add r1, #0x44 + add r0, r0, #1 + str r0, [r4, r1] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02235ADA: + add r5, r5, #1 + add r3, #0xc + cmp r5, #6 + blt _02235A5E + b _02235B16 +_02235AE4: + mov r0, #0xc + add r6, r5, #0 + mul r6, r0 + mov r0, #0xf2 + add r1, r4, r6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + mov r2, #0 + mov r1, #0xf3 + mvn r2, r2 + add r0, r4, r6 + lsl r1, r1, #2 + str r2, [r0, r1] + add r0, r1, #0 + add r0, #0x44 + ldr r0, [r4, r0] + add r1, #0x44 + sub r0, r0, #1 + str r0, [r4, r1] + add sp, #0x14 + mov r0, #2 + pop {r4, r5, r6, r7, pc} +_02235B16: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02235B1C: .word 0x0000E884 + thumb_func_end MOD83_02235994 + + thumb_func_start MOD83_02235B20 +MOD83_02235B20: ; 0x02235B20 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 + sub r7, r4, #1 +_02235B2A: + mov r0, #0xf3 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r7 + beq _02235B50 + ldr r0, _02235B68 ; =0x0000E884 + ldr r1, [r6, r0] + mov r0, #0x3d + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r1, r0 + bne _02235B50 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + b _02235B5C +_02235B50: + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 +_02235B5C: + add r4, r4, #1 + add r5, #0xc + cmp r4, #6 + blt _02235B2A + pop {r3, r4, r5, r6, r7, pc} + nop +_02235B68: .word 0x0000E884 + thumb_func_end MOD83_02235B20 + + thumb_func_start MOD83_02235B6C +MOD83_02235B6C: ; 0x02235B6C + push {r3, r4, r5, lr} + sub sp, #0x60 + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + add r3, sp, #0x14 + add r1, r0, #0 + mov r2, #4 +_02235B7C: + stmia r3!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02235B7C + stmia r3!, {r0, r1} + str r0, [r3] + ldr r0, _02235BE4 ; =0x00000478 + add r0, r5, r0 + str r0, [sp, #0x14] + mov r0, #6 + str r0, [sp, #0x1c] + mov r0, #0x15 + str r0, [sp, #0x20] + mov r0, #0xd + str r0, [sp, #0x24] + mov r0, #2 + str r0, [sp, #0x28] + sub r0, r0, #3 + str r0, [sp, #0x48] + mov r0, #0 + str r0, [sp, #0x2c] + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x38] + str r0, [sp, #0x3c] + ldr r0, _02235BE8 ; =0x00010200 + str r0, [sp, #0x40] + mov r0, #0xa0 + str r0, [sp, #0x34] + bl MOD83_02236EA8 + add r3, r0, #0 + ldr r0, _02235BEC ; =0x0000E880 + mov r2, #9 + ldr r1, [r5, r0] + ldr r0, _02235BF0 ; =0x00008344 + add r1, r1, r0 + lsl r0, r4, #3 + add r0, r4, r0 + add r0, r1, r0 + add r1, sp, #0 + bl FUN_02015D88 + add r0, sp, #0 + str r0, [sp, #0x4c] + add r0, r5, #0 + add r1, sp, #0x14 + mov r2, #1 + bl MOD83_02234F2C + add sp, #0x60 + pop {r3, r4, r5, pc} + .align 2, 0 +_02235BE4: .word 0x00000478 +_02235BE8: .word 0x00010200 +_02235BEC: .word 0x0000E880 +_02235BF0: .word 0x00008344 + thumb_func_end MOD83_02235B6C + + thumb_func_start MOD83_02235BF4 +MOD83_02235BF4: ; 0x02235BF4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x20] + add r6, r1, #0 + mov r1, #2 + bl FUN_0201886C + add r4, r0, #0 + cmp r6, #0 + beq _02235C18 + add r0, r6, #0 + mov r1, #8 + mov r2, #0 + bl MOD83_02237A10 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _02235C1A +_02235C18: + mov r1, #0 +_02235C1A: + mov r2, #0 + mov r0, #1 +_02235C1E: + add r3, r1, #0 + tst r3, r0 + beq _02235C2A + add r6, r2, #0 + add r6, #0x80 + b _02235C2E +_02235C2A: + add r6, r2, #0 + add r6, #0x60 +_02235C2E: + add r3, r4, #0 + add r3, #0xd6 + lsl r1, r1, #0x17 + add r2, r2, #1 + strh r6, [r3] + lsr r1, r1, #0x18 + add r4, r4, #2 + cmp r2, #4 + blt _02235C1E + ldr r0, [r5, #0x20] + mov r1, #2 + bl FUN_02017CD0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD83_02235BF4 + + thumb_func_start MOD83_02235C4C +MOD83_02235C4C: ; 0x02235C4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + add r3, sp, #0x2c + add r1, r0, #0 + mov r2, #4 +_02235C5C: + stmia r3!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02235C5C + stmia r3!, {r0, r1} + str r0, [r3] + mov r1, #0x20 + str r1, [sp, #0x3c] + mov r1, #1 + ldr r0, _02235DF8 ; =0x00000488 + str r1, [sp, #0x50] + str r1, [sp, #0x54] + mov r1, #0xbc + str r1, [sp, #0x4c] + ldr r1, _02235DFC ; =0x000F0200 + add r0, r5, r0 + str r1, [sp, #0x58] + mov r1, #0x2c + str r0, [sp, #0x2c] + mov r0, #0 + str r1, [sp, #0x60] + mov r1, #0x90 + mov r2, #4 + str r1, [sp, #0x44] + str r0, [sp, #0x34] + str r0, [sp, #0x38] + str r0, [sp, #0x64] + str r0, [sp, #0x48] + add r0, r5, #0 + add r1, sp, #0x2c + str r2, [sp, #0x40] + bl MOD83_02234F2C + mov r0, #0x2b + str r0, [sp, #0x60] + mov r0, #0x50 + str r0, [sp, #0x44] + mov r0, #8 + str r0, [sp, #0x48] + add r0, r5, #0 + add r1, sp, #0x2c + mov r2, #6 + bl MOD83_02234F2C + add r0, r5, #0 + add r1, r4, #0 + bl MOD83_02235BF4 + cmp r4, #0 + bne _02235CCA + ldr r0, [sp, #0x2c] + bl FUN_020191D0 + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} +_02235CCA: + add r2, sp, #0x1c + add r0, r4, #0 + mov r1, #2 + add r2, #2 + bl MOD83_02237A10 + add r0, r4, #0 + mov r1, #3 + mov r2, #0 + bl MOD83_02237A10 + add r3, r0, #0 + add r0, sp, #0x1c + add r0, #2 + add r1, sp, #8 + mov r2, #0xb + bl FUN_02015D88 + add r0, sp, #8 + str r0, [sp, #0x64] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x60] + mov r0, #8 + str r0, [sp, #0x44] + mov r0, #0 + str r0, [sp, #0x48] + add r0, r5, #0 + add r1, sp, #0x2c + mov r2, #6 + bl MOD83_02234F2C + mov r0, #0x40 + mov r1, #0x4e + bl FUN_020219F4 + add r6, r0, #0 + ldr r2, _02235E00 ; =0x0000016A + mov r0, #1 + mov r1, #0x1a + mov r3, #0x4e + bl FUN_0200A86C + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0xb + mov r2, #0 + bl MOD83_02237A10 + bl MOD83_02237EBC + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, r7, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x60] + mov r0, #0x10 + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, r5, #0 + add r1, sp, #0x2c + mov r2, #6 + str r6, [sp, #0x68] + bl MOD83_02234F2C + add r0, r7, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + mov r1, #0xc + mov r2, #0 + bl MOD83_02237A10 + cmp r0, #0 + beq _02235DAC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206E6D8 + add r7, r0, #0 + mov r0, #0x40 + mov r1, #0x4e + bl FUN_020219F4 + lsl r1, r7, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x4e + add r6, r0, #0 + bl FUN_0206E768 + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x60] + mov r0, #0x98 + str r0, [sp, #0x44] + mov r0, #0x10 + str r0, [sp, #0x48] + add r0, r5, #0 + add r1, sp, #0x2c + mov r2, #6 + str r6, [sp, #0x68] + bl MOD83_02234F2C + add r0, r6, #0 + bl FUN_02021A20 +_02235DAC: + add r0, r4, #0 + bl MOD83_02237EDC + add r6, r0, #0 + mov r0, #0xa + mov r1, #0x4e + bl FUN_020219F4 + mov r3, #1 + add r1, r6, #0 + mov r2, #3 + add r4, r0, #0 + str r3, [sp] + bl FUN_02021B04 + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x60] + mov r0, #0x64 + str r0, [sp, #0x44] + mov r0, #8 + str r0, [sp, #0x48] + add r0, r5, #0 + add r1, sp, #0x2c + mov r2, #2 + str r4, [sp, #0x68] + bl MOD83_02234F2C + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005578 + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235DF8: .word 0x00000488 +_02235DFC: .word 0x000F0200 +_02235E00: .word 0x0000016A + thumb_func_end MOD83_02235C4C + + thumb_func_start MOD83_02235E04 +MOD83_02235E04: ; 0x02235E04 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4e + str r0, [sp, #8] + add r6, r2, #0 + mov r0, #0 + add r4, r3, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + cmp r4, #0 + beq _02235E2C + mov r0, #0x17 + str r0, [r4] +_02235E2C: + str r6, [r5, #0x24] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD83_02235E04 + + thumb_func_start MOD83_02235E34 +MOD83_02235E34: ; 0x02235E34 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + add r4, r3, #0 + str r0, [sp, #4] + mov r0, #0x4e + add r6, r2, #0 + str r0, [sp, #8] + ldr r3, _02235E64 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + cmp r4, #0 + beq _02235E5C + mov r0, #0x17 + str r0, [r4] +_02235E5C: + str r6, [r5, #0x24] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02235E64: .word 0x00007FFF + thumb_func_end MOD83_02235E34 + + thumb_func_start MOD83_02235E68 +MOD83_02235E68: ; 0x02235E68 + push {r3, r4, r5, lr} + sub sp, #0x80 + ldr r5, _02235F28 ; =0x0223A51C + add r3, sp, #0x70 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _02235F2C ; =0x0223A52C + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _02235F30 ; =0x0223A548 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _02235F34 ; =0x0223A564 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _02235F38 ; =0x0223A580 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + add sp, #0x80 + pop {r3, r4, r5, pc} + nop +_02235F28: .word 0x0223A51C +_02235F2C: .word 0x0223A52C +_02235F30: .word 0x0223A548 +_02235F34: .word 0x0223A564 +_02235F38: .word 0x0223A580 + thumb_func_end MOD83_02235E68 + + thumb_func_start MOD83_02235F3C +MOD83_02235F3C: ; 0x02235F3C + push {r3, r4, r5, lr} + sub sp, #0x38 + ldr r5, _02235FB4 ; =0x0223A59C + add r4, r0, #0 + add r3, sp, #0x10 + mov r2, #5 +_02235F48: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02235F48 + add r0, sp, #0x10 + bl FUN_0201E66C + ldr r0, [r4, #0x20] + bl MOD83_02235E68 + ldr r0, _02235FB8 ; =0x021C4918 + mov r1, #1 + strb r1, [r0, #5] + bl FUN_0201E7A0 + bl FUN_0201BD5C + mov r1, #0x1e + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x4e + bl FUN_02002ED0 + mov r0, #0xc0 + str r0, [sp] + mov r0, #0x4e + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0x13 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x4e + str r0, [sp, #0xc] + ldr r2, [r4, #0x20] + mov r0, #0x74 + mov r1, #0x16 + mov r3, #2 + bl FUN_0200687C + mov r0, #2 + mov r1, #0x4e + bl FUN_02002C50 + add sp, #0x38 + pop {r3, r4, r5, pc} + .align 2, 0 +_02235FB4: .word 0x0223A59C +_02235FB8: .word 0x021C4918 + thumb_func_end MOD83_02235F3C + + thumb_func_start MOD83_02235FBC +MOD83_02235FBC: ; 0x02235FBC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x4e + str r0, [sp, #0xc] + ldr r2, [r4, #0x20] + mov r0, #0x74 + mov r1, #0x14 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r2, #0 + ldr r1, [r4] + ldr r0, _02236008 ; =0x0223B280 + add r3, r2, #0 + ldrb r0, [r0, r1] + mov r1, #2 + str r0, [sp, #8] + ldr r0, [r4, #0x20] + bl FUN_020186B4 + ldr r0, [r4, #0x20] + mov r1, #2 + bl FUN_02017CD0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02236008: .word 0x0223B280 + thumb_func_end MOD83_02235FBC + + thumb_func_start MOD83_0223600C +MOD83_0223600C: ; 0x0223600C + push {r4, lr} + sub sp, #8 + mov r1, #7 + add r4, r0, #0 + mov r0, #0 + lsl r1, r1, #6 + mov r2, #0x4e + bl FUN_02002ED0 + mov r1, #0 + mov r2, #0x3f + str r1, [sp] + mov r0, #0x4e + str r0, [sp, #4] + ldr r0, [r4, #0x20] + lsl r2, r2, #4 + mov r3, #0xe + bl FUN_0200CB00 + ldr r0, [r4, #0x1c] + ldr r2, _022360B4 ; =0x000003D2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x4e + str r0, [sp, #4] + ldr r0, [r4, #0x20] + mov r1, #0 + mov r3, #0xd + bl FUN_0200CD68 + ldr r0, _022360B8 ; =0x0000042C + mov r1, #0 + add r0, r4, r0 + mov r2, #0x4c + bl Call_FillMemWithValue + ldr r0, _022360BC ; =0x00000498 + mov r3, #0x1b + add r1, r0, #0 + add r2, r4, r0 + sub r1, #0x6c + str r2, [r4, r1] + add r1, r0, #0 + mov r2, #2 + sub r1, #0x64 + str r2, [r4, r1] + add r1, r0, #0 + mov r2, #1 + sub r1, #0x60 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #0x5c + str r3, [r4, r1] + add r1, r0, #0 + mov r3, #4 + sub r1, #0x58 + str r3, [r4, r1] + add r3, r0, #0 + mov r1, #0 + sub r3, #0x48 + str r1, [r4, r3] + add r3, r0, #0 + sub r3, #0x44 + str r2, [r4, r3] + add r3, r0, #0 + sub r3, #0x4c + str r2, [r4, r3] + add r2, r0, #0 + ldr r3, _022360C0 ; =0x0001020F + sub r2, #0x40 + str r3, [r4, r2] + add r2, r0, #0 + ldr r3, _022360C4 ; =0x000F020F + sub r2, #0x3c + str r3, [r4, r2] + add r2, r0, #0 + sub r2, #0x34 + str r1, [r4, r2] + sub r0, #0x30 + str r1, [r4, r0] + add sp, #8 + pop {r4, pc} + nop +_022360B4: .word 0x000003D2 +_022360B8: .word 0x0000042C +_022360BC: .word 0x00000498 +_022360C0: .word 0x0001020F +_022360C4: .word 0x000F020F + thumb_func_end MOD83_0223600C + + thumb_func_start MOD83_022360C8 +MOD83_022360C8: ; 0x022360C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r6, r0, #0 + mov r7, #0x6b + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_022360D6: + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, r7] + mov r1, #0 + bl FUN_020200A0 + add r5, r5, #1 + add r4, #0xc + cmp r5, #0x1e + blt _022360D6 + mov r7, #0xf2 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_022360FA: + ldr r0, [r4, r7] + mov r1, #0 + bl FUN_020200A0 + add r5, r5, #1 + add r4, #0xc + cmp r5, #6 + blt _022360FA + mov r0, #0xe6 + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xee + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xea + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_020200A0 + mov r2, #0x61 + lsl r2, r2, #2 + add r0, sp, #0x1c + add r1, r6, #0 + add r2, r6, r2 + mov r3, #1 + bl MOD83_02235244 + mov r0, #0x1c + mov r7, #0 + str r0, [sp, #0x10] + add r4, r6, #0 + add r5, r6, #0 +_02236148: + ldr r0, [sp, #0x10] + lsl r0, r0, #0xc + str r0, [sp, #0x24] + mov r0, #0x8e + lsl r0, r0, #0xc + str r0, [sp, #0x28] + add r0, sp, #0x1c + bl FUN_0201FE94 + ldr r1, _02236288 ; =0x00000414 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _02236288 ; =0x00000414 + add r1, r7, #0 + ldr r0, [r4, r0] + add r1, #0xa + bl FUN_02020130 + ldr r0, _02236288 ; =0x00000414 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_02020238 + ldr r0, _02236288 ; =0x00000414 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r1, #0x3d + mov r2, #0xf3 + lsl r1, r1, #4 + lsl r2, r2, #2 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r0, r6, #0 + bl MOD83_0223526C + mov r1, #0x3d + mov r2, #0xf3 + lsl r1, r1, #4 + lsl r2, r2, #2 + str r0, [sp, #0x14] + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r0, r6, #0 + bl MOD83_02235290 + mov r1, #0x3d + mov r2, #0xf3 + lsl r1, r1, #4 + lsl r2, r2, #2 + str r0, [sp, #0x18] + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r0, r6, #0 + bl MOD83_022352B4 + add r2, r0, #0 + ldr r0, _02236288 ; =0x00000414 + str r7, [sp] + ldr r0, [r4, r0] + ldr r3, _0223628C ; =0x021C4918 + str r0, [sp, #4] + ldrb r3, [r3, #6] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl MOD83_022353C0 + ldr r0, [sp, #0x10] + add r7, r7, #1 + add r0, #0x28 + str r0, [sp, #0x10] + add r4, r4, #4 + add r5, #0xc + cmp r7, #6 + blt _02236148 + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x4e + str r0, [sp, #0xc] + ldr r2, [r6, #0x20] + mov r0, #0x74 + mov r1, #0x15 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r2, #0 + ldr r1, [r6] + ldr r0, _02236290 ; =0x0223B280 + add r3, r2, #0 + ldrb r0, [r0, r1] + mov r1, #2 + str r0, [sp, #8] + ldr r0, [r6, #0x20] + bl FUN_020186B4 + ldr r0, [r6, #0x20] + mov r1, #2 + bl FUN_02017CD0 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r1, #7 + mov r0, #0 + lsl r1, r1, #6 + mov r2, #0x4e + bl FUN_02002ED0 + mov r1, #0 + mov r2, #0x3f + str r1, [sp] + mov r0, #0x4e + str r0, [sp, #4] + ldr r0, [r6, #0x20] + lsl r2, r2, #4 + mov r3, #0xe + bl FUN_0200CB00 + ldr r0, [r6, #0x1c] + ldr r2, _02236294 ; =0x000003D2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x4e + str r0, [sp, #4] + ldr r0, [r6, #0x20] + mov r1, #0 + mov r3, #0xd + bl FUN_0200CD68 + add r0, r6, #0 + bl MOD83_0223600C + mov r1, #0x46 + mov r0, #0xa + lsl r1, r1, #4 + str r0, [r6, r1] + sub r1, #0x34 + add r0, r6, #0 + add r1, r6, r1 + mov r2, #0x18 + bl MOD83_02234F2C + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02236288: .word 0x00000414 +_0223628C: .word 0x021C4918 +_02236290: .word 0x0223B280 +_02236294: .word 0x000003D2 + thumb_func_end MOD83_022360C8 + + thumb_func_start MOD83_02236298 +MOD83_02236298: ; 0x02236298 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _022362B4 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + bl FUN_02019570 + add r0, r4, #0 + bl FUN_02019178 +_022362B4: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD83_02236298 + + thumb_func_start MOD83_022362B8 +MOD83_022362B8: ; 0x022362B8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r7, _02236328 ; =0x00000414 + mov r4, #0 + add r5, r6, #0 +_022362C2: + ldr r0, [r5, r7] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _022362C2 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, _0223632C ; =0x00000498 + add r0, r6, r0 + bl MOD83_02236298 + mov r0, #0xe6 + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xee + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xea + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xf3 + mov r5, #0 + lsl r0, r0, #2 + add r4, r6, #0 + sub r3, r5, #1 + mov r2, #0xe + add r1, r0, #4 +_02236312: + str r3, [r4, r0] + str r2, [r4, r1] + add r5, r5, #1 + add r4, #0xc + cmp r5, #6 + blt _02236312 + mov r0, #0x41 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02236328: .word 0x00000414 +_0223632C: .word 0x00000498 + thumb_func_end MOD83_022362B8 + + thumb_func_start MOD83_02236330 +MOD83_02236330: ; 0x02236330 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r7, #0x6a + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02236344: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223634E + bl FUN_0201FFC8 +_0223634E: + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0223635C + bl FUN_0201FFC8 +_0223635C: + add r4, r4, #1 + add r5, #0xc + cmp r4, #0x1e + blt _02236344 + mov r7, #0xf2 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_0223636C: + ldr r0, [r4, r7] + cmp r0, #0 + beq _02236376 + bl FUN_0201FFC8 +_02236376: + add r5, r5, #1 + add r4, #0xc + cmp r5, #6 + blt _0223636C + mov r0, #0xe6 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _0223638C + bl FUN_0201FFC8 +_0223638C: + mov r0, #0xee + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _0223639A + bl FUN_0201FFC8 +_0223639A: + mov r0, #0xea + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _022363A8 + bl FUN_0201FFC8 +_022363A8: + ldr r0, _0223643C ; =0x00000478 + add r0, r6, r0 + bl MOD83_02236298 + ldr r0, _02236440 ; =0x00000488 + add r0, r6, r0 + bl MOD83_02236298 + ldr r0, _02236444 ; =0x00000498 + add r0, r6, r0 + bl MOD83_02236298 + mov r0, #2 + bl FUN_02002CF8 + mov r0, #0x5b + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r7, #0x55 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_022363E2: + ldr r0, [r4, r7] + bl FUN_02008E2C + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #6 + blt _022363E2 + ldr r0, [r6, #0x28] + bl FUN_0201FD58 + mov r0, #0 + str r0, [r6, #0x28] + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + ldr r0, _02236448 ; =0x0000E88C + ldr r0, [r6, r0] + bl FUN_020145A8 + ldr r0, _0223644C ; =0x021C4918 + mov r1, #0 + strb r1, [r0, #5] + bl FUN_0201E7A0 + ldr r0, [r6, #0x20] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r6, #0x20] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r6, #0x20] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r6, #0x20] + mov r1, #3 + bl FUN_020178A0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223643C: .word 0x00000478 +_02236440: .word 0x00000488 +_02236444: .word 0x00000498 +_02236448: .word 0x0000E88C +_0223644C: .word 0x021C4918 + thumb_func_end MOD83_02236330 + + thumb_func_start MOD83_02236450 +MOD83_02236450: ; 0x02236450 + push {lr} + sub sp, #0x14 + ldr r1, [r0, #0x20] + mov r2, #0x19 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r1, #2 + lsl r1, r1, #8 + str r1, [sp, #8] + mov r1, #8 + str r1, [sp, #0xc] + add r1, sp, #0 + strb r2, [r1, #0x10] + mov r2, #7 + strb r2, [r1, #0x11] + ldr r1, _02236480 ; =0x0000E88C + ldr r0, [r0, r1] + add r1, sp, #0 + bl FUN_020145C8 + add sp, #0x14 + pop {pc} + nop +_02236480: .word 0x0000E88C + thumb_func_end MOD83_02236450 + + thumb_func_start MOD83_02236484 +MOD83_02236484: ; 0x02236484 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + bl MOD83_02237464 + add r4, r0, #0 + bl MOD83_02236EA8 + add r3, r0, #0 + add r0, r4, #0 + add r1, sp, #8 + mov r2, #8 + bl FUN_02015D88 + mov r0, #0x4e + bl FUN_0200AA80 + add r4, r0, #0 + mov r0, #8 + mov r1, #0x4e + bl FUN_020219F4 + add r1, sp, #8 + add r6, r0, #0 + bl FUN_02021E28 + mov r1, #1 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + mov r3, #0 + bl FUN_0200ABB4 + add r0, r5, #0 + bl MOD83_0223600C + ldr r0, [r5] + mov r2, #0x18 + lsl r1, r0, #2 + ldr r0, _02236508 ; =0x0223B2A0 + ldr r0, [r0, r1] + mov r1, #0x46 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + add r0, #0xc + sub r1, #0x34 + str r4, [r5, r0] + add r0, r5, #0 + add r1, r5, r1 + bl MOD83_02234F2C + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200AB18 + add r0, r5, #0 + bl MOD83_02236450 + add sp, #0x18 + pop {r4, r5, r6, pc} + nop +_02236508: .word 0x0223B2A0 + thumb_func_end MOD83_02236484 + + thumb_func_start MOD83_0223650C +MOD83_0223650C: ; 0x0223650C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223653C ; =0x00012604 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02236520 + blx r0 + ldr r0, _0223653C ; =0x00012604 + mov r1, #0 + str r1, [r4, r0] +_02236520: + bl FUN_0201C30C + bl FUN_02009F80 + ldr r0, [r4, #0x20] + bl FUN_0201AB60 + ldr r3, _02236540 ; =0x027E0000 + ldr r1, _02236544 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_0223653C: .word 0x00012604 +_02236540: .word 0x027E0000 +_02236544: .word 0x00003FF8 + thumb_func_end MOD83_0223650C + + thumb_func_start MOD83_02236548 +MOD83_02236548: ; 0x02236548 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + ldr r0, [r0, #0x10] + bl FUN_02022528 + str r0, [sp, #8] + bl FUN_0202C0B8 + cmp r0, #0 + bne _0223659C + ldr r0, [sp, #8] + bl FUN_0202C060 + cmp r0, #0 + bne _0223656E + add sp, #0xc + mov r0, #3 + pop {r4, r5, r6, r7, pc} +_0223656E: + ldr r0, [sp, #8] + bl FUN_0202C094 + cmp r0, #0 + bne _0223657E + add sp, #0xc + mov r0, #4 + pop {r4, r5, r6, r7, pc} +_0223657E: + bl MOD83_02237448 + add r1, r0, #0 + ldr r0, [sp, #8] + bl FUN_0202C028 + cmp r0, #0 + bne _02236590 + ldr r0, _022365F8 ; =0x0002A300 +_02236590: + ldr r1, _022365FC ; =0x00015180 + cmp r0, r1 + bge _0223659C + add sp, #0xc + mov r0, #2 + pop {r4, r5, r6, r7, pc} +_0223659C: + mov r6, #0 + str r6, [sp, #4] + add r7, r6, #0 +_022365A2: + mov r4, #0 + add r5, r4, #0 +_022365A6: + ldr r1, [sp] + ldr r0, _02236600 ; =0x0000E880 + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #5 + add r0, r0, #4 + add r0, r0, r7 + add r0, r0, r5 + bl MOD83_02237A10 + cmp r0, #0 + beq _022365C0 + add r6, r6, #1 +_022365C0: + add r4, r4, #1 + add r5, #0x50 + cmp r4, #0x1e + blt _022365A6 + mov r0, #0x96 + lsl r0, r0, #4 + add r7, r7, r0 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #0xe + blt _022365A2 + cmp r6, #6 + bge _022365E2 + add sp, #0xc + mov r0, #5 + pop {r4, r5, r6, r7, pc} +_022365E2: + ldr r0, [sp, #8] + bl FUN_0202C000 + cmp r0, #0 + beq _022365F2 + add sp, #0xc + mov r0, #6 + pop {r4, r5, r6, r7, pc} +_022365F2: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022365F8: .word 0x0002A300 +_022365FC: .word 0x00015180 +_02236600: .word 0x0000E880 + thumb_func_end MOD83_02236548 + + thumb_func_start MOD83_02236604 +MOD83_02236604: ; 0x02236604 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + cmp r1, #0 + beq _02236640 + bl MOD83_0223600C + mov r0, #1 + bl FUN_02002BB8 + ldr r0, _02236660 ; =0x0223B2D8 + lsl r1, r4, #2 + ldr r0, [r0, r1] + mov r1, #0x46 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + sub r1, #0x34 + mov r2, #1 + add r0, #0x10 + str r2, [r5, r0] + add r0, r5, #0 + add r1, r5, r1 + mov r2, #0x18 + bl MOD83_02234F2C + mov r0, #0 + str r0, [r5, #4] + b _0223665A +_02236640: + ldr r0, _02236664 ; =0x00000474 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223665A + mov r0, #0 + bl FUN_02002BB8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0223665A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02236660: .word 0x0223B2D8 +_02236664: .word 0x00000474 + thumb_func_end MOD83_02236604 + + thumb_func_start MOD83_02236668 +MOD83_02236668: ; 0x02236668 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + cmp r1, #0 + beq _022366A4 + bl MOD83_0223600C + mov r0, #1 + bl FUN_02002BB8 + ldr r0, _022366C8 ; =0x0223B2D8 + lsl r1, r4, #2 + ldr r0, [r0, r1] + mov r1, #0x46 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + sub r1, #0x34 + mov r2, #1 + add r0, #0x10 + str r2, [r5, r0] + add r0, r5, #0 + add r1, r5, r1 + mov r2, #0x18 + bl MOD83_02234F2C + mov r0, #0 + str r0, [r5, #4] + b _022366C4 +_022366A4: + ldr r0, _022366CC ; =0x00000474 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _022366C4 + add r0, r5, #0 + bl MOD83_02236450 + mov r0, #0 + bl FUN_02002BB8 + mov r0, #1 + pop {r3, r4, r5, pc} +_022366C4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022366C8: .word 0x0223B2D8 +_022366CC: .word 0x00000474 + thumb_func_end MOD83_02236668 + + thumb_func_start MOD83_022366D0 +MOD83_022366D0: ; 0x022366D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + ldr r2, [r5, #8] + mvn r1, r1 + cmp r2, r1 + beq _02236712 + bl MOD83_0223600C + mov r0, #1 + bl FUN_02002BB8 + mov r1, #0x46 + ldr r0, [r5, #8] + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + add r0, #0x10 + sub r1, #0x34 + str r4, [r5, r0] + add r0, r5, #0 + add r1, r5, r1 + mov r2, #0x18 + bl MOD83_02234F2C + mov r0, #0 + mvn r0, r0 + str r0, [r5, #8] + ldr r0, _02236754 ; =0x000005DC + bl FUN_020054C8 + b _02236750 +_02236712: + cmp r4, #0 + beq _02236730 + ldr r0, _02236758 ; =0x00000474 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02236750 + mov r0, #0 + bl FUN_02002BB8 + mov r0, #1 + pop {r3, r4, r5, pc} +_02236730: + ldr r0, _0223675C ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _02236740 + ldr r0, _02236760 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02236750 +_02236740: + mov r0, #0 + bl FUN_02002BB8 + ldr r0, _02236754 ; =0x000005DC + bl FUN_020054C8 + mov r0, #1 + pop {r3, r4, r5, pc} +_02236750: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02236754: .word 0x000005DC +_02236758: .word 0x00000474 +_0223675C: .word 0x021C48F8 +_02236760: .word 0x021C48B8 + thumb_func_end MOD83_022366D0 + + thumb_func_start MOD83_02236764 +MOD83_02236764: ; 0x02236764 + push {r3, r4, r5, lr} + mov r2, #0xa + add r5, r0, #0 + mov r0, #3 + mov r1, #0x4e + lsl r2, r2, #0xe + bl FUN_0201681C + ldr r1, _022367F0 ; =0x00012608 + add r0, r5, #0 + mov r2, #0x4e + bl FUN_02006268 + ldr r2, _022367F0 ; =0x00012608 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x4e + bl FUN_02016B94 + str r0, [r4, #0x20] + mov r0, #0x4e + bl FUN_02014590 + ldr r1, _022367F4 ; =0x0000E88C + str r0, [r4, r1] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl FUN_0200628C + ldr r0, [r0, #8] + str r0, [r4, #0x10] + bl FUN_020238F4 + str r0, [r4, #0x14] + ldr r0, [r4, #0x10] + bl LoadPlayerDataAddress + str r0, [r4, #0x18] + bl FUN_02025084 + str r0, [r4, #0x1c] + ldr r1, _022367F8 ; =0x00000496 + mov r0, #9 + mov r2, #1 + bl FUN_0200433C + bl OS_IsTickAvailable + cmp r0, #0 + bne _022367DE + bl OS_InitTick +_022367DE: + bl MOD83_02239490 + ldr r0, _022367FC ; =0x0000E89C + add r1, r4, r0 + ldr r0, _02236800 ; =0x0223BB14 + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_022367F0: .word 0x00012608 +_022367F4: .word 0x0000E88C +_022367F8: .word 0x00000496 +_022367FC: .word 0x0000E89C +_02236800: .word 0x0223BB14 + thumb_func_end MOD83_02236764 + + thumb_func_start MOD83_02236804 +MOD83_02236804: ; 0x02236804 + push {r4, r5, r6, lr} + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + bl CTRDG_IsExisting + bl CTRDG_IsPulledOut + cmp r0, #1 + beq _02236822 + ldr r0, _02236B3C ; =0x02106FA4 + ldr r0, [r0] + cmp r0, #0 + beq _02236828 +_02236822: + mov r0, #0x4e + bl FUN_02089F24 +_02236828: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r5] + cmp r0, #0x18 + bhi _02236924 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02236840: ; jump table + .short _02236872 - _02236840 - 2 ; case 0 + .short _022368BA - _02236840 - 2 ; case 1 + .short _02236900 - _02236840 - 2 ; case 2 + .short _02236914 - _02236840 - 2 ; case 3 + .short _0223694E - _02236840 - 2 ; case 4 + .short _02236966 - _02236840 - 2 ; case 5 + .short _022369BC - _02236840 - 2 ; case 6 + .short _022369CE - _02236840 - 2 ; case 7 + .short _022369EC - _02236840 - 2 ; case 8 + .short _022369FE - _02236840 - 2 ; case 9 + .short _02236A5C - _02236840 - 2 ; case 10 + .short _02236A74 - _02236840 - 2 ; case 11 + .short _02236A88 - _02236840 - 2 ; case 12 + .short _02236AC8 - _02236840 - 2 ; case 13 + .short _02236BF0 - _02236840 - 2 ; case 14 + .short _02236C0A - _02236840 - 2 ; case 15 + .short _02236C26 - _02236840 - 2 ; case 16 + .short _02236C40 - _02236840 - 2 ; case 17 + .short _02236C76 - _02236840 - 2 ; case 18 + .short _02236C9C - _02236840 - 2 ; case 19 + .short _02236D06 - _02236840 - 2 ; case 20 + .short _02236D12 - _02236840 - 2 ; case 21 + .short _02236D54 - _02236840 - 2 ; case 22 + .short _02236D78 - _02236840 - 2 ; case 23 + .short _02236D86 - _02236840 - 2 ; case 24 +_02236872: + bl MOD83_02236E90 + mov r0, #0x4b + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD83_02236E18 + ldr r1, _02236B40 ; =0x000004A8 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _022368AE + bl MOD83_022371C4 + ldr r1, _02236B44 ; =0x000004AC + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _022368AA + bl MOD83_0223742C + ldr r1, _02236B48 ; =0x0000E880 + str r0, [r4, r1] + ldr r0, [r4, r1] + ldrb r2, [r0] + add r0, r1, #4 + str r2, [r4, r0] + b _022368AE +_022368AA: + mov r0, #1 + str r0, [r4, #4] +_022368AE: + add r0, r4, #0 + bl MOD83_02234CA0 + mov r0, #1 + str r0, [r5] + b _02236D90 +_022368BA: + add r0, r4, #0 + bl MOD83_02235F3C + bl MOD83_022350BC + add r0, r4, #0 + bl MOD83_022350EC + add r0, r4, #0 + bl MOD83_022351F8 + add r0, r4, #0 + bl MOD83_022357CC + ldr r0, _02236B4C ; =MOD83_0223650C + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #4] + cmp r0, #1 + bne _022368FA + add r0, r4, #0 + mov r1, #1 + mov r2, #0xb + add r3, r5, #0 + bl MOD83_02235E04 + b _02236D90 +_022368FA: + mov r0, #2 + str r0, [r5] + b _02236D90 +_02236900: + add r0, r4, #0 + bl MOD83_02236484 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + add r3, r5, #0 + bl MOD83_02235E04 + b _02236D90 +_02236914: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_0201466C + cmp r0, #1 + beq _02236926 + cmp r0, #2 + beq _02236938 +_02236924: + b _02236D90 +_02236926: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + mov r0, #0x22 + str r0, [r4, #8] + mov r0, #4 + str r0, [r5] + b _02236D90 +_02236938: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x18 + add r3, r5, #0 + bl MOD83_02235E34 + b _02236D90 +_0223694E: + add r0, r4, #0 + mov r1, #1 + bl MOD83_022366D0 + cmp r0, #0 + beq _02236976 + add r0, r4, #0 + bl MOD83_02236450 + mov r0, #5 + str r0, [r5] + b _02236D90 +_02236966: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_0201466C + cmp r0, #1 + beq _02236978 + cmp r0, #2 + beq _022369A6 +_02236976: + b _02236D90 +_02236978: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + add r0, r4, #0 + bl MOD83_02236548 + str r0, [r4, #4] + cmp r0, #0 + beq _0223699E + sub r0, r0, #3 + cmp r0, #1 + bhi _02236998 + mov r0, #8 + str r0, [r5] + b _02236D90 +_02236998: + mov r0, #0xb + str r0, [r5] + b _02236D90 +_0223699E: + mov r0, #6 + str r0, [r4, #8] + str r0, [r5] + b _02236D90 +_022369A6: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x18 + add r3, r5, #0 + bl MOD83_02235E34 + b _02236D90 +_022369BC: + add r0, r4, #0 + mov r1, #1 + bl MOD83_022366D0 + cmp r0, #0 + beq _02236A0E + mov r0, #7 + str r0, [r5] + b _02236D90 +_022369CE: + ldr r0, _02236B54 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _022369DE + ldr r0, _02236B58 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02236A0E +_022369DE: + add r0, r4, #0 + mov r1, #0 + mov r2, #0xc + add r3, r5, #0 + bl MOD83_02235E04 + b _02236D90 +_022369EC: + ldr r1, [r4, #4] + add r0, r4, #0 + bl MOD83_02236668 + cmp r0, #0 + beq _02236A0E + mov r0, #9 + str r0, [r5] + b _02236D90 +_022369FE: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_0201466C + cmp r0, #1 + beq _02236A10 + cmp r0, #2 + beq _02236A46 +_02236A0E: + b _02236D90 +_02236A10: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + mov r1, #0x47 + lsl r1, r1, #4 + mov r2, #0 + add r0, r1, #0 + str r2, [r4, r1] + sub r1, #0x44 + mov r3, #0x28 + sub r0, #0x10 + str r3, [r4, r0] + add r0, r4, #0 + add r1, r4, r1 + bl MOD83_02234F2C + ldr r1, _02236B5C ; =0x00000498 + add r0, r4, r1 + sub r1, #0xc6 + bl FUN_0200D858 + ldr r1, _02236B60 ; =0x0000E898 + str r0, [r4, r1] + mov r0, #0xa + str r0, [r5] + b _02236D90 +_02236A46: + ldr r0, _02236B50 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x18 + add r3, r5, #0 + bl MOD83_02235E34 + b _02236D90 +_02236A5C: + add r0, r4, #0 + bl MOD83_02234E40 + ldr r0, _02236B60 ; =0x0000E898 + ldr r0, [r4, r0] + bl FUN_0200DBFC + mov r0, #7 + str r0, [r4, #4] + mov r0, #0xb + str r0, [r5] + b _02236D90 +_02236A74: + ldr r1, [r4, #4] + add r0, r4, #0 + bl MOD83_02236604 + cmp r0, #0 + bne _02236A82 + b _02236D90 +_02236A82: + mov r0, #0x16 + str r0, [r5] + b _02236D90 +_02236A88: + ldr r0, _02236B5C ; =0x00000498 + add r0, r4, r0 + bl MOD83_02236298 + add r0, r4, #0 + bl MOD83_02235FBC + add r0, r4, #0 + bl MOD83_02235648 + add r0, r4, #0 + bl MOD83_022354F0 + ldr r0, _02236B4C ; =MOD83_0223650C + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #0 + bl MOD83_02235C4C + add r0, r4, #0 + mov r1, #1 + mov r2, #0xd + add r3, r5, #0 + bl MOD83_02235E04 + b _02236D90 +_02236AC8: + mov r0, #0x31 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02020988 + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _02236B9C + cmp r6, #0x1e + bge _02236B92 + add r0, r4, #0 + add r1, r6, #0 + bl MOD83_02235994 + cmp r0, #1 + bne _02236B20 + ldr r2, _02236B48 ; =0x0000E880 + add r0, r4, #0 + ldr r1, [r4, r2] + add r2, r2, #4 + ldr r3, [r4, r2] + mov r2, #0x96 + lsl r2, r2, #4 + add r1, r1, #4 + mul r2, r3 + add r2, r1, r2 + mov r1, #0x50 + mul r1, r6 + add r1, r2, r1 + bl MOD83_02235C4C + mov r0, #0x41 + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #6 + bne _02236B9C + ldr r0, _02236B64 ; =0x0000E888 + mov r1, #0x2d + str r1, [r4, r0] + mov r0, #0xf + str r0, [r5] + b _02236D90 +_02236B20: + cmp r0, #2 + bne _02236B2E + add r0, r4, #0 + mov r1, #0 + bl MOD83_02235C4C + b _02236D90 +_02236B2E: + cmp r0, #4 + bne _02236B68 + mov r0, #8 + str r0, [r4, #8] + mov r0, #0xe + str r0, [r5] + b _02236D90 + .align 2, 0 +_02236B3C: .word 0x02106FA4 +_02236B40: .word 0x000004A8 +_02236B44: .word 0x000004AC +_02236B48: .word 0x0000E880 +_02236B4C: .word MOD83_0223650C +_02236B50: .word 0x0000E88C +_02236B54: .word 0x021C48F8 +_02236B58: .word 0x021C48B8 +_02236B5C: .word 0x00000498 +_02236B60: .word 0x0000E898 +_02236B64: .word 0x0000E888 +_02236B68: + cmp r0, #5 + bne _02236B76 + mov r0, #9 + str r0, [r4, #8] + mov r0, #0xe + str r0, [r5] + b _02236D90 +_02236B76: + cmp r0, #6 + bne _02236B84 + mov r0, #0x26 + str r0, [r4, #8] + mov r0, #0xe + str r0, [r5] + b _02236D90 +_02236B84: + cmp r0, #7 + bne _02236B9C + mov r0, #0x26 + str r0, [r4, #8] + mov r0, #0xe + str r0, [r5] + b _02236D90 +_02236B92: + beq _02236BDC + cmp r6, #0x1f + beq _02236B9E + cmp r6, #0x20 + beq _02236BBC +_02236B9C: + b _02236D90 +_02236B9E: + ldr r0, _02236DA0 ; =0x0000E884 + ldr r1, [r4, r0] + cmp r1, #0 + bne _02236BAA + mov r1, #0xd + b _02236BAC +_02236BAA: + sub r1, r1, #1 +_02236BAC: + str r1, [r4, r0] + add r0, r4, #0 + bl MOD83_022354F0 + ldr r0, _02236DA4 ; =0x000005DC + bl FUN_020054C8 + b _02236D90 +_02236BBC: + ldr r0, _02236DA0 ; =0x0000E884 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0xe + bne _02236BCE + mov r1, #0 + str r1, [r4, r0] +_02236BCE: + add r0, r4, #0 + bl MOD83_022354F0 + ldr r0, _02236DA4 ; =0x000005DC + bl FUN_020054C8 + b _02236D90 +_02236BDC: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x18 + add r3, r5, #0 + bl MOD83_02235E34 + ldr r0, _02236DA4 ; =0x000005DC + bl FUN_020054C8 + b _02236D90 +_02236BF0: + add r0, r4, #0 + mov r1, #0 + bl MOD83_022366D0 + cmp r0, #0 + beq _02236C50 + ldr r0, _02236DA8 ; =0x00000498 + add r0, r4, r0 + bl MOD83_02236298 + mov r0, #0xd + str r0, [r5] + b _02236D90 +_02236C0A: + ldr r0, _02236DAC ; =0x0000E888 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02236C50 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x10 + add r3, r5, #0 + bl MOD83_02235E04 + b _02236D90 +_02236C26: + add r0, r4, #0 + bl MOD83_022360C8 + add r0, r4, #0 + mov r1, #1 + mov r2, #0x11 + add r3, r5, #0 + bl MOD83_02235E04 + add r0, r4, #0 + bl MOD83_02236450 + b _02236D90 +_02236C40: + ldr r0, _02236DB0 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_0201466C + cmp r0, #1 + beq _02236C52 + cmp r0, #2 + beq _02236C60 +_02236C50: + b _02236D90 +_02236C52: + ldr r0, _02236DB0 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + mov r0, #0x12 + str r0, [r5] + b _02236D90 +_02236C60: + ldr r0, _02236DB0 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x14 + add r3, r5, #0 + bl MOD83_02235E04 + b _02236D90 +_02236C76: + mov r1, #0x46 + mov r0, #0xb + lsl r1, r1, #4 + str r0, [r4, r1] + sub r1, #0x34 + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + bl MOD83_02234F2C + add r0, r4, #0 + bl MOD83_02236450 + ldr r0, _02236DA4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x13 + str r0, [r5] + b _02236D90 +_02236C9C: + ldr r0, _02236DB0 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_0201466C + cmp r0, #1 + beq _02236CAE + cmp r0, #2 + beq _02236CF0 + b _02236D90 +_02236CAE: + ldr r0, [r4] + mov r2, #0 + lsl r1, r0, #2 + ldr r0, _02236DB4 ; =0x0223B288 + ldr r0, [r0, r1] + mov r1, #0x46 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r1, #0x34 + add r0, r4, #0 + add r1, r4, r1 + bl MOD83_02234F2C + ldr r0, _02236DB0 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + ldr r0, _02236DB8 ; =0x0000E890 + mov r1, #0 + str r1, [r4, r0] + ldr r1, _02236DA8 ; =0x00000498 + add r0, r4, r1 + sub r1, #0xc6 + bl FUN_0200D858 + ldr r1, _02236DBC ; =0x0000E898 + str r0, [r4, r1] + mov r0, #0x15 + str r0, [r5] + mov r0, #4 + bl FUN_020166A8 + b _02236D90 +_02236CF0: + ldr r0, _02236DB0 ; =0x0000E88C + ldr r0, [r4, r0] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x14 + add r3, r5, #0 + bl MOD83_02235E04 + b _02236D90 +_02236D06: + add r0, r4, #0 + bl MOD83_022362B8 + mov r0, #0xc + str r0, [r5] + b _02236D90 +_02236D12: + add r0, r4, #0 + bl MOD83_02234CE8 + add r6, r0, #0 + cmp r6, #0xa + beq _02236D90 + ldr r0, _02236DBC ; =0x0000E898 + ldr r0, [r4, r0] + bl FUN_0200DBFC + ldr r0, _02236DC0 ; =0x0000061B + bl FUN_020054C8 + cmp r6, #0xb + bne _02236D34 + mov r1, #0x1d + b _02236D36 +_02236D34: + mov r1, #0x24 +_02236D36: + mov r0, #0x46 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r1, _02236DC4 ; =0x0000042C + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + bl MOD83_02234F2C + mov r0, #0x16 + str r0, [r5] + mov r0, #4 + bl FUN_020166B8 + b _02236D90 +_02236D54: + ldr r0, _02236DC8 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _02236D64 + ldr r0, _02236DCC ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02236D90 +_02236D64: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x18 + add r3, r5, #0 + bl MOD83_02235E34 + ldr r0, _02236DA4 ; =0x000005DC + bl FUN_020054C8 + b _02236D90 +_02236D78: + bl FUN_0200E308 + cmp r0, #0 + beq _02236D90 + ldr r0, [r4, #0x24] + str r0, [r5] + b _02236D90 +_02236D86: + add r0, r4, #0 + bl MOD83_02236330 + mov r0, #1 + pop {r4, r5, r6, pc} +_02236D90: + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _02236D9A + bl FUN_0201FDEC +_02236D9A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02236DA0: .word 0x0000E884 +_02236DA4: .word 0x000005DC +_02236DA8: .word 0x00000498 +_02236DAC: .word 0x0000E888 +_02236DB0: .word 0x0000E88C +_02236DB4: .word 0x0223B288 +_02236DB8: .word 0x0000E890 +_02236DBC: .word 0x0000E898 +_02236DC0: .word 0x0000061B +_02236DC4: .word 0x0000042C +_02236DC8: .word 0x021C48F8 +_02236DCC: .word 0x021C48B8 + thumb_func_end MOD83_02236804 + + thumb_func_start MOD83_02236DD0 +MOD83_02236DD0: ; 0x02236DD0 + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + ldr r0, [r0, #0x20] + bl FUN_02016A18 + ldr r0, _02236DFC ; =0x0000003F + ldr r1, _02236E00 ; =0x021DBAB8 + bl FUN_02000E7C + add r0, r4, #0 + bl FUN_0200627C + mov r0, #0x4e + bl FUN_020168D0 + mov r0, #0 + bl MOD83_02239450 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_02236DFC: .word 0x0000003F +_02236E00: .word 0x021DBAB8 + thumb_func_end MOD83_02236DD0 + + thumb_func_start MOD83_02236E04 +MOD83_02236E04: ; 0x02236E04 + push {r3, lr} + mov r0, #1 + bl CTRDG_IdentifyAgbBackup + cmp r0, #0 + bne _02236E14 + mov r0, #1 + pop {r3, pc} +_02236E14: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD83_02236E04 + + thumb_func_start MOD83_02236E18 +MOD83_02236E18: ; 0x02236E18 + push {r3, lr} + ldr r1, _02236E74 ; =0x0223BB18 + str r0, [r1, #8] + ldr r0, _02236E78 ; =0x0223B41C + ldr r0, [r0] + cmp r0, #0 + beq _02236E2A + mov r0, #0xc + pop {r3, pc} +_02236E2A: + ldr r0, _02236E7C ; =0x0223A5C4 + mov r1, #0x1e + bl MOD83_02236EB4 + cmp r0, #0 + bne _02236E72 + ldr r0, _02236E78 ; =0x0223B41C + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0 + bne _02236E5A + mov r0, #0x89 + ldr r1, _02236E80 ; =0x0223BB98 + lsl r0, r0, #4 + str r0, [r1, #0x20] + mov r0, #0xeb + lsl r0, r0, #6 + str r0, [r1, #0x24] + ldr r2, _02236E84 ; =0x00001220 + ldr r0, _02236E74 ; =0x0223BB18 + str r2, [r0, #0x68] + mov r0, #9 + str r0, [r1, #0x30] + b _02236E64 +_02236E5A: + ldr r0, _02236E88 ; =0x08000100 + ldr r1, _02236E8C ; =0x0223BB30 + mov r2, #0xfc + bl CTRDG_CpuCopy32 +_02236E64: + bl MOD83_02236E04 + cmp r0, #0 + bne _02236E70 + mov r0, #3 + pop {r3, pc} +_02236E70: + mov r0, #0 +_02236E72: + pop {r3, pc} + .align 2, 0 +_02236E74: .word 0x0223BB18 +_02236E78: .word 0x0223B41C +_02236E7C: .word 0x0223A5C4 +_02236E80: .word 0x0223BB98 +_02236E84: .word 0x00001220 +_02236E88: .word 0x08000100 +_02236E8C: .word 0x0223BB30 + thumb_func_end MOD83_02236E18 + + thumb_func_start MOD83_02236E90 +MOD83_02236E90: ; 0x02236E90 + ldr r0, _02236E98 ; =0x0223B41C + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_02236E98: .word 0x0223B41C + thumb_func_end MOD83_02236E90 + + thumb_func_start MOD83_02236E9C +MOD83_02236E9C: ; 0x02236E9C + ldr r0, _02236EA4 ; =0x0223B41C + ldr r0, [r0] + ldrb r0, [r0, #5] + bx lr + .align 2, 0 +_02236EA4: .word 0x0223B41C + thumb_func_end MOD83_02236E9C + + thumb_func_start MOD83_02236EA8 +MOD83_02236EA8: ; 0x02236EA8 + ldr r0, _02236EB0 ; =0x0223B41C + ldr r0, [r0] + ldrh r0, [r0, #6] + bx lr + .align 2, 0 +_02236EB0: .word 0x0223B41C + thumb_func_end MOD83_02236EA8 + + thumb_func_start MOD83_02236EB4 +MOD83_02236EB4: ; 0x02236EB4 + push {r3, r4, r5, lr} + sub sp, #0xc0 + add r5, r0, #0 + add r4, r1, #0 + ldr r0, _02236F60 ; =0x0223B41C + mov r1, #0 + str r1, [r0] + bl CTRDG_IsAgbCartridge + cmp r0, #0 + bne _02236ED0 + add sp, #0xc0 + mov r0, #1 + pop {r3, r4, r5, pc} +_02236ED0: + bl CTRDG_GetAgbGameCode + mov r2, #0 + cmp r4, #0 + ble _02236EF4 + add r3, r5, #0 +_02236EDC: + ldr r1, [r3] + cmp r0, r1 + bne _02236EEC + lsl r0, r2, #3 + add r1, r5, r0 + ldr r0, _02236F60 ; =0x0223B41C + str r1, [r0] + b _02236EF4 +_02236EEC: + add r2, r2, #1 + add r3, #8 + cmp r2, r4 + blt _02236EDC +_02236EF4: + ldr r0, _02236F60 ; =0x0223B41C + ldr r0, [r0] + cmp r0, #0 + bne _02236F02 + add sp, #0xc0 + mov r0, #2 + pop {r3, r4, r5, pc} +_02236F02: + mov r0, #1 + bl CTRDG_Enable + add r4, sp, #0 + mov r0, #2 + lsl r0, r0, #0x1a + add r1, r4, #0 + mov r2, #0xc0 + bl CTRDG_CpuCopy32 + ldr r3, _02236F64 ; =0x0223B424 + mov r2, #0 +_02236F1A: + add r0, r4, r2 + ldrb r1, [r3] + ldrb r0, [r0, #4] + cmp r1, r0 + beq _02236F2A + add sp, #0xc0 + mov r0, #4 + pop {r3, r4, r5, pc} +_02236F2A: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #0x9c + blo _02236F1A + mov r2, #0 + mov r1, #0xa0 +_02236F36: + ldrb r0, [r4, r1] + add r1, r1, #1 + add r0, r2, r0 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r1, #0xbc + ble _02236F36 + add r2, #0x19 + neg r0, r2 + lsl r0, r0, #0x18 + add r4, #0xbd + lsr r1, r0, #0x18 + ldrb r0, [r4] + cmp r0, r1 + beq _02236F5A + add sp, #0xc0 + mov r0, #4 + pop {r3, r4, r5, pc} +_02236F5A: + mov r0, #0 + add sp, #0xc0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02236F60: .word 0x0223B41C +_02236F64: .word 0x0223B424 + thumb_func_end MOD83_02236EB4 + + thumb_func_start MOD83_02236F68 +MOD83_02236F68: ; 0x02236F68 + push {r3, r4} + mov r2, #0 + lsr r4, r1, #2 + add r3, r2, #0 + cmp r4, #0 + ble _02236F84 +_02236F74: + ldr r1, [r0] + add r0, r0, #4 + add r2, r2, r1 + add r1, r3, #1 + lsl r1, r1, #0x10 + lsr r3, r1, #0x10 + cmp r3, r4 + blt _02236F74 +_02236F84: + lsr r0, r2, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4} + bx lr + thumb_func_end MOD83_02236F68 + + thumb_func_start MOD83_02236F98 +MOD83_02236F98: ; 0x02236F98 + push {r3, lr} + lsl r0, r0, #0x10 + mov r3, #1 + add r2, r1, #0 + lsr r0, r0, #0x10 + mov r1, #0 + lsl r3, r3, #0xc + bl CTRDG_ReadAgbFlash + pop {r3, pc} + thumb_func_end MOD83_02236F98 + + thumb_func_start MOD83_02236FAC +MOD83_02236FAC: ; 0x02236FAC + cmp r0, #0 + bne _02236FBA + ldr r0, _02236FE0 ; =0x0223BB98 + ldr r0, [r0, #0x20] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_02236FBA: + cmp r0, #4 + bne _02236FCE + ldr r0, _02236FE0 ; =0x0223BB98 + ldr r1, [r0, #0x24] + mov r0, #0xba + lsl r0, r0, #6 + sub r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_02236FCE: + cmp r0, #0xd + bne _02236FD8 + mov r0, #0x7d + lsl r0, r0, #4 + bx lr +_02236FD8: + mov r0, #0x3e + lsl r0, r0, #6 + bx lr + nop +_02236FE0: .word 0x0223BB98 + thumb_func_end MOD83_02236FAC + + thumb_func_start MOD83_02236FE4 +MOD83_02236FE4: ; 0x02236FE4 + cmp r0, #0 + bne _02236FF4 + ldr r0, _02237034 ; =0x0223BB18 + ldr r1, [r0, #8] + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + bx lr +_02236FF4: + cmp r0, #1 + blt _02237012 + cmp r0, #4 + bgt _02237012 + ldr r1, _02237034 ; =0x0223BB18 + ldr r2, [r1, #8] + mov r1, #2 + lsl r1, r1, #0xc + add r2, r2, r1 + sub r1, r0, #1 + mov r0, #0x3e + lsl r0, r0, #6 + mul r0, r1 + add r0, r2, r0 + bx lr +_02237012: + cmp r0, #5 + blt _02237030 + cmp r0, #0xe + bge _02237030 + ldr r1, _02237034 ; =0x0223BB18 + ldr r2, [r1, #8] + mov r1, #6 + lsl r1, r1, #0xc + add r2, r2, r1 + sub r1, r0, #5 + mov r0, #0x3e + lsl r0, r0, #6 + mul r0, r1 + add r0, r2, r0 + bx lr +_02237030: + mov r0, #0 + bx lr + .align 2, 0 +_02237034: .word 0x0223BB18 + thumb_func_end MOD83_02236FE4 + + thumb_func_start MOD83_02237038 +MOD83_02237038: ; 0x02237038 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r6, #0 + add r5, r1, #0 + str r6, [sp, #4] + add r1, r2, #0 + str r6, [r1] + ldr r1, _022370CC ; =0x0223BB18 + add r7, r0, #0 + str r6, [r1, #4] + mov r1, #0xe + str r2, [sp] + add r4, r6, #0 + mul r7, r1 +_02237054: + add r0, r4, #0 + mov r1, #0xe + bl _s32_div_f + add r0, r1, r7 + add r1, r5, #0 + bl MOD83_02236F98 + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl DC_FlushRange + ldr r0, _022370D0 ; =0x00000FF8 + ldr r1, [r5, r0] + ldr r0, _022370D4 ; =0x08012025 + cmp r1, r0 + bne _022370A6 + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022370D8 ; =0x00000FF4 + ldrh r0, [r5, r0] + bl MOD83_02236FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD83_02236F68 + ldr r1, _022370DC ; =0x00000FF6 + ldrh r1, [r5, r1] + cmp r1, r0 + bne _022370A6 + ldr r0, _022370E0 ; =0x00000FFC + ldr r1, [r5, r0] + ldr r0, [sp] + str r1, [r0] + ldr r0, _022370D8 ; =0x00000FF4 + ldrh r1, [r5, r0] + mov r0, #1 + lsl r0, r1 + orr r6, r0 +_022370A6: + add r4, r4, #1 + cmp r4, #0xe + blt _02237054 + ldr r0, [sp, #4] + cmp r0, #0 + beq _022370C4 + ldr r0, _022370E4 ; =0x00003FFF + cmp r6, r0 + bne _022370BE + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022370BE: + add sp, #8 + mov r0, #0xff + pop {r3, r4, r5, r6, r7, pc} +_022370C4: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022370CC: .word 0x0223BB18 +_022370D0: .word 0x00000FF8 +_022370D4: .word 0x08012025 +_022370D8: .word 0x00000FF4 +_022370DC: .word 0x00000FF6 +_022370E0: .word 0x00000FFC +_022370E4: .word 0x00003FFF + thumb_func_end MOD83_02237038 + + thumb_func_start MOD83_022370E8 +MOD83_022370E8: ; 0x022370E8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + mov r0, #0 + add r1, r7, #0 + add r2, sp, #4 + bl MOD83_02237038 + add r6, r0, #0 + mov r0, #1 + add r1, r7, #0 + add r2, sp, #0 + bl MOD83_02237038 + cmp r6, #1 + bne _02237160 + cmp r0, #1 + bne _02237160 + mov r1, #0 + ldr r0, [sp, #4] + mvn r1, r1 + cmp r0, r1 + bne _02237120 + ldr r3, [sp] + cmp r3, #0 + beq _0223712E +_02237120: + cmp r0, #0 + bne _02237146 + mov r1, #0 + ldr r3, [sp] + mvn r1, r1 + cmp r3, r1 + bne _02237146 +_0223712E: + add r2, r0, #1 + add r1, r3, #1 + cmp r2, r1 + bhs _0223713E + str r3, [r4] + mov r0, #1 + str r0, [r5] + b _0223715A +_0223713E: + str r0, [r4] + mov r0, #0 + str r0, [r5] + b _0223715A +_02237146: + ldr r1, [sp] + cmp r0, r1 + bhs _02237154 + str r1, [r4] + mov r0, #1 + str r0, [r5] + b _0223715A +_02237154: + str r0, [r4] + mov r0, #0 + str r0, [r5] +_0223715A: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02237160: + cmp r6, #1 + bne _02237184 + cmp r0, #1 + beq _02237184 + ldr r1, [sp, #4] + cmp r0, #0xff + str r1, [r4] + bne _0223717A + mov r0, #0 + str r0, [r5] + add sp, #8 + mov r0, #0xff + pop {r3, r4, r5, r6, r7, pc} +_0223717A: + mov r0, #0 + str r0, [r5] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02237184: + cmp r0, #1 + bne _022371A6 + cmp r6, #1 + beq _022371A6 + ldr r0, [sp] + cmp r6, #0xff + str r0, [r4] + bne _0223719E + mov r0, #1 + str r0, [r5] + add sp, #8 + mov r0, #0xff + pop {r3, r4, r5, r6, r7, pc} +_0223719E: + mov r0, #1 + add sp, #8 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_022371A6: + cmp r6, #0 + bne _022371B8 + cmp r0, #0 + bne _022371B8 + mov r0, #0 + str r0, [r4] + add sp, #8 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_022371B8: + mov r0, #0 + str r0, [r4] + str r0, [r5] + mov r0, #2 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_022370E8 + + thumb_func_start MOD83_022371C4 +MOD83_022371C4: ; 0x022371C4 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02237278 ; =0x0223BB18 + ldr r1, _0223727C ; =0x0223BB18 + ldr r0, [r0, #8] + ldr r2, _02237280 ; =0x0223BB28 + bl MOD83_022370E8 + cmp r0, #1 + beq _022371EE + cmp r0, #0 + beq _022371E6 + cmp r0, #2 + beq _022371EA + cmp r0, #0xff + bne _022371EE + mov r0, #5 + pop {r3, r4, r5, r6, r7, pc} +_022371E6: + mov r0, #7 + pop {r3, r4, r5, r6, r7, pc} +_022371EA: + mov r0, #6 + pop {r3, r4, r5, r6, r7, pc} +_022371EE: + ldr r7, _02237278 ; =0x0223BB18 + ldr r0, [r7] + cmp r0, #1 + bhi _02237272 + mov r6, #0 + ldr r5, [r7, #8] + add r4, r6, #0 +_022371FC: + ldr r1, [r7] + mov r0, #0xe + mul r0, r1 + add r0, r4, r0 + add r1, r5, #0 + bl MOD83_02236F98 + ldr r0, _02237284 ; =0x00000FF8 + ldr r1, [r5, r0] + ldr r0, _02237288 ; =0x08012025 + cmp r1, r0 + bne _0223725E + ldr r0, _0223728C ; =0x00000FF4 + ldrh r0, [r5, r0] + bl MOD83_02236FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD83_02236F68 + ldr r1, _02237290 ; =0x00000FF6 + ldrh r1, [r5, r1] + cmp r1, r0 + bne _0223725E + ldr r0, _02237294 ; =0x00000FFC + mov r1, #1 + ldr r0, [r5, r0] + str r0, [r7, #0x10] + ldr r0, _0223728C ; =0x00000FF4 + ldrh r0, [r5, r0] + lsl r1, r0 + orr r6, r1 + bl MOD83_02236FAC + str r0, [sp] + ldr r0, _0223728C ; =0x00000FF4 + ldrh r0, [r5, r0] + bl MOD83_02236FE4 + add r1, r0, #0 + ldr r2, [sp] + add r0, r5, #0 + bl MIi_CpuCopy32 + ldr r0, _0223728C ; =0x00000FF4 + ldrh r0, [r5, r0] + cmp r0, #0 + bne _0223725E + str r4, [r7, #0xc] +_0223725E: + add r4, r4, #1 + cmp r4, #0xe + blt _022371FC + ldr r0, _02237298 ; =0x00003FFF + cmp r6, r0 + bne _0223726E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223726E: + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_02237272: + mov r0, #6 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237278: .word 0x0223BB18 +_0223727C: .word 0x0223BB18 +_02237280: .word 0x0223BB28 +_02237284: .word 0x00000FF8 +_02237288: .word 0x08012025 +_0223728C: .word 0x00000FF4 +_02237290: .word 0x00000FF6 +_02237294: .word 0x00000FFC +_02237298: .word 0x00003FFF + thumb_func_end MOD83_022371C4 + + thumb_func_start MOD83_0223729C +MOD83_0223729C: ; 0x0223729C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _02237318 ; =0x0223BB18 + mov r2, #1 + ldr r4, [r0, #8] + str r2, [r0, #0x14] + mov r0, #0 + add r1, r4, #0 + lsl r2, r2, #0xc + bl MIi_CpuClear32 + add r0, r5, #0 + bl MOD83_02236FAC + add r6, r0, #0 + add r0, r5, #0 + bl MOD83_02236FE4 + add r1, r4, #0 + add r2, r6, #0 + bl MIi_CpuCopy32 + ldr r0, _02237318 ; =0x0223BB18 + ldr r1, [r0, #0x10] + ldr r0, _0223731C ; =0x00000FFC + str r1, [r4, r0] + add r1, r0, #0 + sub r1, #8 + strh r5, [r4, r1] + ldr r1, _02237320 ; =0x08012025 + sub r0, r0, #4 + str r1, [r4, r0] + add r0, r5, #0 + bl MOD83_02236FAC + add r1, r0, #0 + add r0, r4, #0 + bl MOD83_02236F68 + ldr r1, _02237324 ; =0x00000FF6 + strh r0, [r4, r1] + ldr r0, _02237318 ; =0x0223BB18 + mov r1, #0xe + ldr r0, [r0, #0xc] + add r0, r5, r0 + add r0, r0, #1 + bl _s32_div_f + ldr r0, _02237328 ; =0x0223B41C + ldr r3, _0223732C ; =MOD83_02237330 + ldr r2, [r0, #4] + mov r0, #0xe + mul r0, r2 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r4, #0 + mov r2, #4 + bl CTRDG_WriteAndVerifyAgbFlashAsync + pop {r4, r5, r6, pc} + nop +_02237318: .word 0x0223BB18 +_0223731C: .word 0x00000FFC +_02237320: .word 0x08012025 +_02237324: .word 0x00000FF6 +_02237328: .word 0x0223B41C +_0223732C: .word MOD83_02237330 + thumb_func_end MOD83_0223729C + + thumb_func_start MOD83_02237330 +MOD83_02237330: ; 0x02237330 + ldr r0, [r0, #8] + cmp r0, #0 + bne _0223735C + ldr r1, _02237368 ; =0x0223BB18 + ldr r0, [r1, #4] + add r0, r0, #1 + str r0, [r1, #4] + cmp r0, #0xe + blt _0223734A + mov r0, #0 + str r0, [r1, #4] + str r0, [r1, #0x14] + bx lr +_0223734A: + cmp r0, #0xd + bne _02237356 + mov r0, #2 + str r0, [r1, #0x14] + mov r0, #0 + bx lr +_02237356: + mov r0, #3 + str r0, [r1, #0x14] + b _02237362 +_0223735C: + ldr r0, _02237368 ; =0x0223BB18 + mov r1, #4 + str r1, [r0, #0x14] +_02237362: + mov r0, #0 + bx lr + nop +_02237368: .word 0x0223BB18 + thumb_func_end MOD83_02237330 + + thumb_func_start MOD83_0223736C +MOD83_0223736C: ; 0x0223736C + push {r3, lr} + ldr r1, _022373AC ; =0x0223BB18 + ldr r0, [r1, #4] + cmp r0, #0 + bne _02237392 + ldr r1, [r1] + cmp r1, #1 + bne _02237382 + mov r2, #0 + ldr r1, _022373B0 ; =0x0223B41C + b _02237386 +_02237382: + ldr r1, _022373B0 ; =0x0223B41C + mov r2, #1 +_02237386: + str r2, [r1, #4] + ldr r1, _022373AC ; =0x0223BB18 + ldr r2, [r1, #0x10] + add r2, r2, #1 + str r2, [r1, #0x10] + b _02237396 +_02237392: + mov r0, #0 + pop {r3, pc} +_02237396: + ldr r1, _022373B0 ; =0x0223B41C + ldr r1, [r1, #4] + cmp r1, #0 + bge _022373A2 + mov r0, #0 + pop {r3, pc} +_022373A2: + bl MOD83_0223729C + mov r0, #1 + pop {r3, pc} + nop +_022373AC: .word 0x0223BB18 +_022373B0: .word 0x0223B41C + thumb_func_end MOD83_0223736C + + thumb_func_start MOD83_022373B4 +MOD83_022373B4: ; 0x022373B4 + push {r3, lr} + ldr r1, _022373F0 ; =0x0223BB18 + ldr r0, [r1, #0x14] + cmp r0, #4 + bhi _022373EC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022373CA: ; jump table + .short _022373EC - _022373CA - 2 ; case 0 + .short _022373E4 - _022373CA - 2 ; case 1 + .short _022373D4 - _022373CA - 2 ; case 2 + .short _022373DE - _022373CA - 2 ; case 3 + .short _022373E8 - _022373CA - 2 ; case 4 +_022373D4: + ldr r0, [r1, #4] + bl MOD83_0223729C + mov r0, #0 + pop {r3, pc} +_022373DE: + ldr r0, [r1, #4] + bl MOD83_0223729C +_022373E4: + mov r0, #0xa + pop {r3, pc} +_022373E8: + mov r0, #8 + pop {r3, pc} +_022373EC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_022373F0: .word 0x0223BB18 + thumb_func_end MOD83_022373B4 + + thumb_func_start MOD83_022373F4 +MOD83_022373F4: ; 0x022373F4 + ldr r0, _02237428 ; =0x0223BB18 + ldr r0, [r0, #0x14] + cmp r0, #4 + bhi _02237422 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237408: ; jump table + .short _02237422 - _02237408 - 2 ; case 0 + .short _0223741A - _02237408 - 2 ; case 1 + .short _02237412 - _02237408 - 2 ; case 2 + .short _02237416 - _02237408 - 2 ; case 3 + .short _0223741E - _02237408 - 2 ; case 4 +_02237412: + mov r0, #0xb + bx lr +_02237416: + mov r0, #0xa + bx lr +_0223741A: + mov r0, #9 + bx lr +_0223741E: + mov r0, #8 + bx lr +_02237422: + mov r0, #0 + bx lr + nop +_02237428: .word 0x0223BB18 + thumb_func_end MOD83_022373F4 + + thumb_func_start MOD83_0223742C +MOD83_0223742C: ; 0x0223742C + ldr r0, _02237438 ; =0x0223BB18 + ldr r1, [r0, #8] + mov r0, #6 + lsl r0, r0, #0xc + add r0, r1, r0 + bx lr + .align 2, 0 +_02237438: .word 0x0223BB18 + thumb_func_end MOD83_0223742C + + thumb_func_start MOD83_0223743C +MOD83_0223743C: ; 0x0223743C + ldr r3, _02237444 ; =MOD83_02236FE4 + mov r0, #0 + bx r3 + nop +_02237444: .word MOD83_02236FE4 + thumb_func_end MOD83_0223743C + + thumb_func_start MOD83_02237448 +MOD83_02237448: ; 0x02237448 + push {r3, lr} + bl MOD83_0223743C + ldrb r2, [r0, #0xb] + ldrb r1, [r0, #0xa] + lsl r3, r2, #8 + ldrb r2, [r0, #0xd] + ldrb r0, [r0, #0xc] + lsl r2, r2, #0x18 + lsl r0, r0, #0x10 + orr r0, r2 + orr r0, r3 + orr r0, r1 + pop {r3, pc} + thumb_func_end MOD83_02237448 + + thumb_func_start MOD83_02237464 +MOD83_02237464: ; 0x02237464 + ldr r3, _02237468 ; =MOD83_0223743C + bx r3 + .align 2, 0 +_02237468: .word MOD83_0223743C + thumb_func_end MOD83_02237464 + + thumb_func_start MOD83_0223746C +MOD83_0223746C: ; 0x0223746C + push {r4, r5, r6, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #0x18 + add r5, r2, #0 + mov r6, #0 + bl _u32_div_f + cmp r1, #0x17 + bhi _022374C2 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223748C: ; jump table + .short _022374BC - _0223748C - 2 ; case 0 + .short _022374EE - _0223748C - 2 ; case 1 + .short _0223751E - _0223748C - 2 ; case 2 + .short _0223754E - _0223748C - 2 ; case 3 + .short _0223757E - _0223748C - 2 ; case 4 + .short _022375AE - _0223748C - 2 ; case 5 + .short _022375DE - _0223748C - 2 ; case 6 + .short _02237610 - _0223748C - 2 ; case 7 + .short _02237640 - _0223748C - 2 ; case 8 + .short _02237670 - _0223748C - 2 ; case 9 + .short _022376A0 - _0223748C - 2 ; case 10 + .short _022376D0 - _0223748C - 2 ; case 11 + .short _02237700 - _0223748C - 2 ; case 12 + .short _02237732 - _0223748C - 2 ; case 13 + .short _02237762 - _0223748C - 2 ; case 14 + .short _02237792 - _0223748C - 2 ; case 15 + .short _022377C2 - _0223748C - 2 ; case 16 + .short _022377F2 - _0223748C - 2 ; case 17 + .short _02237822 - _0223748C - 2 ; case 18 + .short _02237854 - _0223748C - 2 ; case 19 + .short _02237884 - _0223748C - 2 ; case 20 + .short _022378B4 - _0223748C - 2 ; case 21 + .short _022378E4 - _0223748C - 2 ; case 22 + .short _02237914 - _0223748C - 2 ; case 23 +_022374BC: + add r4, #0x20 + cmp r5, #3 + bls _022374C4 +_022374C2: + b _02237942 +_022374C4: + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022374D0: ; jump table + .short _022374D8 - _022374D0 - 2 ; case 0 + .short _022374DC - _022374D0 - 2 ; case 1 + .short _022374E2 - _022374D0 - 2 ; case 2 + .short _022374E8 - _022374D0 - 2 ; case 3 +_022374D8: + add r6, r4, #0 + b _02237942 +_022374DC: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022374E2: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022374E8: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022374EE: + add r4, #0x20 + cmp r5, #3 + bhi _022375E4 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237500: ; jump table + .short _02237508 - _02237500 - 2 ; case 0 + .short _0223750C - _02237500 - 2 ; case 1 + .short _02237512 - _02237500 - 2 ; case 2 + .short _02237518 - _02237500 - 2 ; case 3 +_02237508: + add r6, r4, #0 + b _02237942 +_0223750C: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237512: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237518: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_0223751E: + add r4, #0x20 + cmp r5, #3 + bhi _022375E4 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237530: ; jump table + .short _02237538 - _02237530 - 2 ; case 0 + .short _0223753C - _02237530 - 2 ; case 1 + .short _02237542 - _02237530 - 2 ; case 2 + .short _02237548 - _02237530 - 2 ; case 3 +_02237538: + add r6, r4, #0 + b _02237942 +_0223753C: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237542: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237548: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_0223754E: + add r4, #0x20 + cmp r5, #3 + bhi _022375E4 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237560: ; jump table + .short _02237568 - _02237560 - 2 ; case 0 + .short _0223756C - _02237560 - 2 ; case 1 + .short _02237572 - _02237560 - 2 ; case 2 + .short _02237578 - _02237560 - 2 ; case 3 +_02237568: + add r6, r4, #0 + b _02237942 +_0223756C: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237572: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237578: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_0223757E: + add r4, #0x20 + cmp r5, #3 + bhi _022375E4 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237590: ; jump table + .short _02237598 - _02237590 - 2 ; case 0 + .short _0223759C - _02237590 - 2 ; case 1 + .short _022375A2 - _02237590 - 2 ; case 2 + .short _022375A8 - _02237590 - 2 ; case 3 +_02237598: + add r6, r4, #0 + b _02237942 +_0223759C: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022375A2: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022375A8: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022375AE: + add r4, #0x20 + cmp r5, #3 + bhi _022375E4 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022375C0: ; jump table + .short _022375C8 - _022375C0 - 2 ; case 0 + .short _022375CC - _022375C0 - 2 ; case 1 + .short _022375D2 - _022375C0 - 2 ; case 2 + .short _022375D8 - _022375C0 - 2 ; case 3 +_022375C8: + add r6, r4, #0 + b _02237942 +_022375CC: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022375D2: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022375D8: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022375DE: + add r4, #0x20 + cmp r5, #3 + bls _022375E6 +_022375E4: + b _02237942 +_022375E6: + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022375F2: ; jump table + .short _022375FA - _022375F2 - 2 ; case 0 + .short _02237600 - _022375F2 - 2 ; case 1 + .short _02237604 - _022375F2 - 2 ; case 2 + .short _0223760A - _022375F2 - 2 ; case 3 +_022375FA: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237600: + add r6, r4, #0 + b _02237942 +_02237604: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_0223760A: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237610: + add r4, #0x20 + cmp r5, #3 + bhi _02237706 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237622: ; jump table + .short _0223762A - _02237622 - 2 ; case 0 + .short _02237630 - _02237622 - 2 ; case 1 + .short _02237634 - _02237622 - 2 ; case 2 + .short _0223763A - _02237622 - 2 ; case 3 +_0223762A: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237630: + add r6, r4, #0 + b _02237942 +_02237634: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_0223763A: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237640: + add r4, #0x20 + cmp r5, #3 + bhi _02237706 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237652: ; jump table + .short _0223765A - _02237652 - 2 ; case 0 + .short _02237660 - _02237652 - 2 ; case 1 + .short _02237664 - _02237652 - 2 ; case 2 + .short _0223766A - _02237652 - 2 ; case 3 +_0223765A: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237660: + add r6, r4, #0 + b _02237942 +_02237664: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_0223766A: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237670: + add r4, #0x20 + cmp r5, #3 + bhi _02237706 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237682: ; jump table + .short _0223768A - _02237682 - 2 ; case 0 + .short _02237690 - _02237682 - 2 ; case 1 + .short _02237694 - _02237682 - 2 ; case 2 + .short _0223769A - _02237682 - 2 ; case 3 +_0223768A: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237690: + add r6, r4, #0 + b _02237942 +_02237694: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_0223769A: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022376A0: + add r4, #0x20 + cmp r5, #3 + bhi _02237706 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022376B2: ; jump table + .short _022376BA - _022376B2 - 2 ; case 0 + .short _022376C0 - _022376B2 - 2 ; case 1 + .short _022376C4 - _022376B2 - 2 ; case 2 + .short _022376CA - _022376B2 - 2 ; case 3 +_022376BA: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022376C0: + add r6, r4, #0 + b _02237942 +_022376C4: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022376CA: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022376D0: + add r4, #0x20 + cmp r5, #3 + bhi _02237706 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022376E2: ; jump table + .short _022376EA - _022376E2 - 2 ; case 0 + .short _022376F0 - _022376E2 - 2 ; case 1 + .short _022376F4 - _022376E2 - 2 ; case 2 + .short _022376FA - _022376E2 - 2 ; case 3 +_022376EA: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022376F0: + add r6, r4, #0 + b _02237942 +_022376F4: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022376FA: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237700: + add r4, #0x20 + cmp r5, #3 + bls _02237708 +_02237706: + b _02237942 +_02237708: + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237714: ; jump table + .short _0223771C - _02237714 - 2 ; case 0 + .short _02237722 - _02237714 - 2 ; case 1 + .short _02237728 - _02237714 - 2 ; case 2 + .short _0223772C - _02237714 - 2 ; case 3 +_0223771C: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237722: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237728: + add r6, r4, #0 + b _02237942 +_0223772C: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237732: + add r4, #0x20 + cmp r5, #3 + bhi _02237828 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237744: ; jump table + .short _0223774C - _02237744 - 2 ; case 0 + .short _02237752 - _02237744 - 2 ; case 1 + .short _02237758 - _02237744 - 2 ; case 2 + .short _0223775C - _02237744 - 2 ; case 3 +_0223774C: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237752: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237758: + add r6, r4, #0 + b _02237942 +_0223775C: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237762: + add r4, #0x20 + cmp r5, #3 + bhi _02237828 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237774: ; jump table + .short _0223777C - _02237774 - 2 ; case 0 + .short _02237782 - _02237774 - 2 ; case 1 + .short _02237788 - _02237774 - 2 ; case 2 + .short _0223778C - _02237774 - 2 ; case 3 +_0223777C: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237782: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237788: + add r6, r4, #0 + b _02237942 +_0223778C: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237792: + add r4, #0x20 + cmp r5, #3 + bhi _02237828 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022377A4: ; jump table + .short _022377AC - _022377A4 - 2 ; case 0 + .short _022377B2 - _022377A4 - 2 ; case 1 + .short _022377B8 - _022377A4 - 2 ; case 2 + .short _022377BC - _022377A4 - 2 ; case 3 +_022377AC: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022377B2: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022377B8: + add r6, r4, #0 + b _02237942 +_022377BC: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022377C2: + add r4, #0x20 + cmp r5, #3 + bhi _02237828 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022377D4: ; jump table + .short _022377DC - _022377D4 - 2 ; case 0 + .short _022377E2 - _022377D4 - 2 ; case 1 + .short _022377E8 - _022377D4 - 2 ; case 2 + .short _022377EC - _022377D4 - 2 ; case 3 +_022377DC: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022377E2: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022377E8: + add r6, r4, #0 + b _02237942 +_022377EC: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022377F2: + add r4, #0x20 + cmp r5, #3 + bhi _02237828 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237804: ; jump table + .short _0223780C - _02237804 - 2 ; case 0 + .short _02237812 - _02237804 - 2 ; case 1 + .short _02237818 - _02237804 - 2 ; case 2 + .short _0223781C - _02237804 - 2 ; case 3 +_0223780C: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237812: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237818: + add r6, r4, #0 + b _02237942 +_0223781C: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237822: + add r4, #0x20 + cmp r5, #3 + bls _0223782A +_02237828: + b _02237942 +_0223782A: + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237836: ; jump table + .short _0223783E - _02237836 - 2 ; case 0 + .short _02237844 - _02237836 - 2 ; case 1 + .short _0223784A - _02237836 - 2 ; case 2 + .short _02237850 - _02237836 - 2 ; case 3 +_0223783E: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237844: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_0223784A: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237850: + add r6, r4, #0 + b _02237942 +_02237854: + add r4, #0x20 + cmp r5, #3 + bhi _02237942 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237866: ; jump table + .short _0223786E - _02237866 - 2 ; case 0 + .short _02237874 - _02237866 - 2 ; case 1 + .short _0223787A - _02237866 - 2 ; case 2 + .short _02237880 - _02237866 - 2 ; case 3 +_0223786E: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237874: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_0223787A: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237880: + add r6, r4, #0 + b _02237942 +_02237884: + add r4, #0x20 + cmp r5, #3 + bhi _02237942 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237896: ; jump table + .short _0223789E - _02237896 - 2 ; case 0 + .short _022378A4 - _02237896 - 2 ; case 1 + .short _022378AA - _02237896 - 2 ; case 2 + .short _022378B0 - _02237896 - 2 ; case 3 +_0223789E: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022378A4: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022378AA: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022378B0: + add r6, r4, #0 + b _02237942 +_022378B4: + add r4, #0x20 + cmp r5, #3 + bhi _02237942 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022378C6: ; jump table + .short _022378CE - _022378C6 - 2 ; case 0 + .short _022378D4 - _022378C6 - 2 ; case 1 + .short _022378DA - _022378C6 - 2 ; case 2 + .short _022378E0 - _022378C6 - 2 ; case 3 +_022378CE: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_022378D4: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_022378DA: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_022378E0: + add r6, r4, #0 + b _02237942 +_022378E4: + add r4, #0x20 + cmp r5, #3 + bhi _02237942 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022378F6: ; jump table + .short _022378FE - _022378F6 - 2 ; case 0 + .short _02237904 - _022378F6 - 2 ; case 1 + .short _0223790A - _022378F6 - 2 ; case 2 + .short _02237910 - _022378F6 - 2 ; case 3 +_022378FE: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_02237904: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_0223790A: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237910: + add r6, r4, #0 + b _02237942 +_02237914: + add r4, #0x20 + cmp r5, #3 + bhi _02237942 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237926: ; jump table + .short _0223792E - _02237926 - 2 ; case 0 + .short _02237934 - _02237926 - 2 ; case 1 + .short _0223793A - _02237926 - 2 ; case 2 + .short _02237940 - _02237926 - 2 ; case 3 +_0223792E: + add r6, r4, #0 + add r6, #0x24 + b _02237942 +_02237934: + add r6, r4, #0 + add r6, #0x18 + b _02237942 +_0223793A: + add r6, r4, #0 + add r6, #0xc + b _02237942 +_02237940: + add r6, r4, #0 +_02237942: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD83_0223746C + + thumb_func_start MOD83_02237948 +MOD83_02237948: ; 0x02237948 + push {r3, r4} + add r4, r0, #0 + mov r3, #0 + add r4, #0x20 +_02237950: + ldr r2, [r4] + ldr r1, [r0, #4] + add r3, r3, #1 + eor r2, r1 + str r2, [r4] + ldr r1, [r0] + eor r1, r2 + stmia r4!, {r1} + cmp r3, #0xc + blo _02237950 + pop {r3, r4} + bx lr + thumb_func_end MOD83_02237948 + + thumb_func_start MOD83_02237968 +MOD83_02237968: ; 0x02237968 + push {r3, r4} + add r4, r0, #0 + mov r3, #0 + add r4, #0x20 +_02237970: + ldr r2, [r4] + ldr r1, [r0] + add r3, r3, #1 + eor r2, r1 + str r2, [r4] + ldr r1, [r0, #4] + eor r1, r2 + stmia r4!, {r1} + cmp r3, #0xc + blo _02237970 + pop {r3, r4} + bx lr + thumb_func_end MOD83_02237968 + + thumb_func_start MOD83_02237988 +MOD83_02237988: ; 0x02237988 + push {r3, r4, r5, r6, r7, lr} + add r1, r0, #0 + mov r4, #0 + ldr r1, [r1] + str r0, [sp] + add r2, r4, #0 + bl MOD83_0223746C + add r5, r0, #0 + ldr r0, [sp] + mov r2, #1 + add r1, r0, #0 + ldr r1, [r1] + bl MOD83_0223746C + add r6, r0, #0 + ldr r0, [sp] + mov r2, #2 + add r1, r0, #0 + ldr r1, [r1] + bl MOD83_0223746C + add r7, r0, #0 + ldr r0, [sp] + mov r2, #3 + add r1, r0, #0 + ldr r1, [r1] + bl MOD83_0223746C + add r1, r4, #0 +_022379C4: + ldrh r2, [r5] + add r1, r1, #1 + add r5, r5, #2 + add r2, r4, r2 + lsl r2, r2, #0x10 + lsr r4, r2, #0x10 + cmp r1, #6 + blt _022379C4 + mov r2, #0 +_022379D6: + ldrh r1, [r6] + add r2, r2, #1 + add r6, r6, #2 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r2, #6 + blt _022379D6 + mov r2, #0 +_022379E8: + ldrh r1, [r7] + add r2, r2, #1 + add r7, r7, #2 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r2, #6 + blt _022379E8 + mov r2, #0 +_022379FA: + ldrh r1, [r0] + add r2, r2, #1 + add r0, r0, #2 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r2, #6 + blt _022379FA + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD83_02237988 + + thumb_func_start MOD83_02237A10 +MOD83_02237A10: ; 0x02237A10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r4, #0 + add r5, r0, #0 + str r1, [sp] + add r7, r2, #0 + add r6, r4, #0 + str r4, [sp, #0xc] + str r4, [sp, #8] + str r4, [sp, #4] + cmp r1, #0xa + ble _02237A86 + ldr r1, [r5] + add r2, r4, #0 + bl MOD83_0223746C + str r0, [sp, #0xc] + ldr r1, [r5] + add r0, r5, #0 + mov r2, #1 + bl MOD83_0223746C + str r0, [sp, #8] + ldr r1, [r5] + add r0, r5, #0 + mov r2, #2 + bl MOD83_0223746C + str r0, [sp, #4] + ldr r1, [r5] + add r0, r5, #0 + mov r2, #3 + bl MOD83_0223746C + add r6, r0, #0 + add r0, r5, #0 + bl MOD83_02237948 + add r0, r5, #0 + bl MOD83_02237988 + ldrh r1, [r5, #0x1c] + cmp r0, r1 + beq _02237A86 + ldrb r0, [r5, #0x13] + mov r1, #1 + bic r0, r1 + mov r1, #1 + orr r0, r1 + strb r0, [r5, #0x13] + ldrb r1, [r5, #0x13] + mov r0, #4 + orr r0, r1 + strb r0, [r5, #0x13] + mov r0, #1 + ldr r1, [r6, #4] + lsl r0, r0, #0x1e + orr r0, r1 + str r0, [r6, #4] +_02237A86: + ldr r0, [sp] + cmp r0, #0x50 + bls _02237A8E + b _02237D7C +_02237A8E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237A9A: ; jump table + .short _02237B3C - _02237A9A - 2 ; case 0 + .short _02237B40 - _02237A9A - 2 ; case 1 + .short _02237B44 - _02237A9A - 2 ; case 2 + .short _02237B64 - _02237A9A - 2 ; case 3 + .short _02237B68 - _02237A9A - 2 ; case 4 + .short _02237B70 - _02237A9A - 2 ; case 5 + .short _02237B78 - _02237A9A - 2 ; case 6 + .short _02237B80 - _02237A9A - 2 ; case 7 + .short _02237B94 - _02237A9A - 2 ; case 8 + .short _02237B98 - _02237A9A - 2 ; case 9 + .short _02237B9C - _02237A9A - 2 ; case 10 + .short _02237BA0 - _02237A9A - 2 ; case 11 + .short _02237BB4 - _02237A9A - 2 ; case 12 + .short _02237BCC - _02237A9A - 2 ; case 13 + .short _02237BCC - _02237A9A - 2 ; case 14 + .short _02237BCC - _02237A9A - 2 ; case 15 + .short _02237BCC - _02237A9A - 2 ; case 16 + .short _02237BD8 - _02237A9A - 2 ; case 17 + .short _02237BD8 - _02237A9A - 2 ; case 18 + .short _02237BD8 - _02237A9A - 2 ; case 19 + .short _02237BD8 - _02237A9A - 2 ; case 20 + .short _02237BC0 - _02237A9A - 2 ; case 21 + .short _02237C08 - _02237A9A - 2 ; case 22 + .short _02237C0E - _02237A9A - 2 ; case 23 + .short _02237C14 - _02237A9A - 2 ; case 24 + .short _02237BBA - _02237A9A - 2 ; case 25 + .short _02237BE4 - _02237A9A - 2 ; case 26 + .short _02237BEA - _02237A9A - 2 ; case 27 + .short _02237BF0 - _02237A9A - 2 ; case 28 + .short _02237BF6 - _02237A9A - 2 ; case 29 + .short _02237BFC - _02237A9A - 2 ; case 30 + .short _02237C02 - _02237A9A - 2 ; case 31 + .short _02237BC6 - _02237A9A - 2 ; case 32 + .short _02237C1A - _02237A9A - 2 ; case 33 + .short _02237C2C - _02237A9A - 2 ; case 34 + .short _02237C34 - _02237A9A - 2 ; case 35 + .short _02237C3C - _02237A9A - 2 ; case 36 + .short _02237C44 - _02237A9A - 2 ; case 37 + .short _02237C4C - _02237A9A - 2 ; case 38 + .short _02237C5A - _02237A9A - 2 ; case 39 + .short _02237C62 - _02237A9A - 2 ; case 40 + .short _02237C6A - _02237A9A - 2 ; case 41 + .short _02237C72 - _02237A9A - 2 ; case 42 + .short _02237C7A - _02237A9A - 2 ; case 43 + .short _02237C82 - _02237A9A - 2 ; case 44 + .short _02237C8A - _02237A9A - 2 ; case 45 + .short _02237C92 - _02237A9A - 2 ; case 46 + .short _02237C20 - _02237A9A - 2 ; case 47 + .short _02237C26 - _02237A9A - 2 ; case 48 + .short _02237C54 - _02237A9A - 2 ; case 49 + .short _02237C98 - _02237A9A - 2 ; case 50 + .short _02237CA0 - _02237A9A - 2 ; case 51 + .short _02237CA8 - _02237A9A - 2 ; case 52 + .short _02237CB0 - _02237A9A - 2 ; case 53 + .short _02237CB8 - _02237A9A - 2 ; case 54 + .short _02237D7C - _02237A9A - 2 ; case 55 + .short _02237D7C - _02237A9A - 2 ; case 56 + .short _02237D7C - _02237A9A - 2 ; case 57 + .short _02237D7C - _02237A9A - 2 ; case 58 + .short _02237D7C - _02237A9A - 2 ; case 59 + .short _02237D7C - _02237A9A - 2 ; case 60 + .short _02237D7C - _02237A9A - 2 ; case 61 + .short _02237D7C - _02237A9A - 2 ; case 62 + .short _02237D7C - _02237A9A - 2 ; case 63 + .short _02237D7C - _02237A9A - 2 ; case 64 + .short _02237D2E - _02237A9A - 2 ; case 65 + .short _02237D4C - _02237A9A - 2 ; case 66 + .short _02237CC0 - _02237A9A - 2 ; case 67 + .short _02237CC8 - _02237A9A - 2 ; case 68 + .short _02237CD0 - _02237A9A - 2 ; case 69 + .short _02237CD8 - _02237A9A - 2 ; case 70 + .short _02237CE0 - _02237A9A - 2 ; case 71 + .short _02237CE8 - _02237A9A - 2 ; case 72 + .short _02237CF0 - _02237A9A - 2 ; case 73 + .short _02237CF8 - _02237A9A - 2 ; case 74 + .short _02237D00 - _02237A9A - 2 ; case 75 + .short _02237D08 - _02237A9A - 2 ; case 76 + .short _02237D10 - _02237A9A - 2 ; case 77 + .short _02237D18 - _02237A9A - 2 ; case 78 + .short _02237D20 - _02237A9A - 2 ; case 79 + .short _02237D28 - _02237A9A - 2 ; case 80 +_02237B3C: + ldr r4, [r5] + b _02237D7C +_02237B40: + ldr r4, [r5, #4] + b _02237D7C +_02237B44: + ldrb r0, [r5, #0x13] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _02237B50 + mov r4, #0 + b _02237B5E +_02237B50: + mov r4, #0 +_02237B52: + add r0, r5, r4 + ldrb r0, [r0, #8] + strb r0, [r7, r4] + add r4, r4, #1 + cmp r4, #0xa + blo _02237B52 +_02237B5E: + mov r0, #0xff + strb r0, [r7, r4] + b _02237D7C +_02237B64: + ldrb r4, [r5, #0x12] + b _02237D7C +_02237B68: + ldrb r0, [r5, #0x13] + lsl r0, r0, #0x1f + lsr r4, r0, #0x1f + b _02237D7C +_02237B70: + ldrb r0, [r5, #0x13] + lsl r0, r0, #0x1e + lsr r4, r0, #0x1f + b _02237D7C +_02237B78: + ldrb r0, [r5, #0x13] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1f + b _02237D7C +_02237B80: + mov r4, #0 +_02237B82: + add r0, r5, r4 + ldrb r0, [r0, #0x14] + strb r0, [r7, r4] + add r4, r4, #1 + cmp r4, #7 + blo _02237B82 + mov r0, #0xff + strb r0, [r7, r4] + b _02237D7C +_02237B94: + ldrb r4, [r5, #0x1b] + b _02237D7C +_02237B98: + ldrh r4, [r5, #0x1c] + b _02237D7C +_02237B9C: + ldrh r4, [r5, #0x1e] + b _02237D7C +_02237BA0: + ldrb r0, [r5, #0x13] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _02237BAE + mov r4, #0x67 + lsl r4, r4, #2 + b _02237D7C +_02237BAE: + ldr r0, [sp, #0xc] + ldrh r4, [r0] + b _02237D7C +_02237BB4: + ldr r0, [sp, #0xc] + ldrh r4, [r0, #2] + b _02237D7C +_02237BBA: + ldr r0, [sp, #0xc] + ldr r4, [r0, #4] + b _02237D7C +_02237BC0: + ldr r0, [sp, #0xc] + ldrb r4, [r0, #8] + b _02237D7C +_02237BC6: + ldr r0, [sp, #0xc] + ldrb r4, [r0, #9] + b _02237D7C +_02237BCC: + ldr r0, [sp] + sub r0, #0xd + lsl r1, r0, #1 + ldr r0, [sp, #8] + ldrh r4, [r0, r1] + b _02237D7C +_02237BD8: + ldr r1, [sp] + ldr r0, [sp, #8] + sub r1, #0x11 + add r0, r0, r1 + ldrb r4, [r0, #8] + b _02237D7C +_02237BE4: + ldr r0, [sp, #4] + ldrb r4, [r0] + b _02237D7C +_02237BEA: + ldr r0, [sp, #4] + ldrb r4, [r0, #1] + b _02237D7C +_02237BF0: + ldr r0, [sp, #4] + ldrb r4, [r0, #2] + b _02237D7C +_02237BF6: + ldr r0, [sp, #4] + ldrb r4, [r0, #3] + b _02237D7C +_02237BFC: + ldr r0, [sp, #4] + ldrb r4, [r0, #4] + b _02237D7C +_02237C02: + ldr r0, [sp, #4] + ldrb r4, [r0, #5] + b _02237D7C +_02237C08: + ldr r0, [sp, #4] + ldrb r4, [r0, #6] + b _02237D7C +_02237C0E: + ldr r0, [sp, #4] + ldrb r4, [r0, #7] + b _02237D7C +_02237C14: + ldr r0, [sp, #4] + ldrb r4, [r0, #8] + b _02237D7C +_02237C1A: + ldr r0, [sp, #4] + ldrb r4, [r0, #9] + b _02237D7C +_02237C20: + ldr r0, [sp, #4] + ldrb r4, [r0, #0xa] + b _02237D7C +_02237C26: + ldr r0, [sp, #4] + ldrb r4, [r0, #0xb] + b _02237D7C +_02237C2C: + ldr r0, [r6] + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + b _02237D7C +_02237C34: + ldr r0, [r6] + lsl r0, r0, #0x10 + lsr r4, r0, #0x18 + b _02237D7C +_02237C3C: + ldr r0, [r6] + lsl r0, r0, #9 + lsr r4, r0, #0x19 + b _02237D7C +_02237C44: + ldr r0, [r6] + lsl r0, r0, #5 + lsr r4, r0, #0x1c + b _02237D7C +_02237C4C: + ldr r0, [r6] + lsl r0, r0, #1 + lsr r4, r0, #0x1c + b _02237D7C +_02237C54: + ldr r0, [r6] + lsr r4, r0, #0x1f + b _02237D7C +_02237C5A: + ldr r0, [r6, #4] + lsl r0, r0, #0x1b + lsr r4, r0, #0x1b + b _02237D7C +_02237C62: + ldr r0, [r6, #4] + lsl r0, r0, #0x16 + lsr r4, r0, #0x1b + b _02237D7C +_02237C6A: + ldr r0, [r6, #4] + lsl r0, r0, #0x11 + lsr r4, r0, #0x1b + b _02237D7C +_02237C72: + ldr r0, [r6, #4] + lsl r0, r0, #0xc + lsr r4, r0, #0x1b + b _02237D7C +_02237C7A: + ldr r0, [r6, #4] + lsl r0, r0, #7 + lsr r4, r0, #0x1b + b _02237D7C +_02237C82: + ldr r0, [r6, #4] + lsl r0, r0, #2 + lsr r4, r0, #0x1b + b _02237D7C +_02237C8A: + ldr r0, [r6, #4] + lsl r0, r0, #1 + lsr r4, r0, #0x1f + b _02237D7C +_02237C92: + ldr r0, [r6, #4] + lsr r4, r0, #0x1f + b _02237D7C +_02237C98: + ldr r0, [r6, #8] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1d + b _02237D7C +_02237CA0: + ldr r0, [r6, #8] + lsl r0, r0, #0x1a + lsr r4, r0, #0x1d + b _02237D7C +_02237CA8: + ldr r0, [r6, #8] + lsl r0, r0, #0x17 + lsr r4, r0, #0x1d + b _02237D7C +_02237CB0: + ldr r0, [r6, #8] + lsl r0, r0, #0x14 + lsr r4, r0, #0x1d + b _02237D7C +_02237CB8: + ldr r0, [r6, #8] + lsl r0, r0, #0x11 + lsr r4, r0, #0x1d + b _02237D7C +_02237CC0: + ldr r0, [r6, #8] + lsl r0, r0, #0x10 + lsr r4, r0, #0x1f + b _02237D7C +_02237CC8: + ldr r0, [r6, #8] + lsl r0, r0, #0xf + lsr r4, r0, #0x1f + b _02237D7C +_02237CD0: + ldr r0, [r6, #8] + lsl r0, r0, #0xe + lsr r4, r0, #0x1f + b _02237D7C +_02237CD8: + ldr r0, [r6, #8] + lsl r0, r0, #0xd + lsr r4, r0, #0x1f + b _02237D7C +_02237CE0: + ldr r0, [r6, #8] + lsl r0, r0, #0xc + lsr r4, r0, #0x1f + b _02237D7C +_02237CE8: + ldr r0, [r6, #8] + lsl r0, r0, #0xb + lsr r4, r0, #0x1f + b _02237D7C +_02237CF0: + ldr r0, [r6, #8] + lsl r0, r0, #0xa + lsr r4, r0, #0x1f + b _02237D7C +_02237CF8: + ldr r0, [r6, #8] + lsl r0, r0, #9 + lsr r4, r0, #0x1f + b _02237D7C +_02237D00: + ldr r0, [r6, #8] + lsl r0, r0, #8 + lsr r4, r0, #0x1f + b _02237D7C +_02237D08: + ldr r0, [r6, #8] + lsl r0, r0, #7 + lsr r4, r0, #0x1f + b _02237D7C +_02237D10: + ldr r0, [r6, #8] + lsl r0, r0, #6 + lsr r4, r0, #0x1f + b _02237D7C +_02237D18: + ldr r0, [r6, #8] + lsl r0, r0, #5 + lsr r4, r0, #0x1f + b _02237D7C +_02237D20: + ldr r0, [r6, #8] + lsl r0, r0, #1 + lsr r4, r0, #0x1c + b _02237D7C +_02237D28: + ldr r0, [r6, #8] + lsr r4, r0, #0x1f + b _02237D7C +_02237D2E: + ldr r0, [sp, #0xc] + ldrh r4, [r0] + cmp r4, #0 + beq _02237D7C + ldr r0, [r6, #4] + lsl r0, r0, #1 + lsr r0, r0, #0x1f + bne _02237D46 + ldrb r0, [r5, #0x13] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _02237D7C +_02237D46: + mov r4, #0x67 + lsl r4, r4, #2 + b _02237D7C +_02237D4C: + ldr r4, [r6, #4] + lsl r0, r4, #2 + lsr r0, r0, #0x1b + lsl r6, r0, #0x19 + lsl r0, r4, #7 + lsr r0, r0, #0x1b + lsl r3, r0, #0x14 + lsl r0, r4, #0xc + lsr r0, r0, #0x1b + lsl r2, r0, #0xf + lsl r0, r4, #0x11 + lsr r0, r0, #0x1b + lsl r1, r0, #0xa + lsl r0, r4, #0x1b + lsl r4, r4, #0x16 + lsr r4, r4, #0x1b + lsr r0, r0, #0x1b + lsl r4, r4, #5 + orr r0, r4 + orr r0, r1 + orr r0, r2 + orr r0, r3 + add r4, r6, #0 + orr r4, r0 +_02237D7C: + ldr r0, [sp] + cmp r0, #0xa + ble _02237D88 + add r0, r5, #0 + bl MOD83_02237968 +_02237D88: + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD83_02237A10 + + thumb_func_start MOD83_02237D90 +MOD83_02237D90: ; 0x02237D90 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + mov r7, #0 + cmp r6, #0xa + ble _02237E04 + ldr r1, [r4] + add r2, r7, #0 + bl MOD83_0223746C + add r7, r0, #0 + ldr r1, [r4] + add r0, r4, #0 + mov r2, #1 + bl MOD83_0223746C + ldr r1, [r4] + add r0, r4, #0 + mov r2, #2 + bl MOD83_0223746C + ldr r1, [r4] + add r0, r4, #0 + mov r2, #3 + bl MOD83_0223746C + str r0, [sp] + add r0, r4, #0 + bl MOD83_02237948 + add r0, r4, #0 + bl MOD83_02237988 + ldrh r1, [r4, #0x1c] + cmp r0, r1 + beq _02237E04 + ldrb r1, [r4, #0x13] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #0x13] + ldrb r1, [r4, #0x13] + mov r0, #4 + orr r0, r1 + strb r0, [r4, #0x13] + ldr r0, [sp] + ldr r1, [r0, #4] + mov r0, #1 + lsl r0, r0, #0x1e + orr r1, r0 + ldr r0, [sp] + str r1, [r0, #4] + add r0, r4, #0 + bl MOD83_02237968 + pop {r3, r4, r5, r6, r7, pc} +_02237E04: + cmp r6, #0xb + bhi _02237EA8 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237E14: ; jump table + .short _02237EA8 - _02237E14 - 2 ; case 0 + .short _02237EA8 - _02237E14 - 2 ; case 1 + .short _02237E2C - _02237E14 - 2 ; case 2 + .short _02237E3C - _02237E14 - 2 ; case 3 + .short _02237E42 - _02237E14 - 2 ; case 4 + .short _02237E54 - _02237E14 - 2 ; case 5 + .short _02237E66 - _02237E14 - 2 ; case 6 + .short _02237E78 - _02237E14 - 2 ; case 7 + .short _02237EA8 - _02237E14 - 2 ; case 8 + .short _02237EA8 - _02237E14 - 2 ; case 9 + .short _02237EA8 - _02237E14 - 2 ; case 10 + .short _02237E88 - _02237E14 - 2 ; case 11 +_02237E2C: + mov r2, #0 +_02237E2E: + ldrb r1, [r5, r2] + add r0, r4, r2 + add r2, r2, #1 + strb r1, [r0, #8] + cmp r2, #0xa + blt _02237E2E + b _02237EA8 +_02237E3C: + ldrb r0, [r5] + strb r0, [r4, #0x12] + b _02237EA8 +_02237E42: + ldrb r0, [r4, #0x13] + ldrb r2, [r5] + mov r1, #1 + bic r0, r1 + mov r1, #1 + and r1, r2 + orr r0, r1 + strb r0, [r4, #0x13] + b _02237EA8 +_02237E54: + ldrb r0, [r4, #0x13] + mov r1, #2 + bic r0, r1 + ldrb r1, [r5] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1e + orr r0, r1 + strb r0, [r4, #0x13] + b _02237EA8 +_02237E66: + ldrb r0, [r4, #0x13] + mov r1, #4 + bic r0, r1 + ldrb r1, [r5] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1d + orr r0, r1 + strb r0, [r4, #0x13] + b _02237EA8 +_02237E78: + mov r2, #0 +_02237E7A: + ldrb r1, [r5, r2] + add r0, r4, r2 + add r2, r2, #1 + strb r1, [r0, #0x14] + cmp r2, #7 + blt _02237E7A + b _02237EA8 +_02237E88: + ldrb r0, [r5, #1] + ldrb r1, [r5] + lsl r0, r0, #8 + add r0, r1, r0 + strh r0, [r7] + ldrh r0, [r7] + ldrb r1, [r4, #0x13] + cmp r0, #0 + beq _02237EA2 + mov r0, #2 + orr r0, r1 + strb r0, [r4, #0x13] + b _02237EA8 +_02237EA2: + mov r0, #2 + bic r1, r0 + strb r1, [r4, #0x13] +_02237EA8: + cmp r6, #0xa + ble _02237EBA + add r0, r4, #0 + bl MOD83_02237988 + strh r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD83_02237968 +_02237EBA: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD83_02237D90 + + thumb_func_start MOD83_02237EBC +MOD83_02237EBC: ; 0x02237EBC + ldr r2, _02237ED4 ; =0x00000115 + cmp r0, r2 + blt _02237ED2 + add r1, r2, #0 + add r1, #0x86 + cmp r0, r1 + bgt _02237ED2 + sub r0, r0, r2 + lsl r1, r0, #1 + ldr r0, _02237ED8 ; =0x0223B57C + ldrh r0, [r0, r1] +_02237ED2: + bx lr + .align 2, 0 +_02237ED4: .word 0x00000115 +_02237ED8: .word 0x0223B57C + thumb_func_end MOD83_02237EBC + + thumb_func_start MOD83_02237EDC +MOD83_02237EDC: ; 0x02237EDC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0xb + mov r2, #0 + bl MOD83_02237A10 + bl MOD83_02237EBC + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x19 + mov r2, #0 + bl MOD83_02237A10 + add r1, r0, #0 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02068800 + pop {r3, r4, r5, pc} + thumb_func_end MOD83_02237EDC + + thumb_func_start MOD83_02237F04 +MOD83_02237F04: ; 0x02237F04 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0 + mov r1, #0x2e + mov r2, #0 + bl MOD83_02237A10 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x19 + bl FUN_02068678 + cmp r0, #0 + beq _02237F5E + ldr r2, _02237F68 ; =0x0223B4C0 + mov r4, #0 +_02237F32: + ldrh r1, [r2] + cmp r5, r1 + bne _02237F42 + add r0, r5, #0 + mov r1, #0x18 + bl FUN_02068678 + b _02237F4A +_02237F42: + add r4, r4, #1 + add r2, r2, #2 + cmp r4, #0x5e + blo _02237F32 +_02237F4A: + cmp r4, #0x5e + bne _02237F66 + mov r1, #1 + tst r1, r6 + bne _02237F66 + add r0, r5, #0 + mov r1, #0x18 + bl FUN_02068678 + pop {r4, r5, r6, pc} +_02237F5E: + add r0, r5, #0 + mov r1, #0x18 + bl FUN_02068678 +_02237F66: + pop {r4, r5, r6, pc} + .align 2, 0 +_02237F68: .word 0x0223B4C0 + thumb_func_end MOD83_02237F04 + + thumb_func_start MOD83_02237F6C +MOD83_02237F6C: ; 0x02237F6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_020669A0 + add r0, r4, #0 + bl FUN_02066A6C + mov r1, #0 + str r0, [sp] + add r0, r6, #0 + add r2, r1, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0xb + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + bl MOD83_02237EBC + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #5 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0xc + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + cmp r0, #0 + beq _02237FCE + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206E6D8 + str r0, [sp, #8] +_02237FCE: + add r0, r4, #0 + mov r1, #6 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #1 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #7 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x19 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #8 + add r2, sp, #8 + bl FUN_02067960 + mov r0, #0x46 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #9 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + add r1, r4, #0 + bl MOD83_02237F04 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xa + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #8 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xb + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #3 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0xc + add r2, sp, #4 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x1a + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xd + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x1b + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xe + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x1c + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xf + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x1d + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x10 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x1e + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x11 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x1f + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x12 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x16 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x13 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x17 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x14 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x18 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x15 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x21 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x16 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x2f + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x17 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x30 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x18 + add r2, sp, #8 + bl FUN_02067960 + mov r5, #0 + add r7, r5, #0 +_0223815E: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0xd + mov r2, #0 + bl MOD83_02237A10 + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x36 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x15 + mov r2, #0 + bl MOD83_02237A10 + mov r1, #3 + lsl r1, r7 + str r0, [sp, #8] + and r0, r1 + lsr r0, r7 + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x3e + add r2, sp, #8 + bl FUN_02067960 + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x42 + mov r2, #0 + bl FUN_020672BC + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x3a + add r2, sp, #8 + bl FUN_02067960 + add r5, r5, #1 + add r7, r7, #2 + cmp r5, #4 + blt _0223815E + add r0, r6, #0 + mov r1, #0x27 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x46 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x28 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x47 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x29 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x48 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x2a + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x49 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x2b + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x4a + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x2c + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x4b + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x2d + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x4c + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x32 + mov r2, #0 + bl MOD83_02237A10 + add r7, r0, #0 + cmp r7, #4 + bgt _02238282 + mov r5, #0 + cmp r7, #0 + ble _02238282 +_0223826C: + mov r0, #1 + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x4e + add r2, sp, #8 + bl FUN_02067960 + add r5, r5, #1 + cmp r5, r7 + blt _0223826C +_02238282: + add r0, r6, #0 + mov r1, #0x33 + mov r2, #0 + bl MOD83_02237A10 + add r7, r0, #0 + cmp r7, #4 + bgt _022382AE + mov r5, #0 + cmp r7, #0 + ble _022382AE +_02238298: + mov r0, #1 + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x52 + add r2, sp, #8 + bl FUN_02067960 + add r5, r5, #1 + cmp r5, r7 + blt _02238298 +_022382AE: + add r0, r6, #0 + mov r1, #0x34 + mov r2, #0 + bl MOD83_02237A10 + add r7, r0, #0 + cmp r7, #4 + bgt _022382DA + mov r5, #0 + cmp r7, #0 + ble _022382DA +_022382C4: + mov r0, #1 + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x56 + add r2, sp, #8 + bl FUN_02067960 + add r5, r5, #1 + cmp r5, r7 + blt _022382C4 +_022382DA: + add r0, r6, #0 + mov r1, #0x35 + mov r2, #0 + bl MOD83_02237A10 + add r7, r0, #0 + cmp r7, #4 + bgt _02238306 + mov r5, #0 + cmp r7, #0 + ble _02238306 +_022382F0: + mov r0, #1 + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x5a + add r2, sp, #8 + bl FUN_02067960 + add r5, r5, #1 + cmp r5, r7 + blt _022382F0 +_02238306: + add r0, r6, #0 + mov r1, #0x36 + mov r2, #0 + bl MOD83_02237A10 + add r7, r0, #0 + cmp r7, #4 + bgt _02238332 + mov r5, #0 + cmp r7, #0 + ble _02238332 +_0223831C: + mov r0, #1 + add r1, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, #0x5e + add r2, sp, #8 + bl FUN_02067960 + add r5, r5, #1 + cmp r5, r7 + blt _0223831C +_02238332: + add r0, r6, #0 + mov r1, #0x43 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x62 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x44 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x63 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x45 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x64 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x46 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x65 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x47 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x66 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x48 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x67 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x49 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x68 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x4a + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x69 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x4b + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x6a + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x6b + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x4d + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x6c + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x4e + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x6d + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x50 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x6e + add r2, sp, #8 + bl FUN_02067960 + add r0, r4, #0 + bl FUN_020689E8 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x6f + add r2, sp, #8 + bl FUN_02067960 + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + cmp r0, #0xc9 + bne _022384AE + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + bl MOD83_02237A10 + add r3, r0, #0 + mov r7, #3 + lsl r0, r7, #8 + and r0, r3 + lsr r1, r0, #6 + lsl r0, r7, #0x18 + and r0, r3 + lsr r5, r0, #0x12 + lsl r0, r7, #0x10 + and r0, r3 + lsr r0, r0, #0xc + add r2, r3, #0 + orr r0, r5 + orr r0, r1 + and r2, r7 + str r3, [sp, #8] + orr r0, r2 + mov r1, #0x1c + bl _u32_div_f + str r1, [sp, #8] + add r0, r4, #0 + mov r1, #0x70 + add r2, sp, #8 + bl FUN_02067960 +_022384AE: + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + ldr r1, _022385F0 ; =0x00000182 + cmp r0, r1 + bne _022384FE + ldr r0, _022385F4 ; =0x021C4918 + ldrb r0, [r0, #6] + cmp r0, #5 + bhi _022384DE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022384D2: ; jump table + .short _022384DE - _022384D2 - 2 ; case 0 + .short _022384DE - _022384D2 - 2 ; case 1 + .short _022384DE - _022384D2 - 2 ; case 2 + .short _022384F0 - _022384D2 - 2 ; case 3 + .short _022384E4 - _022384D2 - 2 ; case 4 + .short _022384EA - _022384D2 - 2 ; case 5 +_022384DE: + mov r0, #0 + str r0, [sp, #8] + b _022384F4 +_022384E4: + mov r0, #1 + str r0, [sp, #8] + b _022384F4 +_022384EA: + mov r0, #2 + str r0, [sp, #8] + b _022384F4 +_022384F0: + mov r0, #3 + str r0, [sp, #8] +_022384F4: + add r0, r4, #0 + mov r1, #0x70 + add r2, sp, #8 + bl FUN_02067960 +_022384FE: + add r0, r6, #0 + mov r1, #2 + add r2, sp, #0x24 + bl MOD83_02237A10 + ldr r3, [sp, #4] + add r0, sp, #0x24 + add r1, sp, #0xc + mov r2, #0xc + bl FUN_02015D88 + add r0, r4, #0 + mov r1, #0x75 + add r2, sp, #0xc + bl FUN_02067960 + add r0, r6, #0 + mov r1, #3 + mov r2, #0 + bl MOD83_02237A10 + ldr r1, _022385F8 ; =0x020ECAC4 + ldrb r1, [r1] + cmp r1, r0 + beq _0223853E + mov r0, #1 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x4d + add r2, sp, #8 + bl FUN_02067960 +_0223853E: + add r0, r6, #0 + mov r1, #0x25 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x79 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #7 + add r2, sp, #0x24 + bl MOD83_02237A10 + ldr r3, [sp, #4] + add r0, sp, #0x24 + add r1, sp, #0xc + mov r2, #8 + bl FUN_02015D88 + add r0, r4, #0 + mov r1, #0x8f + add r2, sp, #0xc + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x23 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x98 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x22 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x99 + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x26 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x9a + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x24 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x9b + add r2, sp, #8 + bl FUN_02067960 + add r0, r6, #0 + mov r1, #0x31 + mov r2, #0 + bl MOD83_02237A10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x9c + add r2, sp, #8 + bl FUN_02067960 + ldr r1, [sp] + add r0, r4, #0 + bl FUN_02066A94 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_022385F0: .word 0x00000182 +_022385F4: .word 0x021C4918 +_022385F8: .word 0x020ECAC4 + thumb_func_end MOD83_02237F6C + + thumb_func_start MOD83_022385FC +MOD83_022385FC: ; 0x022385FC + ldr r1, _02238604 ; =0x0223BC2C + str r0, [r1] + bx lr + nop +_02238604: .word 0x0223BC2C + thumb_func_end MOD83_022385FC + + thumb_func_start MOD83_02238608 +MOD83_02238608: ; 0x02238608 + add r1, r0, #0 + ldr r0, _02238614 ; =0x0223BC2C + ldr r3, _02238618 ; =FUN_02016998 + ldr r0, [r0] + bx r3 + nop +_02238614: .word 0x0223BC2C +_02238618: .word FUN_02016998 + thumb_func_end MOD83_02238608 + + thumb_func_start MOD83_0223861C +MOD83_0223861C: ; 0x0223861C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x130 + bl CTRDG_GetAgbGameCode + lsr r1, r0, #0x18 + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + lsr r1, r0, #0x10 + lsl r3, r0, #0x18 + lsr r0, r0, #8 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #8 + lsr r1, r1, #0x10 + orr r0, r3 + orr r0, r1 + add r6, r2, #0 + orr r6, r0 + ldr r0, _022386B0 ; =0x0223B69C + mov r4, #0 + ldr r0, [r0] + cmp r0, #0 + bls _022386A6 + ldr r5, _022386B4 ; =0x0223B69C + add r7, sp, #0x80 +_02238652: + ldr r0, [r5] + cmp r6, r0 + bne _0223869C + mov r0, #1 + bl CTRDG_Enable + mov r0, #0x81 + ldr r2, _022386B8 ; =0x000004A8 + lsl r0, r0, #0x14 + add r1, r7, #0 + bl CTRDG_CpuCopy8 + ldr r0, _022386BC ; =0x08020000 + add r1, sp, #0 + mov r2, #0x80 + bl CTRDG_CpuCopy8 + mov r0, #0 + bl CTRDG_Enable + ldr r0, _022386C0 ; =MOD83_02238608 + ldr r1, _022386C4 ; =FUN_02016A18 + bl SetCustomAllocator + ldr r1, _022386B8 ; =0x000004A8 + ldr r3, _022386C8 ; =0x0223A6B4 + add r0, r7, #0 + add r2, sp, #0 + bl FUN_020910EC + cmp r0, #0 + beq _0223869C + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x130 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223869C: + add r5, r5, #4 + ldr r0, [r5] + add r4, r4, #1 + cmp r4, r0 + blo _02238652 +_022386A6: + mov r0, #0 + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x130 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022386B0: .word 0x0223B69C +_022386B4: .word 0x0223B69C +_022386B8: .word 0x000004A8 +_022386BC: .word 0x08020000 +_022386C0: .word MOD83_02238608 +_022386C4: .word FUN_02016A18 +_022386C8: .word 0x0223A6B4 + thumb_func_end MOD83_0223861C + + thumb_func_start MOD83_022386CC +MOD83_022386CC: ; 0x022386CC + push {r3, lr} + bl CTRDG_Init + bl CTRDG_IsAgbCartridge + cmp r0, #0 + bne _022386DE + mov r0, #0 + pop {r3, pc} +_022386DE: + bl CTRDG_GetAgbMakerCode + ldr r1, _022386FC ; =0x00003130 + cmp r0, r1 + beq _022386EC + mov r0, #0 + pop {r3, pc} +_022386EC: + bl MOD83_0223861C + cmp r0, #0 + beq _022386F8 + mov r0, #1 + pop {r3, pc} +_022386F8: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_022386FC: .word 0x00003130 + thumb_func_end MOD83_022386CC + + thumb_func_start MOD83_02238700 +MOD83_02238700: ; 0x02238700 + push {r3, lr} + bl MOD83_022386CC + cmp r0, #0 + bne _0223870E + mov r0, #0 + pop {r3, pc} +_0223870E: + mov r0, #1 + bl CTRDG_Enable + mov r0, #0x81 + lsl r0, r0, #0x14 + add r1, sp, #0 + bl CTRDG_Read32 + mov r0, #0 + bl CTRDG_Enable + ldr r0, [sp] + pop {r3, pc} + thumb_func_end MOD83_02238700 + + thumb_func_start MOD83_02238728 +MOD83_02238728: ; 0x02238728 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD83_022386CC + cmp r0, #0 + bne _0223873A + mov r0, #0 + pop {r3, r4, r5, pc} +_0223873A: + cmp r4, #0 + bne _02238744 + bl MOD83_02238700 + add r4, r0, #0 +_02238744: + mov r0, #1 + bl CTRDG_Enable + ldr r0, _0223876C ; =0x08100100 + add r1, r5, #0 + add r2, r4, #0 + bl CTRDG_CpuCopy16 + add r4, r0, #0 + mov r0, #0 + bl CTRDG_Enable + bl CTRDG_IsExisting + cmp r0, #0 + bne _02238768 + mov r0, #0 + pop {r3, r4, r5, pc} +_02238768: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223876C: .word 0x08100100 + thumb_func_end MOD83_02238728 + + thumb_func_start MOD83_02238770 +MOD83_02238770: ; 0x02238770 + push {r3, r4, r5, r6} + add r4, r0, #0 + mov r0, #0 + ldr r6, _02238798 ; =0x0223BC30 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + mov r5, #0x75 +_02238780: + stmia r6!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + sub r5, r5, #1 + bne _02238780 + str r0, [r6] + ldr r0, _0223879C ; =0x0223BC30 + mov r1, #1 + str r1, [r0] + str r4, [r0, #4] + pop {r3, r4, r5, r6} + bx lr + nop +_02238798: .word 0x0223BC30 +_0223879C: .word 0x0223BC30 + thumb_func_end MOD83_02238770 + + thumb_func_start MOD83_022387A0 +MOD83_022387A0: ; 0x022387A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r1, #0 + mov r0, #3 + add r2, r3, #0 + bl FUN_0201681C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02006268 + mov r1, #0 + add r2, r4, #0 + add r5, r0, #0 + bl Call_FillMemWithValue + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD83_022387A0 + + thumb_func_start MOD83_022387D8 +MOD83_022387D8: ; 0x022387D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r5, _0223885C ; =0x0223A760 + add r6, r3, #0 + add r7, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + cmp r2, #4 + str r0, [r3] + add r0, sp, #0 + strb r2, [r0, #0x10] + bhi _02238832 + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223880A: ; jump table + .short _02238832 - _0223880A - 2 ; case 0 + .short _02238814 - _0223880A - 2 ; case 1 + .short _0223881C - _0223880A - 2 ; case 2 + .short _02238824 - _0223880A - 2 ; case 3 + .short _0223882C - _0223880A - 2 ; case 4 +_02238814: + mov r0, #2 + lsl r0, r0, #0xa + str r0, [sp, #8] + b _02238832 +_0223881C: + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #8] + b _02238832 +_02238824: + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #8] + b _02238832 +_0223882C: + mov r0, #2 + lsl r0, r0, #0xc + str r0, [sp, #8] +_02238832: + lsr r1, r6, #0xb + add r0, sp, #0 + strb r1, [r0, #0x12] + ldr r1, [sp, #0x30] + add r2, sp, #0 + lsr r1, r1, #0xe + strb r1, [r0, #0x13] + lsl r1, r4, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + mov r3, #0 + bl FUN_02016C18 + lsl r1, r4, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + bl FUN_02018744 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0223885C: .word 0x0223A760 + thumb_func_end MOD83_022387D8 + + thumb_func_start MOD83_02238860 +MOD83_02238860: ; 0x02238860 + ldr r1, _02238868 ; =0x0223BC30 + str r0, [r1, #0xc] + bx lr + nop +_02238868: .word 0x0223BC30 + thumb_func_end MOD83_02238860 + + thumb_func_start MOD83_0223886C +MOD83_0223886C: ; 0x0223886C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #0xc] + ldr r0, _022388C0 ; =0x0223BC30 + add r5, r1, #0 + ldr r0, [r0, #0xc] + add r4, r2, #0 + add r6, r3, #0 + ldr r7, _022388C4 ; =0x0223BC30 + cmp r0, #0 + bne _0223889C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r7, #4] + ldr r1, [sp, #0xc] + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _022388B4 +_0223889C: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r7, #4] + ldr r1, [sp, #0xc] + str r0, [sp, #8] + ldr r3, _022388C8 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 +_022388B4: + cmp r4, #0 + beq _022388BA + str r6, [r4] +_022388BA: + str r5, [r7, #8] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022388C0: .word 0x0223BC30 +_022388C4: .word 0x0223BC30 +_022388C8: .word 0x00007FFF + thumb_func_end MOD83_0223886C + + thumb_func_start MOD83_022388CC +MOD83_022388CC: ; 0x022388CC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, _022388E0 ; =0x0223BC30 + bl FUN_0200E308 + cmp r0, #0 + beq _022388DE + ldr r0, [r5, #8] + str r0, [r4] +_022388DE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022388E0: .word 0x0223BC30 + thumb_func_end MOD83_022388CC + + thumb_func_start MOD83_022388E4 +MOD83_022388E4: ; 0x022388E4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + mov r1, #0 + mov r2, #0x54 + add r5, r0, #0 + add r7, r3, #0 + bl Call_FillMemWithValue + mov r0, #1 + str r0, [r5, #4] + str r0, [r5, #8] + sub r0, r0, #2 + str r0, [r5, #0x4c] + str r4, [r5, #0x10] + str r6, [r5, #0x30] + ldr r0, [sp, #0x18] + str r7, [r5, #0x34] + str r0, [r5, #0x38] + ldr r0, [sp, #0x1c] + mov r2, #0 + str r0, [r5, #0x3c] + str r2, [r5, #0x2c] + ldr r0, _02238930 ; =0x0001020F + str r2, [r5, #0x40] + str r0, [r5, #0x44] + add r0, r5, #0 + mov r1, #0xf + add r0, #0x48 + strb r1, [r0] + str r2, [r5] + str r2, [r5, #0x24] + str r2, [r5, #0x20] + str r2, [r5, #0x14] + mov r0, #0xff + str r0, [r5, #0x50] + pop {r3, r4, r5, r6, r7, pc} + nop +_02238930: .word 0x0001020F + thumb_func_end MOD83_022388E4 + + thumb_func_start MOD83_02238934 +MOD83_02238934: ; 0x02238934 + str r1, [r0, #0x18] + str r2, [r0, #0x1c] + str r3, [r0, #0x28] + bx lr + thumb_func_end MOD83_02238934 + + thumb_func_start MOD83_0223893C +MOD83_0223893C: ; 0x0223893C + str r1, [r0] + str r2, [r0, #0x40] + bx lr + .align 2, 0 + thumb_func_end MOD83_0223893C + + thumb_func_start MOD83_02238944 +MOD83_02238944: ; 0x02238944 + str r1, [r0, #0x20] + str r2, [r0, #0x24] + bx lr + .align 2, 0 + thumb_func_end MOD83_02238944 + + thumb_func_start MOD83_0223894C +MOD83_0223894C: ; 0x0223894C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + ldr r4, _02238A34 ; =0x0223BC30 + cmp r1, r0 + beq _02238A2A + ldr r0, [r5, #0x4c] + cmp r0, r1 + beq _02238A2A + str r1, [r5, #0x4c] + ldr r0, [r5, #8] + cmp r0, #1 + bne _02238976 + add r1, r5, #0 + add r1, #0x48 + ldrb r1, [r1] + ldr r0, [r5, #0x10] + bl FUN_02019620 +_02238976: + mov r0, #0 + ldr r1, [r5, #0x4c] + mvn r0, r0 + cmp r1, r0 + beq _02238A2A + ldr r2, [r5, #0x34] + ldr r3, [r4, #4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + ldr r6, [r5, #0x14] + str r0, [sp, #0x10] + cmp r6, #0 + bne _0223899C + ldr r0, [r4, #4] + bl FUN_0200AA80 + add r6, r0, #0 +_0223899C: + ldr r1, [sp, #0x10] + ldr r2, [r5, #0x4c] + ldr r3, [r4, #4] + add r0, r6, #0 + bl FUN_0200A9C4 + add r4, r0, #0 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _022389D0 + ldr r0, [r5, #0x24] + add r2, r4, #0 + str r0, [sp] + ldr r0, [r5, #0x50] + str r0, [sp, #4] + ldr r0, [r5, #0x44] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x40] + ldr r3, [r5, #0x20] + bl FUN_0201BDE0 + add r7, r0, #0 + b _02238A12 +_022389D0: + ldr r0, [r5, #0x40] + mov r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02002E4C + add r2, r0, #0 + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl FUN_02002E14 + add r7, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r3, r0, r7 + ldr r0, [r5, #0x24] + add r2, r4, #0 + str r0, [sp] + ldr r0, [r5, #0x50] + str r0, [sp, #4] + ldr r0, [r5, #0x44] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x40] + bl FUN_0201BDE0 + add r7, r0, #0 + mov r0, #0 + str r0, [r5, #0xc] +_02238A12: + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [r5, #0x14] + cmp r0, #0 + bne _02238A24 + add r0, r6, #0 + bl FUN_0200AB18 +_02238A24: + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 +_02238A2A: + mov r0, #0xff + str r0, [r5, #0x50] + add r0, r7, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238A34: .word 0x0223BC30 + thumb_func_end MOD83_0223894C + + thumb_func_start MOD83_02238A38 +MOD83_02238A38: ; 0x02238A38 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + ldr r1, [r4, #0x10] + add r6, r2, #0 + ldr r2, [r1] + add r5, r3, #0 + cmp r2, #0 + bne _02238A8A + lsl r2, r5, #0x18 + lsr r2, r2, #0x18 + str r2, [sp] + ldr r2, [r4, #0x18] + lsl r3, r6, #0x18 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldr r2, [r4, #0x1c] + lsr r3, r3, #0x18 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #8] + ldr r2, [r4, #0x30] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #0xc] + ldr r2, [r4, #0x28] + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + str r2, [sp, #0x10] + ldr r2, [r4, #0x2c] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02019064 + ldr r1, [sp, #0x28] + add r0, r4, #0 + bl MOD83_0223894C + add r5, r0, #0 + b _02238AB8 +_02238A8A: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _02238A9C + add r0, r1, #0 + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201AB1C +_02238A9C: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _02238AAE + lsl r1, r5, #0x18 + ldr r0, [r4, #0x10] + lsr r1, r1, #0x18 + bl FUN_0201AB20 +_02238AAE: + ldr r1, [sp, #0x28] + add r0, r4, #0 + bl MOD83_0223894C + add r5, r0, #0 +_02238AB8: + ldr r0, [r4, #4] + cmp r0, #1 + bne _02238AEC + ldr r0, [r4] + cmp r0, #0 + ldr r0, [r4, #0x10] + bne _02238ADA + ldr r2, [r4, #0x38] + ldr r3, [r4, #0x3c] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_0200CCA4 + b _02238AEC +_02238ADA: + ldr r2, [r4, #0x38] + ldr r3, [r4, #0x3c] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_0200D0BC +_02238AEC: + add r0, r5, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD83_02238A38 + + thumb_func_start MOD83_02238AF4 +MOD83_02238AF4: ; 0x02238AF4 + ldr r1, [r0, #0x18] + ldr r0, [r0, #0x1c] + mul r0, r1 + bx lr + thumb_func_end MOD83_02238AF4 + + thumb_func_start MOD83_02238AFC +MOD83_02238AFC: ; 0x02238AFC + push {r4, lr} + sub sp, #0x10 + ldr r4, _02238B30 ; =0x0223A734 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, _02238B34 ; =0x0223BC30 + ldr r0, [r0, #4] + str r0, [sp, #0xc] + add r0, r2, #0 + bl FUN_0201D040 + ldr r1, _02238B34 ; =0x0223BC30 + mov r0, #0x14 + ldr r1, [r1, #4] + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02238B30: .word 0x0223A734 +_02238B34: .word 0x0223BC30 + thumb_func_end MOD83_02238AFC + + thumb_func_start MOD83_02238B38 +MOD83_02238B38: ; 0x02238B38 + ldr r0, _02238B48 ; =0x0223BC30 + ldr r0, [r0, #0x30] + cmp r0, #0 + beq _02238B44 + mov r0, #1 + bx lr +_02238B44: + mov r0, #0 + bx lr + .align 2, 0 +_02238B48: .word 0x0223BC30 + thumb_func_end MOD83_02238B38 + + thumb_func_start MOD83_02238B4C +MOD83_02238B4C: ; 0x02238B4C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r6, _02238BB4 ; =0x0223BC30 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7e + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + ldr r2, _02238BB8 ; =0x0223BC30 + str r3, [sp, #0xc] + ldr r2, [r2, #4] + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + ldr r2, _02238BB8 ; =0x0223BC30 + ldr r1, _02238BBC ; =0x0223BC64 + ldr r2, [r2, #4] + mov r0, #0x46 + bl FUN_02008C9C + ldr r1, _02238BB8 ; =0x0223BC30 + mov r2, #1 + str r0, [r1, #0x30] + ldr r0, _02238BBC ; =0x0223BC64 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r1, #3 + mov r7, #0x57 + ldr r0, _02238BC0 ; =0x0223BE30 + lsl r1, r1, #0x12 + str r1, [r0, #0xc] + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02238B9C: + ldr r2, [r6, #4] + mov r0, #3 + add r1, r4, #0 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02238B9C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238BB4: .word 0x0223BC30 +_02238BB8: .word 0x0223BC30 +_02238BBC: .word 0x0223BC64 +_02238BC0: .word 0x0223BE30 + thumb_func_end MOD83_02238B4C + + thumb_func_start MOD83_02238BC4 +MOD83_02238BC4: ; 0x02238BC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + ldr r4, [sp, #0x54] + add r6, r0, #0 + mov ip, r1 + str r2, [sp, #0x2c] + str r3, [sp, #0x30] + ldr r5, _02238D30 ; =0x0223BC30 + cmp r4, #0 + bne _02238BDC + mov r7, #1 + b _02238BDE +_02238BDC: + mov r7, #2 +_02238BDE: + mov r0, #1 + str r0, [sp, #0x34] + cmp r6, #0x10 + bne _02238BEA + mov r0, #0 + str r0, [sp, #0x34] +_02238BEA: + mov r1, #0 + mvn r1, r1 + mov r0, ip + cmp r0, r1 + beq _02238C18 + str r4, [sp] + str r7, [sp, #4] + ldr r0, [r5, #4] + ldr r3, [sp, #0x34] + str r0, [sp, #8] + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + mov r2, ip + bl FUN_02008F34 + mov r1, #0x18 + mul r1, r4 + add r2, r5, r1 + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r2, r1] +_02238C18: + mov r1, #0 + ldr r0, [sp, #0x2c] + mvn r1, r1 + cmp r0, r1 + beq _02238C4A + str r4, [sp] + str r7, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, [r5, #4] + ldr r2, [sp, #0x2c] + str r0, [sp, #0xc] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r6, #0 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x18 + mul r1, r4 + add r2, r5, r1 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r2, r1] +_02238C4A: + mov r1, #0 + ldr r0, [sp, #0x30] + mvn r1, r1 + cmp r0, r1 + beq _02238C7A + str r4, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r2, [sp, #0x30] + str r0, [sp, #8] + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [sp, #0x34] + add r1, r6, #0 + bl FUN_020090AC + mov r1, #0x18 + mul r1, r4 + add r2, r5, r1 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r2, r1] +_02238C7A: + mov r0, #0 + ldr r2, [sp, #0x50] + mvn r0, r0 + cmp r2, r0 + beq _02238CA8 + str r4, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r3, [sp, #0x34] + str r0, [sp, #8] + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_020090AC + mov r1, #0x18 + add r2, r4, #0 + mul r2, r1 + add r2, r5, r2 + lsl r1, r1, #4 + str r0, [r2, r1] +_02238CA8: + mov r0, #0x18 + add r6, r4, #0 + mul r6, r0 + mov r0, #0x5d + add r1, r5, r6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009A50 + mov r0, #0x5e + add r1, r5, r6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009CF0 + mov r0, #0 + mov r2, #0x57 + str r4, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r3, r4, #0 + str r1, [sp, #0x14] + add r1, r2, #4 + ldr r1, [r5, r1] + str r1, [sp, #0x18] + add r1, r2, #0 + add r1, #8 + ldr r1, [r5, r1] + str r1, [sp, #0x1c] + add r1, r2, #0 + add r1, #0xc + ldr r1, [r5, r1] + add r2, #0x48 + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + mov r0, #0x24 + add r1, r5, r2 + mul r0, r4 + add r0, r1, r0 + add r1, r4, #0 + add r2, r4, #0 + bl FUN_02008AA4 + cmp r4, #0 + bne _02238D1A + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + b _02238D22 +_02238D1A: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C +_02238D22: + ldr r0, _02238D34 ; =MOD83_02238F00 + mov r1, #0 + bl FUN_02015F10 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02238D30: .word 0x0223BC30 +_02238D34: .word MOD83_02238F00 + thumb_func_end MOD83_02238BC4 + + thumb_func_start MOD83_02238D38 +MOD83_02238D38: ; 0x02238D38 + push {r4, lr} + add r2, r0, #0 + add r4, r1, #0 + add r1, r2, #0 + ldr r0, _02238D50 ; =0x0223BC64 + add r2, r4, #0 + bl FUN_02008D24 + ldr r0, _02238D54 ; =0x0223BE30 + str r4, [r0, #0xc] + pop {r4, pc} + nop +_02238D50: .word 0x0223BC64 +_02238D54: .word 0x0223BE30 + thumb_func_end MOD83_02238D38 + + thumb_func_start MOD83_02238D58 +MOD83_02238D58: ; 0x02238D58 + push {r4, lr} + ldr r0, _02238DB4 ; =0x0223BE30 + ldr r4, _02238DB8 ; =0x0223BC30 + ldr r0, [r0, #4] + cmp r0, #0 + beq _02238DA6 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + bne _02238DA2 + sub r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02020128 + cmp r0, #0 + bne _02238D86 + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 +_02238D86: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + mov r1, #6 + ldr r2, [r0, #4] + lsl r1, r1, #0x12 + cmp r2, r1 + bge _02238DA6 + lsr r1, r1, #7 + add r1, r2, r1 + str r1, [r0, #4] + b _02238DA6 +_02238DA2: + sub r1, r1, #1 + str r1, [r4, r0] +_02238DA6: + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _02238DB0 + bl FUN_0201FDEC +_02238DB0: + pop {r4, pc} + nop +_02238DB4: .word 0x0223BE30 +_02238DB8: .word 0x0223BC30 + thumb_func_end MOD83_02238D58 + + thumb_func_start MOD83_02238DBC +MOD83_02238DBC: ; 0x02238DBC + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r1, #0 + ldr r1, _02238E44 ; =0x0223BC30 + bne _02238E1E + ldr r4, [r1, #0x30] + lsl r2, r2, #0xc + str r4, [sp] + mov r4, #0x69 + lsl r4, r4, #2 + add r5, r1, r4 + mov r4, #0x24 + mul r4, r0 + add r4, r5, r4 + str r4, [sp, #4] + mov r4, #1 + lsl r4, r4, #0xc + mov r5, #0 + str r5, [sp, #0x10] + str r4, [sp, #0x14] + str r4, [sp, #0x18] + str r4, [sp, #0x1c] + add r4, sp, #0 + strh r5, [r4, #0x20] + str r2, [sp, #8] + lsl r2, r3, #0xc + str r2, [sp, #0xc] + mov r2, #0xa + str r2, [sp, #0x24] + cmp r0, #0 + bne _02238DFE + mov r2, #1 + b _02238E00 +_02238DFE: + mov r2, #2 +_02238E00: + ldr r0, [r1, #4] + str r2, [sp, #0x28] + str r0, [sp, #0x2c] + cmp r2, #2 + bne _02238E16 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r2, [sp, #0xc] + ldr r0, [r1, r0] + add r0, r2, r0 + str r0, [sp, #0xc] +_02238E16: + add r0, sp, #0 + bl FUN_0201FE94 + add r4, r0, #0 +_02238E1E: + add r0, r4, #0 + mov r1, #1 + bl FUN_020200BC + add r0, r4, #0 + mov r1, #0 + bl FUN_02020238 + ldr r1, [sp, #0x40] + add r0, r4, #0 + bl FUN_02020130 + add r0, r4, #0 + mov r1, #1 + bl FUN_020200A0 + add r0, r4, #0 + add sp, #0x30 + pop {r3, r4, r5, pc} + .align 2, 0 +_02238E44: .word 0x0223BC30 + thumb_func_end MOD83_02238DBC + + thumb_func_start MOD83_02238E48 +MOD83_02238E48: ; 0x02238E48 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02238EE8 ; =0x0223BE30 + ldr r4, _02238EEC ; =0x0223BC30 + ldr r0, [r0, #4] + cmp r0, #0 + beq _02238E66 + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02238E66: + mov r1, #0x51 + ldr r0, _02238EF0 ; =0x0223BC60 + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #0 + beq _02238E76 + bl FUN_02009C0C +_02238E76: + mov r1, #0x57 + ldr r0, _02238EF0 ; =0x0223BC60 + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #0 + beq _02238E86 + bl FUN_02009C0C +_02238E86: + mov r1, #0x52 + ldr r0, _02238EF0 ; =0x0223BC60 + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #0 + beq _02238E96 + bl FUN_02009E04 +_02238E96: + mov r1, #0x16 + ldr r0, _02238EF0 ; =0x0223BC60 + lsl r1, r1, #4 + ldr r0, [r0, r1] + cmp r0, #0 + beq _02238EA6 + bl FUN_02009E04 +_02238EA6: + mov r4, #0 + mov r7, #0x4b + ldr r5, _02238EF0 ; =0x0223BC60 + add r6, r4, #0 + lsl r7, r7, #2 +_02238EB0: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + str r6, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02238EB0 + ldr r0, _02238EF0 ; =0x0223BC60 + ldr r0, [r0] + bl FUN_0201FD58 + ldr r0, _02238EF0 ; =0x0223BC60 + mov r1, #0 + str r1, [r0] + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02238EE8: .word 0x0223BE30 +_02238EEC: .word 0x0223BC30 +_02238EF0: .word 0x0223BC60 + thumb_func_end MOD83_02238E48 + + thumb_func_start MOD83_02238EF4 +MOD83_02238EF4: ; 0x02238EF4 + mov r1, #1 + sub r0, #0xa + lsl r1, r0 + add r0, r1, #0 + bx lr + .align 2, 0 + thumb_func_end MOD83_02238EF4 + + thumb_func_start MOD83_02238F00 +MOD83_02238F00: ; 0x02238F00 + push {r4, lr} + ldr r0, _02238F34 ; =0x0223CAB0 + ldr r4, _02238F38 ; =0x0223BC30 + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _02238F1E + mov r1, #0xea + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + blx r1 + mov r0, #0xea + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_02238F1E: + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _02238F3C ; =0x027E0000 + ldr r1, _02238F40 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_02238F34: .word 0x0223CAB0 +_02238F38: .word 0x0223BC30 +_02238F3C: .word 0x027E0000 +_02238F40: .word 0x00003FF8 + thumb_func_end MOD83_02238F00 + + thumb_func_start MOD83_02238F44 +MOD83_02238F44: ; 0x02238F44 + push {r4} + sub sp, #0x1c + ldr r4, _02238F90 ; =0x0223A744 + add r3, sp, #0 + mov r2, #0x1a +_02238F4E: + ldrb r1, [r4] + add r4, r4, #1 + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _02238F4E + add r1, sp, #0 + ldrb r2, [r1] + mov r3, #0 + sub r1, r3, #1 + cmp r2, r1 + beq _02238F88 + add r4, sp, #0 + sub r1, r3, #1 +_02238F6A: + ldrb r2, [r4] + cmp r0, r2 + bne _02238F7E + add r0, sp, #0 + lsl r1, r3, #1 + add r0, #1 + add sp, #0x1c + ldrb r0, [r0, r1] + pop {r4} + bx lr +_02238F7E: + add r4, r4, #2 + ldrb r2, [r4] + add r3, r3, #1 + cmp r2, r1 + bne _02238F6A +_02238F88: + mov r0, #0 + add sp, #0x1c + pop {r4} + bx lr + .align 2, 0 +_02238F90: .word 0x0223A744 + thumb_func_end MOD83_02238F44 + + thumb_func_start MOD83_02238F94 +MOD83_02238F94: ; 0x02238F94 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + add r5, r1, #0 + add r7, r2, #0 + add r6, r3, #0 + ldr r4, [sp, #0x40] + bl FUN_020689E0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + bl FUN_02068A80 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + lsl r0, r7, #0x18 + ldr r2, [sp, #0x24] + lsr r0, r0, #0x18 + str r0, [sp, #4] + mov r0, #0 + lsl r1, r5, #0x10 + lsl r2, r2, #0x18 + str r0, [sp, #8] + add r0, r4, #0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_02068C00 + mov r1, #0 + ldr r0, [sp, #0x20] + add r2, r1, #0 + bl FUN_020671BC + mov r3, #0 + str r3, [sp] + mov r1, #0xa + str r1, [sp, #4] + str r1, [sp, #8] + str r6, [sp, #0xc] + str r0, [sp, #0x10] + str r3, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + str r5, [sp, #0x1c] + ldr r2, _0223902C ; =0x0223BC30 + ldrh r0, [r4] + ldrh r1, [r4, #2] + ldr r2, [r2, #4] + bl FUN_020124B4 + mov r1, #0x32 + add r0, r6, #0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r1, #0x32 + lsl r1, r1, #6 + add r0, r6, #0 + add r2, r1, #0 + bl GXS_LoadOBJ + mov r0, #0x20 + str r0, [sp] + ldr r0, _0223902C ; =0x0223BC30 + mov r2, #5 + ldr r0, [r0, #4] + mov r3, #0x60 + str r0, [sp, #4] + ldrh r0, [r4] + ldrh r1, [r4, #4] + bl FUN_02006930 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223902C: .word 0x0223BC30 + thumb_func_end MOD83_02238F94 + + thumb_func_start MOD83_02239030 +MOD83_02239030: ; 0x02239030 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0x21 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0x23 + mov r2, #0x20 + mov r3, #0x22 + bl MOD83_02238BC4 + mov r1, #1 + mov r0, #0 + lsl r1, r1, #0x14 + bl MOD83_02238D38 + mov r3, #0 + mov r1, #0x81 + str r3, [sp] + lsl r1, r1, #2 + ldr r1, [r4, r1] + mov r0, #1 + mov r2, #0x80 + bl MOD83_02238DBC + mov r1, #0x81 + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #8 + pop {r4, pc} + thumb_func_end MOD83_02239030 + + thumb_func_start MOD83_02239070 +MOD83_02239070: ; 0x02239070 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xc + str r0, [sp] + mov r0, #1 + add r6, r1, #0 + add r4, r2, #0 + str r0, [sp, #4] + mov r0, #0x36 + mov r1, #0xa + mov r2, #0 + mov r3, #0xb + bl MOD83_02238BC4 + mov r1, #1 + mov r0, #0 + lsl r1, r1, #0x14 + bl MOD83_02238D38 + mov r0, #1 + mov r1, #0x81 + str r0, [sp] + lsl r1, r1, #2 + ldr r1, [r5, r1] + mov r2, #0x80 + mov r3, #0 + bl MOD83_02238DBC + mov r3, #0x81 + lsl r3, r3, #2 + add r4, #8 + str r0, [r5, r3] + cmp r6, #1 + beq _022390C2 + cmp r6, #2 + beq _022390F4 + cmp r6, #7 + beq _02239110 + add sp, #8 + pop {r4, r5, r6, pc} +_022390C2: + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0xe9 + lsl r0, r0, #4 + mov r3, #0x21 + add r0, r5, r0 + lsl r3, r3, #4 + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r3, r5, r3 + bl MOD83_02238F94 + add sp, #8 + pop {r4, r5, r6, pc} +_022390F4: + mov r0, #0xe9 + lsl r0, r0, #4 + add r1, r3, #0 + add r0, r5, r0 + add r3, #0xc + str r0, [sp] + add r0, r4, #0 + sub r1, #0x16 + mov r2, #0 + add r3, r5, r3 + bl MOD83_02238F94 + add sp, #8 + pop {r4, r5, r6, pc} +_02239110: + mov r0, #0xe9 + lsl r0, r0, #4 + add r1, r3, #0 + add r0, r5, r0 + add r3, #0xc + str r0, [sp] + add r0, r4, #0 + sub r1, #0x16 + mov r2, #1 + add r3, r5, r3 + bl MOD83_02238F94 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD83_02239070 + + thumb_func_start MOD83_0223912C +MOD83_0223912C: ; 0x0223912C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + cmp r1, #0xa + bhi _02239168 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239142: ; jump table + .short _02239168 - _02239142 - 2 ; case 0 + .short _02239168 - _02239142 - 2 ; case 1 + .short _02239168 - _02239142 - 2 ; case 2 + .short _02239158 - _02239142 - 2 ; case 3 + .short _02239168 - _02239142 - 2 ; case 4 + .short _02239168 - _02239142 - 2 ; case 5 + .short _02239168 - _02239142 - 2 ; case 6 + .short _02239168 - _02239142 - 2 ; case 7 + .short _0223915C - _02239142 - 2 ; case 8 + .short _02239160 - _02239142 - 2 ; case 9 + .short _02239166 - _02239142 - 2 ; case 10 +_02239158: + ldr r4, [r2, #4] + b _02239168 +_0223915C: + ldr r4, _022391C4 ; =0x000001C6 + b _02239168 +_02239160: + mov r4, #0x71 + lsl r4, r4, #2 + b _02239168 +_02239166: + ldr r4, _022391C8 ; =0x000001C7 +_02239168: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + bl FUN_0206E640 + add r7, r0, #0 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + add r4, r0, #0 + bl FUN_0206E708 + add r6, r0, #0 + bl FUN_0206E70C + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x10 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD83_02238BC4 + mov r1, #1 + mov r0, #0 + lsl r1, r1, #0x14 + bl MOD83_02238D38 + mov r3, #0 + mov r1, #0x81 + str r3, [sp] + lsl r1, r1, #2 + ldr r1, [r5, r1] + mov r0, #1 + mov r2, #0x80 + bl MOD83_02238DBC + mov r1, #0x81 + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022391C4: .word 0x000001C6 +_022391C8: .word 0x000001C7 + thumb_func_end MOD83_0223912C + + thumb_func_start MOD83_022391CC +MOD83_022391CC: ; 0x022391CC + push {r3, lr} + sub sp, #8 + mov r1, #0xc0 + str r1, [sp] + ldr r0, [r0, #4] + mov r2, #4 + add r3, r2, #0 + str r0, [sp, #4] + mov r0, #0x74 + mov r1, #0x1d + add r3, #0xfc + bl FUN_02006930 + add sp, #8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022391CC + + thumb_func_start MOD83_022391EC +MOD83_022391EC: ; 0x022391EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r1, #0 + ldrh r4, [r6] + add r5, r0, #0 + add r0, r4, #0 + bl MOD83_02238F44 + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, _022392DC ; =0x0223BC30 + mov r1, #0x1e + ldr r0, [r0, #4] + add r2, r5, #0 + str r0, [sp, #0xc] + mov r0, #0x74 + mov r3, #5 + bl FUN_0200687C + mov r2, #1 + ldr r3, _022392DC ; =0x0223BC30 + str r2, [sp] + ldr r3, [r3, #4] + mov r0, #0x74 + mov r1, #0x1f + bl FUN_02006C98 + add r1, sp, #0x14 + str r0, [sp, #0x10] + bl FUN_020B0180 + ldr r2, [sp, #0x14] + mov r3, #6 + add r0, r5, #0 + mov r1, #5 + add r2, #0xc + lsl r3, r3, #8 + bl FUN_02017DFC + ldr r0, [sp, #0x10] + bl FUN_02016A18 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + mov r2, #0 + add r7, #8 + str r0, [sp, #4] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #5 + add r3, r2, #0 + bl FUN_020186B4 + add r0, r5, #0 + mov r1, #5 + bl FUN_02017CD0 + ldr r1, _022392E0 ; =MOD83_022391CC + ldr r0, _022392E4 ; =0x0223CAB0 + cmp r4, #0xb + str r1, [r0, #0x20] + bhi _022392CA + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239286: ; jump table + .short _022392CA - _02239286 - 2 ; case 0 + .short _022392B4 - _02239286 - 2 ; case 1 + .short _022392B4 - _02239286 - 2 ; case 2 + .short _022392C0 - _02239286 - 2 ; case 3 + .short _0223929E - _02239286 - 2 ; case 4 + .short _0223929E - _02239286 - 2 ; case 5 + .short _0223929E - _02239286 - 2 ; case 6 + .short _022392AA - _02239286 - 2 ; case 7 + .short _022392C0 - _02239286 - 2 ; case 8 + .short _022392C0 - _02239286 - 2 ; case 9 + .short _022392C0 - _02239286 - 2 ; case 10 + .short _0223929E - _02239286 - 2 ; case 11 +_0223929E: + ldr r0, _022392E8 ; =0x0223BC30 + add r1, r4, #0 + add r2, r6, #0 + bl MOD83_02239030 + b _022392CA +_022392AA: + mov r1, #0x82 + ldr r0, _022392E8 ; =0x0223BC30 + mov r2, #0x78 + lsl r1, r1, #2 + str r2, [r0, r1] +_022392B4: + ldr r0, _022392E8 ; =0x0223BC30 + add r1, r4, #0 + add r2, r6, #0 + bl MOD83_02239070 + b _022392CA +_022392C0: + ldr r0, _022392E8 ; =0x0223BC30 + add r1, r4, #0 + add r2, r6, #0 + bl MOD83_0223912C +_022392CA: + mov r1, #0x81 + ldr r0, _022392E8 ; =0x0223BC30 + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022392DC: .word 0x0223BC30 +_022392E0: .word MOD83_022391CC +_022392E4: .word 0x0223CAB0 +_022392E8: .word 0x0223BC30 + thumb_func_end MOD83_022391EC + + thumb_func_start MOD83_022392EC +MOD83_022392EC: ; 0x022392EC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r0, r2, #0 + lsl r1, r1, #8 + str r2, [sp] + bl FUN_02016998 + ldr r1, _0223936C ; =0x0000A001 + add r4, r0, #0 + bl MATHi_CRC16InitTableRev + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x50 + bl MATH_CalcCRC16 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, sp, #4 + bl OS_GetMacAddress + add r0, sp, #4 + ldrh r1, [r0, #2] + mov r2, #0 + add r3, sp, #4 + strh r1, [r0, #6] + ldr r1, _02239370 ; =0x0000D679 + strh r6, [r0, #2] +_0223932E: + ldrh r0, [r3] + add r2, r2, #1 + eor r0, r1 + strh r0, [r3] + ldrh r1, [r3] + add r3, r3, #2 + cmp r2, #4 + blt _0223932E + mov r1, #0x41 + ldr r0, [sp] + lsl r1, r1, #2 + bl FUN_02016998 + add r1, sp, #4 + mov r2, #8 + add r4, r0, #0 + bl FUN_0209521C + add r5, #0x50 + mov r2, #0xd6 + add r0, r4, #0 + add r1, r5, #0 + lsl r2, r2, #2 + add r3, r7, #0 + bl FUN_020952AC + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223936C: .word 0x0000A001 +_02239370: .word 0x0000D679 + thumb_func_end MOD83_022392EC + + thumb_func_start MOD83_02239374 +MOD83_02239374: ; 0x02239374 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r0, r2, #0 + lsl r1, r1, #8 + str r2, [sp] + bl FUN_02016998 + ldr r1, _0223940C ; =0x0000A001 + add r4, r0, #0 + bl MATHi_CRC16InitTableRev + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x50 + bl MATH_CalcCRC16 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + bl FUN_0202EF18 + ldrb r2, [r0, #4] + add r1, sp, #4 + mov r3, #0 + strb r2, [r1] + ldrb r2, [r0, #5] + strb r2, [r1, #1] + ldrb r2, [r0, #6] + strb r2, [r1, #2] + ldrb r2, [r0, #7] + strb r2, [r1, #3] + ldrb r2, [r0, #8] + strb r2, [r1, #4] + ldrb r0, [r0, #9] + strb r0, [r1, #5] + add r0, sp, #4 + ldrh r2, [r0, #2] + strh r2, [r0, #6] + ldr r2, _02239410 ; =0x0000D679 + strh r6, [r0, #2] +_022393CE: + ldrh r0, [r1] + add r3, r3, #1 + eor r0, r2 + strh r0, [r1] + ldrh r2, [r1] + add r1, r1, #2 + cmp r3, #4 + blt _022393CE + mov r1, #0x41 + ldr r0, [sp] + lsl r1, r1, #2 + bl FUN_02016998 + add r1, sp, #4 + mov r2, #8 + add r4, r0, #0 + bl FUN_0209521C + add r5, #0x50 + mov r2, #0xd6 + add r0, r4, #0 + add r1, r5, #0 + lsl r2, r2, #2 + add r3, r7, #0 + bl FUN_020952AC + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223940C: .word 0x0000A001 +_02239410: .word 0x0000D679 + thumb_func_end MOD83_02239374 + + thumb_func_start MOD83_02239414 +MOD83_02239414: ; 0x02239414 + push {r3, lr} + cmp r2, #0 + beq _0223941E + cmp r2, #1 + pop {r3, pc} +_0223941E: + ldr r0, _02239428 ; =0x000005DC + bl FUN_020054C8 + pop {r3, pc} + nop +_02239428: .word 0x000005DC + thumb_func_end MOD83_02239414 + + thumb_func_start MOD83_0223942C +MOD83_0223942C: ; 0x0223942C + push {r3, lr} + ldr r0, _0223944C ; =0x027FFFA8 + ldrh r1, [r0] + mov r0, #2 + lsl r0, r0, #0xe + and r0, r1 + asr r0, r0, #0xf + bne _02239448 + bl CTRDG_IsAgbCartridge + cmp r0, #0 + bne _02239448 + bl CTRDG_TerminateForPulledOut +_02239448: + pop {r3, pc} + nop +_0223944C: .word 0x027FFFA8 + thumb_func_end MOD83_0223942C + + thumb_func_start MOD83_02239450 +MOD83_02239450: ; 0x02239450 + push {r3, lr} + cmp r0, #1 + bne _02239478 + ldr r1, _02239484 ; =0x04000208 + ldrh r0, [r1] + mov r0, #0 + strh r0, [r1] + lsr r0, r1, #0xd + ldr r1, _02239488 ; =MOD83_0223942C + bl OS_SetIrqFunction + mov r0, #2 + lsl r0, r0, #0xc + bl OS_EnableIrqMask + ldr r1, _02239484 ; =0x04000208 + ldrh r0, [r1] + mov r0, #1 + strh r0, [r1] + pop {r3, pc} +_02239478: + mov r0, #2 + lsl r0, r0, #0xc + bl OS_DisableIrqMask + pop {r3, pc} + nop +_02239484: .word 0x04000208 +_02239488: .word MOD83_0223942C + thumb_func_end MOD83_02239450 + + thumb_func_start MOD83_0223948C +MOD83_0223948C: ; 0x0223948C + bx lr + .align 2, 0 + thumb_func_end MOD83_0223948C + + thumb_func_start MOD83_02239490 +MOD83_02239490: ; 0x02239490 + push {r3, lr} + ldr r1, _022394B4 ; =0x04000208 + ldrh r0, [r1] + mov r0, #0 + strh r0, [r1] + lsr r0, r1, #0xd + ldr r1, _022394B8 ; =MOD83_0223948C + bl OS_SetIrqFunction + mov r0, #2 + lsl r0, r0, #0xc + bl OS_EnableIrqMask + ldr r1, _022394B4 ; =0x04000208 + ldrh r0, [r1] + mov r0, #1 + strh r0, [r1] + pop {r3, pc} + .align 2, 0 +_022394B4: .word 0x04000208 +_022394B8: .word MOD83_0223948C + thumb_func_end MOD83_02239490 + + thumb_func_start MOD83_022394BC +MOD83_022394BC: ; 0x022394BC + ldr r1, _022394C8 ; =0x0223BC30 + str r0, [r1, #0x14] + mov r0, #0 + str r0, [r1, #0x10] + bx lr + nop +_022394C8: .word 0x0223BC30 + thumb_func_end MOD83_022394BC + + thumb_func_start MOD83_022394CC +MOD83_022394CC: ; 0x022394CC + push {r3, r4, r5, lr} + ldr r0, _0223953C ; =0x0223BC30 + ldr r4, _02239540 ; =0x0223BC30 + ldr r0, [r0, #0x10] + cmp r0, #4 + bhi _02239538 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022394E4: ; jump table + .short _022394EE - _022394E4 - 2 ; case 0 + .short _02239504 - _022394E4 - 2 ; case 1 + .short _02239538 - _022394E4 - 2 ; case 2 + .short _02239538 - _022394E4 - 2 ; case 3 + .short _02239538 - _022394E4 - 2 ; case 4 +_022394EE: + mov r0, #4 + bl FUN_020166A8 + ldr r0, [r4, #0x14] + mov r1, #2 + bl FUN_02022840 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _02239538 +_02239504: + ldr r0, [r4, #0x14] + bl FUN_02022854 + add r5, r0, #0 + cmp r5, #3 + bne _02239516 + mov r0, #3 + str r0, [r4, #0x10] + b _02239528 +_02239516: + cmp r5, #2 + bne _02239520 + mov r0, #2 + str r0, [r4, #0x10] + b _02239528 +_02239520: + cmp r5, #1 + bne _02239528 + mov r0, #4 + str r0, [r4, #0x10] +_02239528: + sub r0, r5, #2 + cmp r0, #1 + bhi _02239534 + mov r0, #4 + bl FUN_020166B8 +_02239534: + add r0, r5, #0 + pop {r3, r4, r5, pc} +_02239538: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223953C: .word 0x0223BC30 +_02239540: .word 0x0223BC30 + thumb_func_end MOD83_022394CC + + thumb_func_start MOD83_02239544 +MOD83_02239544: ; 0x02239544 + ldr r0, _02239554 ; =0x0223BC30 + ldr r1, _02239558 ; =0x0223BC30 + ldr r0, [r0, #0x10] + cmp r0, #4 + bne _02239552 + mov r0, #1 + str r0, [r1, #0x10] +_02239552: + bx lr + .align 2, 0 +_02239554: .word 0x0223BC30 +_02239558: .word 0x0223BC30 + thumb_func_end MOD83_02239544 + + thumb_func_start MOD83_0223955C +MOD83_0223955C: ; 0x0223955C + push {r3, lr} + ldr r0, _02239570 ; =0x0223BC30 + ldr r0, [r0, #0x14] + bl FUN_0202287C + mov r0, #4 + bl FUN_020166B8 + pop {r3, pc} + nop +_02239570: .word 0x0223BC30 + thumb_func_end MOD83_0223955C + + thumb_func_start MOD83_02239574 +MOD83_02239574: ; 0x02239574 + ldr r0, _0223957C ; =0x0223BC30 + ldr r0, [r0, #0x10] + bx lr + nop +_0223957C: .word 0x0223BC30 + thumb_func_end MOD83_02239574 + + thumb_func_start MOD83_02239580 +MOD83_02239580: ; 0x02239580 + push {r4, lr} + ldr r1, _022395BC ; =0x0223CAD4 + add r4, r0, #0 + ldr r2, [r1, #4] + cmp r2, #0 + beq _0223959C + ldr r3, [r1] + ldr r1, _022395C0 ; =0x00001150 + ldr r0, _022395C4 ; =0x0223B80C + ldr r1, [r3, r1] + lsl r3, r1, #2 + ldr r1, _022395C8 ; =0x0223B7E4 + ldr r1, [r1, r3] + blx r2 +_0223959C: + ldr r3, _022395BC ; =0x0223CAD4 + ldr r1, _022395C0 ; =0x00001150 + ldr r0, [r3] + str r4, [r0, r1] + ldr r2, [r3, #4] + cmp r2, #0 + beq _022395B8 + ldr r3, [r3] + ldr r0, _022395CC ; =0x0223B814 + ldr r1, [r3, r1] + lsl r3, r1, #2 + ldr r1, _022395C8 ; =0x0223B7E4 + ldr r1, [r1, r3] + blx r2 +_022395B8: + pop {r4, pc} + nop +_022395BC: .word 0x0223CAD4 +_022395C0: .word 0x00001150 +_022395C4: .word 0x0223B80C +_022395C8: .word 0x0223B7E4 +_022395CC: .word 0x0223B814 + thumb_func_end MOD83_02239580 + + thumb_func_start MOD83_022395D0 +MOD83_022395D0: ; 0x022395D0 + ldr r1, _022395E4 ; =0x0223CAD4 + ldr r3, [r1] + ldr r1, _022395E8 ; =0x00001150 + ldr r2, [r3, r1] + sub r2, #9 + cmp r2, #1 + bls _022395E2 + add r1, r1, #4 + str r0, [r3, r1] +_022395E2: + bx lr + .align 2, 0 +_022395E4: .word 0x0223CAD4 +_022395E8: .word 0x00001150 + thumb_func_end MOD83_022395D0 + + thumb_func_start MOD83_022395EC +MOD83_022395EC: ; 0x022395EC + push {r4, lr} + ldr r0, _02239658 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _0223965C ; =0x00001150 + ldr r0, [r1, r0] + cmp r0, #4 + bne _022395FE + bl OS_Terminate +_022395FE: + mov r0, #2 + bl MOD83_02239580 + ldr r3, _02239658 ; =0x0223CAD4 + ldr r0, _02239660 ; =0x0000FFFF + ldr r2, [r3] + ldr r1, _02239664 ; =0x00000FCC + strh r0, [r2, r1] + sub r2, r1, #2 + ldr r4, [r3] + sub r1, r1, #4 + strh r0, [r4, r2] + ldr r2, [r3] + strh r0, [r2, r1] + bl MOD83_02239670 + cmp r0, #0 + bne _0223963C + mov r0, #9 + bl MOD83_02239580 + ldr r0, _02239658 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239668 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _02239638 + mov r0, #4 + blx r1 +_02239638: + mov r0, #0 + pop {r4, pc} +_0223963C: + ldr r1, _02239658 ; =0x0223CAD4 + ldr r0, _0223966C ; =0x00001158 + ldr r2, [r1] + mov r3, #2 + strh r3, [r2, r0] + ldr r1, [r1] + add r0, #0x24 + ldr r1, [r1, r0] + cmp r1, #0 + beq _02239654 + mov r0, #0 + blx r1 +_02239654: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_02239658: .word 0x0223CAD4 +_0223965C: .word 0x00001150 +_02239660: .word 0x0000FFFF +_02239664: .word 0x00000FCC +_02239668: .word 0x0000117C +_0223966C: .word 0x00001158 + thumb_func_end MOD83_022395EC + + thumb_func_start MOD83_02239670 +MOD83_02239670: ; 0x02239670 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02239748 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _0223974C ; =0x00001150 + ldr r0, [r1, r0] + cmp r0, #2 + beq _02239684 + bl OS_Terminate + mov r0, #0 +_02239684: + bl WM_GetAllowedChannel + add r4, r0, #0 + mov r0, #2 + lsl r0, r0, #0xe + cmp r4, r0 + bne _0223969C + mov r0, #3 + bl MOD83_022395D0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223969C: + cmp r4, #0 + bne _022396AA + mov r0, #0x16 + bl MOD83_022395D0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022396AA: + ldr r0, _02239748 ; =0x0223CAD4 + ldr r2, [r0] + ldr r0, _02239750 ; =0x00001176 + ldrh r1, [r2, r0] + cmp r1, #0x10 + blo _022396EC + sub r1, #0x10 + mov r5, #0 + mov r7, #0xd + mov r6, #1 + b _022396D2 +_022396C0: + add r0, r1, #1 + add r1, r7, #0 + bl _s32_div_f + add r0, r6, #0 + lsl r0, r1 + tst r0, r4 + bne _022396D6 + add r5, r5, #1 +_022396D2: + cmp r5, #0xd + blt _022396C0 +_022396D6: + ldr r2, _02239748 ; =0x0223CAD4 + add r4, r1, #0 + ldr r3, [r2] + ldr r0, _02239750 ; =0x00001176 + add r4, #0x10 + strh r4, [r3, r0] + add r3, r1, #1 + ldr r1, [r2] + ldr r0, _02239754 ; =0x00000FC4 + strh r3, [r1, r0] + b _022396F0 +_022396EC: + ldr r0, _02239754 ; =0x00000FC4 + strh r1, [r2, r0] +_022396F0: + ldr r2, _02239748 ; =0x0223CAD4 + ldr r0, _02239758 ; =0x00000FC6 + ldr r1, [r2] + mov r3, #0xdc + strh r3, [r1, r0] + add r1, r0, #0 + ldr r3, [r2] + sub r1, #0xc6 + add r1, r3, r1 + sub r0, r0, #6 + str r1, [r3, r0] + ldr r1, [r2] + ldr r0, _0223975C ; =0x00001158 + ldrh r0, [r1, r0] + cmp r0, #3 + bne _02239726 + mov r5, #0 + ldr r0, _02239760 ; =0x00001170 + ldr r1, _02239764 ; =0x00000FC8 + b _02239722 +_02239718: + ldr r3, [r2] + add r4, r3, r5 + ldrb r3, [r4, r0] + add r5, r5, #1 + strb r3, [r4, r1] +_02239722: + cmp r5, #6 + blt _02239718 +_02239726: + ldr r1, _02239748 ; =0x0223CAD4 + ldr r0, _02239768 ; =MOD83_0223976C + ldr r2, [r1] + mov r1, #0x3f + lsl r1, r1, #6 + add r1, r2, r1 + bl WM_StartScan + cmp r0, #2 + beq _02239742 + bl MOD83_022395D0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02239742: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239748: .word 0x0223CAD4 +_0223974C: .word 0x00001150 +_02239750: .word 0x00001176 +_02239754: .word 0x00000FC4 +_02239758: .word 0x00000FC6 +_0223975C: .word 0x00001158 +_02239760: .word 0x00001170 +_02239764: .word 0x00000FC8 +_02239768: .word MOD83_0223976C + thumb_func_end MOD83_02239670 + + thumb_func_start MOD83_0223976C +MOD83_0223976C: ; 0x0223976C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02239792 + bl MOD83_022395D0 + mov r0, #9 + bl MOD83_02239580 + ldr r0, _02239880 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239884 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _0223987E + mov r0, #4 + blx r1 + pop {r3, r4, r5, pc} +_02239792: + ldr r0, _02239880 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239888 ; =0x00001150 + ldr r0, [r1, r0] + cmp r0, #2 + beq _022397BE + bl MOD83_022398A4 + cmp r0, #0 + bne _0223987E + mov r0, #9 + bl MOD83_02239580 + ldr r0, _02239880 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239884 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _0223987E + mov r0, #4 + blx r1 + pop {r3, r4, r5, pc} +_022397BE: + ldrh r0, [r4, #8] + cmp r0, #3 + beq _0223987E + cmp r0, #4 + beq _02239860 + cmp r0, #5 + bne _02239860 + mov r0, #0xf + lsl r0, r0, #8 + add r0, r1, r0 + mov r1, #0xc0 + bl DC_InvalidateRange + ldrh r0, [r4, #0x36] + cmp r0, #8 + blo _022397E6 + ldr r1, [r4, #0x3c] + ldr r0, _0223988C ; =0x00400318 + cmp r1, r0 + beq _022397F8 +_022397E6: + ldr r0, _02239880 ; =0x0223CAD4 + ldr r3, [r0, #4] + cmp r3, #0 + beq _02239860 + ldr r0, _02239890 ; =0x0223B818 + ldr r1, [r4, #0x3c] + ldr r2, _0223988C ; =0x00400318 + blx r3 + b _02239860 +_022397F8: + ldr r1, _02239880 ; =0x0223CAD4 + ldrh r3, [r4, #0x12] + ldr r2, [r1] + ldr r0, _02239894 ; =0x0000116C + str r3, [r2, r0] + ldr r1, [r1] + sub r0, #0x14 + ldrh r0, [r1, r0] + cmp r0, #2 + bne _02239844 + add r0, r4, #0 + add r0, #0x48 + bl MOD83_02239B00 + ldr r2, _02239880 ; =0x0223CAD4 + ldr r1, _02239898 ; =0x00001170 + mov r0, #0 +_0223981A: + add r3, r4, r0 + ldrb r5, [r3, #0xa] + ldr r3, [r2] + add r3, r3, r0 + add r0, r0, #1 + strb r5, [r3, r1] + cmp r0, #6 + blt _0223981A + ldr r1, _02239880 ; =0x0223CAD4 + ldr r0, _0223989C ; =0x00001176 + ldr r3, [r1] + ldrh r2, [r3, r0] + sub r2, #0xf + strh r2, [r3, r0] + ldr r1, [r1] + add r0, r0, #6 + ldr r1, [r1, r0] + cmp r1, #0 + beq _02239844 + mov r0, #1 + blx r1 +_02239844: + add r4, #0x48 + add r0, r4, #0 + bl MOD83_02239B80 + cmp r0, #0 + beq _02239860 + ldr r0, _02239880 ; =0x0223CAD4 + mov r2, #4 + ldr r1, [r0] + ldr r0, _022398A0 ; =0x00001158 + strh r2, [r1, r0] + bl MOD83_02239A14 + pop {r3, r4, r5, pc} +_02239860: + bl MOD83_02239670 + cmp r0, #0 + bne _0223987E + mov r0, #9 + bl MOD83_02239580 + ldr r0, _02239880 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239884 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _0223987E + mov r0, #4 + blx r1 +_0223987E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02239880: .word 0x0223CAD4 +_02239884: .word 0x0000117C +_02239888: .word 0x00001150 +_0223988C: .word 0x00400318 +_02239890: .word 0x0223B818 +_02239894: .word 0x0000116C +_02239898: .word 0x00001170 +_0223989C: .word 0x00001176 +_022398A0: .word 0x00001158 + thumb_func_end MOD83_0223976C + + thumb_func_start MOD83_022398A4 +MOD83_022398A4: ; 0x022398A4 + push {r3, lr} + ldr r0, _022398BC ; =MOD83_022398C0 + bl WM_EndScan + cmp r0, #2 + beq _022398B8 + bl MOD83_022395D0 + mov r0, #0 + pop {r3, pc} +_022398B8: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_022398BC: .word MOD83_022398C0 + thumb_func_end MOD83_022398A4 + + thumb_func_start MOD83_022398C0 +MOD83_022398C0: ; 0x022398C0 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022398CE + bl MOD83_022395D0 + pop {r3, pc} +_022398CE: + mov r0, #1 + bl MOD83_02239580 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD83_022398C0 + + thumb_func_start MOD83_022398D8 +MOD83_022398D8: ; 0x022398D8 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022398E8 + mov r0, #0xa + bl MOD83_02239580 + pop {r3, pc} +_022398E8: + mov r0, #0 + bl MOD83_02239580 + ldr r0, _02239900 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239904 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _022398FE + mov r0, #3 + blx r1 +_022398FE: + pop {r3, pc} + .align 2, 0 +_02239900: .word 0x0223CAD4 +_02239904: .word 0x0000117C + thumb_func_end MOD83_022398D8 + + thumb_func_start MOD83_02239908 +MOD83_02239908: ; 0x02239908 + push {r3, lr} + ldr r0, _02239924 ; =0x0223CAD4 + mov r2, #0 + ldr r1, [r0] + ldr r0, _02239928 ; =0x00001154 + str r2, [r1, r0] + bl MOD83_02239954 + cmp r0, #0 + beq _02239920 + mov r0, #1 + pop {r3, pc} +_02239920: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_02239924: .word 0x0223CAD4 +_02239928: .word 0x00001154 + thumb_func_end MOD83_02239908 + + thumb_func_start MOD83_0223992C +MOD83_0223992C: ; 0x0223992C + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #8 + bne _0223994A + mov r0, #9 + bl MOD83_02239580 + ldr r0, _0223994C ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239950 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _0223994A + mov r0, #4 + blx r1 +_0223994A: + pop {r3, pc} + .align 2, 0 +_0223994C: .word 0x0223CAD4 +_02239950: .word 0x0000117C + thumb_func_end MOD83_0223992C + + thumb_func_start MOD83_02239954 +MOD83_02239954: ; 0x02239954 + push {r3, lr} + mov r0, #3 + bl MOD83_02239580 + ldr r0, _02239980 ; =0x0223CAD4 + ldr r1, _02239984 ; =MOD83_02239988 + ldr r0, [r0] + mov r2, #2 + bl WM_Initialize + cmp r0, #2 + beq _0223997A + bl MOD83_022395D0 + mov r0, #0xa + bl MOD83_02239580 + mov r0, #0 + pop {r3, pc} +_0223997A: + mov r0, #1 + pop {r3, pc} + nop +_02239980: .word 0x0223CAD4 +_02239984: .word MOD83_02239988 + thumb_func_end MOD83_02239954 + + thumb_func_start MOD83_02239988 +MOD83_02239988: ; 0x02239988 + push {r3, lr} + ldrh r0, [r0, #2] + cmp r0, #0 + beq _0223999C + bl MOD83_022395D0 + mov r0, #0xa + bl MOD83_02239580 + pop {r3, pc} +_0223999C: + ldr r0, _022399C0 ; =MOD83_0223992C + bl WM_SetIndCallback + cmp r0, #0 + beq _022399B2 + bl MOD83_022395D0 + mov r0, #0xa + bl MOD83_02239580 + pop {r3, pc} +_022399B2: + mov r0, #1 + bl MOD83_02239580 + bl MOD83_022395EC + pop {r3, pc} + nop +_022399C0: .word MOD83_0223992C + thumb_func_end MOD83_02239988 + + thumb_func_start MOD83_022399C4 +MOD83_022399C4: ; 0x022399C4 + push {r3, lr} + ldr r0, _02239A04 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239A08 ; =0x00001150 + ldr r0, [r1, r0] + cmp r0, #1 + beq _022399D6 + bl OS_Terminate +_022399D6: + mov r0, #3 + bl MOD83_02239580 + ldr r0, _02239A0C ; =MOD83_022398D8 + bl WM_End + cmp r0, #2 + beq _02239A00 + mov r0, #9 + bl MOD83_02239580 + ldr r0, _02239A04 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239A10 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _022399FC + mov r0, #4 + blx r1 +_022399FC: + mov r0, #0 + pop {r3, pc} +_02239A00: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_02239A04: .word 0x0223CAD4 +_02239A08: .word 0x00001150 +_02239A0C: .word MOD83_022398D8 +_02239A10: .word 0x0000117C + thumb_func_end MOD83_022399C4 + + thumb_func_start MOD83_02239A14 +MOD83_02239A14: ; 0x02239A14 + push {r3, lr} + ldr r0, _02239A30 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239A34 ; =0x00001150 + ldr r0, [r1, r0] + cmp r0, #1 + bne _02239A28 + bl MOD83_022399C4 + pop {r3, pc} +_02239A28: + bl MOD83_02239A38 + pop {r3, pc} + nop +_02239A30: .word 0x0223CAD4 +_02239A34: .word 0x00001150 + thumb_func_end MOD83_02239A14 + + thumb_func_start MOD83_02239A38 +MOD83_02239A38: ; 0x02239A38 + push {r3, lr} + mov r0, #3 + bl MOD83_02239580 + ldr r0, _02239A58 ; =MOD83_02239A5C + bl WM_Reset + cmp r0, #2 + beq _02239A52 + bl MOD83_022395D0 + mov r0, #0 + pop {r3, pc} +_02239A52: + mov r0, #1 + pop {r3, pc} + nop +_02239A58: .word MOD83_02239A5C + thumb_func_end MOD83_02239A38 + + thumb_func_start MOD83_02239A5C +MOD83_02239A5C: ; 0x02239A5C + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02239A84 + mov r0, #9 + bl MOD83_02239580 + ldrh r0, [r4, #2] + bl MOD83_022395D0 + ldr r0, _02239A90 ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239A94 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _02239A8E + mov r0, #4 + blx r1 + pop {r4, pc} +_02239A84: + mov r0, #1 + bl MOD83_02239580 + bl MOD83_022399C4 +_02239A8E: + pop {r4, pc} + .align 2, 0 +_02239A90: .word 0x0223CAD4 +_02239A94: .word 0x0000117C + thumb_func_end MOD83_02239A5C + + thumb_func_start MOD83_02239A98 +MOD83_02239A98: ; 0x02239A98 + push {r3, r4, r5, r6, r7, lr} + add r3, r0, #0 + add r2, #0x1f + mov r0, #0x1f + bic r2, r0 + ldr r5, _02239AF4 ; =0x0223CAD4 + ldr r4, _02239AF8 ; =0x00001150 + str r2, [r5] + mov r0, #0 + str r0, [r2, r4] + add r2, r4, #0 + ldr r6, [r5] + mov r7, #1 + add r2, #8 + strh r7, [r6, r2] + add r2, r4, #0 + ldr r6, [r5] + add r2, #0x28 + str r3, [r6, r2] + add r2, r4, #0 + ldr r3, [r5] + add r2, #0xc + strh r0, [r3, r2] + add r2, r4, #0 + ldr r3, [r5] + add r2, #0xe + strh r0, [r3, r2] + add r2, r4, #0 + ldr r3, [r5] + add r2, #0x2c + str r1, [r3, r2] + add r2, r4, #0 + ldr r3, [r5] + mov r1, #0x10 + add r2, #0x26 + strh r1, [r3, r2] + ldr r3, [r5] + ldr r2, _02239AFC ; =0x00001048 + sub r1, #0x11 + str r0, [r3, r2] + ldr r0, [r5] + add r4, #0x1c + str r1, [r0, r4] + bl MOD83_02239908 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239AF4: .word 0x0223CAD4 +_02239AF8: .word 0x00001150 +_02239AFC: .word 0x00001048 + thumb_func_end MOD83_02239A98 + + thumb_func_start MOD83_02239B00 +MOD83_02239B00: ; 0x02239B00 + push {r4, r5, r6, lr} + ldr r3, _02239B70 ; =0x0223CAD4 + ldr r1, _02239B74 ; =0x00001048 + ldr r2, [r3] + mov r4, #0 + str r4, [r2, r1] + ldr r1, [r3] + ldr r2, _02239B78 ; =0x00001158 + mov r4, #3 + strh r4, [r1, r2] + ldrh r5, [r0] + ldr r4, [r3] + add r1, r2, #2 + strh r5, [r4, r1] + ldr r4, [r0, #4] + add r0, r2, #0 + ldr r1, [r3] + add r0, #8 + str r4, [r1, r0] + ldr r4, [r3] + add r2, #8 + ldr r0, [r4, r2] + mov r1, #0x68 + sub r0, r0, #1 + bl _u32_div_f + ldr r2, _02239B7C ; =0x0000115C + add r0, r0, #1 + strh r0, [r4, r2] + ldr r4, _02239B70 ; =0x0223CAD4 + mov r0, #0 + ldr r3, [r4] + add r1, r2, #2 + strh r0, [r3, r1] + add r1, r2, #0 + ldr r3, [r4] + add r1, #8 + str r0, [r3, r1] + ldr r1, [r4] + ldrh r2, [r1, r2] + cmp r2, #0 + ble _02239B6C + mov r2, #0x46 + lsl r2, r2, #6 + add r3, r2, #0 + add r6, r0, #0 + sub r3, #0x24 +_02239B5E: + add r1, r1, r0 + strb r6, [r1, r2] + ldr r1, [r4] + add r0, r0, #1 + ldrh r5, [r1, r3] + cmp r0, r5 + blt _02239B5E +_02239B6C: + pop {r4, r5, r6, pc} + nop +_02239B70: .word 0x0223CAD4 +_02239B74: .word 0x00001048 +_02239B78: .word 0x00001158 +_02239B7C: .word 0x0000115C + thumb_func_end MOD83_02239B00 + + thumb_func_start MOD83_02239B80 +MOD83_02239B80: ; 0x02239B80 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _02239C9C ; =0x0223CAD4 + ldrh r1, [r4] + ldr r3, [r0] + ldr r0, _02239CA0 ; =0x0000115A + ldrh r2, [r3, r0] + cmp r2, r1 + bne _02239B9C + add r0, r0, #6 + ldr r1, [r3, r0] + ldr r0, [r4, #4] + cmp r1, r0 + beq _02239BC8 +_02239B9C: + ldr r0, _02239C9C ; =0x0223CAD4 + ldr r3, [r0] + ldr r0, _02239CA4 ; =0x00001164 + ldr r2, [r3, r0] + add r1, r2, #1 + str r1, [r3, r0] + cmp r2, #0x10 + blo _02239BC4 + add r0, r4, #0 + bl MOD83_02239B00 + ldr r0, _02239C9C ; =0x0223CAD4 + ldr r1, [r0] + ldr r0, _02239CA8 ; =0x0000117C + ldr r1, [r1, r0] + cmp r1, #0 + beq _02239BC8 + mov r0, #5 + blx r1 + b _02239BC8 +_02239BC4: + mov r0, #0 + pop {r3, r4, r5, pc} +_02239BC8: + ldrh r3, [r4, #2] + ldr r0, _02239CAC ; =0x0000FFFF + cmp r3, r0 + bne _02239BF0 + ldr r1, _02239C9C ; =0x0223CAD4 + add r4, #8 + ldr r2, [r1] + mov r1, #0xfe + lsl r1, r1, #4 + add r1, r2, r1 + add r0, r4, #0 + mov r2, #0x68 + bl MIi_CpuCopy32 + ldr r0, _02239C9C ; =0x0223CAD4 + mov r2, #1 + ldr r1, [r0] + ldr r0, _02239CB0 ; =0x00001048 + str r2, [r1, r0] + b _02239C98 +_02239BF0: + ldr r1, _02239C9C ; =0x0223CAD4 + ldr r0, _02239CB4 ; =0x00001168 + ldr r2, [r1] + str r3, [r2, r0] + ldr r3, [r1] + add r1, r0, #0 + sub r1, #0xc + ldrh r2, [r4, #2] + ldrh r1, [r3, r1] + cmp r2, r1 + blo _02239C18 + add r0, #0x14 + ldr r1, [r3, r0] + cmp r1, #0 + beq _02239C12 + mov r0, #4 + blx r1 +_02239C12: + mov r0, #9 + bl MOD83_02239580 +_02239C18: + ldr r0, _02239C9C ; =0x0223CAD4 + mov r2, #0x46 + ldr r1, [r0] + lsl r2, r2, #6 + ldrh r3, [r4, #2] + add r5, r1, r2 + ldrb r1, [r5, r3] + cmp r1, #0 + bne _02239C98 + mov r1, #1 + strb r1, [r5, r3] + ldr r5, [r0] + add r0, r2, #0 + sub r0, #0x24 + ldrh r0, [r5, r0] + ldrh r1, [r4, #2] + sub r0, r0, #1 + cmp r1, r0 + bne _02239C5C + add r3, r1, #0 + add r1, r2, #0 + sub r1, #8 + sub r2, #0x20 + mov r0, #0x68 + ldr r1, [r5, r1] + mul r3, r0 + ldr r2, [r5, r2] + add r4, #8 + add r0, r4, #0 + add r1, r1, r3 + sub r2, r2, r3 + bl MIi_CpuCopy32 + b _02239C70 +_02239C5C: + add r4, #8 + sub r2, #8 + add r0, r4, #0 + ldr r4, [r5, r2] + mov r2, #0x68 + add r3, r1, #0 + mul r3, r2 + add r1, r4, r3 + bl MIi_CpuCopy32 +_02239C70: + ldr r1, _02239C9C ; =0x0223CAD4 + ldr r0, _02239CB8 ; =0x0000115E + ldr r3, [r1] + ldrh r2, [r3, r0] + add r2, r2, #1 + strh r2, [r3, r0] + ldr r3, [r1] + sub r1, r0, #2 + ldrh r2, [r3, r0] + ldrh r1, [r3, r1] + cmp r2, r1 + bne _02239C98 + add r0, #0x1e + ldr r1, [r3, r0] + cmp r1, #0 + beq _02239C94 + mov r0, #2 + blx r1 +_02239C94: + mov r0, #1 + pop {r3, r4, r5, pc} +_02239C98: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02239C9C: .word 0x0223CAD4 +_02239CA0: .word 0x0000115A +_02239CA4: .word 0x00001164 +_02239CA8: .word 0x0000117C +_02239CAC: .word 0x0000FFFF +_02239CB0: .word 0x00001048 +_02239CB4: .word 0x00001168 +_02239CB8: .word 0x0000115E + thumb_func_end MOD83_02239B80 + + thumb_func_start MOD83_02239CBC +MOD83_02239CBC: ; 0x02239CBC + push {r3, r4} + mov r2, #0 + add r3, r2, #0 + lsr r1, r1, #1 + beq _02239CE4 +_02239CC6: + lsl r4, r3, #1 + ldrh r4, [r0, r4] + add r3, r3, #1 + lsl r3, r3, #0x10 + add r2, r2, r4 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + lsl r4, r2, #1 + asr r2, r2, #0xf + orr r2, r4 + lsl r2, r2, #0x10 + lsr r3, r3, #0x10 + lsr r2, r2, #0x10 + cmp r3, r1 + blo _02239CC6 +_02239CE4: + add r0, r2, #0 + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD83_02239CBC + + thumb_func_start MOD83_02239CEC +MOD83_02239CEC: ; 0x02239CEC + push {r4, lr} + sub sp, #8 + ldr r0, _02239D80 ; =0x0223CAD4 + add r1, sp, #0 + ldr r4, [r0] + ldr r0, _02239D84 ; =0x00001170 + add r3, r4, r0 + ldrh r2, [r3] + sub r0, #0x16 + strh r2, [r1] + ldrh r2, [r3, #2] + strh r2, [r1, #6] + ldrh r2, [r3, #4] + add r3, sp, #0 + strh r2, [r1, #4] + ldrh r0, [r4, r0] + ldr r2, _02239D88 ; =0x00003FA2 + strh r0, [r1, #2] + mov r1, #0 +_02239D12: + ldrh r0, [r3] + add r1, r1, #1 + eor r0, r2 + strh r0, [r3] + ldrh r2, [r3] + add r3, r3, #2 + cmp r1, #4 + blt _02239D12 + ldr r0, _02239D80 ; =0x0223CAD4 + mov r2, #8 + ldr r1, [r0] + ldr r0, _02239D8C ; =0x0000104C + add r0, r1, r0 + add r1, sp, #0 + bl FUN_0209521C + ldr r0, _02239D80 ; =0x0223CAD4 + ldr r2, _02239D90 ; =0x00001178 + ldr r3, [r0] + ldr r0, _02239D8C ; =0x0000104C + ldr r1, [r3, r2] + sub r2, #0x18 + ldr r2, [r3, r2] + add r0, r3, r0 + add r3, r1, #0 + bl FUN_020952AC + ldr r1, _02239D80 ; =0x0223CAD4 + ldr r2, _02239D8C ; =0x0000104C + ldr r1, [r1] + mov r0, #0 + add r1, r1, r2 + lsr r2, r2, #4 + bl MIi_CpuClear32 + ldr r0, _02239D80 ; =0x0223CAD4 + ldr r1, _02239D90 ; =0x00001178 + ldr r2, [r0] + ldr r0, [r2, r1] + sub r1, #0x18 + ldr r1, [r2, r1] + bl MOD83_02239CBC + ldr r1, _02239D80 ; =0x0223CAD4 + ldr r2, [r1] + ldr r1, _02239D94 ; =0x0000115A + ldrh r1, [r2, r1] + cmp r1, r0 + bne _02239D7A + add sp, #8 + mov r0, #1 + pop {r4, pc} +_02239D7A: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02239D80: .word 0x0223CAD4 +_02239D84: .word 0x00001170 +_02239D88: .word 0x00003FA2 +_02239D8C: .word 0x0000104C +_02239D90: .word 0x00001178 +_02239D94: .word 0x0000115A + thumb_func_end MOD83_02239CEC + + thumb_func_start MOD83_02239D98 +MOD83_02239D98: ; 0x02239D98 + ldr r0, _02239D9C ; =0x000016A0 + bx lr + .align 2, 0 +_02239D9C: .word 0x000016A0 + thumb_func_end MOD83_02239D98 + + thumb_func_start MOD83_02239DA0 +MOD83_02239DA0: ; 0x02239DA0 + ldr r0, _02239DB8 ; =0x0223CAD4 + ldr r2, [r0] + ldr r0, _02239DBC ; =0x00001048 + ldr r1, [r2, r0] + cmp r1, #0 + beq _02239DB2 + sub r0, #0x68 + add r0, r2, r0 + bx lr +_02239DB2: + mov r0, #0 + bx lr + nop +_02239DB8: .word 0x0223CAD4 +_02239DBC: .word 0x00001048 + thumb_func_end MOD83_02239DA0 + + thumb_func_start MOD83_02239DC0 +MOD83_02239DC0: ; 0x02239DC0 + push {r3, lr} + add r1, #0x24 + mov r0, #0x1f + bic r1, r0 + add r1, #0x20 + mov r0, #0x56 + bl FUN_02016998 + add r2, r0, #0 + add r2, #0x20 + mov r1, #0x1f + bic r2, r1 + sub r1, r2, #4 + str r0, [r1] + add r0, r2, #0 + pop {r3, pc} + thumb_func_end MOD83_02239DC0 + + thumb_func_start MOD83_02239DE0 +MOD83_02239DE0: ; 0x02239DE0 + push {r3, lr} + cmp r1, #0 + beq _02239DEE + sub r0, r1, #4 + ldr r0, [r0] + bl FUN_02016A18 +_02239DEE: + pop {r3, pc} + thumb_func_end MOD83_02239DE0 + + thumb_func_start MOD83_02239DF0 +MOD83_02239DF0: ; 0x02239DF0 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, sp, #0 + add r1, sp, #4 + bl MOD04_021DD718 + ldr r0, [sp] + neg r0, r0 + bl MOD04_021D80E0 + ldr r1, _02239E34 ; =0x00002610 + str r0, [r4, r1] + ldr r0, [sp] + neg r2, r0 + add r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, [sp, #4] + add r0, #8 + str r2, [r4, r0] + sub r0, r1, #4 + mov r2, #1 + str r2, [r4, r0] + ldr r0, _02239E38 ; =0x0223CADC + mov r1, #0 + str r1, [r0, #0xc] + add r0, r4, #0 + bl MOD83_0222FA44 + ldr r0, _02239E3C ; =0x0000100E + add sp, #8 + pop {r4, pc} + nop +_02239E34: .word 0x00002610 +_02239E38: .word 0x0223CADC +_02239E3C: .word 0x0000100E + thumb_func_end MOD83_02239DF0 + + thumb_func_start MOD83_02239E40 +MOD83_02239E40: ; 0x02239E40 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02239E70 ; =0x00002618 + ldr r0, [r4, r0] + cmp r0, #5 + beq _02239E50 + cmp r0, #6 + bne _02239E5C +_02239E50: + bl MOD04_021DDC1C + ldr r0, _02239E74 ; =0x0223CADC + mov r1, #1 + str r1, [r0, #0xc] + b _02239E62 +_02239E5C: + ldr r0, _02239E74 ; =0x0223CADC + mov r1, #1 + str r1, [r0, #0xc] +_02239E62: + bl FUN_02033ED0 + ldr r0, _02239E78 ; =0x0000260C + mov r1, #0 + str r1, [r4, r0] + ldr r0, _02239E7C ; =0x0000100F + pop {r4, pc} + .align 2, 0 +_02239E70: .word 0x00002618 +_02239E74: .word 0x0223CADC +_02239E78: .word 0x0000260C +_02239E7C: .word 0x0000100F + thumb_func_end MOD83_02239E40 + + thumb_func_start MOD83_02239E80 +MOD83_02239E80: ; 0x02239E80 + push {lr} + sub sp, #0x3c + bl MOD04_021DDC1C + cmp r0, #4 + beq _02239E94 + cmp r0, #7 + beq _02239EA0 + cmp r0, #8 + b _02239EA0 +_02239E94: + add r0, sp, #0 + bl MOD04_021DD9DC + add sp, #0x3c + mov r0, #1 + pop {pc} +_02239EA0: + mov r0, #0 + add sp, #0x3c + pop {pc} + .align 2, 0 + thumb_func_end MOD83_02239E80 + + thumb_func_start MOD83_02239EA8 +MOD83_02239EA8: ; 0x02239EA8 + push {r3, r4} + ldr r3, _02239EBC ; =0x0223CADC + mov r4, #0 + str r4, [r3] + ldr r3, _02239EC0 ; =0x000015F4 + str r2, [r0, r3] + ldr r0, _02239EC4 ; =0x00001011 + str r0, [r1] + pop {r3, r4} + bx lr + .align 2, 0 +_02239EBC: .word 0x0223CADC +_02239EC0: .word 0x000015F4 +_02239EC4: .word 0x00001011 + thumb_func_end MOD83_02239EA8 + + thumb_func_start MOD83_02239EC8 +MOD83_02239EC8: ; 0x02239EC8 + push {r3, r4, r5, lr} + ldr r4, _02239EE4 ; =0x0223CADC + mov r5, #0 + str r5, [r4, #8] + str r1, [r4, #4] + ldr r1, _02239EE8 ; =0x000015F4 + str r3, [r0, r1] + ldr r0, _02239EEC ; =0x00001012 + str r0, [r2] + ldr r0, _02239EF0 ; =MOD83_02239F28 + bl MOD04_021DE404 + pop {r3, r4, r5, pc} + nop +_02239EE4: .word 0x0223CADC +_02239EE8: .word 0x000015F4 +_02239EEC: .word 0x00001012 +_02239EF0: .word MOD83_02239F28 + thumb_func_end MOD83_02239EC8 + + thumb_func_start MOD83_02239EF4 +MOD83_02239EF4: ; 0x02239EF4 + push {r3, lr} + cmp r1, #6 + bhi _02239F1C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02239F06: ; jump table + .short _02239F1C - _02239F06 - 2 ; case 0 + .short _02239F1C - _02239F06 - 2 ; case 1 + .short _02239F1C - _02239F06 - 2 ; case 2 + .short _02239F14 - _02239F06 - 2 ; case 3 + .short _02239F1C - _02239F06 - 2 ; case 4 + .short _02239F1C - _02239F06 - 2 ; case 5 + .short _02239F1C - _02239F06 - 2 ; case 6 +_02239F14: + cmp r0, #1 + bne _02239F1C + bl OS_Terminate +_02239F1C: + ldr r0, _02239F24 ; =0x0223CADC + mov r1, #1 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_02239F24: .word 0x0223CADC + thumb_func_end MOD83_02239EF4 + + thumb_func_start MOD83_02239F28 +MOD83_02239F28: ; 0x02239F28 + ldr r0, _02239F30 ; =0x0223CADC + mov r1, #1 + str r1, [r0, #8] + bx lr + .align 2, 0 +_02239F30: .word 0x0223CADC + thumb_func_end MOD83_02239F28 + + thumb_func_start MOD83_02239F34 +MOD83_02239F34: ; 0x02239F34 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_02006278 + ldr r1, _0223A24C ; =0x0000260C + add r4, r0, #0 + ldr r1, [r4, r1] + cmp r1, #1 + bne _02239F4C + bl MOD83_02239E40 + str r0, [r5] +_02239F4C: + ldr r0, _0223A250 ; =0x00002620 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02239F62 + blx r0 + cmp r0, #1 + bne _02239F62 + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] +_02239F62: + mov r3, #1 + ldr r0, [r5] + lsl r3, r3, #0xc + sub r0, r0, r3 + cmp r0, #0x12 + bls _02239F70 + b _0223A342 +_02239F70: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239F7C: ; jump table + .short _02239FA2 - _02239F7C - 2 ; case 0 + .short _02239FB0 - _02239F7C - 2 ; case 1 + .short _02239FCC - _02239F7C - 2 ; case 2 + .short _02239FF4 - _02239F7C - 2 ; case 3 + .short _0223A046 - _02239F7C - 2 ; case 4 + .short _0223A05E - _02239F7C - 2 ; case 5 + .short _0223A09A - _02239F7C - 2 ; case 6 + .short _0223A0BE - _02239F7C - 2 ; case 7 + .short _0223A0F2 - _02239F7C - 2 ; case 8 + .short _0223A114 - _02239F7C - 2 ; case 9 + .short _0223A14E - _02239F7C - 2 ; case 10 + .short _0223A174 - _02239F7C - 2 ; case 11 + .short _0223A1E8 - _02239F7C - 2 ; case 12 + .short _0223A212 - _02239F7C - 2 ; case 13 + .short _0223A342 - _02239F7C - 2 ; case 14 + .short _0223A238 - _02239F7C - 2 ; case 15 + .short _0223A2D4 - _02239F7C - 2 ; case 16 + .short _0223A2F8 - _02239F7C - 2 ; case 17 + .short _0223A31E - _02239F7C - 2 ; case 18 +_02239FA2: + bl FUN_0202E49C + bl FUN_02088858 + ldr r0, _0223A254 ; =0x00001001 + str r0, [r5] + b _0223A342 +_02239FB0: + bl FUN_0202E4C8 + cmp r0, #0 + beq _0223A092 + ldr r0, _0223A258 ; =MOD83_02239DC0 + ldr r1, _0223A25C ; =MOD83_02239DE0 + bl MOD04_021DD968 + ldr r0, [r4, #4] + bl FUN_02033310 + ldr r0, _0223A260 ; =0x00001002 + str r0, [r5] + b _0223A342 +_02239FCC: + ldr r0, _0223A264 ; =0x000015E4 + mov r1, #2 + add r0, r4, r0 + mov r2, #1 + mov r3, #0x14 + bl MOD04_021DDEE0 + mov r0, #2 + bl MOD04_021DDE7C + bl MOD04_021DDDCC + bl FUN_02033E74 + ldr r0, _0223A268 ; =0x00001003 + mov r1, #0 + str r0, [r5] + ldr r0, _0223A26C ; =0x0000261C + str r1, [r4, r0] + b _0223A342 +_02239FF4: + bl MOD04_021DDD7C + cmp r0, #0 + bne _0223A002 + bl MOD04_021DDCE8 + b _0223A034 +_0223A002: + add r0, r4, #0 + bl MOD83_02239E80 + cmp r0, #1 + bne _0223A02C + ldr r0, _0223A26C ; =0x0000261C + ldr r1, [r4, r0] + cmp r1, #1 + bne _0223A020 + ldr r0, _0223A270 ; =0x0223CADC + mov r1, #3 + str r1, [r0, #4] + ldr r0, _0223A274 ; =0x0000100D + str r0, [r5] + b _0223A034 +_0223A020: + ldr r1, _0223A278 ; =0x021DD984 + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, _0223A27C ; =0x00001004 + str r0, [r5] + b _0223A034 +_0223A02C: + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] +_0223A034: + ldr r0, _0223A280 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _0223A092 + ldr r0, _0223A26C ; =0x0000261C + mov r1, #1 + str r1, [r4, r0] + b _0223A342 +_0223A046: + bl MOD04_021DE05C + cmp r0, #0 + bne _0223A058 + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] + b _0223A342 +_0223A058: + ldr r0, _0223A284 ; =0x00001005 + str r0, [r5] + b _0223A342 +_0223A05E: + bl MOD04_021DDF4C + cmp r0, #3 + bne _0223A06C + ldr r0, _0223A288 ; =0x00001006 + str r0, [r5] + b _0223A088 +_0223A06C: + cmp r0, #4 + bne _0223A07A + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] + b _0223A088 +_0223A07A: + cmp r0, #5 + bne _0223A088 + ldr r0, _0223A270 ; =0x0223CADC + mov r1, #3 + str r1, [r0, #4] + ldr r0, _0223A274 ; =0x0000100D + str r0, [r5] +_0223A088: + ldr r0, _0223A280 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + bne _0223A094 +_0223A092: + b _0223A342 +_0223A094: + bl MOD04_021DDF40 + b _0223A342 +_0223A09A: + ldr r0, _0223A28C ; =MOD83_02239EF4 + ldr r1, _0223A290 ; =0x0223B838 + ldr r2, _0223A294 ; =0x0223B840 + bl MOD04_021DE45C + cmp r0, #0 + bne _0223A0B2 + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] + b _0223A342 +_0223A0B2: + ldr r2, _0223A298 ; =0x00001007 + add r0, r4, #0 + add r1, r5, #0 + bl MOD83_02239EA8 + b _0223A342 +_0223A0BE: + ldr r0, _0223A26C ; =0x0000261C + ldr r0, [r4, r0] + cmp r0, #1 + bne _0223A0D4 + add r0, r4, #0 + mov r1, #3 + add r2, r5, #0 + add r3, #0xc + bl MOD83_02239EC8 + b _0223A342 +_0223A0D4: + ldr r0, _0223A29C ; =0x0223B854 + add r1, r0, #0 + add r2, r0, #0 + bl MOD04_021DE3D0 + cmp r0, #0 + bne _0223A0EC + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] + b _0223A342 +_0223A0EC: + ldr r0, _0223A2A0 ; =0x00001008 + str r0, [r5] + b _0223A342 +_0223A0F2: + ldr r0, _0223A2A4 ; =0x000015F8 + add r0, r4, r0 + bl MOD04_021DE3AC + cmp r0, #0 + bne _0223A108 + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] + b _0223A342 +_0223A108: + ldr r2, _0223A2A8 ; =0x00001009 + add r0, r4, #0 + add r1, r5, #0 + bl MOD83_02239EA8 + b _0223A342 +_0223A114: + ldr r0, _0223A2A4 ; =0x000015F8 + ldr r0, [r4, r0] + cmp r0, #1 + beq _0223A12A + add r0, r4, #0 + mov r1, #2 + add r2, r5, #0 + add r3, #0xd + bl MOD83_02239EC8 + b _0223A342 +_0223A12A: + ldr r0, _0223A2AC ; =0x0223CAEC + mov r1, #0 + mov r2, #0xa + bl MOD04_021DE364 + cmp r0, #0 + bne _0223A142 + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] + b _0223A342 +_0223A142: + ldr r2, _0223A2B0 ; =0x0000100A + add r0, r4, #0 + add r1, r5, #0 + bl MOD83_02239EA8 + b _0223A342 +_0223A14E: + ldr r1, _0223A2B4 ; =0x000015FC + ldr r0, _0223A2AC ; =0x0223CAEC + add r1, r4, r1 + add r2, r3, #0 + bl MOD04_021DE330 + cmp r0, #0 + bne _0223A168 + add r0, r4, #0 + bl MOD83_02239DF0 + str r0, [r5] + b _0223A342 +_0223A168: + ldr r0, _0223A2B8 ; =0x0000100B + mov r1, #0 + str r0, [r5] + ldr r0, _0223A2BC ; =0x00002608 + str r1, [r4, r0] + b _0223A342 +_0223A174: + ldr r0, _0223A270 ; =0x0223CADC + ldr r0, [r0] + cmp r0, #0 + bne _0223A1C4 + ldr r0, _0223A280 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _0223A194 + add r0, r4, #0 + mov r1, #3 + add r2, r5, #0 + add r3, #0xc + bl MOD83_02239EC8 + b _0223A342 +_0223A194: + mov r1, #0x26 + lsl r1, r1, #8 + add r0, r4, r1 + add r1, r1, #4 + add r1, r4, r1 + bl MOD04_021DE2D0 + cmp r0, #1 + bne _0223A21A + mov r1, #0x26 + lsl r1, r1, #8 + ldr r2, [r4, r1] + add r1, r1, #4 + mov r0, #0x64 + ldr r1, [r4, r1] + mul r0, r2 + bl _u32_div_f + ldr r1, _0223A2BC ; =0x00002608 + ldr r2, [r4, r1] + cmp r2, r0 + beq _0223A21A + str r0, [r4, r1] + b _0223A342 +_0223A1C4: + ldr r0, _0223A26C ; =0x0000261C + ldr r0, [r4, r0] + cmp r0, #0 + bne _0223A1DA + add r0, r4, #0 + mov r1, #1 + add r2, r5, #0 + add r3, #0xd + bl MOD83_02239EC8 + b _0223A342 +_0223A1DA: + add r0, r4, #0 + mov r1, #3 + add r2, r5, #0 + add r3, #0xd + bl MOD83_02239EC8 + b _0223A342 +_0223A1E8: + bl MOD04_021DE308 + cmp r0, #0 + bne _0223A1F6 + ldr r0, _0223A274 ; =0x0000100D + str r0, [r5] + b _0223A342 +_0223A1F6: + ldr r0, _0223A250 ; =0x00002620 + mov r1, #0 + str r1, [r4, r0] + bl FUN_02033ED0 + bl FUN_02033364 + bl FUN_02088868 + bl FUN_0202E4F0 + ldr r0, _0223A270 ; =0x0223CADC + ldr r0, [r0, #4] + pop {r3, r4, r5, pc} +_0223A212: + bl MOD04_021DDB40 + cmp r0, #1 + beq _0223A21C +_0223A21A: + b _0223A342 +_0223A21C: + ldr r0, _0223A250 ; =0x00002620 + mov r1, #0 + str r1, [r4, r0] + bl FUN_02033ED0 + bl FUN_020332DC + bl FUN_02088868 + bl FUN_0202E4F0 + ldr r0, _0223A270 ; =0x0223CADC + ldr r0, [r0, #4] + pop {r3, r4, r5, pc} +_0223A238: + ldr r0, _0223A270 ; =0x0223CADC + ldr r0, [r0, #0xc] + cmp r0, #1 + beq _0223A242 + b _0223A342 +_0223A242: + add r0, r4, #0 + bl MOD83_022307B4 + ldr r0, _0223A2C0 ; =0x00002618 + b _0223A2C4 + .align 2, 0 +_0223A24C: .word 0x0000260C +_0223A250: .word 0x00002620 +_0223A254: .word 0x00001001 +_0223A258: .word MOD83_02239DC0 +_0223A25C: .word MOD83_02239DE0 +_0223A260: .word 0x00001002 +_0223A264: .word 0x000015E4 +_0223A268: .word 0x00001003 +_0223A26C: .word 0x0000261C +_0223A270: .word 0x0223CADC +_0223A274: .word 0x0000100D +_0223A278: .word 0x021DD984 +_0223A27C: .word 0x00001004 +_0223A280: .word 0x021C48B8 +_0223A284: .word 0x00001005 +_0223A288: .word 0x00001006 +_0223A28C: .word MOD83_02239EF4 +_0223A290: .word 0x0223B838 +_0223A294: .word 0x0223B840 +_0223A298: .word 0x00001007 +_0223A29C: .word 0x0223B854 +_0223A2A0: .word 0x00001008 +_0223A2A4: .word 0x000015F8 +_0223A2A8: .word 0x00001009 +_0223A2AC: .word 0x0223CAEC +_0223A2B0: .word 0x0000100A +_0223A2B4: .word 0x000015FC +_0223A2B8: .word 0x0000100B +_0223A2BC: .word 0x00002608 +_0223A2C0: .word 0x00002618 +_0223A2C4: + ldr r0, [r4, r0] + cmp r0, #6 + bne _0223A2CE + bl MOD04_021DDBBC +_0223A2CE: + ldr r0, _0223A348 ; =0x00001010 + str r0, [r5] + b _0223A342 +_0223A2D4: + ldr r0, _0223A34C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223A342 + ldr r0, _0223A350 ; =0x00002620 + mov r1, #0 + str r1, [r4, r0] + bl MOD04_021DD6F0 + bl FUN_020332DC + bl FUN_02088868 + bl FUN_0202E4F0 + mov r0, #4 + pop {r3, r4, r5, pc} +_0223A2F8: + ldr r0, _0223A354 ; =0x0223CADC + ldr r1, [r0] + cmp r1, #1 + bne _0223A30C + mov r1, #0 + str r1, [r0] + ldr r0, _0223A358 ; =0x000015F4 + ldr r0, [r4, r0] + str r0, [r5] + b _0223A342 +_0223A30C: + ldr r0, _0223A34C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _0223A342 + ldr r0, _0223A35C ; =0x0000261C + mov r1, #1 + str r1, [r4, r0] + b _0223A342 +_0223A31E: + ldr r0, _0223A354 ; =0x0223CADC + ldr r1, [r0, #8] + cmp r1, #1 + bne _0223A332 + mov r1, #0 + str r1, [r0, #8] + ldr r0, _0223A358 ; =0x000015F4 + ldr r0, [r4, r0] + str r0, [r5] + b _0223A342 +_0223A332: + ldr r0, _0223A34C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _0223A342 + ldr r0, _0223A35C ; =0x0000261C + mov r1, #1 + str r1, [r4, r0] +_0223A342: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0223A348: .word 0x00001010 +_0223A34C: .word 0x021C48B8 +_0223A350: .word 0x00002620 +_0223A354: .word 0x0223CADC +_0223A358: .word 0x000015F4 +_0223A35C: .word 0x0000261C + thumb_func_end MOD83_02239F34 + + .section .rodata + ; 0x0223A360 + .incbin "baserom.nds", 0x2FE3A0, 0x41C + + .section .data + ; 0x0223A780 + .incbin "baserom.nds", 0x2FE7C0, 0x10E0 + + .section .bss + ; 0x0223B860 + .space 0x1980 diff --git a/arm9/modules/84/asm/module_84.s b/arm9/modules/84/asm/module_84.s new file mode 100644 index 00000000..47a474a3 --- /dev/null +++ b/arm9/modules/84/asm/module_84.s @@ -0,0 +1,6231 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD84_021D74E0 +MOD84_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r1, [r5] + add r6, r0, #0 + cmp r1, #0 + beq _021D74FC + cmp r1, #1 + bne _021D74F4 + b _021D7620 +_021D74F4: + cmp r1, #2 + bne _021D74FA + b _021D765A +_021D74FA: + b _021D7668 +_021D74FC: + mov r0, #3 + mov r1, #0x4b + lsl r2, r0, #0x10 + bl FUN_0201681C + ldr r1, _021D7670 ; =0x00001244 + add r0, r6, #0 + mov r2, #0x4b + bl FUN_02006268 + add r4, r0, #0 + bne _021D7516 + b _021D7618 +_021D7516: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7674 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7678 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + add r0, r6, #0 + bl FUN_0200628C + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x1c] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x4b + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x80 + add r1, #0xe0 + mov r2, #0x4b + bl FUN_02008C9C + add r1, r4, #0 + add r1, #0xdc + str r0, [r1] + add r0, r4, #0 + mov r2, #0xd + add r0, #0xe0 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D04 + add r0, r4, #0 + mov r1, #0 + add r0, #0xe0 + add r2, r1, #0 + bl FUN_02008D24 + add r0, r4, #0 + str r6, [r4] + bl MOD84_021D7968 + add r0, r4, #0 + bl MOD84_021D7AA0 + add r0, r4, #0 + bl MOD84_021D7F94 + add r0, r4, #0 + bl MOD84_021D82B8 + ldr r2, _021D767C ; =0x000001ED + mov r0, #0 + mov r1, #0x1a + mov r3, #0x4b + bl FUN_0200A86C + str r0, [r4, #0x14] + str r0, [sp] + mov r1, #0xef + ldr r0, [r4, #4] + mvn r1, r1 + mov r2, #1 + mov r3, #0 + bl MOD84_021D84F8 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + ldr r1, _021D7680 ; =0xFFFFFE40 + str r0, [sp] + ldr r0, [r4, #4] + mov r2, #5 + mov r3, #0 + bl MOD84_021D84F8 + str r0, [r4, #0xc] + mov r1, #0 + ldr r2, _021D7684 ; =0x021DA6C8 + ldr r0, _021D7688 ; =0x00001224 + str r1, [r4, #0x10] + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r2, #0x2c] + add r0, r4, #0 + blx r2 + ldr r1, _021D768C ; =0x0000122C + mov r2, #1 + str r0, [r4, r1] + ldr r1, _021D7690 ; =0x000004A2 + mov r0, #0xe + bl FUN_0200433C + ldr r0, _021D7694 ; =MOD84_021D7958 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA60 + ldr r1, _021D7698 ; =0x00001230 + str r0, [r4, r1] + ldr r0, _021D769C ; =MOD84_021D7950 + add r1, r4, #0 + bl FUN_02015F10 +_021D7618: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7668 +_021D7620: + bl FUN_02006278 + ldr r2, _021D7684 ; =0x021DA6C8 + ldr r1, _021D768C ; =0x0000122C + add r4, r0, #0 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r2, [r2, #0x30] + add r1, r4, r1 + blx r2 + cmp r0, #0 + beq _021D7668 + ldr r1, _021D76A0 ; =0x00001228 + mov r0, #0 + str r0, [r4, r1] + mov r1, #0x20 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r2, #0x4b + str r2, [sp, #8] + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7668 +_021D765A: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7668 + add sp, #0x14 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D7668: + mov r0, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021D7670: .word 0x00001244 +_021D7674: .word 0xFFFFE0FF +_021D7678: .word 0x04001000 +_021D767C: .word 0x000001ED +_021D7680: .word 0xFFFFFE40 +_021D7684: .word 0x021DA6C8 +_021D7688: .word 0x00001224 +_021D768C: .word 0x0000122C +_021D7690: .word 0x000004A2 +_021D7694: .word MOD84_021D7958 +_021D7698: .word 0x00001230 +_021D769C: .word MOD84_021D7950 +_021D76A0: .word 0x00001228 + thumb_func_end MOD84_021D74E0 + + thumb_func_start MOD84_021D76A4 +MOD84_021D76A4: ; 0x021D76A4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + bl FUN_02006278 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D773E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D76C2: ; jump table + .short _021D76CA - _021D76C2 - 2 ; case 0 + .short _021D76EE - _021D76C2 - 2 ; case 1 + .short _021D771A - _021D76C2 - 2 ; case 2 + .short _021D772E - _021D76C2 - 2 ; case 3 +_021D76CA: + bl OS_DisableInterrupts + add r6, r0, #0 + ldr r0, _021D7744 ; =0x00001230 + ldr r0, [r5, r0] + bl FUN_0200CAB4 + add r0, r6, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D76EE: + ldr r0, [r5, #0xc] + bl MOD84_021D85B8 + ldr r0, [r5, #8] + bl MOD84_021D85B8 + ldr r0, [r5, #0x14] + bl FUN_0200A8B8 + add r0, r5, #0 + bl MOD84_021D8000 + add r0, r5, #0 + bl MOD84_021D7AB8 + add r0, r5, #0 + bl MOD84_021D7A84 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D771A: + add r5, #0xdc + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D772E: + add r0, r6, #0 + bl FUN_0200627C + mov r0, #0x4b + bl FUN_020168D0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D773E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021D7744: .word 0x00001230 + thumb_func_end MOD84_021D76A4 + + thumb_func_start MOD84_021D7748 +MOD84_021D7748: ; 0x021D7748 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD84_021D85EC + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD84_021D85EC + str r0, [r4, #0x10] + ldr r0, [r5] + cmp r0, #0xa + bhi _021D7804 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7778: ; jump table + .short _021D778E - _021D7778 - 2 ; case 0 + .short _021D77EC - _021D7778 - 2 ; case 1 + .short _021D7826 - _021D7778 - 2 ; case 2 + .short _021D7846 - _021D7778 - 2 ; case 3 + .short _021D7868 - _021D7778 - 2 ; case 4 + .short _021D7874 - _021D7778 - 2 ; case 5 + .short _021D789C - _021D7778 - 2 ; case 6 + .short _021D78AA - _021D7778 - 2 ; case 7 + .short _021D78BE - _021D7778 - 2 ; case 8 + .short _021D7920 - _021D7778 - 2 ; case 9 + .short _021D7914 - _021D7778 - 2 ; case 10 +_021D778E: + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _021D77C8 + ldr r0, _021D7928 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #8 + tst r0, r1 + beq _021D77C8 + ldr r0, [r4, #0x18] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D77C8 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #7 + str r0, [r5] + b _021D7920 +_021D77C8: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7930 ; =0x021DA6FC + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7804 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + str r0, [r5] + b _021D7920 +_021D77EC: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7938 ; =0x021DA700 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + bne _021D7806 +_021D7804: + b _021D7920 +_021D7806: + ldr r0, _021D793C ; =0x00001224 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #7 + bhs _021D7820 + mov r1, #0 + add r0, r0, #4 + str r1, [r4, r0] + mov r0, #2 + str r0, [r5] + b _021D7920 +_021D7820: + mov r0, #4 + str r0, [r5] + b _021D7920 +_021D7826: + ldr r2, _021D793C ; =0x00001224 + ldr r1, [r4, #4] + ldr r2, [r4, r2] + add r0, r4, #0 + lsl r3, r2, #4 + ldr r2, _021D7940 ; =0x021DA6F4 + ldr r2, [r2, r3] + blx r2 + ldr r1, _021D792C ; =0x0000122C + mov r2, #0 + str r0, [r4, r1] + sub r0, r1, #4 + str r2, [r4, r0] + mov r0, #3 + str r0, [r5] + b _021D7920 +_021D7846: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7944 ; =0x021DA6F8 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7920 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + str r1, [r5] + b _021D7920 +_021D7868: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021D7920 + mov r0, #5 + str r0, [r5] + b _021D7920 +_021D7874: + ldr r0, _021D7928 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #9 + tst r0, r1 + beq _021D7920 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D7920 +_021D789C: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D78AA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + mov r0, #8 + str r0, [r5] + b _021D7920 +_021D78BE: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7938 ; =0x021DA700 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7920 + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD84_021D87B0 + ldr r0, [r4, #8] + bl MOD84_021D881C + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7948 ; =0xFFFF1FFF + and r1, r0 + str r1, [r2] + ldr r2, _021D794C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0x20 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0xa + str r0, [r5] + b _021D7920 +_021D7914: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + mov r0, #5 + str r0, [r5] +_021D7920: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7928: .word 0x021C48B8 +_021D792C: .word 0x0000122C +_021D7930: .word 0x021DA6FC +_021D7934: .word 0x00001228 +_021D7938: .word 0x021DA700 +_021D793C: .word 0x00001224 +_021D7940: .word 0x021DA6F4 +_021D7944: .word 0x021DA6F8 +_021D7948: .word 0xFFFF1FFF +_021D794C: .word 0x04001000 + thumb_func_end MOD84_021D7748 + + thumb_func_start MOD84_021D7950 +MOD84_021D7950: ; 0x021D7950 + ldr r3, _021D7954 ; =MOD84_021D7CFC + bx r3 + .align 2, 0 +_021D7954: .word MOD84_021D7CFC + thumb_func_end MOD84_021D7950 + + thumb_func_start MOD84_021D7958 +MOD84_021D7958: ; 0x021D7958 + push {r3, lr} + add r1, #0xdc + ldr r0, [r1] + bl FUN_0201FDEC + bl FUN_02009F80 + pop {r3, pc} + thumb_func_end MOD84_021D7958 + + thumb_func_start MOD84_021D7968 +MOD84_021D7968: ; 0x021D7968 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x4b + bl FUN_02016B94 + str r0, [r4, #4] + ldr r0, _021D7A60 ; =0x021DA68C + bl FUN_0201E66C + ldr r2, _021D7A64 ; =0x04000304 + ldr r0, _021D7A68 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl GX_SetGraphicsMode + ldr r0, _021D7A6C ; =0x021DA650 + bl FUN_02016BBC + ldr r0, [r4, #4] + ldr r2, _021D7A70 ; =0x021DA670 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D7A70 ; =0x021DA670 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x42 + add r3, r2, #0 + bl FUN_02006948 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x42 + mov r2, #4 + bl FUN_02006948 + ldr r2, _021D7A74 ; =0x04000050 + mov r0, #0 + add r3, r2, #0 + add r7, r2, #0 + ldr r1, _021D7A78 ; =0x04001050 + strh r0, [r2] + strh r0, [r1] + mov r0, #0xff + sub r3, #0x10 + strh r0, [r3] + add r3, r2, #0 + ldr r4, _021D7A7C ; =0x00005EC0 + sub r3, #0xc + strh r4, [r3] + sub r7, #8 + ldrh r4, [r7] + mov r5, #0x3f + mov r3, #0x1d + bic r4, r5 + add r6, r4, #0 + orr r6, r3 + mov r4, #0x20 + orr r6, r4 + strh r6, [r7] + sub r7, r2, #6 + ldrh r6, [r7] + mov r2, #0x1f + bic r6, r5 + orr r6, r2 + orr r6, r4 + strh r6, [r7] + add r6, r1, #0 + sub r6, #0x10 + strh r0, [r6] + add r0, r1, #0 + mov r6, #0x18 + sub r0, #0xc + strh r6, [r0] + add r6, r1, #0 + sub r6, #8 + ldrh r0, [r6] + bic r0, r5 + orr r0, r3 + orr r0, r4 + sub r3, r1, #6 + strh r0, [r6] + ldrh r0, [r3] + sub r1, #0x50 + bic r0, r5 + orr r0, r2 + orr r0, r4 + strh r0, [r3] + lsl r3, r4, #0x15 + ldr r0, [r3] + ldr r2, _021D7A80 ; =0xFFFF1FFF + add r5, r0, #0 + and r5, r2 + lsl r0, r4, #8 + orr r0, r5 + str r0, [r3] + ldr r0, [r1] + and r2, r0 + lsl r0, r4, #8 + orr r0, r2 + str r0, [r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7A60: .word 0x021DA68C +_021D7A64: .word 0x04000304 +_021D7A68: .word 0xFFFF7FFF +_021D7A6C: .word 0x021DA650 +_021D7A70: .word 0x021DA670 +_021D7A74: .word 0x04000050 +_021D7A78: .word 0x04001050 +_021D7A7C: .word 0x00005EC0 +_021D7A80: .word 0xFFFF1FFF + thumb_func_end MOD84_021D7968 + + thumb_func_start MOD84_021D7A84 +MOD84_021D7A84: ; 0x021D7A84 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD84_021D7A84 + + thumb_func_start MOD84_021D7AA0 +MOD84_021D7AA0: ; 0x021D7AA0 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D7AC8 + add r0, r4, #0 + bl MOD84_021D7B54 + add r0, r4, #0 + bl MOD84_021D7BC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D7AA0 + + thumb_func_start MOD84_021D7AB8 +MOD84_021D7AB8: ; 0x021D7AB8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D7CD4 + add r0, r4, #0 + bl MOD84_021D7BBC + pop {r4, pc} + thumb_func_end MOD84_021D7AB8 + + thumb_func_start MOD84_021D7AC8 +MOD84_021D7AC8: ; 0x021D7AC8 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _021D7B3C ; =0x04000060 + ldr r2, _021D7B40 ; =0xFFFFCFFD + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021D7B44 ; =0x0000CFFB + and r3, r1 + strh r3, [r0] + ldrh r3, [r0] + sub r1, r1, #4 + and r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D7B48 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021D7B4C ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _021D7B50 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r0, r2 + strh r0, [r1] + pop {r3, pc} + nop +_021D7B3C: .word 0x04000060 +_021D7B40: .word 0xFFFFCFFD +_021D7B44: .word 0x0000CFFB +_021D7B48: .word 0x04000540 +_021D7B4C: .word 0xBFFF0000 +_021D7B50: .word 0x04000008 + thumb_func_end MOD84_021D7AC8 + + thumb_func_start MOD84_021D7B54 +MOD84_021D7B54: ; 0x021D7B54 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x4b + bl FUN_0201EB64 + str r0, [r4, #0x20] + mov r0, #0 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + strh r0, [r4, #0x30] + strh r0, [r4, #0x32] + strh r0, [r4, #0x34] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + mov r1, #0x4b + str r0, [sp, #8] + add r0, r4, #0 + add r2, r4, #0 + ldr r3, _021D7BB8 ; =0x00000FA4 + add r0, #0x24 + lsl r1, r1, #0xe + add r2, #0x30 + bl FUN_0201ECA8 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + str r1, [sp, #0xc] + str r1, [sp, #0x14] + ldr r1, [r4, #0x20] + add r0, sp, #0xc + bl FUN_0201EC58 + ldr r0, [r4, #0x20] + bl FUN_0201EB8C + mov r1, #0xfa + ldr r2, [r4, #0x20] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + add sp, #0x18 + pop {r4, pc} + nop +_021D7BB8: .word 0x00000FA4 + thumb_func_end MOD84_021D7B54 + + thumb_func_start MOD84_021D7BBC +MOD84_021D7BBC: ; 0x021D7BBC + ldr r3, _021D7BC4 ; =FUN_0201EB70 + ldr r0, [r0, #0x20] + bx r3 + nop +_021D7BC4: .word FUN_0201EB70 + thumb_func_end MOD84_021D7BBC + + thumb_func_start MOD84_021D7BC8 +MOD84_021D7BC8: ; 0x021D7BC8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #0 + add r5, r0, #0 + add r4, r5, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #1 + mov r3, #0x4b + add r4, #0x38 + bl FUN_02006D18 + str r0, [r5, #0x38] + ldr r1, [sp, #8] + bl DC_FlushRange + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _021D7CCC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + str r1, [r0] + mov r2, #0 + add r0, r4, #0 + ldr r1, _021D7CD0 ; =0xFFF8E000 + str r2, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + add r0, #0x94 + strh r2, [r0] + mov r1, #0xa5 + add r0, r4, #0 + lsl r1, r1, #4 + add r0, #0x96 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x50 + add r0, #0x98 + strh r1, [r0] + ldr r0, [r4] + bl FUN_020BC13C + str r0, [r4, #0x5c] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0x64] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0x64] + bl FUN_0201B3A8 + add r0, r4, #0 + ldr r1, [r4, #0x60] + add r0, #8 + bl FUN_020B80B4 + mov r2, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #3 + mov r3, #0x4b + bl FUN_02006D18 + str r0, [r4, #4] + cmp r0, #0 + beq _021D7CCC + ldr r1, [sp, #8] + bl DC_FlushRange + add r0, r4, #0 + add r0, #0x6c + mov r1, #0x4b + mov r2, #0x20 + bl FUN_02016B20 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020BC4C8 + add r5, r0, #0 + add r0, r4, #0 + ldr r2, [r4, #0x60] + add r0, #0x6c + add r1, r5, #0 + bl FUN_020BB8D0 + str r0, [r4, #0x68] + ldr r2, [r4, #0x60] + ldr r3, [r4, #0x64] + add r1, r5, #0 + bl FUN_020B8110 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #8 + bl FUN_020B7EFC + add r0, r4, #0 + mov r1, #0 + add r0, #0x9c + str r1, [r0] + ldr r0, [r4, #0x68] + add r4, #0xa0 + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + str r0, [r4] +_021D7CCC: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021D7CD0: .word 0xFFF8E000 + thumb_func_end MOD84_021D7BC8 + + thumb_func_start MOD84_021D7CD4 +MOD84_021D7CD4: ; 0x021D7CD4 + push {r4, lr} + add r4, r0, #0 + add r4, #0x38 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7CF0 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #0x6c + bl thunk_FUN_020ae84c + ldr r0, [r4, #4] + bl FUN_02016A18 +_021D7CF0: + ldr r0, [r4] + cmp r0, #0 + beq _021D7CFA + bl FUN_02016A18 +_021D7CFA: + pop {r4, pc} + thumb_func_end MOD84_021D7CD4 + + thumb_func_start MOD84_021D7CFC +MOD84_021D7CFC: ; 0x021D7CFC + push {r3, r4, lr} + sub sp, #0x4c + add r4, r0, #0 + bl G3X_ResetMtxStack + mov r1, #0 + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + bl FUN_0201EBA4 + add r4, #0x38 + add r0, sp, #0x28 + bl MTX_Identity33_ + add r0, r4, #0 + add r0, #0x94 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotX33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x96 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotY33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x98 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotZ33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r1, r4, #0 + add r1, #0x9c + ldr r2, [r1] + mov r1, #2 + lsl r1, r1, #0xa + add r2, r2, r1 + add r1, r4, #0 + add r1, #0x9c + str r2, [r1] + add r1, r4, #0 + add r1, #0xa0 + ldr r2, [r1] + add r1, r4, #0 + add r1, #0x9c + add r0, r4, #0 + ldr r1, [r1] + add r0, #0x9c + cmp r1, r2 + blt _021D7DBA + ldr r1, [r0] + sub r1, r1, r2 + str r1, [r0] +_021D7DBA: + add r0, r4, #0 + add r0, #0x9c + ldr r1, [r0] + ldr r0, [r4, #0x68] + add r2, sp, #0x28 + str r1, [r0] + add r0, r4, #0 + add r1, r4, #0 + add r4, #0x88 + add r0, #8 + add r1, #0x7c + add r3, r4, #0 + bl FUN_0201B26C + mov r2, #1 + mov r0, #0x12 + add r1, sp, #0 + str r2, [sp] + bl FUN_020BB1C0 + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + add sp, #0x4c + pop {r3, r4, pc} + nop +_021D7DF0: .word 0x020FFA38 + thumb_func_end MOD84_021D7CFC + + thumb_func_start MOD84_021D7DF4 +MOD84_021D7DF4: ; 0x021D7DF4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r0, #0x38] + add r5, r1, #0 + add r4, #0x38 + cmp r0, #0 + beq _021D7E08 + bl FUN_02016A18 +_021D7E08: + ldr r1, _021D7ED4 ; =0x021DA648 + lsl r3, r5, #1 + mov r2, #0 + ldrh r1, [r1, r3] + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r3, #0x4b + bl FUN_02006D18 + str r0, [r4] + cmp r0, #0 + beq _021D7E9A + ldr r1, [sp, #8] + bl DC_FlushRange + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + str r1, [r0] + mov r2, #0 + add r0, r4, #0 + ldr r1, _021D7ED8 ; =0xFFF8E000 + str r2, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + add r0, #0x94 + strh r2, [r0] + mov r1, #0xa5 + add r0, r4, #0 + lsl r1, r1, #4 + add r0, #0x96 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x50 + add r0, #0x98 + strh r1, [r0] + ldr r0, [r4] + bl FUN_020BC13C + str r0, [r4, #0x5c] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0x64] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0x64] + bl FUN_0201B3A8 + add r0, r4, #0 + ldr r1, [r4, #0x60] + add r0, #8 + bl FUN_020B80B4 +_021D7E9A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7ED0 + mov r1, #0 + bl FUN_020BC4C8 + add r1, r0, #0 + ldr r0, [r4, #0x68] + ldr r2, [r4, #0x60] + ldr r3, [r4, #0x64] + bl FUN_020B8110 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #8 + bl FUN_020B7EFC + add r0, r4, #0 + mov r1, #0 + add r0, #0x9c + str r1, [r0] + ldr r0, [r4, #0x68] + add r4, #0xa0 + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + str r0, [r4] +_021D7ED0: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021D7ED4: .word 0x021DA648 +_021D7ED8: .word 0xFFF8E000 + thumb_func_end MOD84_021D7DF4 + + thumb_func_start MOD84_021D7EDC +MOD84_021D7EDC: ; 0x021D7EDC + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x8b + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x25 + lsl r0, r0, #4 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x9d + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + mov r0, #0xa2 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + mov r0, #0xa7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + ldr r0, [r5, #0x18] + ldr r0, [r0] + cmp r0, #1 + bne _021D7F2A + mov r0, #1 + b _021D7F2C +_021D7F2A: + mov r0, #0 +_021D7F2C: + mov r2, #0 + lsl r4, r0, #3 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r0, r0, #0xf + str r0, [sp, #8] + mov r0, #0x4b + ldr r1, _021D7F84 ; =0x021DA660 + str r0, [sp, #0xc] + mov r0, #0x82 + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x10] + ldrh r1, [r1, r4] + mov r0, #0x7f + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + ldr r1, _021D7F88 ; =0x021DA662 + str r0, [sp] + mov r0, #0x9d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #4] + ldrh r1, [r1, r4] + mov r0, #0x7f + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + ldr r1, _021D7F8C ; =0x021DA664 + ldr r2, _021D7F90 ; =0x021DA666 + ldrh r1, [r1, r4] + ldrh r2, [r2, r4] + mov r0, #0x7f + bl MOD84_021D81DC + mov r1, #0xad + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021D7F84: .word 0x021DA660 +_021D7F88: .word 0x021DA662 +_021D7F8C: .word 0x021DA664 +_021D7F90: .word 0x021DA666 + thumb_func_end MOD84_021D7EDC + + thumb_func_start MOD84_021D7F94 +MOD84_021D7F94: ; 0x021D7F94 + push {r4, lr} + sub sp, #0x30 + add r4, r0, #0 + bl MOD84_021D7EDC + mov r3, #0xad + mov r0, #1 + lsl r3, r3, #2 + str r0, [sp] + add r2, r3, #0 + ldr r1, [r4, r3] + sub r2, #0xac + sub r3, #0x40 + add r0, sp, #0xc + add r2, r4, r2 + add r3, r4, r3 + bl MOD84_021D8240 + mov r1, #0 + mov r2, #0xc8 + add r3, r2, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0xc + add r3, #0x98 + bl MOD84_021D8260 + mov r1, #0x2b + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x2b + lsl r0, r0, #4 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x30 + pop {r4, pc} + thumb_func_end MOD84_021D7F94 + + thumb_func_start MOD84_021D8000 +MOD84_021D8000: ; 0x021D8000 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0xad + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD84_021D821C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8000 + + thumb_func_start MOD84_021D801C +MOD84_021D801C: ; 0x021D801C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0x4b + mov r1, #0x30 + str r2, [sp] + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021D8090 + ldr r0, [sp] + ldr r2, _021D8094 ; =0x021DA6B4 + lsl r1, r0, #4 + lsl r0, r5, #5 + add r2, r2, r0 + str r7, [r4] + ldr r2, [r1, r2] + str r6, [r4, #0x24] + str r2, [r4, #0x14] + ldr r2, _021D8098 ; =0x021DA6B8 + add r2, r2, r0 + ldr r2, [r1, r2] + str r2, [r4, #0x18] + ldr r2, _021D809C ; =0x021DA6BC + add r2, r2, r0 + ldr r2, [r1, r2] + str r2, [r4, #0x1c] + ldr r2, _021D80A0 ; =0x021DA6C0 + add r0, r2, r0 + ldr r0, [r1, r0] + cmp r5, #0 + str r0, [r4, #0x20] + bne _021D8068 + ldr r0, _021D80A4 ; =0x021D80B8 + str r0, [r4, #8] + ldr r0, _021D80A8 ; =0x021D80F0 + b _021D806E +_021D8068: + ldr r0, _021D80AC ; =0x021D8104 + str r0, [r4, #8] + ldr r0, _021D80B0 ; =0x021D813C +_021D806E: + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x28] + mov r0, #1 + lsl r0, r0, #0x10 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x2c] + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, _021D80B4 ; =0x021D8151 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA98 + str r0, [r4, #4] +_021D8090: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8094: .word 0x021DA6B4 +_021D8098: .word 0x021DA6B8 +_021D809C: .word 0x021DA6BC +_021D80A0: .word 0x021DA6C0 +_021D80A4: .word 0x021D80B8 +_021D80A8: .word 0x021D80F0 +_021D80AC: .word 0x021D8104 +_021D80B0: .word 0x021D813C +_021D80B4: .word 0x021D8151 + thumb_func_end MOD84_021D801C + + thumb_func_start MOD84_021D80B8 +MOD84_021D80B8: ; 0x021D80B8 + and r0, r3 + thumb_func_end MOD84_021D80B8 + + non_word_aligned_thumb_func_start MOD84_021D80BA +MOD84_021D80BA: ; 0x021D80BA + thumb_func_end MOD84_021D80BA +_021D80BA: + .byte 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2 + .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5 + .byte 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1 + .byte 0xFD, 0xBC, 0xFB, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x18, 0x80, 0xBD, 0xE8, 0x50, 0x00, 0x00, 0x04 + .byte 0x08, 0x20, 0x9F, 0xE5, 0x01, 0x04, 0x80, 0xE1, 0xB0, 0x00, 0xC2, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1 + .byte 0x52, 0x00, 0x00, 0x04, 0x18, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1 + .byte 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x14, 0x00, 0x9F, 0xE5 + .byte 0x04, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1, 0xEA, 0xBC, 0xFB, 0xEB + .byte 0x04, 0xD0, 0x8D, 0xE2, 0x18, 0x80, 0xBD, 0xE8, 0x50, 0x10, 0x00, 0x04, 0x08, 0x20, 0x9F, 0xE5 + .byte 0x01, 0x04, 0x80, 0xE1, 0xB0, 0x00, 0xC2, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x52, 0x10, 0x00, 0x04 + .byte 0x70, 0xB5, 0x0D, 0x1C, 0x06, 0x1C, 0x28, 0x69, 0x00, 0x28, 0x04, 0xD0, 0x01, 0x28, 0x0C, 0xD0 + .byte 0x02, 0x28, 0x1A, 0xD0, 0x70, 0xBD, 0x28, 0x6A, 0xE9, 0x69, 0xAC, 0x68, 0x00, 0x22, 0x10, 0x23 + .byte 0xA0, 0x47, 0x28, 0x69, 0x40, 0x1C, 0x28, 0x61, 0x70, 0xBD, 0xA8, 0x69, 0x02, 0x21, 0x00, 0x06 + .byte 0x00, 0x0E, 0x3F, 0xF6, 0x9B, 0xFB, 0x68, 0x69, 0x03, 0x21, 0x00, 0x06, 0x00, 0x0E, 0x3F, 0xF6 + .byte 0x95, 0xFB, 0x28, 0x69, 0x40, 0x1C, 0x28, 0x61, 0x70, 0xBD, 0xA9, 0x6A, 0xE8, 0x6A, 0x08, 0x18 + .byte 0x04, 0x13, 0xA8, 0x62, 0x10, 0x2C, 0x00, 0xDB, 0x10, 0x24, 0x10, 0x21, 0xEA, 0x68, 0x20, 0x1C + .byte 0x09, 0x1B, 0x90, 0x47, 0x10, 0x2C, 0x04, 0xDB, 0x00, 0x20, 0x68, 0x60, 0x30, 0x1C, 0x34, 0xF6 + .byte 0x79, 0xFC, 0x70, 0xBD + + thumb_func_start MOD84_021D81C4 +MOD84_021D81C4: ; 0x021D81C4 + ldr r0, [r0, #4] + cmp r0, #0 + bne _021D81CE + mov r0, #1 + bx lr +_021D81CE: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD84_021D81C4 + + thumb_func_start MOD84_021D81D4 +MOD84_021D81D4: ; 0x021D81D4 + ldr r3, _021D81D8 ; =FUN_02016A18 + bx r3 + .align 2, 0 +_021D81D8: .word FUN_02016A18 + thumb_func_end MOD84_021D81D4 + + thumb_func_start MOD84_021D81DC +MOD84_021D81DC: ; 0x021D81DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021D8218 + mov r0, #0x4b + add r3, r4, #0 + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + add r3, #8 + bl FUN_02006C30 + str r0, [r4] + mov r0, #0x4b + add r3, r4, #0 + str r0, [sp] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + add r3, #0xc + bl FUN_02006C5C + str r0, [r4, #4] +_021D8218: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD84_021D81DC + + thumb_func_start MOD84_021D821C +MOD84_021D821C: ; 0x021D821C + push {r4, lr} + add r4, r0, #0 + beq _021D823C + ldr r0, [r4] + cmp r0, #0 + beq _021D822C + bl FUN_02016A18 +_021D822C: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D8236 + bl FUN_02016A18 +_021D8236: + add r0, r4, #0 + bl FUN_02016A18 +_021D823C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D821C + + thumb_func_start MOD84_021D8240 +MOD84_021D8240: ; 0x021D8240 + str r2, [r0] + str r3, [r0, #8] + ldr r2, [r1, #8] + str r2, [r0, #0xc] + ldr r1, [r1, #0xc] + ldr r2, [sp] + str r1, [r0, #0x10] + add r1, r0, #0 + add r1, #0x20 + strb r2, [r1] + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD84_021D8240 + + thumb_func_start MOD84_021D8260 +MOD84_021D8260: ; 0x021D8260 + push {r4, lr} + sub sp, #0x20 + add r0, #0xdc + ldr r0, [r0] + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #8] + lsl r0, r3, #0xc + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + str r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x18] + mov r0, #0x4b + str r0, [sp, #0x1c] + add r0, sp, #0 + bl FUN_0201FF84 + add r4, r0, #0 + beq _021D82A6 + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r1, [sp, #0x30] + add r0, r4, #0 + bl FUN_020200A0 +_021D82A6: + add r0, r4, #0 + add sp, #0x20 + pop {r4, pc} + thumb_func_end MOD84_021D8260 + + thumb_func_start MOD84_021D82AC +MOD84_021D82AC: ; 0x021D82AC + mov r1, #0x2b + lsl r1, r1, #4 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD84_021D82AC + + thumb_func_start MOD84_021D82B4 +MOD84_021D82B4: ; 0x021D82B4 + ldr r0, [r0, #0x10] + bx lr + thumb_func_end MOD84_021D82B4 + + thumb_func_start MOD84_021D82B8 +MOD84_021D82B8: ; 0x021D82B8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _021D8428 ; =0x00001220 + mov r1, #3 + str r1, [r4, r0] + ldr r0, [r4, #0x18] + ldr r7, _021D8428 ; =0x00001220 + ldr r6, [r0, #8] + mov r5, #1 +_021D82CC: + ldr r0, _021D842C ; =0x00000186 + cmp r5, r0 + beq _021D8340 + add r0, r0, #3 + cmp r5, r0 + beq _021D8340 + ldr r0, _021D8430 ; =0x00000183 + cmp r5, r0 + beq _021D8340 + lsl r1, r5, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_02024594 + cmp r0, #0 + beq _021D8340 + lsl r0, r5, #0x10 + lsr r1, r0, #0x10 + ldr r0, _021D8428 ; =0x00001220 + ldr r0, [r4, r0] + lsl r0, r0, #3 + add r2, r4, r0 + mov r0, #0xae + lsl r0, r0, #2 + strh r1, [r2, r0] + add r0, r6, #0 + mov r2, #0 + bl FUN_02024674 + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + lsl r1, r1, #3 + add r2, r4, r1 + ldr r1, _021D8434 ; =0x000002BA + strb r0, [r2, r1] + bl FUN_0201B9EC + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + lsl r1, r1, #3 + add r2, r4, r1 + mov r1, #0xaf + lsl r1, r1, #2 + str r0, [r2, r1] + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0 + bl FUN_02024DAC + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + lsl r1, r1, #3 + add r2, r4, r1 + ldr r1, _021D8438 ; =0x000002BB + strb r0, [r2, r1] + ldr r0, [r4, r7] + add r0, r0, #1 + str r0, [r4, r7] +_021D8340: + ldr r0, _021D843C ; =0x000001ED + add r5, r5, #1 + cmp r5, r0 + blt _021D82CC + ldr r0, _021D8428 ; =0x00001220 + mov r7, #3 + ldr r0, [r4, r0] + sub r0, r0, #1 + cmp r0, #3 + ble _021D83B0 + add r5, r4, #0 + add r5, #0x18 +_021D8358: + bl FUN_0201B9EC + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + sub r1, r1, r7 + bl _s32_div_f + add r0, r1, #3 + mov r2, #0xaf + lsl r2, r2, #2 + ldr r2, [r5, r2] + lsl r0, r0, #3 + mov r1, #0xae + lsl r1, r1, #2 + ldr r1, [r5, r1] + str r2, [sp] + str r2, [sp, #8] + mov r2, #0xae + add r0, r4, r0 + lsl r2, r2, #2 + ldr r3, [r0, r2] + add r2, r2, #4 + ldr r2, [r0, r2] + str r1, [sp, #4] + mov ip, r2 + mov r2, #0xae + lsl r2, r2, #2 + str r3, [r5, r2] + mov r3, ip + add r2, r2, #4 + str r3, [r5, r2] + mov r2, #0xae + lsl r2, r2, #2 + str r1, [r0, r2] + ldr r1, [sp] + add r2, r2, #4 + str r1, [r0, r2] + ldr r0, _021D8428 ; =0x00001220 + add r7, r7, #1 + ldr r0, [r4, r0] + add r5, #8 + sub r0, r0, #1 + cmp r7, r0 + blt _021D8358 +_021D83B0: + bl FUN_0201B9EC + mov r1, #3 + bl _s32_div_f + add r5, r1, #0 + mov r7, #0 +_021D83BE: + cmp r5, #0 + beq _021D83CC + cmp r5, #1 + beq _021D83D6 + cmp r5, #2 + beq _021D83E0 + b _021D83E8 +_021D83CC: + mov r0, #0xae + ldr r1, _021D842C ; =0x00000186 + lsl r0, r0, #2 + strh r1, [r4, r0] + b _021D83E8 +_021D83D6: + mov r0, #0xae + ldr r1, _021D8440 ; =0x00000189 + lsl r0, r0, #2 + strh r1, [r4, r0] + b _021D83E8 +_021D83E0: + mov r0, #0xae + ldr r1, _021D8430 ; =0x00000183 + lsl r0, r0, #2 + strh r1, [r4, r0] +_021D83E8: + mov r1, #0xae + lsl r1, r1, #2 + ldrh r1, [r4, r1] + add r0, r6, #0 + mov r2, #0 + bl FUN_02024674 + ldr r1, _021D8434 ; =0x000002BA + strb r0, [r4, r1] + bl FUN_0201B9EC + mov r1, #0xaf + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, r1, #4 + ldrh r1, [r4, r1] + add r0, r6, #0 + mov r2, #0 + bl FUN_02024DAC + ldr r1, _021D8438 ; =0x000002BB + add r5, r5, #1 + strb r0, [r4, r1] + cmp r5, #3 + blt _021D841C + mov r5, #0 +_021D841C: + add r7, r7, #1 + add r4, #8 + cmp r7, #3 + blt _021D83BE + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8428: .word 0x00001220 +_021D842C: .word 0x00000186 +_021D8430: .word 0x00000183 +_021D8434: .word 0x000002BA +_021D8438: .word 0x000002BB +_021D843C: .word 0x000001ED +_021D8440: .word 0x00000189 + thumb_func_end MOD84_021D82B8 + + thumb_func_start MOD84_021D8444 +MOD84_021D8444: ; 0x021D8444 + ldr r1, _021D844C ; =0x00001220 + ldr r0, [r0, r1] + bx lr + nop +_021D844C: .word 0x00001220 + thumb_func_end MOD84_021D8444 + + thumb_func_start MOD84_021D8450 +MOD84_021D8450: ; 0x021D8450 + mov r1, #0xae + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + thumb_func_end MOD84_021D8450 + + thumb_func_start MOD84_021D8458 +MOD84_021D8458: ; 0x021D8458 + add r1, r0, #0 + ldr r0, _021D8464 ; =0x00001234 + ldr r3, _021D8468 ; =MOD84_021D847C + add r0, r1, r0 + bx r3 + nop +_021D8464: .word 0x00001234 +_021D8468: .word MOD84_021D847C + thumb_func_end MOD84_021D8458 + + thumb_func_start MOD84_021D846C +MOD84_021D846C: ; 0x021D846C + ldr r1, _021D8474 ; =0x00001234 + ldr r3, _021D8478 ; =MOD84_021D84A0 + add r0, r0, r1 + bx r3 + .align 2, 0 +_021D8474: .word 0x00001234 +_021D8478: .word MOD84_021D84A0 + thumb_func_end MOD84_021D846C + + thumb_func_start MOD84_021D847C +MOD84_021D847C: ; 0x021D847C + push {r3, lr} + mov r3, #0 + str r3, [r0, #4] + str r1, [r0] + mov r1, #1 + str r3, [r0, #8] + lsl r1, r1, #0xa + str r1, [r0, #0xc] + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D849C ; =0x04001050 + mov r1, #2 + mov r2, #0x3f + bl G2x_SetBlendAlpha_ + pop {r3, pc} + .align 2, 0 +_021D849C: .word 0x04001050 + thumb_func_end MOD84_021D847C + + thumb_func_start MOD84_021D84A0 +MOD84_021D84A0: ; 0x021D84A0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r1, [r4] + cmp r0, #0 + beq _021D84B2 + cmp r0, #1 + beq _021D84C2 + b _021D84EC +_021D84B2: + ldr r0, [r1, #0xc] + mov r1, #0 + bl MOD84_021D87B0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _021D84F0 +_021D84C2: + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + add r0, r1, r0 + asr r2, r0, #0xc + str r0, [r4, #8] + cmp r2, #0x10 + blt _021D84D2 + mov r2, #0x10 +_021D84D2: + mov r0, #0x10 + sub r0, r0, r2 + lsl r0, r0, #8 + add r1, r2, #0 + orr r1, r0 + ldr r0, _021D84F4 ; =0x04001052 + cmp r2, #0x10 + strh r1, [r0] + bne _021D84F0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _021D84F0 +_021D84EC: + mov r0, #1 + pop {r4, pc} +_021D84F0: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D84F4: .word 0x04001052 + thumb_func_end MOD84_021D84A0 + + thumb_func_start MOD84_021D84F8 +MOD84_021D84F8: ; 0x021D84F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + str r1, [sp, #0x14] + mov r0, #0x4b + mov r1, #0x38 + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021D85AC + ldr r0, [sp, #0x14] + str r6, [r4, #0x20] + str r0, [r4] + add r0, #0xc0 + str r0, [r4, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x30] + str r5, [r4, #8] + str r0, [r4, #0x2c] + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0x4b + bl FUN_020219F4 + str r0, [r4, #0x30] + mov r0, #0x4b + mov r1, #1 + bl FUN_02018FF4 + str r0, [r4, #0x24] + mov r3, #0 + lsl r2, r5, #0x18 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r1, [r4, #0x24] + add r0, r6, #0 + lsr r2, r2, #0x18 + bl FUN_02019064 + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_02019620 + ldr r0, [r4, #0x24] + bl FUN_02019270 + ldr r0, [r4, #0x24] + bl FUN_020191D0 + mov r0, #0x4b + mov r1, #1 + bl FUN_02018FF4 + str r0, [r4, #0x28] + mov r3, #0 + lsl r2, r5, #0x18 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r1, [r4, #0x28] + add r0, r6, #0 + lsr r2, r2, #0x18 + bl FUN_02019064 + ldr r0, _021D85B4 ; =MOD84_021D8784 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + str r0, [r4, #0x34] +_021D85AC: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D85B4: .word MOD84_021D8784 + thumb_func_end MOD84_021D84F8 + + thumb_func_start MOD84_021D85B8 +MOD84_021D85B8: ; 0x021D85B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _021D85C6 + bl FUN_0200CAB4 +_021D85C6: + ldr r0, [r4, #0x30] + bl FUN_02021A20 + ldr r0, [r4, #0x24] + bl FUN_02019178 + ldr r0, [r4, #0x28] + bl FUN_02019178 + ldr r0, [r4, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #0x28] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD84_021D85B8 + + thumb_func_start MOD84_021D85EC +MOD84_021D85EC: ; 0x021D85EC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r2, [r5, #0x1c] + str r1, [sp, #0x18] + cmp r2, #2 + bne _021D8600 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D8600: + ldr r1, [r5, #4] + ldr r0, [sp, #0x18] + add r6, r1, r0 + cmp r2, #0 + bne _021D86E0 + ldr r2, [r5, #0xc] + mov r0, #6 + add r1, r2, #0 + mul r1, r0 + ldr r0, _021D8774 ; =0x021DA766 + ldrh r0, [r0, r1] + cmp r6, r0 + blt _021D86E0 + ldr r2, _021D8778 ; =0x021DA764 + ldr r0, [r5, #0x2c] + ldrh r1, [r2, r1] + ldr r2, [r5, #0x30] + bl FUN_0200A8E0 + ldr r1, [r5, #0xc] + mov r0, #6 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021D877C ; =0x021DA768 + ldrh r0, [r0, r2] + cmp r0, #0 + beq _021D864A + mov r0, #0 + ldr r1, [r5, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + lsr r7, r0, #1 + b _021D864C +_021D864A: + mov r7, #0x20 +_021D864C: + ldr r1, [r5, #0xc] + mov r0, #6 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021D8774 ; =0x021DA766 + mov r1, #0 + ldrh r0, [r0, r2] + add r3, r7, #0 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8780 ; =0x00010200 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x24] + ldr r2, [r5, #0x30] + bl FUN_0201BDE0 + cmp r4, #0xf0 + ble _021D86D0 + ldr r0, [r5, #0x28] + mov r1, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8780 ; =0x00010200 + add r3, r7, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x28] + ldr r2, [r5, #0x30] + bl FUN_0201BDE0 + ldr r1, [r5, #0x28] + sub r4, #0xf0 + ldrb r2, [r1, #7] + mov r0, #0x10 + sub r3, r0, r4 + add r4, r0, #0 + sub r0, r0, r3 + lsl r2, r2, #0x13 + lsr r2, r2, #0x10 + str r2, [sp] + ldrb r2, [r1, #8] + lsl r0, r0, #0x10 + lsl r3, r3, #0x10 + lsl r2, r2, #0x13 + lsr r2, r2, #0x10 + str r2, [sp, #4] + mov r2, #0 + str r2, [sp, #8] + str r2, [sp, #0xc] + add r4, #0xf0 + str r4, [sp, #0x10] + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, [r5, #0x24] + ldr r1, [r1, #0xc] + lsr r3, r3, #0x10 + bl FUN_02019658 +_021D86D0: + mov r1, #1 + str r1, [r5, #0x18] + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0xd6 + blo _021D86E0 + str r1, [r5, #0x1c] +_021D86E0: + str r6, [r5, #4] + ldr r0, [r5, #0x10] + mov r1, #6 + add r2, r0, #0 + ldr r0, _021D8774 ; =0x021DA766 + mul r2, r1 + ldrh r3, [r0, r2] + ldr r2, [r5] + add r0, r3, #0 + add r0, #0x10 + cmp r2, r0 + ble _021D8766 + lsl r0, r3, #0x18 + lsr r3, r0, #0x18 + cmp r3, #0xf0 + bgt _021D8718 + add r1, #0xfa + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r1, #0 + lsl r3, r3, #0x10 + ldr r0, [r5, #0x24] + add r2, r1, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + b _021D8754 +_021D8718: + add r1, r3, #0 + sub r1, #0xf0 + mov r0, #0x10 + sub r4, r0, r1 + add r0, #0xf0 + str r0, [sp] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + mov r1, #0 + lsl r3, r3, #0x10 + ldr r0, [r5, #0x24] + add r2, r1, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x10 + sub r0, r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 +_021D8754: + mov r0, #1 + str r0, [r5, #0x18] + ldr r0, [r5, #0x10] + add r0, r0, #1 + str r0, [r5, #0x10] + cmp r0, #0xd7 + blo _021D8766 + mov r0, #2 + str r0, [r5, #0x1c] +_021D8766: + ldr r1, [r5] + ldr r0, [sp, #0x18] + add r0, r1, r0 + str r0, [r5] + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8774: .word 0x021DA766 +_021D8778: .word 0x021DA764 +_021D877C: .word 0x021DA768 +_021D8780: .word 0x00010200 + thumb_func_end MOD84_021D85EC + + thumb_func_start MOD84_021D8784 +MOD84_021D8784: ; 0x021D8784 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021D8798 + ldr r0, [r4, #0x24] + bl FUN_02019548 + mov r0, #0 + str r0, [r4, #0x18] +_021D8798: + ldr r1, [r4, #8] + ldr r3, [r4] + lsl r1, r1, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r4, #0x20] + lsr r1, r1, #0x18 + mov r2, #3 + lsr r3, r3, #0x18 + bl FUN_020179E0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8784 + + thumb_func_start MOD84_021D87B0 +MOD84_021D87B0: ; 0x021D87B0 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #2 + str r0, [r5, #0x1c] + mov r0, #0 + str r0, [r5, #0x18] + cmp r1, #0 + beq _021D87CE + ldr r0, [r5, #0x24] + mov r1, #0xf + bl FUN_02019620 + ldr r4, _021D8814 ; =0x0001020F + b _021D87D0 +_021D87CE: + ldr r4, _021D8818 ; =0x00010200 +_021D87D0: + ldr r0, [r5, #0x2c] + ldr r2, [r5, #0x30] + mov r1, #0xd7 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [r5] + mov r0, #0x50 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r4, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r5, #0x24] + ldr r2, [r5, #0x30] + bl FUN_0201BE3C + ldr r0, [r5, #0x24] + bl FUN_02019548 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8814: .word 0x0001020F +_021D8818: .word 0x00010200 + thumb_func_end MOD84_021D87B0 + + thumb_func_start MOD84_021D881C +MOD84_021D881C: ; 0x021D881C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #2 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4] + str r0, [r4, #0x18] + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #0x20] + ldr r3, [r4, #8] + mov r0, #0x7f + mov r1, #0x2a + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #0x20] + ldr r3, [r4, #8] + mov r0, #0x7f + mov r1, #0x2b + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4b + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x2c + add r3, r2, #0 + bl FUN_02006930 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D881C + + thumb_func_start MOD84_021D8874 +MOD84_021D8874: ; 0x021D8874 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x1c + bl FUN_02016998 + add r4, r0, #0 + beq _021D88A0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #0 + str r0, [r4, #0x14] + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD84_021D82AC + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + sub r0, #0x36 + str r0, [r4, #0x10] +_021D88A0: + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD84_021D8874 + + thumb_func_start MOD84_021D88A4 +MOD84_021D88A4: ; 0x021D88A4 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D8958 + cmp r0, #0 + beq _021D88C4 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_021D88C4: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD84_021D88A4 + + thumb_func_start MOD84_021D88C8 +MOD84_021D88C8: ; 0x021D88C8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D8A74 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D88C8 + + thumb_func_start MOD84_021D88DC +MOD84_021D88DC: ; 0x021D88DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + mov r7, #1 + add r0, r1, r0 + str r0, [r5, #0xc] + asr r6, r0, #0xc + lsl r7, r7, #8 + ldr r0, [r5, #4] + mov r1, #2 + mov r2, #0 + add r3, r6, r7 + bl FUN_020179E0 + ldr r0, [r5, #4] + mov r1, #6 + mov r2, #0 + add r3, r6, r7 + bl FUN_020179E0 + ldr r0, [r4] + cmp r0, #0 + beq _021D8914 + cmp r0, #1 + beq _021D893A + b _021D8950 +_021D8914: + ldr r0, [r5, #0x14] + add r1, r0, #1 + ldr r0, _021D8954 ; =0x00000708 + str r1, [r5, #0x14] + cmp r1, r0 + blt _021D8950 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8950 +_021D893A: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8950 + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_020200A0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8950: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8954: .word 0x00000708 + thumb_func_end MOD84_021D88DC + + thumb_func_start MOD84_021D8958 +MOD84_021D8958: ; 0x021D8958 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _021D8A50 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8972: ; jump table + .short _021D897C - _021D8972 - 2 ; case 0 + .short _021D899C - _021D8972 - 2 ; case 1 + .short _021D89D8 - _021D8972 - 2 ; case 2 + .short _021D8A10 - _021D8972 - 2 ; case 3 + .short _021D8A30 - _021D8972 - 2 ; case 4 +_021D897C: + ldr r0, [r5, #4] + ldr r2, _021D8A6C ; =0x021DAC70 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D8A6C ; =0x021DAC70 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D899C: + mov r0, #0x80 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #6 + str r0, [sp, #4] + mov r0, #0x4b + mov r2, #0 + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x41 + add r3, r2, #0 + bl FUN_02006948 + mov r0, #0x80 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #6 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x41 + mov r2, #4 + mov r3, #0 + bl FUN_02006948 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D89D8: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #4 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + mov r1, #6 + ldr r2, [r5, #4] + mov r0, #0x7f + add r3, r1, #0 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D8A10: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #5 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D8A30: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #7 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D8A50: + ldr r0, _021D8A70 ; =0x04000050 + mov r1, #0 + mov r2, #0xc + mov r3, #0x10 + str r1, [sp] + bl G2x_SetBlendAlpha_ + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8A64: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D8A6C: .word 0x021DAC70 +_021D8A70: .word 0x04000050 + thumb_func_end MOD84_021D8958 + + thumb_func_start MOD84_021D8A74 +MOD84_021D8A74: ; 0x021D8A74 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8A74 + + thumb_func_start MOD84_021D8A8C +MOD84_021D8A8C: ; 0x021D8A8C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + bl FUN_02016998 + cmp r0, #0 + beq _021D8AA8 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] +_021D8AA8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD84_021D8A8C + + thumb_func_start MOD84_021D8AAC +MOD84_021D8AAC: ; 0x021D8AAC + push {r3, lr} + bl MOD84_021D8B70 + cmp r0, #0 + beq _021D8ABA + mov r0, #1 + pop {r3, pc} +_021D8ABA: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D8AAC + + thumb_func_start MOD84_021D8AC0 +MOD84_021D8AC0: ; 0x021D8AC0 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D8C3C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8AC0 + + thumb_func_start MOD84_021D8AD4 +MOD84_021D8AD4: ; 0x021D8AD4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D8B66 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8AEC: ; jump table + .short _021D8AF4 - _021D8AEC - 2 ; case 0 + .short _021D8B16 - _021D8AEC - 2 ; case 1 + .short _021D8B28 - _021D8AEC - 2 ; case 2 + .short _021D8B4E - _021D8AEC - 2 ; case 3 +_021D8AF4: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8B66 +_021D8B16: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8B66 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8B66 +_021D8B28: + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + ldr r0, _021D8B6C ; =0x000002DF + cmp r1, r0 + blt _021D8B66 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8B66 +_021D8B4E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8B66 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021D8B66: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D8B6C: .word 0x000002DF + thumb_func_end MOD84_021D8AD4 + + thumb_func_start MOD84_021D8B70 +MOD84_021D8B70: ; 0x021D8B70 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D8C2A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8B8A: ; jump table + .short _021D8B92 - _021D8B8A - 2 ; case 0 + .short _021D8BB2 - _021D8B8A - 2 ; case 1 + .short _021D8BEA - _021D8B8A - 2 ; case 2 + .short _021D8C0A - _021D8B8A - 2 ; case 3 +_021D8B92: + ldr r0, [r5, #4] + ldr r2, _021D8C38 ; =0x021DAC8C + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D8C38 ; =0x021DAC8C + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8BB2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x24 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8BEA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x25 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8C0A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8C2A: + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8C30: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D8C38: .word 0x021DAC8C + thumb_func_end MOD84_021D8B70 + + thumb_func_start MOD84_021D8C3C +MOD84_021D8C3C: ; 0x021D8C3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8C3C + + thumb_func_start MOD84_021D8C54 +MOD84_021D8C54: ; 0x021D8C54 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0xe + add r5, r0, #0 + mov r0, #0x4b + lsl r1, r1, #8 + bl FUN_02016998 + add r4, r0, #0 + beq _021D8CC6 + str r5, [r4] + ldr r1, _021D8CCC ; =0x00000DF4 + str r6, [r4, #4] + mov r2, #0 + str r2, [r4, r1] + add r0, r1, #4 + str r2, [r4, r0] + add r1, #0xa + strh r2, [r4, r1] + bl FUN_0201B9EC + ldr r1, _021D8CD0 ; =0x00000DFC + strh r0, [r4, r1] + add r0, r5, #0 + bl MOD84_021D8444 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r5, #0 + bl MOD84_021D8450 + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, _021D8CD4 ; =MOD84_021D9278 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + mov r1, #0x5a + lsl r1, r1, #2 + str r0, [r4, r1] + mov r2, #0 + str r2, [r4, #0xc] + mov r0, #0x15 + str r2, [r4, #8] + add r3, r4, #0 + add r1, r2, #0 + lsl r0, r0, #4 +_021D8CB8: + str r1, [r3, #0x60] + str r1, [r3, #0x48] + str r1, [r3, r0] + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #6 + blt _021D8CB8 +_021D8CC6: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_021D8CCC: .word 0x00000DF4 +_021D8CD0: .word 0x00000DFC +_021D8CD4: .word MOD84_021D9278 + thumb_func_end MOD84_021D8C54 + + thumb_func_start MOD84_021D8CD8 +MOD84_021D8CD8: ; 0x021D8CD8 + push {r3, lr} + bl MOD84_021D8DF8 + cmp r0, #0 + beq _021D8CE6 + mov r0, #1 + pop {r3, pc} +_021D8CE6: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D8CD8 + + thumb_func_start MOD84_021D8CEC +MOD84_021D8CEC: ; 0x021D8CEC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D8D08 ; =0x00000DFC + ldrh r0, [r4, r0] + bl FUN_0201B9E0 + add r0, r4, #0 + bl MOD84_021D9044 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D8D08: .word 0x00000DFC + thumb_func_end MOD84_021D8CEC + + thumb_func_start MOD84_021D8D0C +MOD84_021D8D0C: ; 0x021D8D0C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bhi _021D8DC8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8D24: ; jump table + .short _021D8D2C - _021D8D24 - 2 ; case 0 + .short _021D8D56 - _021D8D24 - 2 ; case 1 + .short _021D8D6E - _021D8D24 - 2 ; case 2 + .short _021D8D9E - _021D8D24 - 2 ; case 3 +_021D8D2C: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E74C + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8D56: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8DE6 + ldr r0, _021D8DEC ; =0x00000DF4 + mov r1, #0 + str r1, [r4, r0] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8D6E: + ldr r1, _021D8DEC ; =0x00000DF4 + ldr r2, [r4, r1] + cmp r2, #0 + bne _021D8D98 + mov r2, #0x64 + str r2, [r4, r1] + add r1, #0xa + ldrh r1, [r4, r1] + bl MOD84_021D90C4 + ldr r0, _021D8DF0 ; =0x00000DFE + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + ldrh r0, [r4, r0] + cmp r0, #6 + blo _021D8DE6 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8D98: + sub r0, r2, #1 + str r0, [r4, r1] + b _021D8DE6 +_021D8D9E: + ldr r0, _021D8DEC ; =0x00000DF4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + ldr r0, _021D8DF4 ; =0x000002FD + cmp r1, r0 + blt _021D8DE6 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8DC8: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8DE6 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8DE6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D8DEC: .word 0x00000DF4 +_021D8DF0: .word 0x00000DFE +_021D8DF4: .word 0x000002FD + thumb_func_end MOD84_021D8D0C + + thumb_func_start MOD84_021D8DF8 +MOD84_021D8DF8: ; 0x021D8DF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r4, r0, #0 + ldr r0, [r1] + str r1, [sp, #0x14] + cmp r0, #8 + bls _021D8E08 + b _021D9028 +_021D8E08: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8E14: ; jump table + .short _021D8E26 - _021D8E14 - 2 ; case 0 + .short _021D8E4A - _021D8E14 - 2 ; case 1 + .short _021D8E86 - _021D8E14 - 2 ; case 2 + .short _021D8EAA - _021D8E14 - 2 ; case 3 + .short _021D8ECE - _021D8E14 - 2 ; case 4 + .short _021D8EF2 - _021D8E14 - 2 ; case 5 + .short _021D8F40 - _021D8E14 - 2 ; case 6 + .short _021D8F86 - _021D8E14 - 2 ; case 7 + .short _021D8FD4 - _021D8E14 - 2 ; case 8 +_021D8E26: + ldr r0, [r4, #4] + ldr r2, _021D903C ; =0x021DACB8 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D903C ; =0x021DACB8 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8E4A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8E86: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #2 + bl FUN_0200687C + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8EAA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8ECE: + mov r0, #0x7f + mov r1, #0x35 + mov r2, #0x36 + bl MOD84_021D81DC + str r0, [r4, #8] + mov r0, #0x1b + mov r1, #0x29 + mov r2, #0x2a + bl MOD84_021D81DC + str r0, [r4, #0xc] + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8EF2: + add r0, r4, #0 + add r0, #0x10 + bl FUN_020B1A24 + add r0, r4, #0 + add r0, #0x34 + bl FUN_020B19DC + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x37 + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + str r0, [sp] + add r4, #0x34 + mov r0, #0x7f + mov r1, #0x38 + mov r2, #1 + mov r3, #0 + str r4, [sp, #4] + bl FUN_02006A8C + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8F40: + mov r0, #1 + str r0, [sp] + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4, #8] + add r0, sp, #0x48 + add r2, #0x10 + add r3, #0x34 + bl MOD84_021D8240 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_021D8F5A: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r7, [sp, #8] + ldr r0, [r4] + add r1, sp, #0x48 + add r2, r7, #0 + add r3, r7, #0 + bl MOD84_021D8260 + str r0, [r5, #0x48] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _021D8F5A + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8F86: + mov r0, #0x4b + str r0, [sp] + mov r0, #0x1b + mov r1, #0x28 + mov r2, #0 + add r3, sp, #0x20 + bl FUN_02006BB0 + str r0, [sp, #0x18] + cmp r0, #0 + beq _021D8FC8 + mov r5, #0x19 + lsl r5, r5, #8 + mov r6, #0 + add r4, #0x78 + lsr r7, r5, #1 +_021D8FA6: + add r0, r4, #0 + bl FUN_020B1A24 + ldr r0, [sp, #0x20] + add r1, r5, #0 + mov r2, #1 + add r3, r4, #0 + bl FUN_020B1768 + add r6, r6, #1 + add r4, #0x24 + add r5, r5, r7 + cmp r6, #6 + blt _021D8FA6 + ldr r0, [sp, #0x18] + bl FUN_02016A18 +_021D8FC8: + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8FD4: + add r0, r4, #0 + add r6, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x34 + mov r7, #0 + add r6, #0x78 + add r5, r4, #0 + str r0, [sp, #0x1c] +_021D8FE4: + mov r0, #1 + str r0, [sp] + ldr r1, [r4, #0xc] + ldr r3, [sp, #0x1c] + add r0, sp, #0x24 + add r2, r6, #0 + bl MOD84_021D8240 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4] + add r1, sp, #0x24 + add r3, r2, #0 + bl MOD84_021D8260 + mov r1, #0xe + str r0, [r5, #0x60] + bl FUN_020202A8 + add r7, r7, #1 + add r6, #0x24 + add r5, r5, #4 + cmp r7, #6 + blt _021D8FE4 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D9028: + ldr r0, _021D9040 ; =0x00003485 + bl FUN_0201B9E0 + add sp, #0x6c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D9034: + mov r0, #0 + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + nop +_021D903C: .word 0x021DACB8 +_021D9040: .word 0x00003485 + thumb_func_end MOD84_021D8DF8 + + thumb_func_start MOD84_021D9044 +MOD84_021D9044: ; 0x021D9044 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl OS_DisableInterrupts + mov r7, #0x15 + str r0, [sp] + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_021D9056: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021D9060 + bl FUN_0201FFC8 +_021D9060: + ldr r0, [r5, #0x60] + cmp r0, #0 + beq _021D906A + bl FUN_0201FFC8 +_021D906A: + ldr r0, [r5, r7] + cmp r0, #0 + beq _021D9082 + bl FUN_0201B6C8 + bl FUN_02016A18 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0200CAB4 +_021D9082: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D9056 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _021D9098 + bl FUN_0200CAB4 +_021D9098: + ldr r0, [r6, #8] + cmp r0, #0 + beq _021D90A2 + bl MOD84_021D821C +_021D90A2: + ldr r0, [r6, #0xc] + cmp r0, #0 + beq _021D90AC + bl MOD84_021D821C +_021D90AC: + ldr r0, [r6, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r6, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [sp] + bl OS_RestoreInterrupts + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD84_021D9044 + + thumb_func_start MOD84_021D90C4 +MOD84_021D90C4: ; 0x021D90C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x38 + bl FUN_02016998 + add r4, r0, #0 + bne _021D90DA + b _021D91F6 +_021D90DA: + mov r0, #1 + str r0, [r4] + str r5, [r4, #4] + mov r0, #0x17 + str r6, [r4, #8] + lsl r0, r0, #4 + ldr r1, [r5, r0] + cmp r6, r1 + blt _021D90F4 + add r0, r6, #0 + bl _s32_div_f + b _021D90F6 +_021D90F4: + add r1, r6, #0 +_021D90F6: + lsl r6, r6, #2 + str r1, [r4, #0xc] + add r1, r5, r6 + ldr r0, [r1, #0x48] + str r0, [r4, #0x14] + ldr r0, [r1, #0x60] + str r0, [r4, #0x10] + mov r0, #0x5b + lsl r0, r0, #2 + ldr r3, [r5, r0] + ldr r0, [r4, #0xc] + ldr r7, [r4, #8] + lsl r1, r0, #3 + mov r0, #0 + add r2, r3, r1 + str r0, [sp] + ldrb r0, [r2, #3] + str r0, [sp, #4] + ldr r0, [r2, #4] + str r0, [sp, #8] + ldrh r1, [r3, r1] + ldrb r2, [r2, #2] + add r0, sp, #0xc + mov r3, #2 + bl FUN_02068C00 + mov r0, #0x5d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp] + add r1, sp, #0xc + ldrh r0, [r1] + ldrh r1, [r1, #2] + ldr r3, _021D91FC ; =0x021DACA8 + mov r2, #0x4b + bl FUN_02012400 + mov r0, #0x5d + lsl r0, r0, #2 + mov r1, #0x32 + add r0, r5, r0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + mov r0, #0x5d + lsl r2, r2, #6 + add r1, r7, #0 + lsl r0, r0, #2 + mul r1, r2 + lsl r3, r2, #1 + add r0, r5, r0 + add r1, r1, r3 + bl GX_LoadOBJ + mov r0, #0x4e + lsl r0, r0, #0xe + str r0, [r4, #0x18] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x19 + sub r1, r1, r2 + mov r0, #0x19 + ror r1, r0 + add r0, r2, r1 + add r0, #0xf0 + lsl r0, r0, #0xc + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + bl FUN_0201B9EC + ldr r1, _021D9200 ; =0x00000667 + bl _s32_div_f + ldr r0, _021D9204 ; =0x00000666 + add r0, r1, r0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x1c] + str r0, [r4, #0x30] + mov r0, #0 + str r0, [r4, #0x28] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + add r0, r0, #2 + lsl r0, r0, #0xc + str r0, [r4, #0x2c] + bl FUN_0201B9EC + mov r1, #0xc + bl _s32_div_f + add r0, r1, #4 + str r0, [r4, #0x34] + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x18 + bl FUN_02020044 + add r1, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x18 + bl FUN_02020044 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _021D9208 ; =MOD84_021D920C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA60 + mov r1, #0x15 + add r2, r5, r6 + lsl r1, r1, #4 + str r0, [r2, r1] +_021D91F6: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D91FC: .word 0x021DACA8 +_021D9200: .word 0x00000667 +_021D9204: .word 0x00000666 +_021D9208: .word MOD84_021D920C + thumb_func_end MOD84_021D90C4 + + thumb_func_start MOD84_021D920C +MOD84_021D920C: ; 0x021D920C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #1 + bne _021D9270 + ldr r2, [r4, #0x28] + ldr r1, [r4, #0x2c] + add r0, r4, #0 + add r2, r2, r1 + mov r1, #0x5a + lsl r1, r1, #0xe + add r0, #0x28 + str r2, [r4, #0x28] + cmp r2, r1 + blt _021D9230 + ldr r2, [r0] + sub r1, r2, r1 + str r1, [r0] +_021D9230: + ldr r2, [r4, #0x28] + ldr r0, [r4, #0x34] + asr r2, r2, #0xc + lsl r3, r2, #2 + ldr r2, _021D9274 ; =0x020EDF50 + ldr r1, [r4, #0x30] + ldr r2, [r2, r3] + mul r2, r0 + add r0, r1, r2 + str r0, [r4, #0x1c] + ldr r2, [r4, #0x18] + ldr r0, [r4, #0x24] + add r1, r4, #0 + sub r0, r2, r0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x14] + add r1, #0x18 + bl FUN_02020044 + add r1, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x18 + bl FUN_02020044 + ldr r0, [r4, #0x18] + asr r1, r0, #0xc + mov r0, #0x37 + mvn r0, r0 + cmp r1, r0 + bge _021D9270 + mov r0, #0 + str r0, [r4] +_021D9270: + pop {r4, pc} + nop +_021D9274: .word 0x020EDF50 + thumb_func_end MOD84_021D920C + + thumb_func_start MOD84_021D9278 +MOD84_021D9278: ; 0x021D9278 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r1, [sp, #0xc] + mov r7, #0 + add r6, r1, #0 +_021D9282: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + beq _021D937A + bl FUN_0201B6C8 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _021D937A + mov r1, #0x17 + ldr r0, [r4, #0xc] + ldr r2, [sp, #0xc] + lsl r1, r1, #4 + ldr r1, [r2, r1] + add r0, r0, #6 + cmp r0, r1 + blt _021D92AE + bl _s32_div_f + add r0, r1, #0 +_021D92AE: + str r0, [r4, #0xc] + ldr r1, [r4, #8] + ldr r5, [r4, #4] + str r1, [sp, #0x10] + mov r1, #0x5b + lsl r1, r1, #2 + ldr r3, [r5, r1] + lsl r1, r0, #3 + mov r0, #0 + add r2, r3, r1 + str r0, [sp] + ldrb r0, [r2, #3] + str r0, [sp, #4] + ldr r0, [r2, #4] + str r0, [sp, #8] + ldrh r1, [r3, r1] + ldrb r2, [r2, #2] + add r0, sp, #0x14 + mov r3, #2 + bl FUN_02068C00 + mov r0, #0x5d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp] + add r0, sp, #0x14 + add r1, sp, #0x14 + ldrh r0, [r0] + ldrh r1, [r1, #2] + ldr r3, _021D9388 ; =0x021DACA8 + mov r2, #0x4b + bl FUN_02012400 + mov r0, #0x5d + lsl r0, r0, #2 + mov r1, #0x32 + add r0, r5, r0 + lsl r1, r1, #6 + bl DC_FlushRange + ldr r2, [sp, #0x10] + mov r1, #0x32 + mov r0, #0x5d + add r3, r2, #0 + lsl r1, r1, #6 + lsl r0, r0, #2 + mul r3, r1 + lsl r1, r1, #1 + mov r2, #0x32 + add r0, r5, r0 + add r1, r3, r1 + lsl r2, r2, #6 + bl GX_LoadOBJ + mov r0, #0x4e + lsl r0, r0, #0xe + str r0, [r4, #0x18] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x19 + sub r1, r1, r2 + mov r0, #0x19 + ror r1, r0 + add r0, r2, r1 + add r0, #0xf0 + lsl r0, r0, #0xc + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + bl FUN_0201B9EC + ldr r1, _021D938C ; =0x00000667 + bl _s32_div_f + ldr r0, _021D9390 ; =0x00000666 + add r0, r1, r0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x1c] + str r0, [r4, #0x30] + mov r0, #0 + str r0, [r4, #0x28] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + add r0, r0, #2 + lsl r0, r0, #0xc + str r0, [r4, #0x2c] + bl FUN_0201B9EC + mov r1, #0xc + bl _s32_div_f + add r0, r1, #4 + str r0, [r4, #0x34] + mov r0, #1 + str r0, [r4] +_021D937A: + add r7, r7, #1 + add r6, r6, #4 + cmp r7, #6 + bge _021D9384 + b _021D9282 +_021D9384: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9388: .word 0x021DACA8 +_021D938C: .word 0x00000667 +_021D9390: .word 0x00000666 + thumb_func_end MOD84_021D9278 + + thumb_func_start MOD84_021D9394 +MOD84_021D9394: ; 0x021D9394 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + bl FUN_02016998 + cmp r0, #0 + beq _021D93B0 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] +_021D93B0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD84_021D9394 + + thumb_func_start MOD84_021D93B4 +MOD84_021D93B4: ; 0x021D93B4 + push {r3, lr} + bl MOD84_021D9478 + cmp r0, #0 + beq _021D93C2 + mov r0, #1 + pop {r3, pc} +_021D93C2: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D93B4 + + thumb_func_start MOD84_021D93C8 +MOD84_021D93C8: ; 0x021D93C8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9544 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D93C8 + + thumb_func_start MOD84_021D93DC +MOD84_021D93DC: ; 0x021D93DC + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D946E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D93F4: ; jump table + .short _021D93FC - _021D93F4 - 2 ; case 0 + .short _021D941E - _021D93F4 - 2 ; case 1 + .short _021D9430 - _021D93F4 - 2 ; case 2 + .short _021D9456 - _021D93F4 - 2 ; case 3 +_021D93FC: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D946E +_021D941E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D946E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D946E +_021D9430: + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + ldr r0, _021D9474 ; =0x0000032F + cmp r1, r0 + blt _021D946E + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D946E +_021D9456: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D946E + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021D946E: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D9474: .word 0x0000032F + thumb_func_end MOD84_021D93DC + + thumb_func_start MOD84_021D9478 +MOD84_021D9478: ; 0x021D9478 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D9532 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9492: ; jump table + .short _021D949A - _021D9492 - 2 ; case 0 + .short _021D94BA - _021D9492 - 2 ; case 1 + .short _021D94F2 - _021D9492 - 2 ; case 2 + .short _021D9512 - _021D9492 - 2 ; case 3 +_021D949A: + ldr r0, [r5, #4] + ldr r2, _021D9540 ; =0x021DACD4 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D9540 ; =0x021DACD4 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D94BA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x26 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D94F2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x27 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D9512: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D9532: + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9538: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D9540: .word 0x021DACD4 + thumb_func_end MOD84_021D9478 + + thumb_func_start MOD84_021D9544 +MOD84_021D9544: ; 0x021D9544 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9544 + + thumb_func_start MOD84_021D955C +MOD84_021D955C: ; 0x021D955C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x6c + bl FUN_02016998 + add r4, r0, #0 + beq _021D958E + str r5, [r4] + str r6, [r4, #4] + mov r0, #0 + str r0, [r4, #0x64] + str r0, [r4, #0x68] + add r0, r5, #0 + bl MOD84_021D82AC + str r0, [r4, #0x4c] + mov r0, #0 + str r0, [r4, #0x50] + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x48] + str r0, [r4, #0x54] + str r0, [r4, #0x5c] +_021D958E: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD84_021D955C + + thumb_func_start MOD84_021D9594 +MOD84_021D9594: ; 0x021D9594 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9804 + cmp r0, #0 + beq _021D95B4 + ldr r0, [r4, #0x4c] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #0x4c] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_021D95B4: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD84_021D9594 + + thumb_func_start MOD84_021D95B8 +MOD84_021D95B8: ; 0x021D95B8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9A04 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D95B8 + + thumb_func_start MOD84_021D95CC +MOD84_021D95CC: ; 0x021D95CC + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, [r4, #0x54] + add r5, r1, #0 + add r0, #0x80 + asr r6, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4, #4] + mov r1, #2 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + mov r1, #3 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + mov r1, #7 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _021D9632 + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0x10 + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r6, #0 + str r0, [r2] + ldr r0, [sp, #0x14] + sub r0, #0x40 + str r0, [sp, #0x14] + ldr r0, [r4, #0x50] + bl FUN_02020044 +_021D9632: + ldr r0, [r5] + cmp r0, #7 + bhi _021D96D2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9644: ; jump table + .short _021D9654 - _021D9644 - 2 ; case 0 + .short _021D966E - _021D9644 - 2 ; case 1 + .short _021D968E - _021D9644 - 2 ; case 2 + .short _021D96BE - _021D9644 - 2 ; case 3 + .short _021D9750 - _021D9644 - 2 ; case 4 + .short _021D9780 - _021D9644 - 2 ; case 5 + .short _021D97B0 - _021D9644 - 2 ; case 6 + .short _021D97D8 - _021D9644 - 2 ; case 7 +_021D9654: + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x10 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D966E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D96D2 + mov r1, #0 + ldr r0, _021D97F8 ; =0x04000050 + str r1, [sp] + mov r2, #0xc + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D968E: + ldr r0, [r4, #0x64] + add r1, r0, #1 + ldr r0, _021D97FC ; =0x00000172 + str r1, [r4, #0x64] + cmp r1, r0 + blt _021D96D2 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + ldr r0, [r4] + mov r1, #1 + mov r2, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D96BE: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D96D2 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + bne _021D96D4 +_021D96D2: + b _021D97F0 +_021D96D4: + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x10 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x12 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x11 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x13 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [r4, #0x64] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D9750: + ldr r0, [r4, #0x64] + add r1, r0, #1 + ldr r0, _021D9800 ; =0x0000010E + str r1, [r4, #0x64] + cmp r1, r0 + blt _021D97F0 + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D9780: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D97F0 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D97F0 + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x64] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D97B0: + ldr r0, [r4, #0x64] + add r1, r0, #1 + mov r0, #0x4b + lsl r0, r0, #2 + str r1, [r4, #0x64] + cmp r1, r0 + blt _021D97F0 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D97D8: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D97F0 + ldr r0, [r4, #0x4c] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x1c + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D97F0: + mov r0, #0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021D97F8: .word 0x04000050 +_021D97FC: .word 0x00000172 +_021D9800: .word 0x0000010E + thumb_func_end MOD84_021D95CC + + thumb_func_start MOD84_021D9804 +MOD84_021D9804: ; 0x021D9804 + push {r3, r4, r5, lr} + sub sp, #0x38 + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bls _021D9814 + b _021D99F0 +_021D9814: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9820: ; jump table + .short _021D9832 - _021D9820 - 2 ; case 0 + .short _021D986A - _021D9820 - 2 ; case 1 + .short _021D98A2 - _021D9820 - 2 ; case 2 + .short _021D98C2 - _021D9820 - 2 ; case 3 + .short _021D98E2 - _021D9820 - 2 ; case 4 + .short _021D991A - _021D9820 - 2 ; case 5 + .short _021D993A - _021D9820 - 2 ; case 6 + .short _021D995A - _021D9820 - 2 ; case 7 + .short _021D99E0 - _021D9820 - 2 ; case 8 +_021D9832: + ldr r0, [r4, #4] + ldr r2, _021D99FC ; =0x021DACF0 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D9A00 ; =0x021DAD0C + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D99FC ; =0x021DACF0 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D9A00 ; =0x021DAD0C + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D986A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #8 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xa + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D98A2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #9 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D98C2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xb + mov r3, #6 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D98E2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xc + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xe + mov r3, #7 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D991A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xd + mov r3, #3 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D993A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xf + mov r3, #7 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D995A: + mov r0, #0x7f + mov r1, #0x39 + mov r2, #0x3a + bl MOD84_021D81DC + str r0, [r4, #0x48] + add r0, r4, #0 + add r0, #0x10 + bl FUN_020B1A24 + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x3b + add r3, r2, #0 + bl FUN_02006AE4 + add r0, r4, #0 + add r0, #0x34 + bl FUN_020B19DC + mov r0, #0x4b + str r0, [sp] + add r0, r4, #0 + add r0, #0x34 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x3c + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r0, #2 + str r0, [sp] + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4, #0x48] + add r0, sp, #0x14 + add r2, #0x10 + add r3, #0x34 + bl MOD84_021D8240 + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r3, #0x19 + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0 + lsl r3, r3, #4 + bl MOD84_021D8260 + str r0, [r4, #0x50] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D99E0: + ldr r0, [r4] + mov r1, #0 + bl MOD84_021D7DF4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D99F0: + add sp, #0x38 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D99F6: + mov r0, #0 + add sp, #0x38 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D99FC: .word 0x021DACF0 +_021D9A00: .word 0x021DAD0C + thumb_func_end MOD84_021D9804 + + thumb_func_start MOD84_021D9A04 +MOD84_021D9A04: ; 0x021D9A04 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _021D9A12 + bl FUN_0201FFC8 +_021D9A12: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021D9A1C + bl MOD84_021D81D4 +_021D9A1C: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021D9A26 + bl MOD84_021D81D4 +_021D9A26: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _021D9A30 + bl MOD84_021D821C +_021D9A30: + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A04 + + thumb_func_start MOD84_021D9A54 +MOD84_021D9A54: ; 0x021D9A54 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + bl FUN_02016998 + cmp r0, #0 + beq _021D9A70 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] +_021D9A70: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A54 + + thumb_func_start MOD84_021D9A74 +MOD84_021D9A74: ; 0x021D9A74 + push {r3, lr} + bl MOD84_021D9B38 + cmp r0, #0 + beq _021D9A82 + mov r0, #1 + pop {r3, pc} +_021D9A82: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A74 + + thumb_func_start MOD84_021D9A88 +MOD84_021D9A88: ; 0x021D9A88 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9C04 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A88 + + thumb_func_start MOD84_021D9A9C +MOD84_021D9A9C: ; 0x021D9A9C + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D9B2E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9AB4: ; jump table + .short _021D9ABC - _021D9AB4 - 2 ; case 0 + .short _021D9ADE - _021D9AB4 - 2 ; case 1 + .short _021D9AF0 - _021D9AB4 - 2 ; case 2 + .short _021D9B16 - _021D9AB4 - 2 ; case 3 +_021D9ABC: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9B2E +_021D9ADE: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9B2E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9B2E +_021D9AF0: + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + ldr r0, _021D9B34 ; =0x00000352 + cmp r1, r0 + blt _021D9B2E + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9B2E +_021D9B16: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9B2E + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021D9B2E: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D9B34: .word 0x00000352 + thumb_func_end MOD84_021D9A9C + + thumb_func_start MOD84_021D9B38 +MOD84_021D9B38: ; 0x021D9B38 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D9BF2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9B52: ; jump table + .short _021D9B5A - _021D9B52 - 2 ; case 0 + .short _021D9B7A - _021D9B52 - 2 ; case 1 + .short _021D9BB2 - _021D9B52 - 2 ; case 2 + .short _021D9BD2 - _021D9B52 - 2 ; case 3 +_021D9B5A: + ldr r0, [r5, #4] + ldr r2, _021D9C00 ; =0x021DAD28 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D9C00 ; =0x021DAD28 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9B7A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x28 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9BB2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x29 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9BD2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9BF2: + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9BF8: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D9C00: .word 0x021DAD28 + thumb_func_end MOD84_021D9B38 + + thumb_func_start MOD84_021D9C04 +MOD84_021D9C04: ; 0x021D9C04 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9C04 + + thumb_func_start MOD84_021D9C1C +MOD84_021D9C1C: ; 0x021D9C1C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0xf4 + bl FUN_02016998 + add r4, r0, #0 + beq _021D9C7C + str r5, [r4] + str r6, [r4, #4] + mov r1, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r5, #0 + bl MOD84_021D82AC + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x54] + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x60] + add r2, r4, #0 + str r0, [r4, #0x64] + mov r0, #0x7f + mov r1, #0x41 + add r2, #0x5c + mov r3, #0x4b + bl FUN_02006C08 + str r0, [r4, #0x58] + cmp r0, #0 + beq _021D9C76 + ldr r0, [r4, #0x5c] + mov r1, #6 + ldr r0, [r0, #0xc] + lsl r1, r1, #6 + bl DC_FlushRange +_021D9C76: + add r0, r4, #0 + bl MOD84_021DA388 +_021D9C7C: + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD84_021D9C1C + + thumb_func_start MOD84_021D9C80 +MOD84_021D9C80: ; 0x021D9C80 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021DA078 + cmp r0, #0 + beq _021D9CA0 + ldr r0, [r4, #0x10] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_021D9CA0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD84_021D9C80 + + thumb_func_start MOD84_021D9CA4 +MOD84_021D9CA4: ; 0x021D9CA4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + add r0, r5, #0 + bl MOD84_021DA390 + add r0, r5, #0 + bl MOD84_021DA31C + ldr r0, [r5, #0x58] + cmp r0, #0 + beq _021D9CC4 + bl FUN_02016A18 +_021D9CC4: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD84_021D9CA4 + + thumb_func_start MOD84_021D9CD4 +MOD84_021D9CD4: ; 0x021D9CD4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0xe + bls _021D9CE4 + b _021DA068 +_021D9CE4: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9CF0: ; jump table + .short _021D9D0E - _021D9CF0 - 2 ; case 0 + .short _021D9D28 - _021D9CF0 - 2 ; case 1 + .short _021D9D48 - _021D9CF0 - 2 ; case 2 + .short _021D9D6A - _021D9CF0 - 2 ; case 3 + .short _021D9E00 - _021D9CF0 - 2 ; case 4 + .short _021D9E3C - _021D9CF0 - 2 ; case 5 + .short _021D9ECE - _021D9CF0 - 2 ; case 6 + .short _021D9F08 - _021D9CF0 - 2 ; case 7 + .short _021D9F3A - _021D9CF0 - 2 ; case 8 + .short _021D9F54 - _021D9CF0 - 2 ; case 9 + .short _021D9F78 - _021D9CF0 - 2 ; case 10 + .short _021D9F90 - _021D9CF0 - 2 ; case 11 + .short _021D9FBE - _021D9CF0 - 2 ; case 12 + .short _021DA02A - _021D9CF0 - 2 ; case 13 + .short _021DA058 - _021D9CF0 - 2 ; case 14 +_021D9D0E: + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9D28: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9E16 + mov r1, #0 + ldr r0, _021DA070 ; =0x04000050 + str r1, [sp] + mov r2, #0xc + mov r3, #0xa + bl G2x_SetBlendAlpha_ + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9D48: + add r1, r4, #0 + add r1, #0xec + ldr r1, [r1] + add r2, r1, #1 + add r1, r4, #0 + add r1, #0xec + add r4, #0xec + str r2, [r1] + ldr r1, [r4] + cmp r1, #0xf0 + blt _021D9E16 + bl MOD84_021DA3A0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9D6A: + bl MOD84_021DA3C8 + cmp r0, #0 + beq _021D9E16 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DA070 ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DA074 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1c + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x18 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1d + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x19 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9E00: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0x96 + bgt _021D9E18 +_021D9E16: + b _021DA068 +_021D9E18: + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9E3C: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x20 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1e + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x21 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1f + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9ECE: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0xc8 + blt _021D9F44 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + ldr r0, [r4] + mov r1, #1 + mov r2, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F08: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F3A: + ldr r0, [r4] + bl MOD84_021D82B4 + cmp r0, #0 + bne _021D9F46 +_021D9F44: + b _021DA068 +_021D9F46: + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F54: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0x5a + blt _021DA068 + ldr r0, [r4] + bl MOD84_021D8458 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F78: + ldr r0, [r4] + bl MOD84_021D846C + cmp r0, #0 + beq _021DA068 + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F90: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + add r4, #0xec + str r1, [r0] + ldr r0, [r4] + cmp r0, #0x96 + blt _021DA068 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9FBE: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021DA068 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x2a + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x2b + mov r3, #3 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4b + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x2c + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021DA02A: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + add r4, #0xec + str r1, [r0] + ldr r0, [r4] + cmp r0, #0x2d + blt _021DA068 + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x10 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021DA058: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021DA068 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA068: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021DA070: .word 0x04000050 +_021DA074: .word 0x04001050 + thumb_func_end MOD84_021D9CD4 + + thumb_func_start MOD84_021DA078 +MOD84_021DA078: ; 0x021DA078 + push {r3, r4, r5, lr} + sub sp, #0x38 + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #0xa + bls _021DA088 + b _021DA2FE +_021DA088: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA094: ; jump table + .short _021DA0AA - _021DA094 - 2 ; case 0 + .short _021DA0E2 - _021DA094 - 2 ; case 1 + .short _021DA11A - _021DA094 - 2 ; case 2 + .short _021DA13A - _021DA094 - 2 ; case 3 + .short _021DA15A - _021DA094 - 2 ; case 4 + .short _021DA192 - _021DA094 - 2 ; case 5 + .short _021DA1B2 - _021DA094 - 2 ; case 6 + .short _021DA1D2 - _021DA094 - 2 ; case 7 + .short _021DA1E2 - _021DA094 - 2 ; case 8 + .short _021DA238 - _021DA094 - 2 ; case 9 + .short _021DA2CE - _021DA094 - 2 ; case 10 +_021DA0AA: + ldr r0, [r4, #4] + ldr r2, _021DA30C ; =0x021DAD68 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021DA310 ; =0x021DAD4C + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021DA30C ; =0x021DAD68 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021DA310 ; =0x021DAD4C + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA0E2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x16 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1a + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA11A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x17 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA13A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1b + mov r3, #6 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA15A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x14 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x18 + mov r3, #7 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA192: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x15 + mov r3, #3 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA1B2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x19 + mov r3, #7 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA1D2: + ldr r0, [r4] + mov r1, #2 + bl MOD84_021D7DF4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA1E2: + mov r0, #0x7f + mov r1, #0x3d + mov r2, #0x3e + bl MOD84_021D81DC + str r0, [r4, #0x54] + add r0, r4, #0 + add r0, #0x1c + bl FUN_020B1A24 + add r0, r4, #0 + add r0, #0x40 + bl FUN_020B19DC + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x1c + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x3f + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + str r0, [sp] + add r4, #0x40 + str r4, [sp, #4] + mov r0, #0x7f + mov r1, #0x40 + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA238: + mov r2, #0 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x1c + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x3f + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + str r0, [sp] + add r0, r4, #0 + add r0, #0x40 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x40 + mov r2, #2 + mov r3, #0 + bl FUN_02006A8C + mov r0, #2 + str r0, [sp] + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4, #0x54] + add r0, sp, #0x14 + add r2, #0x1c + add r3, #0x40 + bl MOD84_021D8240 + mov r0, #3 + str r0, [sp] + mov r0, #1 + mov r2, #0 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r4] + add r1, sp, #0x14 + add r3, r2, #0 + bl MOD84_021D8260 + str r0, [r4, #0x14] + mov r0, #4 + str r0, [sp] + mov r0, #1 + mov r2, #0 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r4] + add r1, sp, #0x14 + add r3, r2, #0 + bl MOD84_021D8260 + str r0, [r4, #0x18] + mov r1, #3 + bl FUN_02020238 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA2CE: + ldr r0, [r4, #0x5c] + mov r1, #4 + ldr r0, [r0, #0xc] + mov r2, #3 + str r0, [sp] + ldr r0, _021DA314 ; =0x021DAD48 + mov r3, #0 + bl MOD84_021DA58C + str r0, [r4, #0x60] + ldr r0, [r4, #0x5c] + mov r1, #4 + ldr r0, [r0, #0xc] + mov r2, #5 + str r0, [sp] + ldr r0, _021DA318 ; =0x021DAD44 + mov r3, #1 + bl MOD84_021DA58C + str r0, [r4, #0x64] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA2FE: + add sp, #0x38 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA304: + mov r0, #0 + add sp, #0x38 + pop {r3, r4, r5, pc} + nop +_021DA30C: .word 0x021DAD68 +_021DA310: .word 0x021DAD4C +_021DA314: .word 0x021DAD48 +_021DA318: .word 0x021DAD44 + thumb_func_end MOD84_021DA078 + + thumb_func_start MOD84_021DA31C +MOD84_021DA31C: ; 0x021DA31C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x60] + cmp r0, #0 + beq _021DA32A + bl MOD84_021DA5D8 +_021DA32A: + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _021DA334 + bl MOD84_021DA5D8 +_021DA334: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DA33E + bl FUN_0201FFC8 +_021DA33E: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021DA348 + bl FUN_0201FFC8 +_021DA348: + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _021DA352 + bl MOD84_021D821C +_021DA352: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DA35C + bl MOD84_021D81D4 +_021DA35C: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DA366 + bl MOD84_021D81D4 +_021DA366: + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD84_021DA31C + + thumb_func_start MOD84_021DA388 +MOD84_021DA388: ; 0x021DA388 + mov r1, #0 + add r0, #0xe4 + str r1, [r0] + bx lr + thumb_func_end MOD84_021DA388 + + thumb_func_start MOD84_021DA390 +MOD84_021DA390: ; 0x021DA390 + push {r3, lr} + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + beq _021DA39E + bl FUN_0200CAB4 +_021DA39E: + pop {r3, pc} + thumb_func_end MOD84_021DA390 + + thumb_func_start MOD84_021DA3A0 +MOD84_021DA3A0: ; 0x021DA3A0 + push {r4, lr} + add r4, r0, #0 + mov r2, #0 + add r4, #0x68 + str r2, [r0, #0x68] + str r2, [r4, #4] + str r2, [r4, #8] + add r1, r4, #0 + str r2, [r4, #0x74] + add r1, #0x80 + str r0, [r1] + ldr r0, _021DA3C4 ; =MOD84_021DA3D8 + add r1, r4, #0 + bl FUN_0200CA60 + str r0, [r4, #0x7c] + pop {r4, pc} + nop +_021DA3C4: .word MOD84_021DA3D8 + thumb_func_end MOD84_021DA3A0 + + thumb_func_start MOD84_021DA3C8 +MOD84_021DA3C8: ; 0x021DA3C8 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _021DA3D4 + mov r0, #1 + bx lr +_021DA3D4: + mov r0, #0 + bx lr + thumb_func_end MOD84_021DA3C8 + + thumb_func_start MOD84_021DA3D8 +MOD84_021DA3D8: ; 0x021DA3D8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, #0x80 + ldr r5, [r1] + ldr r1, [r4] + cmp r1, #3 + bls _021DA3EA + b _021DA56C +_021DA3EA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA3F6: ; jump table + .short _021DA3FE - _021DA3F6 - 2 ; case 0 + .short _021DA4B8 - _021DA3F6 - 2 ; case 1 + .short _021DA50A - _021DA3F6 - 2 ; case 2 + .short _021DA544 - _021DA3F6 - 2 ; case 3 +_021DA3FE: + ldr r2, [r4, #4] + mov r0, #0x18 + add r1, r2, #0 + ldr r2, _021DA570 ; =0x021DAD84 + mul r1, r0 + ldr r2, [r2, r1] + ldr r3, _021DA574 ; =0x021DAD88 + lsl r2, r2, #0xc + ldr r1, [r3, r1] + str r2, [r4, #0x14] + lsl r6, r1, #0xc + str r6, [r4, #0x18] + mov r1, #0 + str r1, [r4, #0x1c] + ldr r3, [r4, #4] + add r1, r3, #0 + ldr r3, _021DA578 ; =0x021DAD94 + mul r1, r0 + ldr r1, [r3, r1] + str r1, [r4, #0xc] + ldr r3, [r4, #4] + add r1, r3, #0 + ldr r3, _021DA57C ; =0x021DAD98 + mul r1, r0 + ldr r1, [r3, r1] + str r1, [r4, #0x10] + ldr r1, [r4, #4] + add r3, r1, #0 + mul r3, r0 + ldr r0, _021DA580 ; =0x021DAD8C + ldr r1, [r4, #0xc] + ldr r0, [r0, r3] + lsl r0, r0, #0xc + sub r0, r0, r2 + bl _s32_div_f + str r0, [r4, #0x20] + ldr r1, [r4, #4] + mov r0, #0x18 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021DA584 ; =0x021DAD90 + ldr r1, [r4, #0xc] + ldr r0, [r0, r2] + lsl r0, r0, #0xc + sub r0, r0, r6 + bl _s32_div_f + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + add r1, r4, #0 + ldr r0, [r5, #0x14] + add r1, #0x14 + bl FUN_02020044 + ldr r0, [r5, #0x14] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r5, #0x14] + mov r1, #1 + bl FUN_02020130 + add r0, r4, #0 + add r0, #0x20 + add r1, sp, #0 + bl VEC_Normalize + add r2, r4, #0 + add r3, r4, #0 + ldr r0, _021DA588 ; =0xFFFD8000 + add r1, sp, #0 + add r2, #0x14 + add r3, #0x2c + bl VEC_MultAdd + add r1, r4, #0 + ldr r0, [r5, #0x18] + add r1, #0x2c + bl FUN_02020044 + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0 + str r0, [r4, #0x74] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021DA4B8: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DA4F8 + add r0, r4, #0 + add r0, #0x14 + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl VEC_Add + add r0, r4, #0 + add r0, #0x2c + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl VEC_Add + add r1, r4, #0 + ldr r0, [r5, #0x14] + add r1, #0x14 + bl FUN_02020044 + add r1, r4, #0 + ldr r0, [r5, #0x18] + add r1, #0x2c + bl FUN_02020044 + ldr r0, [r4, #0xc] + add sp, #0xc + sub r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_021DA4F8: + mov r0, #0x14 + str r0, [r4, #0xc] + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021DA50A: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DA532 + add r0, r4, #0 + add r0, #0x2c + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl VEC_Add + add r1, r4, #0 + ldr r0, [r5, #0x18] + add r1, #0x2c + bl FUN_02020044 + ldr r0, [r4, #0xc] + add sp, #0xc + sub r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_021DA532: + ldr r0, [r5, #0x18] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021DA544: + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _021DA552 + sub r0, r1, #1 + add sp, #0xc + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, pc} +_021DA552: + ldr r1, [r4, #4] + add r1, r1, #1 + str r1, [r4, #4] + cmp r1, #4 + bhs _021DA564 + mov r0, #0 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021DA564: + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x7c] +_021DA56C: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DA570: .word 0x021DAD84 +_021DA574: .word 0x021DAD88 +_021DA578: .word 0x021DAD94 +_021DA57C: .word 0x021DAD98 +_021DA580: .word 0x021DAD8C +_021DA584: .word 0x021DAD90 +_021DA588: .word 0xFFFD8000 + thumb_func_end MOD84_021DA3D8 + + thumb_func_start MOD84_021DA58C +MOD84_021DA58C: ; 0x021DA58C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x1c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DA5CE + mov r0, #0 + str r0, [r4] + str r0, [r4, #8] + ldr r0, [sp, #0x18] + add r1, r4, #0 + str r0, [r4, #0x18] + str r5, [r4, #0x14] + str r6, [r4, #0xc] + ldr r0, [sp] + str r7, [r4, #4] + str r0, [r4, #0x10] + ldr r0, _021DA5D4 ; =MOD84_021DA5F0 + mov r2, #2 + bl FUN_0200CA98 + add r5, r0, #0 + bne _021DA5CA + add r0, r4, #0 + bl FUN_02016A18 +_021DA5CA: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DA5CE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DA5D4: .word MOD84_021DA5F0 + thumb_func_end MOD84_021DA58C + + thumb_func_start MOD84_021DA5D8 +MOD84_021DA5D8: ; 0x021DA5D8 + push {r4, lr} + add r4, r0, #0 + beq _021DA5EC + bl FUN_0201B6C8 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_021DA5EC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021DA5D8 + + thumb_func_start MOD84_021DA5F0 +MOD84_021DA5F0: ; 0x021DA5F0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + add r1, r0, #1 + str r1, [r4] + ldr r0, [r4, #4] + cmp r1, r0 + ble _021DA644 + ldr r1, [r4, #0x14] + ldr r0, [r4, #8] + ldrb r0, [r1, r0] + ldr r1, [r4, #0x18] + sub r0, r0, #4 + lsl r2, r0, #4 + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _021DA622 + lsl r0, r2, #1 + add r0, r1, r0 + mov r1, #5 + lsl r1, r1, #6 + mov r2, #0x20 + bl GX_LoadBGPltt + b _021DA630 +_021DA622: + lsl r0, r2, #1 + add r0, r1, r0 + mov r1, #6 + lsl r1, r1, #6 + mov r2, #0x20 + bl GXS_LoadBGPltt +_021DA630: + ldr r0, [r4, #8] + add r1, r0, #1 + str r1, [r4, #8] + ldr r0, [r4, #0xc] + cmp r1, r0 + blt _021DA640 + mov r0, #0 + str r0, [r4, #8] +_021DA640: + mov r0, #0 + str r0, [r4] +_021DA644: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021DA5F0 + + .section .rodata + ; 0x021DA648 + .incbin "baserom.nds", 0x302B68, 0x79C diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s new file mode 100644 index 00000000..f158e85d --- /dev/null +++ b/arm9/modules/85/asm/module_85.s @@ -0,0 +1,16171 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD85_021D74E0 +MOD85_021D74E0: ; 0x021D74E0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #2 + mov r0, #3 + mov r1, #0x4f + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #8 + mov r2, #0x4f + bl FUN_02006268 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r5, #0 + bl FUN_0200628C + str r0, [r4] + bl MOD85_021D76CC + add r5, r0, #0 + str r5, [r4, #4] + bl MOD85_021D811C + add r0, r5, #0 + bl MOD85_021D7FCC + add r0, r5, #0 + bl MOD85_021D76FC + add r0, r5, #0 + bl MOD85_021D797C + add r0, r5, #0 + bl MOD85_021D7B28 + bl MOD85_021D7C6C + add r0, r5, #0 + bl MOD85_021D7CB0 + add r0, r5, #0 + bl MOD85_021D8188 + add r0, r5, #0 + bl MOD85_021DC108 + add r0, r5, #0 + bl MOD85_021DC24C + add r0, r5, #0 + bl MOD85_021DC384 + mov r1, #0 + mov r0, #0x42 + add r2, r1, #0 + bl FUN_0200433C + add r0, r5, #0 + bl MOD85_021D8020 + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4f + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021D74E0 + + thumb_func_start MOD85_021D75A0 +MOD85_021D75A0: ; 0x021D75A0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + bl FUN_02006278 + ldr r5, [r0, #4] + ldr r0, [r4] + cmp r0, #3 + bhi _021D7626 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D75BE: ; jump table + .short _021D75C6 - _021D75BE - 2 ; case 0 + .short _021D75D6 - _021D75BE - 2 ; case 1 + .short _021D7608 - _021D75BE - 2 ; case 2 + .short _021D7616 - _021D75BE - 2 ; case 3 +_021D75C6: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7626 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7626 +_021D75D6: + add r0, r5, #0 + bl MOD85_021D820C + cmp r0, #1 + bne _021D7626 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #1 + str r0, [r4] + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4f + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + add r0, r5, #0 + mov r1, #0 + bl MOD85_021D7FF4 + b _021D7626 +_021D7608: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7626 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021D7616: + add r0, r5, #0 + bl MOD85_021D8014 + cmp r0, #0 + bne _021D7626 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D7626: + ldr r0, _021D7640 ; =0x0000044C + ldr r0, [r5, r0] + bl FUN_02064584 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD85_021DE830 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7640: .word 0x0000044C + thumb_func_end MOD85_021D75A0 + + thumb_func_start MOD85_021D7644 +MOD85_021D7644: ; 0x021D7644 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02006278 + add r6, r0, #0 + mov r0, #0 + ldr r4, [r6, #4] + add r1, r0, #0 + bl FUN_02015F10 + add r0, r6, #0 + add r1, r4, #0 + bl MOD85_021D769C + add r0, r4, #0 + bl MOD85_021D7FE4 + add r0, r4, #0 + bl MOD85_021D77DC + add r0, r4, #0 + bl MOD85_021D7BB8 + add r0, r4, #0 + bl MOD85_021D81AC + add r0, r4, #0 + bl MOD85_021D8044 + add r0, r4, #0 + bl MOD85_021D8134 + add r0, r4, #0 + bl MOD85_021D76F4 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x4f + bl FUN_020168D0 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021D7644 + + thumb_func_start MOD85_021D769C +MOD85_021D769C: ; 0x021D769C + push {r3, lr} + add r2, r1, #0 + ldr r3, [r2, #0x60] + ldr r1, _021D76C8 ; =0x0000C350 + cmp r3, r1 + bls _021D76AA + add r3, r1, #0 +_021D76AA: + ldr r1, [r0] + ldr r1, [r1] + str r3, [r1] + ldr r3, [r2, #0x20] + ldr r1, [r0] + str r3, [r1, #0xc] + ldr r0, [r0] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021D76C6 + ldr r2, [r2, #0xc] + mov r1, #0xe + bl FUN_0202A11C +_021D76C6: + pop {r3, pc} + .align 2, 0 +_021D76C8: .word 0x0000C350 + thumb_func_end MOD85_021D769C + + thumb_func_start MOD85_021D76CC +MOD85_021D76CC: ; 0x021D76CC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D76EC ; =0x000004C8 + bl MOD85_021D80F8 + ldr r1, [r4] + ldr r1, [r1] + str r1, [r0, #0x60] + add r1, r0, #0 + ldr r2, [r4, #4] + add r1, #0x88 + str r2, [r1] + ldr r2, [r4, #0x10] + ldr r1, _021D76F0 ; =0x000004C4 + str r2, [r0, r1] + pop {r4, pc} + .align 2, 0 +_021D76EC: .word 0x000004C8 +_021D76F0: .word 0x000004C4 + thumb_func_end MOD85_021D76CC + + thumb_func_start MOD85_021D76F4 +MOD85_021D76F4: ; 0x021D76F4 + ldr r3, _021D76F8 ; =FUN_02016A18 + bx r3 + .align 2, 0 +_021D76F8: .word FUN_02016A18 + thumb_func_end MOD85_021D76F4 + + thumb_func_start MOD85_021D76FC +MOD85_021D76FC: ; 0x021D76FC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + mov r0, #0x4f + bl FUN_02016B94 + ldr r1, _021D77CC ; =0x0000043C + str r0, [r4, r1] + bl MOD85_021D77F8 + ldr r0, _021D77CC ; =0x0000043C + ldr r0, [r4, r0] + bl MOD85_021D7818 + bl MOD85_021D7930 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r0, _021D77D0 ; =0x04000008 + mov r2, #3 + ldrh r1, [r0] + mov r3, #1 + mov r7, #2 + bic r1, r2 + strh r1, [r0] + ldrh r1, [r0, #2] + ldr r6, _021D77D4 ; =0x04001008 + bic r1, r2 + orr r1, r3 + strh r1, [r0, #2] + ldrh r1, [r0, #4] + bic r1, r2 + orr r1, r7 + strh r1, [r0, #4] + ldrh r5, [r0, #6] + mov r1, #3 + bic r5, r2 + orr r5, r1 + strh r5, [r0, #6] + ldrh r5, [r6] + bic r5, r2 + strh r5, [r6] + ldrh r5, [r6, #2] + bic r5, r2 + orr r3, r5 + strh r3, [r6, #2] + ldrh r3, [r6, #4] + add r0, #0x48 + bic r3, r2 + orr r3, r7 + strh r3, [r6, #4] + ldrh r3, [r6, #6] + bic r3, r2 + orr r1, r3 + strh r1, [r6, #6] + mov r1, #9 + str r1, [sp] + mov r1, #4 + mov r2, #0x10 + mov r3, #8 + bl G2x_SetBlendAlpha_ + ldr r0, _021D77D8 ; =MOD85_021D80DC + add r1, r4, #0 + bl FUN_02015F10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D77CC: .word 0x0000043C +_021D77D0: .word 0x04000008 +_021D77D4: .word 0x04001008 +_021D77D8: .word MOD85_021D80DC + thumb_func_end MOD85_021D76FC + + thumb_func_start MOD85_021D77DC +MOD85_021D77DC: ; 0x021D77DC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D77F4 ; =0x0000043C + ldr r0, [r4, r0] + bl MOD85_021D7904 + add r0, r4, #0 + bl MOD85_021D7D04 + bl MOD85_021D7CA4 + pop {r4, pc} + .align 2, 0 +_021D77F4: .word 0x0000043C + thumb_func_end MOD85_021D77DC + + thumb_func_start MOD85_021D77F8 +MOD85_021D77F8: ; 0x021D77F8 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7814 ; =0x021DED7C + add r3, sp, #0 + mov r2, #5 +_021D7802: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7802 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7814: .word 0x021DED7C + thumb_func_end MOD85_021D77F8 + + thumb_func_start MOD85_021D7818 +MOD85_021D7818: ; 0x021D7818 + push {r3, r4, r5, lr} + sub sp, #0x80 + ldr r2, _021D78EC ; =0x04000304 + add r4, r0, #0 + ldrh r1, [r2] + lsr r0, r2, #0xb + ldr r5, _021D78F0 ; =0x021DECEC + orr r0, r1 + strh r0, [r2] + add r3, sp, #0x70 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D78F4 ; =0x021DED28 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x4f + bl FUN_02017F18 + ldr r5, _021D78F8 ; =0x021DED44 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _021D78FC ; =0x021DED60 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _021D7900 ; =0x021DED0C + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #7 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #7 + bl FUN_02018744 + add sp, #0x80 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D78EC: .word 0x04000304 +_021D78F0: .word 0x021DECEC +_021D78F4: .word 0x021DED28 +_021D78F8: .word 0x021DED44 +_021D78FC: .word 0x021DED60 +_021D7900: .word 0x021DED0C + thumb_func_end MOD85_021D7818 + + thumb_func_start MOD85_021D7904 +MOD85_021D7904: ; 0x021D7904 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #7 + bl FUN_020178A0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D7904 + + thumb_func_start MOD85_021D7930 +MOD85_021D7930: ; 0x021D7930 + push {r4, r5} + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _021D7978 ; =0xFFFF1FFF + add r5, r0, #0 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0] + add r5, #0x48 + ldrh r3, [r5] + mov r1, #0x3f + mov r2, #0x1f + bic r3, r1 + add r4, r3, #0 + orr r4, r2 + mov r3, #0x20 + orr r4, r3 + strh r4, [r5] + add r4, r0, #0 + add r4, #0x4a + ldrh r5, [r4] + bic r5, r1 + add r1, r5, #0 + orr r1, r2 + orr r1, r3 + strh r1, [r4] + add r1, r0, #0 + mov r2, #0xff + add r1, #0x40 + strh r2, [r1] + add r0, #0x44 + strh r2, [r0] + pop {r4, r5} + bx lr + .align 2, 0 +_021D7978: .word 0xFFFF1FFF + thumb_func_end MOD85_021D7930 + + thumb_func_start MOD85_021D797C +MOD85_021D797C: ; 0x021D797C + push {r3, r4, r5, lr} + mov r1, #3 + mov r2, #0 + add r4, r0, #0 + bl MOD85_021D8144 + ldr r1, _021D7B1C ; =0x00000448 + add r5, r0, #0 + add r1, r4, r1 + bl FUN_020B0138 + ldr r1, _021D7B1C ; =0x00000448 + mov r2, #0x1a + ldr r1, [r4, r1] + mov r0, #1 + ldr r1, [r1, #0xc] + lsl r2, r2, #4 + mov r3, #0 + bl FUN_02017FB4 + add r0, r5, #0 + bl FUN_02016A18 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD85_021D8144 + ldr r1, _021D7B20 ; =0x00000444 + add r5, r0, #0 + add r1, r4, r1 + bl FUN_020B0088 + ldr r0, _021D7B20 ; =0x00000444 + mov r1, #0 + ldr r3, [r4, r0] + sub r0, #8 + str r1, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r4, r0] + ldr r3, [r3, #0x10] + mov r1, #1 + bl FUN_02017E14 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD85_021D8144 + mov r1, #0x11 + lsl r1, r1, #6 + add r1, r4, r1 + add r5, r0, #0 + bl FUN_020B0180 + mov r0, #0x11 + lsl r0, r0, #6 + ldr r3, [r4, r0] + sub r0, r0, #4 + add r2, r3, #0 + ldr r0, [r4, r0] + ldr r3, [r3, #8] + mov r1, #1 + add r2, #0xc + bl FUN_02017DFC + ldr r0, _021D7B24 ; =0x0000043C + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_02017CD0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #8 + mov r2, #0 + bl MOD85_021D8144 + ldr r1, _021D7B20 ; =0x00000444 + add r5, r0, #0 + add r1, r4, r1 + bl FUN_020B0088 + ldr r0, _021D7B20 ; =0x00000444 + mov r1, #0 + ldr r3, [r4, r0] + sub r0, #8 + str r1, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r4, r0] + ldr r3, [r3, #0x10] + mov r1, #2 + bl FUN_02017E14 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + bl MOD85_021D8144 + mov r1, #0x11 + lsl r1, r1, #6 + add r1, r4, r1 + add r5, r0, #0 + bl FUN_020B0180 + mov r0, #0x11 + lsl r0, r0, #6 + ldr r3, [r4, r0] + sub r0, r0, #4 + add r2, r3, #0 + ldr r0, [r4, r0] + ldr r3, [r3, #8] + mov r1, #2 + add r2, #0xc + bl FUN_02017DFC + ldr r0, _021D7B24 ; =0x0000043C + mov r1, #2 + ldr r0, [r4, r0] + bl FUN_02017CD0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #3 + mov r2, #0 + bl MOD85_021D8144 + ldr r1, _021D7B1C ; =0x00000448 + add r5, r0, #0 + add r1, r4, r1 + bl FUN_020B0138 + ldr r1, _021D7B1C ; =0x00000448 + mov r2, #0x1a + ldr r1, [r4, r1] + mov r0, #7 + ldr r1, [r1, #0xc] + lsl r2, r2, #4 + mov r3, #0 + bl FUN_02017FB4 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #2 + mov r2, #0 + bl MOD85_021D8144 + ldr r1, _021D7B20 ; =0x00000444 + add r5, r0, #0 + add r1, r4, r1 + bl FUN_020B0088 + ldr r0, _021D7B20 ; =0x00000444 + mov r1, #0 + ldr r3, [r4, r0] + sub r0, #8 + str r1, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r4, r0] + ldr r3, [r3, #0x10] + mov r1, #7 + bl FUN_02017E14 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD85_021D8144 + mov r1, #0x11 + lsl r1, r1, #6 + add r1, r4, r1 + add r5, r0, #0 + bl FUN_020B0180 + mov r0, #0x11 + lsl r0, r0, #6 + ldr r3, [r4, r0] + sub r0, r0, #4 + add r2, r3, #0 + ldr r0, [r4, r0] + ldr r3, [r3, #8] + mov r1, #7 + add r2, #0xc + bl FUN_02017DFC + ldr r0, _021D7B24 ; =0x0000043C + mov r1, #7 + ldr r0, [r4, r0] + bl FUN_02017CD0 + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7B1C: .word 0x00000448 +_021D7B20: .word 0x00000444 +_021D7B24: .word 0x0000043C + thumb_func_end MOD85_021D797C + + thumb_func_start MOD85_021D7B28 +MOD85_021D7B28: ; 0x021D7B28 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _021D7BA4 ; =0x00000408 + mov r1, #0 + add r4, r5, r0 + str r1, [sp] + mov r2, #0x4f + str r2, [sp, #4] + add r0, #0x34 + ldr r0, [r5, r0] + mov r2, #1 + mov r3, #0xf + bl FUN_0200CB00 + ldr r1, _021D7BA8 ; =0x000004C4 + mov r2, #0x1f + ldr r0, [r5, r1] + sub r1, #0x88 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x4f + str r0, [sp, #4] + ldr r0, [r5, r1] + mov r1, #0 + mov r3, #0xe + bl FUN_0200CD68 + mov r1, #0x1e + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x4f + bl FUN_02002EEC + ldr r2, _021D7BAC ; =0x000001E9 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x4f + bl FUN_0200A86C + ldr r1, _021D7BA4 ; =0x00000408 + str r0, [r5, r1] + mov r0, #0x4f + bl FUN_0200AA80 + str r0, [r4, #4] + ldr r0, _021D7BB0 ; =0x0000043C + add r1, r4, #0 + ldr r0, [r5, r0] + ldr r2, _021D7BB4 ; =0x021DECE4 + add r1, #8 + bl FUN_02019150 + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0x4f + bl FUN_020219F4 + str r0, [r4, #0x18] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7BA4: .word 0x00000408 +_021D7BA8: .word 0x000004C4 +_021D7BAC: .word 0x000001E9 +_021D7BB0: .word 0x0000043C +_021D7BB4: .word 0x021DECE4 + thumb_func_end MOD85_021D7B28 + + thumb_func_start MOD85_021D7BB8 +MOD85_021D7BB8: ; 0x021D7BB8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021D7BE8 ; =0x00000408 + add r4, r5, r0 + add r6, r4, #0 + add r6, #8 + add r0, r6, #0 + bl FUN_02019570 + add r0, r6, #0 + bl FUN_02019178 + ldr r0, _021D7BE8 ; =0x00000408 + ldr r0, [r5, r0] + bl FUN_0200A8B8 + ldr r0, [r4, #4] + bl FUN_0200AB18 + ldr r0, [r4, #0x18] + bl FUN_02021A20 + pop {r4, r5, r6, pc} + nop +_021D7BE8: .word 0x00000408 + thumb_func_end MOD85_021D7BB8 + + thumb_func_start MOD85_021D7BEC +MOD85_021D7BEC: ; 0x021D7BEC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _021D7C40 ; =0x00000408 + add r6, r1, #0 + add r4, r5, r0 + add r0, r4, #0 + add r0, #8 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xe + bl FUN_0200D0BC + add r0, r4, #0 + add r0, #8 + mov r1, #0xf + bl FUN_02019620 + ldr r0, _021D7C40 ; =0x00000408 + ldr r2, [r4, #0x18] + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x18] + add r0, #8 + mov r1, #1 + bl FUN_0201BD84 + add r4, #8 + add r0, r4, #0 + bl FUN_02019220 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D7C40: .word 0x00000408 + thumb_func_end MOD85_021D7BEC + + thumb_func_start MOD85_021D7C44 +MOD85_021D7C44: ; 0x021D7C44 + push {r3, r4, r5, lr} + ldr r4, _021D7C68 ; =0x00000408 + add r5, r0, #0 + add r0, r5, r4 + add r0, #8 + mov r1, #1 + bl FUN_0200D0E0 + add r0, r5, r4 + add r0, #8 + mov r1, #0 + bl FUN_02019620 + add r0, r5, r4 + add r0, #8 + bl FUN_02019220 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7C68: .word 0x00000408 + thumb_func_end MOD85_021D7C44 + + thumb_func_start MOD85_021D7C6C +MOD85_021D7C6C: ; 0x021D7C6C + push {r4, lr} + sub sp, #0x10 + ldr r4, _021D7C9C ; =0x021DECFC + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r1, _021D7CA0 ; =0x00200010 + add r0, r2, #0 + add r2, r1, #0 + bl FUN_0201D060 + mov r0, #0x10 + mov r1, #0x4f + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D7C9C: .word 0x021DECFC +_021D7CA0: .word 0x00200010 + thumb_func_end MOD85_021D7C6C + + thumb_func_start MOD85_021D7CA4 +MOD85_021D7CA4: ; 0x021D7CA4 + push {r3, lr} + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, pc} + thumb_func_end MOD85_021D7CA4 + + thumb_func_start MOD85_021D7CB0 +MOD85_021D7CB0: ; 0x021D7CB0 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x4f + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r0, #0x10 + str r0, [sp] + mov r1, #0x40 + str r1, [sp, #4] + mov r2, #0x20 + str r2, [sp, #8] + mov r3, #0xb + str r3, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + str r3, [sp, #0x14] + str r3, [sp, #0x18] + mov r0, #0x4f + add r3, r1, #0 + bl MOD85_021DE5A4 + mov r1, #0x45 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD85_021D7D1C + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D7CB0 + + thumb_func_start MOD85_021D7D04 +MOD85_021D7D04: ; 0x021D7D04 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021D7FC8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD85_021DE710 + bl FUN_02009FA0 + pop {r4, pc} + thumb_func_end MOD85_021D7D04 + + thumb_func_start MOD85_021D7D1C +MOD85_021D7D1C: ; 0x021D7D1C + push {r3, r4, lr} + sub sp, #4 + mov r2, #0x45 + add r4, r0, #0 + mov r0, #0 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #1 + mov r3, #0xb + bl MOD85_021DE840 + mov r1, #1 + mov r2, #0x45 + str r1, [sp] + lsl r2, r2, #4 + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r3, #0x15 + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #6 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x44 + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #7 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x47 + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #8 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x40 + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #9 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x3c + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #0 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #3 + mov r3, #0xa + bl MOD85_021DE910 + mov r1, #1 + mov r2, #0x45 + str r1, [sp] + lsl r2, r2, #4 + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r3, #0x14 + bl MOD85_021DE910 + mov r2, #0x45 + mov r0, #6 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x43 + bl MOD85_021DE910 + mov r2, #0x45 + mov r0, #7 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x3f + bl MOD85_021DE910 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0xc + mov r3, #0 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x16 + mov r3, #1 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x45 + mov r3, #6 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x48 + mov r3, #7 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x41 + mov r3, #8 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x3d + mov r3, #9 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0xd + mov r3, #0 + bl MOD85_021DEA4C + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x17 + mov r3, #1 + bl MOD85_021DEA4C + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x46 + mov r3, #6 + bl MOD85_021DEA4C + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x49 + mov r3, #7 + bl MOD85_021DEA4C + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x42 + mov r3, #8 + bl MOD85_021DEA4C + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x3e + mov r3, #9 + bl MOD85_021DEA4C + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #7 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD85_021DE8DC + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD85_021DE8DC + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD85_021DE8DC + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #7 + bl MOD85_021DE8DC + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + bl MOD85_021DE8DC + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD85_021DE8DC + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD85_021DE97C + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD85_021DE97C + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD85_021DE97C + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #7 + bl MOD85_021DE97C + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD85_021DE9B0 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD85_021DE9B0 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD85_021DE9B0 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #7 + bl MOD85_021DE9B0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D7D1C + + thumb_func_start MOD85_021D7FC8 +MOD85_021D7FC8: ; 0x021D7FC8 + bx lr + .align 2, 0 + thumb_func_end MOD85_021D7FC8 + + thumb_func_start MOD85_021D7FCC +MOD85_021D7FCC: ; 0x021D7FCC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4f + mov r1, #0x80 + bl FUN_020643C0 + ldr r1, _021D7FE0 ; =0x0000044C + str r0, [r4, r1] + pop {r4, pc} + nop +_021D7FE0: .word 0x0000044C + thumb_func_end MOD85_021D7FCC + + thumb_func_start MOD85_021D7FE4 +MOD85_021D7FE4: ; 0x021D7FE4 + ldr r1, _021D7FEC ; =0x0000044C + ldr r3, _021D7FF0 ; =FUN_020643F0 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_021D7FEC: .word 0x0000044C +_021D7FF0: .word FUN_020643F0 + thumb_func_end MOD85_021D7FE4 + + thumb_func_start MOD85_021D7FF4 +MOD85_021D7FF4: ; 0x021D7FF4 + ldr r2, _021D8010 ; =0x00000424 + add r2, r0, r2 + ldr r0, [r2, #8] + cmp r0, r1 + beq _021D800C + ldr r0, [r2, #0xc] + cmp r0, r1 + beq _021D800C + str r1, [r2, #0xc] + mov r0, #1 + str r0, [r2] + str r0, [r2, #4] +_021D800C: + bx lr + nop +_021D8010: .word 0x00000424 + thumb_func_end MOD85_021D7FF4 + + thumb_func_start MOD85_021D8014 +MOD85_021D8014: ; 0x021D8014 + ldr r1, _021D801C ; =0x00000428 + ldr r0, [r0, r1] + bx lr + nop +_021D801C: .word 0x00000428 + thumb_func_end MOD85_021D8014 + + thumb_func_start MOD85_021D8020 +MOD85_021D8020: ; 0x021D8020 + push {r4, lr} + add r1, r0, #0 + ldr r0, _021D803C ; =0x00000424 + mov r2, #0x90 + add r4, r1, r0 + mov r0, #0 + str r0, [r4, #8] + mov r0, #3 + str r0, [r4, #0xc] + ldr r0, _021D8040 ; =MOD85_021D8054 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 +_021D803C: .word 0x00000424 +_021D8040: .word MOD85_021D8054 + thumb_func_end MOD85_021D8020 + + thumb_func_start MOD85_021D8044 +MOD85_021D8044: ; 0x021D8044 + ldr r1, _021D804C ; =0x00000434 + ldr r3, _021D8050 ; =FUN_0200CAB4 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_021D804C: .word 0x00000434 +_021D8050: .word FUN_0200CAB4 + thumb_func_end MOD85_021D8044 + + thumb_func_start MOD85_021D8054 +MOD85_021D8054: ; 0x021D8054 + push {r4, lr} + ldr r0, _021D80D8 ; =0x00000424 + add r4, r1, r0 + ldr r1, [r4] + cmp r1, #0 + beq _021D80D4 + cmp r1, #1 + beq _021D806A + cmp r1, #2 + beq _021D809E + pop {r4, pc} +_021D806A: + ldr r1, [r4, #8] + cmp r1, #0 + beq _021D807A + cmp r1, #1 + beq _021D8084 + cmp r1, #2 + beq _021D808E + b _021D8096 +_021D807A: + mov r0, #1 + add r1, r0, #0 + bl FUN_020047C8 + b _021D8096 +_021D8084: + add r0, #0x7c + mov r1, #0 + bl FUN_02005350 + b _021D8096 +_021D808E: + add r0, #0x7d + mov r1, #0 + bl FUN_02005350 +_021D8096: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_021D809E: + ldr r1, [r4, #0xc] + cmp r1, #0 + beq _021D80AE + cmp r1, #1 + beq _021D80B8 + cmp r1, #2 + beq _021D80C0 + b _021D80C6 +_021D80AE: + mov r0, #1 + mov r1, #0 + bl FUN_020047C8 + b _021D80C6 +_021D80B8: + add r0, #0x7c + bl FUN_020051F4 + b _021D80C6 +_021D80C0: + add r0, #0x7d + bl FUN_020051F4 +_021D80C6: + ldr r0, [r4, #0xc] + str r0, [r4, #8] + mov r0, #3 + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #4] + str r0, [r4] +_021D80D4: + pop {r4, pc} + nop +_021D80D8: .word 0x00000424 + thumb_func_end MOD85_021D8054 + + thumb_func_start MOD85_021D80DC +MOD85_021D80DC: ; 0x021D80DC + push {r4, lr} + add r4, r0, #0 + bl FUN_0201C30C + bl FUN_02009F80 + ldr r0, _021D80F4 ; =0x0000043C + ldr r0, [r4, r0] + bl FUN_0201AB60 + pop {r4, pc} + nop +_021D80F4: .word 0x0000043C + thumb_func_end MOD85_021D80DC + + thumb_func_start MOD85_021D80F8 +MOD85_021D80F8: ; 0x021D80F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x4f + add r1, r5, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021D810C + bl ErrorHandling +_021D810C: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021D80F8 + + thumb_func_start MOD85_021D811C +MOD85_021D811C: ; 0x021D811C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x85 + mov r1, #0x4f + bl FUN_02006670 + ldr r1, _021D8130 ; =0x00000438 + str r0, [r4, r1] + pop {r4, pc} + nop +_021D8130: .word 0x00000438 + thumb_func_end MOD85_021D811C + + thumb_func_start MOD85_021D8134 +MOD85_021D8134: ; 0x021D8134 + ldr r1, _021D813C ; =0x00000438 + ldr r3, _021D8140 ; =FUN_020066F4 + ldr r0, [r0, r1] + bx r3 + .align 2, 0 +_021D813C: .word 0x00000438 +_021D8140: .word FUN_020066F4 + thumb_func_end MOD85_021D8134 + + thumb_func_start MOD85_021D8144 +MOD85_021D8144: ; 0x021D8144 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, _021D8184 ; =0x00000438 + add r6, r1, #0 + ldr r0, [r4, r0] + add r5, r2, #0 + bl FUN_020067D0 + add r1, r0, #0 + cmp r5, #1 + bne _021D8162 + mov r0, #0x4f + bl FUN_02016998 + b _021D8168 +_021D8162: + mov r0, #0x4f + bl FUN_020169D8 +_021D8168: + add r5, r0, #0 + cmp r5, #0 + bne _021D8172 + bl ErrorHandling +_021D8172: + ldr r0, _021D8184 ; =0x00000438 + add r1, r6, #0 + ldr r0, [r4, r0] + add r2, r5, #0 + bl FUN_02006774 + add r0, r5, #0 + pop {r4, r5, r6, pc} + nop +_021D8184: .word 0x00000438 + thumb_func_end MOD85_021D8144 + + thumb_func_start MOD85_021D8188 +MOD85_021D8188: ; 0x021D8188 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021D81C8 + add r0, r4, #0 + bl MOD85_021D92E8 + add r0, r4, #0 + bl MOD85_021DAD20 + add r0, r4, #0 + bl MOD85_021DAEC0 + add r0, r4, #0 + bl MOD85_021DB494 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D8188 + + thumb_func_start MOD85_021D81AC +MOD85_021D81AC: ; 0x021D81AC + push {r4, lr} + add r4, r0, #0 + bl MOD85_021D931C + add r0, r4, #0 + bl MOD85_021DAD44 + add r0, r4, #0 + bl MOD85_021DAEE4 + add r0, r4, #0 + bl MOD85_021DB600 + pop {r4, pc} + thumb_func_end MOD85_021D81AC + + thumb_func_start MOD85_021D81C8 +MOD85_021D81C8: ; 0x021D81C8 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0x15 + add r5, r0, #0 + mov r4, #0 + lsl r6, r7, #0x11 +_021D81D2: + bl FUN_0201B9EC + add r1, r7, #0 + bl _s32_div_f + add r0, r5, #0 + add r0, #0xa8 + str r1, [r0] + lsl r0, r1, #0x11 + sub r1, r6, r0 + add r0, r5, #0 + add r0, #0x90 + str r1, [r0] + add r0, r5, #0 + add r0, #0x90 + mov r1, #0x2a + ldr r0, [r0] + lsl r1, r1, #0x10 + bl _s32_div_f + add r0, r5, #0 + add r0, #0x90 + add r4, r4, #1 + add r5, r5, #4 + str r1, [r0] + cmp r4, #3 + blt _021D81D2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021D81C8 + + thumb_func_start MOD85_021D820C +MOD85_021D820C: ; 0x021D820C + push {r3, r4, r5, lr} + ldr r4, _021D822C ; =0x021DEF94 + add r5, r0, #0 +_021D8212: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _021D8212 + cmp r0, #2 + bne _021D8228 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8228: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D822C: .word 0x021DEF94 + thumb_func_end MOD85_021D820C + + thumb_func_start MOD85_021D8230 +MOD85_021D8230: ; 0x021D8230 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + str r1, [r4, #0x64] + mov r3, #1 + add r2, r4, #0 + str r1, [r4, #0x68] + lsl r3, r3, #0x10 + add r2, #0x8c + str r3, [r2] + str r1, [r4, #0x74] + str r1, [r4, #8] + mov r2, #1 + str r2, [r4] + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC094 + add r0, r4, #0 + bl MOD85_021DB754 + add r0, r4, #0 + bl MOD85_021DB95C + ldr r1, [r4, #0x60] + cmp r1, #0 + bne _021D827C + mov r0, #0x3c + str r0, [r4] + mov r0, #0x3f + str r0, [r4, #4] + b _021D8298 +_021D827C: + cmp r1, #3 + bge _021D828A + mov r0, #0x3b + str r0, [r4] + mov r0, #0x3f + str r0, [r4, #4] + b _021D8298 +_021D828A: + ldr r0, _021D829C ; =0x0000C350 + cmp r1, r0 + blt _021D8298 + mov r0, #0x3d + str r0, [r4] + mov r0, #1 + str r0, [r4, #4] +_021D8298: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D829C: .word 0x0000C350 + thumb_func_end MOD85_021D8230 + + thumb_func_start MOD85_021D82A0 +MOD85_021D82A0: ; 0x021D82A0 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D82BC + add r0, r4, #0 + bl MOD85_021DB9A0 + mov r0, #0x3f + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D82BC: + mov r0, #1 + lsl r0, r0, #0xa + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D82F0 + ldr r0, [r4, #0x60] + sub r0, r0, #3 + str r0, [r4, #0x60] + ldr r0, _021D82F4 ; =0x0000045C + ldr r1, [r4, r0] + add r1, r1, #3 + str r1, [r4, r0] + mov r0, #2 + str r0, [r4] + ldr r0, _021D82F8 ; =0x000005ED + bl FUN_020054C8 + add r0, r4, #0 + bl MOD85_021DB9A0 + add r0, r4, #0 + bl MOD85_021DB76C + mov r0, #0 + pop {r4, pc} +_021D82F0: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D82F4: .word 0x0000045C +_021D82F8: .word 0x000005ED + thumb_func_end MOD85_021D82A0 + + thumb_func_start MOD85_021D82FC +MOD85_021D82FC: ; 0x021D82FC + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8318 + ldr r0, [r4, #0x60] + add r0, r0, #3 + str r0, [r4, #0x60] + mov r0, #0x3f + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D8318: + mov r0, #0x12 + lsl r0, r0, #6 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D832C + mov r0, #3 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D832C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D82FC + + thumb_func_start MOD85_021D8330 +MOD85_021D8330: ; 0x021D8330 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DA804 + mov r0, #0x46 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + add r1, r0, #4 + ldr r1, [r4, r1] + add r0, r0, #4 + add r1, r1, #1 + str r1, [r4, r0] + mov r0, #0 + str r0, [r4, #0x70] + ldr r1, [r4, #0x74] + mov r0, #0x33 + tst r0, r1 + beq _021D835C + mov r0, #1 + str r0, [r4, #0x70] +_021D835C: + mov r0, #0 + str r0, [r4, #0x30] + ldr r0, [r4, #0x74] + cmp r0, #0 + beq _021D8398 + add r0, r4, #0 + bl MOD85_021DA948 + cmp r0, #0 + bne _021D8378 + mov r0, #0x55 + mov r1, #4 + lsl r0, r0, #2 + b _021D838C +_021D8378: + ldr r0, [r4, #0x74] + bl MOD85_021DBF70 + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x49 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 +_021D838C: + str r1, [r4, r0] + mov r1, #1 + add r0, r4, #0 + str r1, [r4, #0x30] + bl MOD85_021DAEF4 +_021D8398: + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC094 + add r0, r4, #0 + bl MOD85_021DB76C + add r0, r4, #0 + mov r1, #0 + bl MOD85_021D9338 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9338 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9338 + add r0, r4, #0 + bl MOD85_021DBFA4 + mov r1, #1 + add r0, r4, #0 + str r1, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #4 + str r0, [r4] + ldr r0, _021D83F8 ; =0x000005EE + bl FUN_020054C8 + mov r0, #1 + pop {r4, pc} + nop +_021D83F8: .word 0x000005EE + thumb_func_end MOD85_021D8330 + + thumb_func_start MOD85_021D83FC +MOD85_021D83FC: ; 0x021D83FC + mov r1, #1 + ldr r2, [r0, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + lsl r1, r1, #3 + str r2, [r0, #0x6c] + cmp r2, r1 + blt _021D8418 + mov r1, #0 + str r1, [r0, #0x6c] + mov r1, #5 + str r1, [r0] + mov r0, #1 + bx lr +_021D8418: + mov r0, #0 + bx lr + thumb_func_end MOD85_021D83FC + + thumb_func_start MOD85_021D841C +MOD85_021D841C: ; 0x021D841C + push {r4, lr} + ldr r1, _021D850C ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + ldr r1, [r4, #0x7c] + cmp r1, #1 + bne _021D8462 + mov r1, #2 + lsl r1, r1, #0xa + add r3, r2, #0 + tst r3, r1 + beq _021D8462 + mov r2, #2 + str r2, [r4, #0x7c] + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DBFDC + cmp r0, #0 + bne _021D844A + mov r0, #0 + str r0, [r4, #0x70] +_021D844A: + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021D9350 + ldr r0, _021D8510 ; =0x00000626 + bl FUN_020054C8 + b _021D84EA +_021D8462: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _021D84A6 + mov r1, #2 + add r0, r2, #0 + tst r0, r1 + beq _021D84A6 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DBFDC + cmp r0, #0 + bne _021D848E + mov r0, #0 + str r0, [r4, #0x70] +_021D848E: + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9350 + ldr r0, _021D8510 ; =0x00000626 + bl FUN_020054C8 + b _021D84EA +_021D84A6: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #1 + bne _021D84EA + mov r1, #1 + add r0, r2, #0 + tst r0, r1 + beq _021D84EA + add r0, r4, #0 + mov r2, #2 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DBFDC + cmp r0, #0 + bne _021D84D4 + mov r0, #0 + str r0, [r4, #0x70] +_021D84D4: + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9350 + ldr r0, _021D8510 ; =0x00000626 + bl FUN_020054C8 +_021D84EA: + ldr r0, [r4, #0x7c] + cmp r0, #2 + bne _021D8508 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #2 + bne _021D8508 + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #2 + bne _021D8508 + mov r0, #6 + str r0, [r4] +_021D8508: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D850C: .word 0x021C48B8 +_021D8510: .word 0x00000626 + thumb_func_end MOD85_021D841C + + thumb_func_start MOD85_021D8514 +MOD85_021D8514: ; 0x021D8514 + push {r4, lr} + mov r1, #0 + add r4, r0, #0 + bl MOD85_021D9360 + cmp r0, #1 + beq _021D853A + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9360 + cmp r0, #1 + beq _021D853A + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9360 + cmp r0, #1 + bne _021D853E +_021D853A: + mov r0, #0 + pop {r4, pc} +_021D853E: + add r0, r4, #0 + bl MOD85_021DB754 + mov r0, #7 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D8514 + + thumb_func_start MOD85_021D854C +MOD85_021D854C: ; 0x021D854C + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + ldr r1, [r4, #0x74] + add r2, #0x48 + bl MOD85_021DBED4 + str r0, [r4, #0x44] + cmp r0, #6 + bne _021D8584 + ldr r1, [r4, #0x74] + mov r0, #0xaa + tst r0, r1 + beq _021D8570 + mov r0, #0x10 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8570: + cmp r1, #0 + beq _021D857C + mov r0, #0xa + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D857C: + mov r0, #8 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8584: + ldr r2, [r4, #0x74] + mov r1, #0xaa + tst r1, r2 + beq _021D859E + mov r0, #2 + tst r0, r2 + beq _021D8596 + mov r0, #0x15 + b _021D8598 +_021D8596: + mov r0, #0x13 +_021D8598: + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D859E: + cmp r0, #2 + bne _021D85AA + mov r0, #0xe + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D85AA: + mov r0, #0xc + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D854C + + thumb_func_start MOD85_021D85B4 +MOD85_021D85B4: ; 0x021D85B4 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DB754 + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #9 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D85B4 + + thumb_func_start MOD85_021D85C8 +MOD85_021D85C8: ; 0x021D85C8 + mov r1, #1 + ldr r2, [r0, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + lsl r1, r1, #3 + str r2, [r0, #0x6c] + cmp r2, r1 + blt _021D85DE + mov r1, #0 + str r1, [r0, #0x6c] + str r1, [r0] +_021D85DE: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD85_021D85C8 + + thumb_func_start MOD85_021D85E4 +MOD85_021D85E4: ; 0x021D85E4 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DB754 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DAEF4 + mov r0, #0xb + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D85E4 + + thumb_func_start MOD85_021D85FC +MOD85_021D85FC: ; 0x021D85FC + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAF08 + cmp r0, #1 + bne _021D8618 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DAEF4 + mov r0, #0 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8618: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D85FC + + thumb_func_start MOD85_021D861C +MOD85_021D861C: ; 0x021D861C + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DC0D8 + ldr r1, _021D8648 ; =0x00000458 + str r0, [r4, #0x64] + ldr r2, [r4, r1] + add r0, r2, r0 + str r0, [r4, r1] + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0xd + str r0, [r4] + add r0, r4, #0 + bl MOD85_021DAD54 + add r0, r4, #0 + mov r1, #0xb + bl MOD85_021DAEF4 + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D8648: .word 0x00000458 + thumb_func_end MOD85_021D861C + + thumb_func_start MOD85_021D864C +MOD85_021D864C: ; 0x021D864C + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r2, [r4, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + mov r1, #0x1e + lsl r1, r1, #0xc + str r2, [r4, #0x6c] + cmp r2, r1 + bne _021D866A + mov r1, #2 + bl MOD85_021DAEF4 + b _021D8690 +_021D866A: + ble _021D8690 + bl MOD85_021DAD68 + cmp r0, #1 + bne _021D8690 + add r0, r4, #0 + bl MOD85_021DAF08 + cmp r0, #1 + bne _021D8690 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DAEF4 + mov r0, #0 + str r0, [r4, #0x6c] + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8690: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D864C + + thumb_func_start MOD85_021D8694 +MOD85_021D8694: ; 0x021D8694 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + str r1, [r4, #0x64] + str r1, [r4, #0x6c] + mov r1, #0xf + str r1, [r4] + bl MOD85_021DAD54 + add r0, r4, #0 + mov r1, #0xb + bl MOD85_021DAEF4 + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D8694 + + thumb_func_start MOD85_021D86B4 +MOD85_021D86B4: ; 0x021D86B4 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r2, [r4, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + mov r1, #0xf + lsl r1, r1, #0xc + str r2, [r4, #0x6c] + cmp r2, r1 + bne _021D86D2 + mov r1, #2 + bl MOD85_021DAEF4 + b _021D86FA +_021D86D2: + ble _021D86FA + bl MOD85_021DAD68 + cmp r0, #1 + bne _021D86FA + add r0, r4, #0 + bl MOD85_021DAF08 + cmp r0, #1 + bne _021D86FA + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DAEF4 + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #3 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D86FA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D86B4 + + thumb_func_start MOD85_021D8700 +MOD85_021D8700: ; 0x021D8700 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DB754 + add r0, r4, #0 + bl MOD85_021DA96C + add r0, r4, #0 + bl MOD85_021DAA2C + add r0, r4, #0 + mov r1, #0xb + bl MOD85_021DAEF4 + mov r0, #0 + str r0, [r4, #0x6c] + mov r1, #0x11 + str r1, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D8700 + + thumb_func_start MOD85_021D8728 +MOD85_021D8728: ; 0x021D8728 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r2, [r4, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + lsl r1, r1, #3 + str r2, [r4, #0x6c] + cmp r2, r1 + blt _021D874E + mov r1, #3 + bl MOD85_021DAEF4 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D7FF4 + mov r0, #0x12 + str r0, [r4] +_021D874E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D8728 + + thumb_func_start MOD85_021D8754 +MOD85_021D8754: ; 0x021D8754 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAF08 + cmp r0, #1 + bne _021D8768 + mov r0, #0x17 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8768: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D8754 + + thumb_func_start MOD85_021D876C +MOD85_021D876C: ; 0x021D876C + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DC0D8 + str r0, [r4, #0x64] + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x14 + str r0, [r4] + add r0, r4, #0 + bl MOD85_021DAD54 + add r0, r4, #0 + bl MOD85_021DA96C + add r0, r4, #0 + bl MOD85_021DAA2C + add r0, r4, #0 + mov r1, #0xb + bl MOD85_021DAEF4 + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D876C + + thumb_func_start MOD85_021D879C +MOD85_021D879C: ; 0x021D879C + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r2, [r4, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + mov r1, #0x1e + lsl r1, r1, #0xc + str r2, [r4, #0x6c] + cmp r2, r1 + bne _021D87C2 + mov r1, #1 + bl MOD85_021D7FF4 + add r0, r4, #0 + mov r1, #3 + bl MOD85_021DAEF4 + b _021D87E2 +_021D87C2: + blt _021D87E2 + bl MOD85_021DAD68 + cmp r0, #1 + bne _021D87E2 + add r0, r4, #0 + bl MOD85_021DAF08 + cmp r0, #1 + bne _021D87E2 + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x17 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D87E2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D879C + + thumb_func_start MOD85_021D87E8 +MOD85_021D87E8: ; 0x021D87E8 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + str r1, [r4, #0x6c] + mov r1, #0x16 + str r1, [r4] + bl MOD85_021DAD54 + add r0, r4, #0 + mov r1, #0xb + bl MOD85_021DAEF4 + add r0, r4, #0 + bl MOD85_021DA96C + add r0, r4, #0 + bl MOD85_021DAA2C + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D87E8 + + thumb_func_start MOD85_021D8810 +MOD85_021D8810: ; 0x021D8810 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r2, [r4, #0x6c] + lsl r1, r1, #0xc + add r3, r2, r1 + lsl r2, r1, #3 + str r3, [r4, #0x6c] + cmp r3, r2 + bne _021D8834 + mov r1, #3 + bl MOD85_021DAEF4 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D7FF4 + b _021D8858 +_021D8834: + lsl r1, r1, #3 + cmp r3, r1 + blt _021D8858 + bl MOD85_021DAD68 + cmp r0, #1 + bne _021D8858 + add r0, r4, #0 + bl MOD85_021DAF08 + cmp r0, #1 + bne _021D8858 + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x18 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8858: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D8810 + + thumb_func_start MOD85_021D885C +MOD85_021D885C: ; 0x021D885C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #6 + blt _021D886A + bl ErrorHandling +_021D886A: + mov r0, #0x19 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D885C + + thumb_func_start MOD85_021D8874 +MOD85_021D8874: ; 0x021D8874 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #6 + blt _021D8882 + bl ErrorHandling +_021D8882: + mov r0, #0x1c + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D8874 + + thumb_func_start MOD85_021D888C +MOD85_021D888C: ; 0x021D888C + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + str r1, [r4, #0x64] + str r1, [r4, #0x68] + mov r2, #0x1a + str r2, [r4] + str r1, [r4, #0x74] + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC094 + add r0, r4, #0 + bl MOD85_021DB754 + add r0, r4, #0 + bl MOD85_021DB95C + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + ldr r1, [r4, #0x60] + cmp r1, #0 + bne _021D88D4 + mov r0, #0x3c + str r0, [r4] + mov r0, #0x3f + str r0, [r4, #4] + b _021D88F0 +_021D88D4: + cmp r1, #3 + bge _021D88E2 + mov r0, #0x3b + str r0, [r4] + mov r0, #0x3f + str r0, [r4, #4] + b _021D88F0 +_021D88E2: + ldr r0, _021D88F4 ; =0x0000C350 + cmp r1, r0 + blt _021D88F0 + mov r0, #0x3d + str r0, [r4] + mov r0, #0x1a + str r0, [r4, #4] +_021D88F0: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D88F4: .word 0x0000C350 + thumb_func_end MOD85_021D888C + + thumb_func_start MOD85_021D88F8 +MOD85_021D88F8: ; 0x021D88F8 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8914 + mov r0, #0x3f + str r0, [r4] + add r0, r4, #0 + bl MOD85_021DB9A0 + mov r0, #0 + pop {r4, pc} +_021D8914: + mov r0, #1 + lsl r0, r0, #0xa + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8948 + ldr r0, [r4, #0x60] + sub r0, r0, #3 + str r0, [r4, #0x60] + ldr r0, _021D894C ; =0x0000045C + ldr r1, [r4, r0] + add r1, r1, #3 + str r1, [r4, r0] + mov r0, #0x1b + str r0, [r4] + ldr r0, _021D8950 ; =0x000005ED + bl FUN_020054C8 + add r0, r4, #0 + bl MOD85_021DB9A0 + add r0, r4, #0 + bl MOD85_021DB76C + mov r0, #0 + pop {r4, pc} +_021D8948: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D894C: .word 0x0000045C +_021D8950: .word 0x000005ED + thumb_func_end MOD85_021D88F8 + + thumb_func_start MOD85_021D8954 +MOD85_021D8954: ; 0x021D8954 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8970 + ldr r0, [r4, #0x60] + add r0, r0, #3 + str r0, [r4, #0x60] + mov r0, #0x3f + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D8970: + mov r0, #0x12 + lsl r0, r0, #6 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8984 + mov r0, #0x1c + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8984: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D8954 + + thumb_func_start MOD85_021D8988 +MOD85_021D8988: ; 0x021D8988 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAAF0 + mov r1, #0x46 + lsl r1, r1, #4 + ldr r0, [r4, r1] + add r0, r0, #1 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + add r1, #8 + add r0, r0, #1 + str r0, [r4, r1] + mov r0, #0 + str r0, [r4, #0x70] + ldr r1, [r4, #0x74] + mov r0, #0x33 + tst r0, r1 + beq _021D89B6 + mov r0, #1 + str r0, [r4, #0x70] +_021D89B6: + mov r0, #0 + str r0, [r4, #0x30] + ldr r0, [r4, #0x74] + cmp r0, #0 + beq _021D89C4 + mov r0, #1 + str r0, [r4, #0x30] +_021D89C4: + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC094 + add r0, r4, #0 + bl MOD85_021DB76C + add r0, r4, #0 + mov r1, #0 + bl MOD85_021D9338 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9338 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9338 + add r0, r4, #0 + bl MOD85_021DBFA4 + add r0, r4, #0 + mov r1, #9 + bl MOD85_021DAEF4 + mov r1, #1 + add r0, r4, #0 + str r1, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x1d + str r0, [r4] + ldr r0, _021D8A2C ; =0x000005EE + bl FUN_020054C8 + mov r0, #1 + pop {r4, pc} + nop +_021D8A2C: .word 0x000005EE + thumb_func_end MOD85_021D8988 + + thumb_func_start MOD85_021D8A30 +MOD85_021D8A30: ; 0x021D8A30 + mov r1, #1 + ldr r2, [r0, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + lsl r1, r1, #3 + str r2, [r0, #0x6c] + cmp r2, r1 + blt _021D8A4C + mov r1, #0 + str r1, [r0, #0x6c] + mov r1, #0x1e + str r1, [r0] + mov r0, #1 + bx lr +_021D8A4C: + mov r0, #0 + bx lr + thumb_func_end MOD85_021D8A30 + + thumb_func_start MOD85_021D8A50 +MOD85_021D8A50: ; 0x021D8A50 + push {r4, lr} + ldr r1, _021D8B40 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + ldr r1, [r4, #0x7c] + cmp r1, #1 + bne _021D8A96 + mov r1, #2 + lsl r1, r1, #0xa + add r3, r2, #0 + tst r3, r1 + beq _021D8A96 + mov r2, #2 + str r2, [r4, #0x7c] + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DBFDC + cmp r0, #0 + bne _021D8A7E + mov r0, #0 + str r0, [r4, #0x70] +_021D8A7E: + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021D9350 + ldr r0, _021D8B44 ; =0x00000626 + bl FUN_020054C8 + b _021D8B1E +_021D8A96: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _021D8ADA + mov r1, #2 + add r0, r2, #0 + tst r0, r1 + beq _021D8ADA + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DBFDC + cmp r0, #0 + bne _021D8AC2 + mov r0, #0 + str r0, [r4, #0x70] +_021D8AC2: + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9350 + ldr r0, _021D8B44 ; =0x00000626 + bl FUN_020054C8 + b _021D8B1E +_021D8ADA: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #1 + bne _021D8B1E + mov r1, #1 + add r0, r2, #0 + tst r0, r1 + beq _021D8B1E + add r0, r4, #0 + mov r2, #2 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DBFDC + cmp r0, #0 + bne _021D8B08 + mov r0, #0 + str r0, [r4, #0x70] +_021D8B08: + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9350 + ldr r0, _021D8B44 ; =0x00000626 + bl FUN_020054C8 +_021D8B1E: + ldr r0, [r4, #0x7c] + cmp r0, #2 + bne _021D8B3C + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #2 + bne _021D8B3C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #2 + bne _021D8B3C + mov r0, #0x1f + str r0, [r4] +_021D8B3C: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D8B40: .word 0x021C48B8 +_021D8B44: .word 0x00000626 + thumb_func_end MOD85_021D8A50 + + thumb_func_start MOD85_021D8B48 +MOD85_021D8B48: ; 0x021D8B48 + push {r4, lr} + mov r1, #0 + add r4, r0, #0 + bl MOD85_021D9360 + cmp r0, #1 + beq _021D8B6E + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9360 + cmp r0, #1 + beq _021D8B6E + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9360 + cmp r0, #1 + bne _021D8B72 +_021D8B6E: + mov r0, #0 + pop {r4, pc} +_021D8B72: + add r0, r4, #0 + bl MOD85_021DB754 + mov r0, #0x20 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D8B48 + + thumb_func_start MOD85_021D8B80 +MOD85_021D8B80: ; 0x021D8B80 + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + ldr r1, [r4, #0x74] + add r2, #0x48 + bl MOD85_021DBED4 + str r0, [r4, #0x44] + cmp r0, #6 + bne _021D8B9C + mov r0, #0x21 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8B9C: + mov r1, #3 + ldr r2, [r4, #0x74] + lsl r1, r1, #8 + tst r1, r2 + beq _021D8BAE + mov r0, #0x27 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8BAE: + cmp r0, #2 + bne _021D8BBA + mov r0, #0x25 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8BBA: + mov r0, #0x23 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D8B80 + + thumb_func_start MOD85_021D8BC4 +MOD85_021D8BC4: ; 0x021D8BC4 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DB754 + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x22 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D8BC4 + + thumb_func_start MOD85_021D8BE0 +MOD85_021D8BE0: ; 0x021D8BE0 + mov r1, #1 + ldr r2, [r0, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + lsl r1, r1, #3 + str r2, [r0, #0x6c] + cmp r2, r1 + blt _021D8BFC + mov r1, #0 + str r1, [r0, #0x6c] + mov r1, #0x19 + str r1, [r0] + mov r0, #1 + bx lr +_021D8BFC: + mov r0, #0 + bx lr + thumb_func_end MOD85_021D8BE0 + + thumb_func_start MOD85_021D8C00 +MOD85_021D8C00: ; 0x021D8C00 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DC0D8 + ldr r1, _021D8C2C ; =0x00000458 + str r0, [r4, #0x64] + ldr r2, [r4, r1] + add r0, r2, r0 + str r0, [r4, r1] + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x24 + str r0, [r4] + add r0, r4, #0 + bl MOD85_021DAD54 + add r0, r4, #0 + mov r1, #0xa + bl MOD85_021DAEF4 + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D8C2C: .word 0x00000458 + thumb_func_end MOD85_021D8C00 + + thumb_func_start MOD85_021D8C30 +MOD85_021D8C30: ; 0x021D8C30 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAD68 + cmp r0, #1 + bne _021D8C4C + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + mov r0, #0x19 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8C4C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D8C30 + + thumb_func_start MOD85_021D8C50 +MOD85_021D8C50: ; 0x021D8C50 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + str r1, [r4, #0x64] + str r1, [r4, #0x6c] + mov r1, #0x26 + str r1, [r4] + bl MOD85_021DAD54 + add r0, r4, #0 + mov r1, #0xa + bl MOD85_021DAEF4 + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D8C50 + + thumb_func_start MOD85_021D8C70 +MOD85_021D8C70: ; 0x021D8C70 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r2, [r4, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + mov r1, #0xf + lsl r1, r1, #0xc + str r2, [r4, #0x6c] + cmp r2, r1 + ble _021D8CA8 + bl MOD85_021DAD68 + cmp r0, #1 + bne _021D8CA8 + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + add r0, r4, #0 + bl MOD85_021DB754 + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x1c + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8CA8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D8C70 + + thumb_func_start MOD85_021D8CAC +MOD85_021D8CAC: ; 0x021D8CAC + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DC0D8 + ldr r1, _021D8CF0 ; =0x00000458 + str r0, [r4, #0x64] + ldr r2, [r4, r1] + add r0, r2, r0 + str r0, [r4, r1] + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x28 + str r0, [r4] + add r0, r4, #0 + bl MOD85_021DAD54 + add r0, r4, #0 + mov r1, #0xa + bl MOD85_021DAEF4 + add r0, r4, #0 + bl MOD85_021DBB0C + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D7FF4 + add r0, r4, #0 + bl MOD85_021DE264 + ldr r1, _021D8CF4 ; =0x00000454 + str r0, [r4, r1] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D8CF0: .word 0x00000458 +_021D8CF4: .word 0x00000454 + thumb_func_end MOD85_021D8CAC + + thumb_func_start MOD85_021D8CF8 +MOD85_021D8CF8: ; 0x021D8CF8 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAD68 + cmp r0, #1 + bne _021D8D1C + ldr r0, _021D8D20 ; =0x00000454 + ldr r0, [r4, r0] + bl FUN_02064520 + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + mov r0, #0x29 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8D1C: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D8D20: .word 0x00000454 + thumb_func_end MOD85_021D8CF8 + + thumb_func_start MOD85_021D8D24 +MOD85_021D8D24: ; 0x021D8D24 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAF10 + mov r0, #0 + str r0, [r4, #0x1c] + str r0, [r4, #0x14] + mov r0, #1 + str r0, [r4, #8] + mov r1, #0x2a + str r1, [r4] + pop {r4, pc} + thumb_func_end MOD85_021D8D24 + + thumb_func_start MOD85_021D8D3C +MOD85_021D8D3C: ; 0x021D8D3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #0x1c] + add r1, r0, #1 + ldr r0, _021D8D84 ; =0x000003E7 + str r1, [r4, #0x1c] + cmp r1, r0 + bls _021D8D54 + str r0, [r4, #0x1c] +_021D8D54: + ldr r1, [r4, #0x1c] + add r0, r4, #0 + bl MOD85_021DE118 + mov r0, #0x10 + str r0, [r4, #0x10] + mov r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD85_021DAC44 + cmp r0, #0 + bne _021D8D7A + mov r0, #1 + str r0, [r4, #0x2c] +_021D8D7A: + mov r0, #0x2b + str r0, [r4] + mov r0, #1 + pop {r4, pc} + nop +_021D8D84: .word 0x000003E7 + thumb_func_end MOD85_021D8D3C + + thumb_func_start MOD85_021D8D88 +MOD85_021D8D88: ; 0x021D8D88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #1 + bge _021D8D9A + bl ErrorHandling +_021D8D9A: + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC094 + add r0, r4, #0 + bl MOD85_021DB754 + add r0, r4, #0 + bl MOD85_021DB95C + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + mov r2, #0x2c + str r2, [r4] + ldr r1, [r4, #0x60] + cmp r1, #0 + bne _021D8DDA + mov r0, #0x3c + str r0, [r4] + mov r0, #0x3f + str r0, [r4, #4] + b _021D8DF4 +_021D8DDA: + cmp r1, #1 + bge _021D8DE8 + mov r0, #0x3c + str r0, [r4] + mov r0, #0x3f + str r0, [r4, #4] + b _021D8DF4 +_021D8DE8: + ldr r0, _021D8DF8 ; =0x0000C350 + cmp r1, r0 + blt _021D8DF4 + mov r0, #0x3d + str r0, [r4] + str r2, [r4, #4] +_021D8DF4: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D8DF8: .word 0x0000C350 + thumb_func_end MOD85_021D8D88 + + thumb_func_start MOD85_021D8DFC +MOD85_021D8DFC: ; 0x021D8DFC + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8E12 + mov r0, #0x3f + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D8E12: + mov r0, #1 + lsl r0, r0, #0xa + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8E58 + ldr r0, [r4, #0x60] + sub r0, r0, #1 + str r0, [r4, #0x60] + ldr r0, [r4, #0x14] + sub r0, r0, #1 + str r0, [r4, #0x14] + ldr r0, _021D8E5C ; =0x0000045C + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, #0x14] + cmp r0, #0 + bge _021D8E3C + mov r0, #0 + str r0, [r4, #0x14] +_021D8E3C: + mov r0, #0x2d + str r0, [r4] + ldr r0, _021D8E60 ; =0x000005ED + bl FUN_020054C8 + add r0, r4, #0 + bl MOD85_021DB9A0 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DB714 + mov r0, #0 + pop {r4, pc} +_021D8E58: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D8E5C: .word 0x0000045C +_021D8E60: .word 0x000005ED + thumb_func_end MOD85_021D8DFC + + thumb_func_start MOD85_021D8E64 +MOD85_021D8E64: ; 0x021D8E64 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8E80 + ldr r0, [r4, #0x60] + add r0, r0, #1 + str r0, [r4, #0x60] + mov r0, #0x3f + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D8E80: + mov r0, #0x12 + lsl r0, r0, #6 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D8E94 + mov r0, #0x2e + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D8E94: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D8E64 + + thumb_func_start MOD85_021D8E98 +MOD85_021D8E98: ; 0x021D8E98 + push {r4, lr} + mov r2, #0x46 + add r4, r0, #0 + lsl r2, r2, #4 + ldr r1, [r4, r2] + add r1, r1, #1 + str r1, [r4, r2] + add r1, r2, #0 + add r1, #0xc + ldr r1, [r4, r1] + add r2, #0xc + add r1, r1, #1 + str r1, [r4, r2] + mov r1, #1 + str r1, [r4, #0x74] + str r1, [r4, #0x30] + str r1, [r4, #0x70] + mov r1, #0 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC094 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DB714 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021D9338 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9338 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9338 + add r0, r4, #0 + bl MOD85_021DBFA4 + add r0, r4, #0 + bl MOD85_021DAD0C + mov r1, #1 + add r0, r4, #0 + str r1, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #0 + str r0, [r4, #0x6c] + mov r0, #0x2f + str r0, [r4] + ldr r0, _021D8F80 ; =0x000005EE + bl FUN_020054C8 + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _021D8F4C + ldr r0, [r4, #0x28] + cmp r0, #0 + bne _021D8F4C + add r0, r4, #0 + bl MOD85_021DAC20 + cmp r0, #1 + bne _021D8F3E + mov r0, #1 + str r0, [r4, #0x28] + mov r0, #0x13 + lsl r0, r0, #6 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_021D8F3E: + ldr r0, [r4, #0x28] + cmp r0, #1 + bne _021D8F4C + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DBB54 +_021D8F4C: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _021D8F7C + ldr r0, [r4, #0x28] + cmp r0, #0 + bne _021D8F7C + add r0, r4, #0 + bl MOD85_021DABFC + cmp r0, #1 + bne _021D8F6E + mov r0, #1 + str r0, [r4, #0x24] + ldr r0, _021D8F84 ; =0x000004BC + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_021D8F6E: + ldr r0, [r4, #0x24] + cmp r0, #1 + bne _021D8F7C + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DBB54 +_021D8F7C: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D8F80: .word 0x000005EE +_021D8F84: .word 0x000004BC + thumb_func_end MOD85_021D8E98 + + thumb_func_start MOD85_021D8F88 +MOD85_021D8F88: ; 0x021D8F88 + push {r3, lr} + mov r1, #1 + ldr r2, [r0, #0x6c] + lsl r1, r1, #0xc + add r2, r2, r1 + lsl r1, r1, #3 + str r2, [r0, #0x6c] + cmp r2, r1 + blt _021D8FAC + mov r1, #0 + str r1, [r0, #0x6c] + mov r1, #0x30 + str r1, [r0] + mov r1, #6 + bl MOD85_021DAEF4 + mov r0, #1 + pop {r3, pc} +_021D8FAC: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD85_021D8F88 + + thumb_func_start MOD85_021D8FB0 +MOD85_021D8FB0: ; 0x021D8FB0 + push {r4, lr} + ldr r1, _021D90A8 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + ldr r1, [r4, #0x7c] + cmp r1, #1 + bne _021D8FF8 + mov r1, #2 + lsl r1, r1, #0xa + add r3, r2, #0 + tst r3, r1 + beq _021D8FF8 + mov r2, #2 + str r2, [r4, #0x7c] + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DC01C + cmp r0, #0 + bne _021D8FE0 + mov r0, #0 + str r0, [r4, #0x70] + str r0, [r4, #0x30] +_021D8FE0: + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #0 + bl MOD85_021D9350 + ldr r0, _021D90AC ; =0x000005F5 + bl FUN_020054C8 + b _021D9084 +_021D8FF8: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _021D903E + mov r1, #2 + add r0, r2, #0 + tst r0, r1 + beq _021D903E + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DC01C + cmp r0, #0 + bne _021D9026 + mov r0, #0 + str r0, [r4, #0x70] + str r0, [r4, #0x30] +_021D9026: + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9350 + ldr r0, _021D90AC ; =0x000005F5 + bl FUN_020054C8 + b _021D9084 +_021D903E: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #1 + bne _021D9084 + mov r1, #1 + add r0, r2, #0 + tst r0, r1 + beq _021D9084 + add r0, r4, #0 + mov r2, #2 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + bl MOD85_021DBFB4 + add r0, r4, #0 + bl MOD85_021DC01C + cmp r0, #0 + bne _021D906E + mov r0, #0 + str r0, [r4, #0x70] + str r0, [r4, #0x30] +_021D906E: + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DC050 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9350 + ldr r0, _021D90AC ; =0x000005F5 + bl FUN_020054C8 +_021D9084: + ldr r0, [r4, #0x7c] + cmp r0, #2 + bne _021D90A2 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #2 + bne _021D90A2 + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #2 + bne _021D90A2 + mov r0, #0x31 + str r0, [r4] +_021D90A2: + mov r0, #0 + pop {r4, pc} + nop +_021D90A8: .word 0x021C48B8 +_021D90AC: .word 0x000005F5 + thumb_func_end MOD85_021D8FB0 + + thumb_func_start MOD85_021D90B0 +MOD85_021D90B0: ; 0x021D90B0 + push {r4, lr} + mov r1, #0 + add r4, r0, #0 + bl MOD85_021D9360 + cmp r0, #1 + beq _021D90D6 + add r0, r4, #0 + mov r1, #1 + bl MOD85_021D9360 + cmp r0, #1 + beq _021D90D6 + add r0, r4, #0 + mov r1, #2 + bl MOD85_021D9360 + cmp r0, #1 + bne _021D90DA +_021D90D6: + mov r0, #0 + pop {r4, pc} +_021D90DA: + add r0, r4, #0 + bl MOD85_021DB754 + mov r0, #0x32 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D90B0 + + thumb_func_start MOD85_021D90E8 +MOD85_021D90E8: ; 0x021D90E8 + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + ldr r1, [r4, #0x74] + add r2, #0x48 + bl MOD85_021DBF48 + str r0, [r4, #0x44] + cmp r0, #6 + ldr r0, [r4, #0x28] + bne _021D910E + cmp r0, #1 + bne _021D9106 + mov r0, #3 + str r0, [r4, #0x28] +_021D9106: + mov r0, #0x33 + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_021D910E: + cmp r0, #1 + bne _021D9116 + mov r0, #2 + str r0, [r4, #0x28] +_021D9116: + mov r0, #0x34 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D90E8 + + thumb_func_start MOD85_021D9120 +MOD85_021D9120: ; 0x021D9120 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DB754 + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + ldr r0, [r4, #0x10] + cmp r0, #1 + bgt _021D913A + mov r0, #0x36 + b _021D913C +_021D913A: + mov r0, #0x2b +_021D913C: + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D9120 + + thumb_func_start MOD85_021D9144 +MOD85_021D9144: ; 0x021D9144 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x44] + lsl r2, r1, #2 + ldr r1, _021D9170 ; =0x021DFC4C + ldr r3, [r1, r2] + ldr r1, _021D9174 ; =0x00000458 + str r3, [r4, #0x64] + ldr r2, [r4, r1] + add r2, r2, r3 + str r2, [r4, r1] + bl MOD85_021DAD54 + add r0, r4, #0 + mov r1, #0xa + bl MOD85_021DAEF4 + mov r0, #0 + str r0, [r4, #0x6c] + mov r1, #0x35 + str r1, [r4] + pop {r4, pc} + .align 2, 0 +_021D9170: .word 0x021DFC4C +_021D9174: .word 0x00000458 + thumb_func_end MOD85_021D9144 + + thumb_func_start MOD85_021D9178 +MOD85_021D9178: ; 0x021D9178 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAD68 + cmp r0, #0 + bne _021D9188 + mov r0, #0 + pop {r4, pc} +_021D9188: + add r0, r4, #0 + mov r1, #7 + bl MOD85_021DAEF4 + ldr r0, [r4, #0x10] + cmp r0, #1 + bgt _021D919A + mov r0, #0x36 + b _021D919C +_021D919A: + mov r0, #0x2b +_021D919C: + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D9178 + + thumb_func_start MOD85_021D91A4 +MOD85_021D91A4: ; 0x021D91A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + beq _021D91B4 + bl ErrorHandling +_021D91B4: + ldr r0, [r4, #0x2c] + cmp r0, #1 + bne _021D91D0 + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _021D91D0 + add r0, r4, #0 + mov r1, #8 + bl MOD85_021DAEF4 + mov r0, #0x3a + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D91D0: + mov r0, #0x37 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D91A4 + + thumb_func_start MOD85_021D91D8 +MOD85_021D91D8: ; 0x021D91D8 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAC58 + add r0, r4, #0 + bl MOD85_021DACAC + ldr r1, [r4, #0x24] + cmp r1, #1 + bne _021D91EE + mov r0, #2 +_021D91EE: + cmp r0, #2 + bne _021D9202 + add r0, r4, #0 + mov r1, #5 + bl MOD85_021DAEF4 + mov r0, #0x38 + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D9202: + cmp r0, #1 + bne _021D9216 + add r0, r4, #0 + mov r1, #0xc + bl MOD85_021DAEF4 + mov r0, #0x39 + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021D9216: + mov r0, #0x23 + bl FUN_02005578 + mov r0, #0x2a + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D91D8 + + thumb_func_start MOD85_021D9224 +MOD85_021D9224: ; 0x021D9224 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAF08 + cmp r0, #0 + bne _021D9234 + mov r0, #0 + pop {r4, pc} +_021D9234: + mov r0, #0x2a + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D9224 + + thumb_func_start MOD85_021D923C +MOD85_021D923C: ; 0x021D923C + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAF08 + cmp r0, #0 + bne _021D924C + mov r0, #0 + pop {r4, pc} +_021D924C: + mov r0, #0x2a + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D923C + + thumb_func_start MOD85_021D9254 +MOD85_021D9254: ; 0x021D9254 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DAF08 + cmp r0, #0 + bne _021D9264 + mov r0, #0 + pop {r4, pc} +_021D9264: + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x20] + cmp r1, r0 + bls _021D926E + str r1, [r4, #0x20] +_021D926E: + add r0, r4, #0 + mov r1, #0 + bl MOD85_021D7FF4 + add r0, r4, #0 + bl MOD85_021DBB30 + mov r0, #0 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021D9254 + + thumb_func_start MOD85_021D9284 +MOD85_021D9284: ; 0x021D9284 + push {r4, lr} + mov r1, #0 + add r4, r0, #0 + bl MOD85_021D7BEC + mov r0, #0x3e + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D9284 + + thumb_func_start MOD85_021D9298 +MOD85_021D9298: ; 0x021D9298 + push {r4, lr} + mov r1, #2 + add r4, r0, #0 + bl MOD85_021D7BEC + mov r0, #0x3e + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D9298 + + thumb_func_start MOD85_021D92AC +MOD85_021D92AC: ; 0x021D92AC + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl MOD85_021D7BEC + mov r0, #0x3e + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021D92AC + + thumb_func_start MOD85_021D92C0 +MOD85_021D92C0: ; 0x021D92C0 + push {r4, lr} + add r4, r0, #0 + mov r0, #3 + bl MOD85_021DBD54 + cmp r0, #0 + beq _021D92D8 + add r0, r4, #0 + bl MOD85_021D7C44 + ldr r0, [r4, #4] + str r0, [r4] +_021D92D8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021D92C0 + + thumb_func_start MOD85_021D92DC +MOD85_021D92DC: ; 0x021D92DC + push {r3, lr} + bl MOD85_021DB9A0 + mov r0, #2 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021D92DC + + thumb_func_start MOD85_021D92E8 +MOD85_021D92E8: ; 0x021D92E8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + add r5, #0xb4 + mov r4, #0 + add r6, r5, #0 +_021D92F4: + mov r0, #0 + str r0, [r5] + add r2, r4, #0 + str r4, [r5, #0x10] + ldr r0, _021D9318 ; =MOD85_021D936C + add r1, r6, #0 + add r2, #0x81 + str r7, [r5, #0x20] + bl FUN_0200CA44 + str r0, [r5, #0x1c] + add r4, r4, #1 + add r5, #0x24 + add r6, #0x24 + cmp r4, #3 + blo _021D92F4 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9318: .word MOD85_021D936C + thumb_func_end MOD85_021D92E8 + + thumb_func_start MOD85_021D931C +MOD85_021D931C: ; 0x021D931C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D9322: + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_0200CAB4 + add r4, r4, #1 + add r5, #0x24 + cmp r4, #3 + blo _021D9322 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021D931C + + thumb_func_start MOD85_021D9338 +MOD85_021D9338: ; 0x021D9338 + mov r2, #0x24 + add r3, r1, #0 + mul r3, r2 + add r1, r0, r3 + add r0, r0, r3 + mov r2, #1 + add r1, #0xb4 + str r2, [r1] + add r0, #0xb8 + str r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD85_021D9338 + + thumb_func_start MOD85_021D9350 +MOD85_021D9350: ; 0x021D9350 + mov r2, #0x24 + mul r2, r1 + add r0, r0, r2 + mov r3, #2 + add r0, #0xb4 + str r3, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD85_021D9350 + + thumb_func_start MOD85_021D9360 +MOD85_021D9360: ; 0x021D9360 + mov r2, #0x24 + mul r2, r1 + add r0, r0, r2 + add r0, #0xb8 + ldr r0, [r0] + bx lr + thumb_func_end MOD85_021D9360 + + thumb_func_start MOD85_021D936C +MOD85_021D936C: ; 0x021D936C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r4, [r5, #0x20] + ldr r6, _021D9388 ; =0x021DEE20 +_021D9374: + ldr r2, [r5] + add r0, r5, #0 + lsl r2, r2, #2 + ldr r2, [r6, r2] + add r1, r4, #0 + blx r2 + cmp r0, #1 + beq _021D9374 + pop {r4, r5, r6, pc} + nop +_021D9388: .word 0x021DEE20 + thumb_func_end MOD85_021D936C + + thumb_func_start MOD85_021D938C +MOD85_021D938C: ; 0x021D938C + mov r0, #0 + bx lr + thumb_func_end MOD85_021D938C + + thumb_func_start MOD85_021D9390 +MOD85_021D9390: ; 0x021D9390 + push {r3, lr} + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2, #0x10] + add r2, r0, #0 + add r2, #0x8c + ldr r2, [r2] + bl MOD85_021DA744 + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021D9390 + + thumb_func_start MOD85_021D93A8 +MOD85_021D93A8: ; 0x021D93A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r2, [r5] + add r4, r1, #0 + add r2, r2, #1 + str r2, [r5] + mov r2, #0 + str r2, [r5, #0x14] + str r2, [r5, #0x18] + ldr r2, [r4, #0x30] + cmp r2, #1 + ldr r2, [r4, #8] + bne _021D93F2 + cmp r2, #0 + bne _021D93DC + bl MOD85_021D94E4 + cmp r0, #0 + bne _021D9400 + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021D9EDC + mov r0, #0 + str r0, [r4, #0x30] + b _021D9400 +_021D93DC: + bl MOD85_021D951C + cmp r0, #0 + bne _021D9400 + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021D9F8C + mov r0, #0 + str r0, [r4, #0x30] + b _021D9400 +_021D93F2: + cmp r2, #0 + bne _021D93FC + bl MOD85_021D9EDC + b _021D9400 +_021D93FC: + bl MOD85_021D9F8C +_021D9400: + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD85_021D93A8 + + thumb_func_start MOD85_021D9404 +MOD85_021D9404: ; 0x021D9404 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r3, r1, #0 + ldr r1, [r5, #0x10] + add r7, r3, #0 + lsl r0, r1, #2 + add r7, #0x90 + str r0, [sp] + ldr r0, [r7, r0] + mov r4, #0 + lsr r6, r0, #0x1f + lsl r2, r0, #0xf + sub r2, r2, r6 + mov r0, #0xf + ror r2, r0 + add r0, r6, r2 + beq _021D943E + add r2, r3, #0 + add r2, #0x8c + ldr r2, [r2] + mov r4, #1 + cmp r0, r2 + bge _021D9436 + add r2, r0, #0 +_021D9436: + add r0, r3, #0 + bl MOD85_021DA780 + b _021D9464 +_021D943E: + ldr r2, [r5, #0x18] + cmp r2, #0 + beq _021D9464 + sub r0, r2, #1 + str r0, [r5, #0x18] + add r0, r3, #0 + add r3, #0x8c + ldr r2, [r3] + mov r4, #1 + bl MOD85_021DA744 + ldr r0, [sp] + ldr r0, [r7, r0] + lsr r2, r0, #0x1f + lsl r1, r0, #0xf + sub r1, r1, r2 + mov r0, #0xf + ror r1, r0 + add r0, r2, r1 +_021D9464: + cmp r0, #0 + bne _021D94A0 + ldr r6, [r5, #0x18] + cmp r6, #0 + bne _021D94A0 + ldr r3, _021D94A8 ; =0x021DEE34 + add r2, sp, #4 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + cmp r6, #4 + str r0, [r2] + ble _021D9484 + mov r6, #4 +_021D9484: + lsl r1, r6, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + str r0, [r5, #8] + mov r0, #0 + str r0, [r5, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + cmp r4, #0 + bne _021D94A0 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D94A0: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D94A8: .word 0x021DEE34 + thumb_func_end MOD85_021D9404 + + thumb_func_start MOD85_021D94AC +MOD85_021D94AC: ; 0x021D94AC + push {r3, r4} + ldr r2, [r0, #0x10] + ldr r3, [r0, #8] + add r1, #0x9c + lsl r2, r2, #2 + str r3, [r1, r2] + ldr r3, [r0, #8] + neg r3, r3 + str r3, [r0, #8] + ldr r3, [r0, #0xc] + add r4, r3, #1 + mov r3, #1 + str r4, [r0, #0xc] + tst r3, r4 + bne _021D94D0 + ldr r3, [r0, #8] + asr r3, r3, #2 + str r3, [r0, #8] +_021D94D0: + ldr r3, [r0, #8] + cmp r3, #0 + bne _021D94DE + mov r3, #0 + str r3, [r0] + str r3, [r0, #4] + str r3, [r1, r2] +_021D94DE: + mov r0, #0 + pop {r3, r4} + bx lr + thumb_func_end MOD85_021D94AC + + thumb_func_start MOD85_021D94E4 +MOD85_021D94E4: ; 0x021D94E4 + push {r3, lr} + ldr r2, [r1, #0x74] + cmp r2, #0 + bne _021D94F0 + mov r0, #0 + pop {r3, pc} +_021D94F0: + ldr r2, [r0, #0x10] + cmp r2, #0 + beq _021D9500 + cmp r2, #1 + beq _021D9506 + cmp r2, #2 + beq _021D950C + b _021D9512 +_021D9500: + bl MOD85_021D953C + pop {r3, pc} +_021D9506: + bl MOD85_021D9578 + pop {r3, pc} +_021D950C: + bl MOD85_021D95B4 + pop {r3, pc} +_021D9512: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021D94E4 + + thumb_func_start MOD85_021D951C +MOD85_021D951C: ; 0x021D951C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x74] + cmp r0, #0 + bne _021D952C + mov r0, #0 + pop {r3, r4, r5, pc} +_021D952C: + bl MOD85_021DBD74 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021D9E94 + pop {r3, r4, r5, pc} + thumb_func_end MOD85_021D951C + + thumb_func_start MOD85_021D953C +MOD85_021D953C: ; 0x021D953C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x74] + bl MOD85_021DBD74 + add r6, r0, #0 + cmp r6, #6 + bne _021D9552 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D9552: + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021DA058 + cmp r0, #1 + bne _021D956A + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD85_021D95F0 + pop {r4, r5, r6, pc} +_021D956A: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD85_021D9708 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021D953C + + thumb_func_start MOD85_021D9578 +MOD85_021D9578: ; 0x021D9578 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x74] + bl MOD85_021DBD74 + add r6, r0, #0 + cmp r6, #6 + bne _021D958E + mov r0, #0 + pop {r4, r5, r6, pc} +_021D958E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021DA058 + cmp r0, #1 + bne _021D95A6 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD85_021D9A48 + pop {r4, r5, r6, pc} +_021D95A6: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD85_021D9AF0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021D9578 + + thumb_func_start MOD85_021D95B4 +MOD85_021D95B4: ; 0x021D95B4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x74] + bl MOD85_021DBD74 + add r6, r0, #0 + cmp r6, #6 + bne _021D95CA + mov r0, #0 + pop {r4, r5, r6, pc} +_021D95CA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021DA058 + cmp r0, #1 + bne _021D95E2 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD85_021D9A48 + pop {r4, r5, r6, pc} +_021D95E2: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD85_021D9AF0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021D95B4 + + thumb_func_start MOD85_021D95F0 +MOD85_021D95F0: ; 0x021D95F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + ldr r0, [r0, #0x10] + add r4, r1, #0 + add r6, r2, #0 + str r0, [sp, #8] + mov r7, #1 +_021D9600: + ldr r1, [sp, #8] + add r0, r4, #0 + add r2, r7, #0 + bl MOD85_021DBD30 + cmp r6, r0 + bne _021D9638 + mov r5, #0 + cmp r7, #3 + bgt _021D9638 +_021D9614: + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9630 + ldr r0, [sp] + add r1, r7, r5 + str r1, [r0, #0x14] + str r5, [r0, #0x18] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D9630: + add r5, r5, #1 + add r0, r7, r5 + cmp r0, #3 + ble _021D9614 +_021D9638: + add r7, r7, #1 + cmp r7, #3 + ble _021D9600 + mov r0, #4 + str r0, [sp, #0x10] + ldr r0, [r4, #0x70] + cmp r0, #1 + bne _021D964C + mov r0, #0x15 + str r0, [sp, #0x10] +_021D964C: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r7, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + cmp r0, #1 + blt _021D9700 +_021D965C: + mov r2, #1 + ldr r1, [sp, #8] + add r0, r4, #0 + sub r2, r2, r7 + bl MOD85_021DBD30 + cmp r6, r0 + bne _021D96F8 + mov r5, #0 +_021D966E: + add r0, r7, r5 + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D96F2 + cmp r5, #0 + bne _021D96B4 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0xc] + lsr r0, r0, #0x1f + lsl r2, r1, #0x1e + sub r2, r2, r0 + mov r1, #0x1e + ror r2, r1 + add r0, r0, r2 + bne _021D96E2 + add r0, r4, #0 + add r1, r7, #2 + add r2, r6, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D96E2 + ldr r0, [sp] + mov r1, #3 + str r1, [r0, #0x14] + add r1, r7, #2 + str r1, [r0, #0x18] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D96B4: + cmp r5, #1 + bne _021D96E2 + ldr r0, [sp, #0xc] + mov r1, #6 + bl _s32_div_f + cmp r1, #2 + bge _021D96E2 + add r0, r4, #0 + add r1, r7, #2 + add r2, r6, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D96E2 + ldr r0, [sp] + mov r1, #3 + str r1, [r0, #0x14] + add r1, r7, #2 + str r1, [r0, #0x18] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D96E2: + ldr r0, [sp] + add r1, r5, #1 + str r1, [r0, #0x14] + ldr r1, [sp, #4] + add sp, #0x14 + str r1, [r0, #0x18] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D96F2: + add r5, r5, #1 + cmp r5, #3 + blt _021D966E +_021D96F8: + ldr r0, [sp, #0x10] + add r7, r7, #1 + cmp r7, r0 + ble _021D965C +_021D9700: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021D95F0 + + thumb_func_start MOD85_021D9708 +MOD85_021D9708: ; 0x021D9708 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r2, #0 + add r2, r0, #0 + ldr r7, [r2, #0x10] + add r2, sp, #0xc + str r2, [sp] + add r2, sp, #0x14 + add r3, sp, #0x10 + str r0, [sp, #4] + add r5, r1, #0 + bl MOD85_021DA0A8 + cmp r0, #0 + bne _021D972C + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D972C: + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D979C + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r7, #0 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9758 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + mov r1, #0 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9758: + ldr r2, [sp, #0x10] + cmp r2, #0 + beq _021D977A + add r0, r5, #0 + add r1, r7, #0 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D977A + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + mov r1, #0 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D977A: + ldr r2, [sp, #0xc] + cmp r2, #0 + beq _021D979C + add r0, r5, #0 + add r1, r7, #0 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D979C + ldr r1, [sp, #0xc] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + mov r1, #0 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D979C: + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r5, #0x70] + cmp r0, #1 + bne _021D97AA + mov r0, #0x15 + str r0, [sp, #8] +_021D97AA: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _021D97F2 + ldr r0, [sp, #8] + mov r6, #1 + cmp r0, #1 + blt _021D97EC +_021D97B8: + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D97E4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D97E4 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D97E4: + ldr r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + ble _021D97B8 +_021D97EC: + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D97F2: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _021D98C4 + ldr r0, [sp, #8] + mov r6, #1 + cmp r0, #1 + blt _021D98BE +_021D9800: + mov r0, #1 + tst r0, r6 + beq _021D985E + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9832 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9832 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9832: + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D98B6 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D98B6 + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D985E: + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D988A + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D988A + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D988A: + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D98B6 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D98B6 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D98B6: + ldr r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + ble _021D9800 +_021D98BE: + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D98C4: + ldr r0, [sp, #8] + mov r6, #1 + cmp r0, #1 + bge _021D98CE + b _021D9A42 +_021D98CE: + mov r0, #3 + and r0, r6 + bne _021D9958 + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9900 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9900 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9900: + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D992C + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D992C + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D992C: + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9A38 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9A38 + ldr r1, [sp, #0xc] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9958: + cmp r0, #1 + bne _021D99B4 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9988 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9988 + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9988: + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9A38 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9A38 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D99B4: + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D99E0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D99E0 + ldr r1, [sp, #0xc] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D99E0: + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9A0C + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9A0C + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9A0C: + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + cmp r4, r0 + bne _021D9A38 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD85_021DA290 + cmp r0, #1 + bne _021D9A38 + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add sp, #0x18 + str r1, [r0, #0x14] + str r6, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9A38: + ldr r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + bgt _021D9A42 + b _021D98CE +_021D9A42: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021D9708 + + thumb_func_start MOD85_021D9A48 +MOD85_021D9A48: ; 0x021D9A48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r7, [r0, #0x10] + str r0, [sp] + add r4, r1, #0 + add r6, r2, #0 + mov r5, #1 +_021D9A56: + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD85_021DBD30 + cmp r6, r0 + bne _021D9A72 + ldr r0, [sp] + mov r1, #0 + str r5, [r0, #0x14] + str r1, [r0, #0x18] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9A72: + add r5, r5, #1 + cmp r5, #3 + ble _021D9A56 + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4, #0x70] + cmp r0, #1 + bne _021D9A86 + mov r0, #0x15 + str r0, [sp, #4] +_021D9A86: + ldr r0, [sp, #4] + mov r5, #1 + cmp r0, #1 + blt _021D9AE8 +_021D9A8E: + mov r2, #1 + add r0, r4, #0 + add r1, r7, #0 + sub r2, r2, r5 + bl MOD85_021DBD30 + cmp r6, r0 + bne _021D9AE0 + lsr r2, r5, #0x1f + lsl r1, r5, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + cmp r0, #1 + bne _021D9ABE + ldr r0, [sp] + mov r1, #3 + str r1, [r0, #0x14] + add r1, r5, #2 + str r1, [r0, #0x18] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9ABE: + sub r0, r0, #2 + cmp r0, #1 + bhi _021D9AD4 + ldr r0, [sp] + mov r1, #2 + str r1, [r0, #0x14] + add r1, r5, #1 + str r1, [r0, #0x18] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9AD4: + ldr r1, [sp] + mov r0, #1 + str r0, [r1, #0x14] + add sp, #8 + str r5, [r1, #0x18] + pop {r3, r4, r5, r6, r7, pc} +_021D9AE0: + ldr r0, [sp, #4] + add r5, r5, #1 + cmp r5, r0 + ble _021D9A8E +_021D9AE8: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021D9A48 + + thumb_func_start MOD85_021D9AF0 +MOD85_021D9AF0: ; 0x021D9AF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + add r5, r2, #0 + add r2, r0, #0 + ldr r7, [r2, #0x10] + add r2, sp, #0x3c + str r2, [sp] + add r2, sp, #0x44 + add r3, sp, #0x40 + str r0, [sp, #4] + add r6, r1, #0 + bl MOD85_021DA0A8 + cmp r0, #0 + bne _021D9B14 + add sp, #0x48 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9B14: + ldr r2, [sp, #0x44] + add r0, r6, #0 + add r1, r7, #0 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9B32 + ldr r1, [sp, #0x44] + ldr r0, [sp, #4] + add sp, #0x48 + str r1, [r0, #0x14] + mov r1, #0 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9B32: + ldr r2, [sp, #0x40] + cmp r2, #0 + beq _021D9B54 + add r0, r6, #0 + add r1, r7, #0 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9B54 + ldr r1, [sp, #0x40] + ldr r0, [sp, #4] + add sp, #0x48 + str r1, [r0, #0x14] + mov r1, #0 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9B54: + ldr r2, [sp, #0x3c] + cmp r2, #0 + beq _021D9B76 + add r0, r6, #0 + add r1, r7, #0 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9B76 + ldr r1, [sp, #0x3c] + ldr r0, [sp, #4] + add sp, #0x48 + str r1, [r0, #0x14] + mov r1, #0 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9B76: + ldr r0, [r6, #0x70] + mov r4, #4 + cmp r0, #1 + bne _021D9B80 + mov r4, #0x15 +_021D9B80: + ldr r0, [sp, #0x40] + cmp r0, #0 + bne _021D9BC0 + mov r0, #1 + str r0, [sp, #0x38] + cmp r4, #1 + blt _021D9BBA +_021D9B8E: + ldr r3, [sp, #0x44] + ldr r2, [sp, #0x38] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9BB0 + ldr r1, [sp, #0x44] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x38] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9BB0: + ldr r0, [sp, #0x38] + add r0, r0, #1 + str r0, [sp, #0x38] + cmp r0, r4 + ble _021D9B8E +_021D9BBA: + add sp, #0x48 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9BC0: + lsl r0, r7, #2 + add r0, r6, r0 + add r0, #0xa8 + ldr r1, [sp, #0x3c] + ldr r0, [r0] + cmp r1, #0 + bne _021D9CA6 + mov r1, #1 + str r1, [sp, #8] + tst r0, r1 + beq _021D9C3C + cmp r4, #1 + blt _021D9C06 +_021D9BDA: + ldr r3, [sp, #0x44] + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9BFC + ldr r1, [sp, #0x44] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #8] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9BFC: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r4 + ble _021D9BDA +_021D9C06: + mov r0, #1 + str r0, [sp, #0xc] + cmp r4, #1 + blt _021D9CA0 +_021D9C0E: + ldr r3, [sp, #0x40] + ldr r2, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9C30 + ldr r1, [sp, #0x40] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0xc] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9C30: + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, r4 + ble _021D9C0E + b _021D9CA0 +_021D9C3C: + cmp r4, #1 + blt _021D9C6C +_021D9C40: + ldr r3, [sp, #0x40] + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9C62 + ldr r1, [sp, #0x40] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #8] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9C62: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r4 + ble _021D9C40 +_021D9C6C: + mov r0, #1 + str r0, [sp, #0x10] + cmp r4, #1 + blt _021D9CA0 +_021D9C74: + ldr r3, [sp, #0x44] + ldr r2, [sp, #0x10] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9C96 + ldr r1, [sp, #0x44] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x10] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9C96: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, r4 + ble _021D9C74 +_021D9CA0: + add sp, #0x48 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9CA6: + mov r1, #3 + bl _s32_div_f + cmp r1, #0 + bne _021D9D4E + mov r0, #1 + str r0, [sp, #0x14] + cmp r4, #1 + blt _021D9CE4 +_021D9CB8: + ldr r3, [sp, #0x44] + ldr r2, [sp, #0x14] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9CDA + ldr r1, [sp, #0x44] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x14] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9CDA: + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r4 + ble _021D9CB8 +_021D9CE4: + mov r0, #1 + str r0, [sp, #0x18] + cmp r4, #1 + blt _021D9D18 +_021D9CEC: + ldr r3, [sp, #0x40] + ldr r2, [sp, #0x18] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9D0E + ldr r1, [sp, #0x40] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x18] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9D0E: + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r4 + ble _021D9CEC +_021D9D18: + mov r0, #1 + str r0, [sp, #0x1c] + cmp r4, #1 + blt _021D9D4C +_021D9D20: + ldr r3, [sp, #0x3c] + ldr r2, [sp, #0x1c] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9D42 + ldr r1, [sp, #0x3c] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x1c] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9D42: + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r4 + ble _021D9D20 +_021D9D4C: + b _021D9E8C +_021D9D4E: + cmp r1, #1 + bne _021D9DF0 + mov r0, #1 + str r0, [sp, #0x20] + cmp r4, #1 + blt _021D9D86 +_021D9D5A: + ldr r3, [sp, #0x40] + ldr r2, [sp, #0x20] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9D7C + ldr r1, [sp, #0x40] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x20] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9D7C: + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, r4 + ble _021D9D5A +_021D9D86: + mov r0, #1 + str r0, [sp, #0x24] + cmp r4, #1 + blt _021D9DBA +_021D9D8E: + ldr r3, [sp, #0x3c] + ldr r2, [sp, #0x24] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9DB0 + ldr r1, [sp, #0x3c] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x24] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9DB0: + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, r4 + ble _021D9D8E +_021D9DBA: + mov r0, #1 + str r0, [sp, #0x28] + cmp r4, #1 + blt _021D9E8C +_021D9DC2: + ldr r3, [sp, #0x44] + ldr r2, [sp, #0x28] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9DE4 + ldr r1, [sp, #0x44] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x28] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9DE4: + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, r4 + ble _021D9DC2 + b _021D9E8C +_021D9DF0: + mov r0, #1 + str r0, [sp, #0x2c] + cmp r4, #1 + blt _021D9E24 +_021D9DF8: + ldr r3, [sp, #0x3c] + ldr r2, [sp, #0x2c] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9E1A + ldr r1, [sp, #0x3c] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x2c] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9E1A: + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, r4 + ble _021D9DF8 +_021D9E24: + mov r0, #1 + str r0, [sp, #0x30] + cmp r4, #1 + blt _021D9E58 +_021D9E2C: + ldr r3, [sp, #0x44] + ldr r2, [sp, #0x30] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9E4E + ldr r1, [sp, #0x44] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x30] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9E4E: + ldr r0, [sp, #0x30] + add r0, r0, #1 + str r0, [sp, #0x30] + cmp r0, r4 + ble _021D9E2C +_021D9E58: + mov r0, #1 + str r0, [sp, #0x34] + cmp r4, #1 + blt _021D9E8C +_021D9E60: + ldr r3, [sp, #0x40] + ldr r2, [sp, #0x34] + add r0, r6, #0 + add r1, r7, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + cmp r5, r0 + bne _021D9E82 + ldr r1, [sp, #0x40] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x34] + add sp, #0x48 + str r1, [r0, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9E82: + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, r4 + ble _021D9E60 +_021D9E8C: + mov r0, #0 + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021D9AF0 + + thumb_func_start MOD85_021D9E94 +MOD85_021D9E94: ; 0x021D9E94 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + ldr r0, [r0, #0x10] + add r6, r1, #0 + str r0, [sp, #4] + ldr r0, [r6, #0x70] + add r7, r2, #0 + mov r5, #4 + cmp r0, #1 + bne _021D9EAC + mov r5, #0x15 +_021D9EAC: + mov r4, #0 + cmp r5, #0 + blt _021D9ED6 +_021D9EB2: + mov r2, #2 + ldr r1, [sp, #4] + add r0, r6, #0 + sub r2, r2, r4 + bl MOD85_021DBD30 + cmp r7, r0 + bne _021D9ED0 + ldr r0, [sp] + mov r1, #2 + str r1, [r0, #0x14] + str r4, [r0, #0x18] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9ED0: + add r4, r4, #1 + cmp r4, r5 + ble _021D9EB2 +_021D9ED6: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021D9E94 + + thumb_func_start MOD85_021D9EDC +MOD85_021D9EDC: ; 0x021D9EDC + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + bl MOD85_021DA040 + ldr r1, [r6, #0x10] + cmp r1, #0 + beq _021D9EF2 + cmp r0, #2 + blt _021D9F88 +_021D9EF2: + cmp r1, #0 + bne _021D9F18 + cmp r0, #2 + bge _021D9F18 + mov r5, #0 +_021D9EFC: + add r0, r4, #0 + add r1, r5, #0 + bl MOD85_021DA24C + cmp r0, #0 + bne _021D9F0C + str r5, [r6, #0x18] + pop {r4, r5, r6, pc} +_021D9F0C: + add r5, r5, #1 + cmp r5, #0x15 + ble _021D9EFC + bl ErrorHandling + pop {r4, r5, r6, pc} +_021D9F18: + cmp r1, #0 + beq _021D9F26 + cmp r1, #1 + beq _021D9F46 + cmp r1, #2 + beq _021D9F66 + b _021D9F84 +_021D9F26: + mov r5, #1 +_021D9F28: + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD85_021DA2AC + cmp r0, #0 + bne _021D9F3A + str r5, [r6, #0x18] + pop {r4, r5, r6, pc} +_021D9F3A: + add r5, r5, #1 + cmp r5, #0x15 + ble _021D9F28 + bl ErrorHandling + pop {r4, r5, r6, pc} +_021D9F46: + mov r5, #1 +_021D9F48: + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD85_021DA3F8 + cmp r0, #0 + bne _021D9F5A + str r5, [r6, #0x18] + pop {r4, r5, r6, pc} +_021D9F5A: + add r5, r5, #1 + cmp r5, #0x15 + ble _021D9F48 + bl ErrorHandling + b _021D9F84 +_021D9F66: + mov r5, #1 +_021D9F68: + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD85_021DA530 + cmp r0, #0 + bne _021D9F7A + str r5, [r6, #0x18] + pop {r4, r5, r6, pc} +_021D9F7A: + add r5, r5, #1 + cmp r5, #0x15 + ble _021D9F68 + bl ErrorHandling +_021D9F84: + bl ErrorHandling +_021D9F88: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021D9EDC + + thumb_func_start MOD85_021D9F8C +MOD85_021D9F8C: ; 0x021D9F8C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + bl MOD85_021DA040 + ldr r1, [r6, #0x10] + cmp r1, #0 + beq _021D9FA2 + cmp r0, #2 + blt _021DA03C +_021D9FA2: + cmp r1, #0 + bne _021D9FCA + cmp r0, #2 + bge _021D9FCA + mov r5, #0 + mov r7, #2 +_021D9FAE: + add r0, r4, #0 + mov r1, #0 + sub r2, r7, r5 + bl MOD85_021DBD30 + cmp r0, #3 + beq _021D9FC0 + str r5, [r6, #0x18] + pop {r3, r4, r5, r6, r7, pc} +_021D9FC0: + add r5, r5, #1 + cmp r5, #0x15 + blt _021D9FAE + bl ErrorHandling +_021D9FCA: + ldr r0, [r6, #0x10] + cmp r0, #0 + beq _021D9FDA + cmp r0, #1 + beq _021D9FFA + cmp r0, #2 + beq _021DA01A + b _021DA038 +_021D9FDA: + mov r5, #0 +_021D9FDC: + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD85_021DA668 + cmp r0, #0 + bne _021D9FEE + str r5, [r6, #0x18] + pop {r3, r4, r5, r6, r7, pc} +_021D9FEE: + add r5, r5, #1 + cmp r5, #0x15 + blt _021D9FDC + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_021D9FFA: + mov r5, #0 +_021D9FFC: + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD85_021DA6B4 + cmp r0, #0 + bne _021DA00E + str r5, [r6, #0x18] + pop {r3, r4, r5, r6, r7, pc} +_021DA00E: + add r5, r5, #1 + cmp r5, #0x15 + ble _021D9FFC + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_021DA01A: + mov r5, #0 +_021DA01C: + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD85_021DA6FC + cmp r0, #0 + bne _021DA02E + str r5, [r6, #0x18] + pop {r3, r4, r5, r6, r7, pc} +_021DA02E: + add r5, r5, #1 + cmp r5, #0x15 + ble _021DA01C + bl ErrorHandling +_021DA038: + bl ErrorHandling +_021DA03C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021D9F8C + + thumb_func_start MOD85_021DA040 +MOD85_021DA040: ; 0x021DA040 + mov r2, #0 + add r3, r2, #0 +_021DA044: + ldr r1, [r0, #0x7c] + cmp r1, #1 + beq _021DA04C + add r3, r3, #1 +_021DA04C: + add r2, r2, #1 + add r0, r0, #4 + cmp r2, #3 + blt _021DA044 + add r0, r3, #0 + bx lr + thumb_func_end MOD85_021DA040 + + thumb_func_start MOD85_021DA058 +MOD85_021DA058: ; 0x021DA058 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021DA068 + cmp r0, #1 + beq _021DA07E + cmp r0, #2 + beq _021DA090 + b _021DA0A2 +_021DA068: + add r0, r1, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _021DA07A + add r1, #0x84 + ldr r0, [r1] + cmp r0, #1 + beq _021DA0A2 +_021DA07A: + mov r0, #0 + bx lr +_021DA07E: + ldr r0, [r1, #0x7c] + cmp r0, #1 + bne _021DA08C + add r1, #0x84 + ldr r0, [r1] + cmp r0, #1 + beq _021DA0A2 +_021DA08C: + mov r0, #0 + bx lr +_021DA090: + ldr r0, [r1, #0x7c] + cmp r0, #1 + bne _021DA09E + add r1, #0x80 + ldr r0, [r1] + cmp r0, #1 + beq _021DA0A2 +_021DA09E: + mov r0, #0 + bx lr +_021DA0A2: + mov r0, #1 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DA058 + + thumb_func_start MOD85_021DA0A8 +MOD85_021DA0A8: ; 0x021DA0A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r5, r1, #0 + ldr r0, [sp, #0x20] + add r1, r3, #0 + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0] + ldr r7, [r5, #0x7c] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + mov r3, #0 + mov ip, r0 + add r0, r5, #0 + add r0, #0xc8 + ldr r4, [r0] + add r0, r5, #0 + add r0, #0xec + ldr r6, [r0] + mov r0, #0x11 + lsl r0, r0, #4 + ldr r5, [r5, r0] + ldr r0, [sp, #0x20] + str r3, [r2] + str r3, [r1] + str r3, [r0] + ldr r0, [sp] + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021DA0F6 + cmp r0, #1 + beq _021DA160 + cmp r0, #2 + beq _021DA1DC + b _021DA240 +_021DA0F6: + ldr r0, [sp, #4] + cmp r0, #1 + beq _021DA124 + mov r0, ip + cmp r0, #1 + beq _021DA124 + cmp r6, r5 + bne _021DA10E + add sp, #8 + str r6, [r2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA10E: + cmp r5, #1 + bne _021DA11C + mov r0, #3 + str r0, [r2] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA11C: + mov r0, #1 + str r0, [r2] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA124: + ldr r0, [sp, #4] + cmp r0, #1 + beq _021DA148 + cmp r6, #2 + bne _021DA140 + mov r0, #1 + str r0, [r2] + mov r2, #2 + str r2, [r1] + ldr r1, [sp, #0x20] + mov r2, #3 + str r2, [r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA140: + add sp, #8 + str r6, [r2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA148: + cmp r5, #2 + bne _021DA154 + add sp, #8 + str r5, [r2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA154: + mov r0, #1 + str r0, [r2] + mov r2, #3 + str r2, [r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA160: + cmp r7, #1 + beq _021DA180 + mov r0, ip + cmp r0, #1 + beq _021DA180 + cmp r4, r5 + bne _021DA176 + add sp, #8 + str r4, [r2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA176: + mov r0, #2 + str r0, [r2] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA180: + cmp r7, #1 + beq _021DA1B0 + cmp r4, #2 + bne _021DA192 + mov r0, #2 + str r0, [r2] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA192: + cmp r4, #1 + bne _021DA1A2 + mov r0, #1 + str r0, [r2] + mov r2, #2 + str r2, [r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA1A2: + mov r0, #2 + str r0, [r2] + mov r0, #3 + str r0, [r1] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA1B0: + cmp r5, #2 + bne _021DA1BE + mov r0, #2 + str r0, [r2] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA1BE: + cmp r5, #1 + bne _021DA1CE + mov r0, #1 + str r0, [r2] + mov r2, #2 + str r2, [r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA1CE: + mov r0, #2 + str r0, [r2] + mov r0, #3 + str r0, [r1] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA1DC: + cmp r7, #1 + beq _021DA204 + ldr r0, [sp, #4] + cmp r0, #1 + beq _021DA204 + cmp r4, r6 + bne _021DA1F2 + add sp, #8 + str r4, [r2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA1F2: + cmp r4, #1 + bne _021DA1FA + mov r0, #3 + b _021DA1FC +_021DA1FA: + mov r0, #1 +_021DA1FC: + str r0, [r2] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA204: + cmp r7, #1 + beq _021DA222 + cmp r4, #2 + bne _021DA216 + mov r0, #2 + str r0, [r2] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA216: + mov r0, #1 + str r0, [r2] + mov r2, #3 + str r2, [r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA222: + cmp r6, #2 + bne _021DA238 + mov r0, #1 + str r0, [r2] + mov r2, #2 + str r2, [r1] + ldr r1, [sp, #0x20] + mov r2, #3 + str r2, [r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA238: + add sp, #8 + str r6, [r2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA240: + bl ErrorHandling + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DA0A8 + + thumb_func_start MOD85_021DA24C +MOD85_021DA24C: ; 0x021DA24C + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r2, #1 + mov r1, #0 + sub r2, r2, r4 + add r5, r0, #0 + bl MOD85_021DBD30 + cmp r0, #3 + bne _021DA264 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA264: + mov r2, #2 + add r0, r5, #0 + mov r1, #0 + sub r2, r2, r4 + bl MOD85_021DBD30 + cmp r0, #3 + bne _021DA278 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA278: + mov r2, #3 + add r0, r5, #0 + mov r1, #0 + sub r2, r2, r4 + bl MOD85_021DBD30 + cmp r0, #3 + bne _021DA28C + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA28C: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD85_021DA24C + + thumb_func_start MOD85_021DA290 +MOD85_021DA290: ; 0x021DA290 + push {r3, lr} + cmp r2, #3 + bne _021DA29A + mov r0, #1 + pop {r3, pc} +_021DA29A: + bl MOD85_021DA24C + cmp r0, #0 + bne _021DA2A6 + mov r0, #1 + pop {r3, pc} +_021DA2A6: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DA290 + + thumb_func_start MOD85_021DA2AC +MOD85_021DA2AC: ; 0x021DA2AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r1, #0 + add r0, r4, #0 + add r0, #0xf0 + ldr r7, [r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r6, [r4, r0] + mov r1, #1 + add r0, r2, #0 + sub r0, r1, r0 + str r0, [sp, #0x10] + str r2, [sp] + ldr r2, [sp, #0x10] + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DBD30 + mov r1, #1 + add r5, r0, #0 + add r0, r4, #0 + sub r2, r1, r7 + bl MOD85_021DBD30 + str r0, [sp, #0x14] + mov r0, #1 + sub r0, r0, r6 + str r0, [sp, #4] + ldr r2, [sp, #4] + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DBD30 + cmp r5, #3 + beq _021DA2FE + ldr r1, [sp, #0x14] + cmp r5, r1 + bne _021DA304 + cmp r5, r0 + bne _021DA304 +_021DA2FE: + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA304: + ldr r2, [sp] + mov r3, #2 + add r0, r4, #0 + mov r1, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + add r5, r0, #0 + mov r0, #2 + sub r0, r0, r7 + str r0, [sp, #0xc] + ldr r2, [sp, #0xc] + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DBD30 + mov r1, #2 + str r0, [sp, #0x18] + add r0, r4, #0 + sub r2, r1, r6 + bl MOD85_021DBD30 + cmp r5, #3 + beq _021DA33E + ldr r1, [sp, #0x18] + cmp r5, r1 + bne _021DA344 + cmp r5, r0 + bne _021DA344 +_021DA33E: + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA344: + ldr r0, [sp] + mov r1, #3 + sub r0, r1, r0 + str r0, [sp, #8] + ldr r2, [sp, #8] + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DBD30 + mov r2, #3 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + sub r2, r2, r7 + bl MOD85_021DBD30 + add r7, r0, #0 + mov r0, #3 + sub r0, r0, r6 + str r0, [sp, #0x1c] + ldr r2, [sp, #0x1c] + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DBD30 + cmp r5, #3 + beq _021DA382 + cmp r5, r7 + bne _021DA388 + cmp r5, r0 + bne _021DA388 +_021DA382: + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA388: + ldr r2, [sp, #0x10] + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DBD30 + add r5, r0, #0 + ldr r2, [sp, #0xc] + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DBD30 + add r6, r0, #0 + ldr r2, [sp, #0x1c] + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DBD30 + cmp r5, #3 + beq _021DA3B6 + cmp r5, r6 + bne _021DA3BC + cmp r5, r0 + bne _021DA3BC +_021DA3B6: + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA3BC: + ldr r2, [sp, #8] + add r0, r4, #0 + mov r1, #0 + bl MOD85_021DBD30 + add r5, r0, #0 + ldr r2, [sp, #0xc] + add r0, r4, #0 + mov r1, #1 + bl MOD85_021DBD30 + add r6, r0, #0 + ldr r2, [sp, #4] + add r0, r4, #0 + mov r1, #2 + bl MOD85_021DBD30 + cmp r5, #3 + beq _021DA3EA + cmp r5, r6 + bne _021DA3F0 + cmp r5, r0 + bne _021DA3F0 +_021DA3EA: + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA3F0: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DA2AC + + thumb_func_start MOD85_021DA3F8 +MOD85_021DA3F8: ; 0x021DA3F8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + add r0, r5, #0 + add r0, #0xcc + ldr r6, [r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r0, #1 + sub r0, r0, r6 + str r0, [sp, #0xc] + add r7, r2, #0 + ldr r2, [sp, #0xc] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + mov r1, #1 + str r0, [sp, #0x10] + add r0, r5, #0 + sub r2, r1, r7 + bl MOD85_021DBD30 + str r0, [sp, #0x14] + mov r0, #1 + sub r0, r0, r4 + str r0, [sp] + ldr r2, [sp] + add r0, r5, #0 + mov r1, #2 + bl MOD85_021DBD30 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + cmp r2, r1 + bne _021DA44E + add r1, r2, #0 + cmp r1, r0 + bne _021DA44E + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA44E: + mov r2, #2 + add r0, r5, #0 + mov r1, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + str r0, [sp, #0x18] + mov r0, #2 + sub r0, r0, r7 + str r0, [sp, #8] + ldr r2, [sp, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD85_021DBD30 + mov r1, #2 + str r0, [sp, #0x1c] + add r0, r5, #0 + sub r2, r1, r4 + bl MOD85_021DBD30 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x1c] + cmp r2, r1 + bne _021DA48C + add r1, r2, #0 + cmp r1, r0 + bne _021DA48C + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA48C: + mov r0, #3 + sub r0, r0, r6 + str r0, [sp, #4] + ldr r2, [sp, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + mov r2, #3 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + sub r2, r2, r7 + bl MOD85_021DBD30 + str r0, [sp, #0x20] + mov r0, #3 + sub r7, r0, r4 + add r0, r5, #0 + mov r1, #2 + add r2, r7, #0 + bl MOD85_021DBD30 + ldr r1, [sp, #0x20] + cmp r6, r1 + bne _021DA4CA + cmp r6, r0 + bne _021DA4CA + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA4CA: + ldr r2, [sp, #0xc] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + add r4, r0, #0 + ldr r2, [sp, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD85_021DBD30 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + add r2, r7, #0 + bl MOD85_021DBD30 + cmp r4, r6 + bne _021DA4FA + cmp r4, r0 + bne _021DA4FA + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA4FA: + ldr r2, [sp, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + add r4, r0, #0 + ldr r2, [sp, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD85_021DBD30 + add r6, r0, #0 + ldr r2, [sp] + add r0, r5, #0 + mov r1, #2 + bl MOD85_021DBD30 + cmp r4, r6 + bne _021DA52A + cmp r4, r0 + bne _021DA52A + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA52A: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DA3F8 + + thumb_func_start MOD85_021DA530 +MOD85_021DA530: ; 0x021DA530 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r1, #0 + add r0, r5, #0 + add r0, #0xcc + ldr r6, [r0] + add r0, r5, #0 + add r0, #0xf0 + ldr r4, [r0] + mov r0, #1 + sub r0, r0, r6 + str r0, [sp, #0xc] + add r7, r2, #0 + ldr r2, [sp, #0xc] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + mov r1, #1 + str r0, [sp, #0x10] + add r0, r5, #0 + sub r2, r1, r4 + bl MOD85_021DBD30 + str r0, [sp, #0x14] + mov r0, #1 + sub r0, r0, r7 + str r0, [sp] + ldr r2, [sp] + add r0, r5, #0 + mov r1, #2 + bl MOD85_021DBD30 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + cmp r2, r1 + bne _021DA586 + add r1, r2, #0 + cmp r1, r0 + bne _021DA586 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA586: + mov r2, #2 + add r0, r5, #0 + mov r1, #0 + sub r2, r2, r6 + bl MOD85_021DBD30 + str r0, [sp, #0x18] + mov r0, #2 + sub r0, r0, r4 + str r0, [sp, #8] + ldr r2, [sp, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD85_021DBD30 + mov r1, #2 + str r0, [sp, #0x1c] + add r0, r5, #0 + sub r2, r1, r7 + bl MOD85_021DBD30 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x1c] + cmp r2, r1 + bne _021DA5C4 + add r1, r2, #0 + cmp r1, r0 + bne _021DA5C4 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA5C4: + mov r0, #3 + sub r0, r0, r6 + str r0, [sp, #4] + ldr r2, [sp, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + mov r2, #3 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + sub r2, r2, r4 + bl MOD85_021DBD30 + add r4, r0, #0 + mov r0, #3 + sub r7, r0, r7 + add r0, r5, #0 + mov r1, #2 + add r2, r7, #0 + bl MOD85_021DBD30 + cmp r6, r4 + bne _021DA600 + cmp r6, r0 + bne _021DA600 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA600: + ldr r2, [sp, #0xc] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + add r4, r0, #0 + ldr r2, [sp, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD85_021DBD30 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + add r2, r7, #0 + bl MOD85_021DBD30 + cmp r4, r6 + bne _021DA630 + cmp r4, r0 + bne _021DA630 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA630: + ldr r2, [sp, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD85_021DBD30 + add r4, r0, #0 + ldr r2, [sp, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD85_021DBD30 + add r6, r0, #0 + ldr r2, [sp] + add r0, r5, #0 + mov r1, #2 + bl MOD85_021DBD30 + cmp r4, r6 + bne _021DA660 + cmp r4, r0 + bne _021DA660 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA660: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DA530 + + thumb_func_start MOD85_021DA668 +MOD85_021DA668: ; 0x021DA668 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + add r0, #0xf0 + ldr r7, [r0] + mov r0, #0x45 + lsl r0, r0, #2 + mov r3, #2 + ldr r6, [r5, r0] + add r0, r5, #0 + mov r1, #0 + sub r2, r3, r2 + bl MOD85_021DBD30 + mov r2, #2 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + sub r2, r2, r7 + bl MOD85_021DBD30 + mov r1, #2 + add r7, r0, #0 + add r0, r5, #0 + sub r2, r1, r6 + bl MOD85_021DBD30 + cmp r4, #3 + beq _021DA6AA + cmp r4, r7 + bne _021DA6AE + cmp r4, r0 + bne _021DA6AE +_021DA6AA: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA6AE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DA668 + + thumb_func_start MOD85_021DA6B4 +MOD85_021DA6B4: ; 0x021DA6B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r2, #0 + add r2, r5, #0 + add r2, #0xcc + mov r0, #0x45 + ldr r3, [r2] + lsl r0, r0, #2 + mov r2, #2 + ldr r6, [r5, r0] + add r0, r5, #0 + mov r1, #0 + sub r2, r2, r3 + bl MOD85_021DBD30 + mov r2, #2 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + sub r2, r2, r7 + bl MOD85_021DBD30 + mov r1, #2 + add r7, r0, #0 + add r0, r5, #0 + sub r2, r1, r6 + bl MOD85_021DBD30 + cmp r4, r7 + bne _021DA6F8 + cmp r4, r0 + bne _021DA6F8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA6F8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DA6B4 + + thumb_func_start MOD85_021DA6FC +MOD85_021DA6FC: ; 0x021DA6FC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r2, #0 + add r2, r5, #0 + add r2, #0xcc + add r0, r5, #0 + ldr r3, [r2] + add r0, #0xf0 + mov r2, #2 + ldr r6, [r0] + add r0, r5, #0 + mov r1, #0 + sub r2, r2, r3 + bl MOD85_021DBD30 + mov r2, #2 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + sub r2, r2, r6 + bl MOD85_021DBD30 + mov r1, #2 + add r6, r0, #0 + add r0, r5, #0 + sub r2, r1, r7 + bl MOD85_021DBD30 + cmp r4, r6 + bne _021DA740 + cmp r4, r0 + bne _021DA740 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DA740: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DA6FC + + thumb_func_start MOD85_021DA744 +MOD85_021DA744: ; 0x021DA744 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r4, r6, #0 + lsl r5, r1, #2 + add r4, #0x90 + ldr r0, [r4, r5] + mov r1, #0x2a + add r0, r0, r2 + str r0, [r4, r5] + ldr r0, [r4, r5] + lsl r1, r1, #0x10 + bl _s32_div_f + str r1, [r4, r5] + ldr r1, [r4, r5] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r1, r0, #0xc + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r1, r0, #5 + mov r0, #0x15 + sub r1, r0, r1 + add r0, r6, r5 + add r0, #0xa8 + str r1, [r0] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021DA744 + + thumb_func_start MOD85_021DA780 +MOD85_021DA780: ; 0x021DA780 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + add r5, #0x90 + lsl r4, r1, #2 + ldr r0, [r5, r4] + lsr r6, r0, #0x1f + lsl r3, r0, #0xf + sub r3, r3, r6 + mov r0, #0xf + ror r3, r0 + add r0, r6, r3 + beq _021DA7B4 + cmp r0, r2 + bge _021DA7A0 + add r2, r0, #0 +_021DA7A0: + add r0, r7, #0 + bl MOD85_021DA744 + ldr r0, [r5, r4] + lsr r2, r0, #0x1f + lsl r1, r0, #0xf + sub r1, r1, r2 + mov r0, #0xf + ror r1, r0 + add r0, r2, r1 +_021DA7B4: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DA780 + + thumb_func_start MOD85_021DA7B8 +MOD85_021DA7B8: ; 0x021DA7B8 + push {r3, lr} + bl FUN_0201B9EC + mov r1, #0x64 + bl _u32_div_f + add r0, r1, #0 + pop {r3, pc} + thumb_func_end MOD85_021DA7B8 + + thumb_func_start MOD85_021DA7C8 +MOD85_021DA7C8: ; 0x021DA7C8 + ldr r3, [r1] + sub r2, r3, r0 + str r2, [r1] + bpl _021DA7D4 + mov r2, #0 + str r2, [r1] +_021DA7D4: + cmp r3, r0 + bhs _021DA7DC + mov r0, #1 + bx lr +_021DA7DC: + mov r0, #0 + bx lr + thumb_func_end MOD85_021DA7C8 + + thumb_func_start MOD85_021DA7E0 +MOD85_021DA7E0: ; 0x021DA7E0 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DA7B8 + add r4, #0x88 + ldr r1, [r4] + lsl r2, r1, #2 + ldr r1, _021DA800 ; =0x021DFC7C + ldr r1, [r1, r2] + cmp r1, r0 + bls _021DA7FA + mov r0, #1 + pop {r4, pc} +_021DA7FA: + mov r0, #0 + pop {r4, pc} + nop +_021DA800: .word 0x021DFC7C + thumb_func_end MOD85_021DA7E0 + + thumb_func_start MOD85_021DA804 +MOD85_021DA804: ; 0x021DA804 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0 + str r1, [r5, #0x74] + bl MOD85_021DA7E0 + cmp r0, #1 + beq _021DA816 + b _021DA928 +_021DA816: + add r0, r5, #0 + bl MOD85_021DA7B8 + add r1, r5, #0 + str r0, [sp] + add r1, #0x88 + ldr r1, [r1] + ldr r0, _021DA92C ; =0x021DFD24 + lsl r3, r1, #4 + mov r1, #0x47 + lsl r1, r1, #4 + ldr r2, [r5, r1] + add r4, r0, r3 + add r2, r2, #1 + str r2, [r5, r1] + ldrh r0, [r0, r3] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #0 + beq _021DA856 + ldr r1, [r5, #0x74] + mov r0, #8 + orr r0, r1 + str r0, [r5, #0x74] + mov r0, #0x4a + lsl r0, r0, #4 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA856: + ldrh r0, [r4, #2] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #0 + beq _021DA876 + ldr r1, [r5, #0x74] + mov r0, #4 + orr r0, r1 + str r0, [r5, #0x74] + ldr r0, _021DA930 ; =0x0000049C + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA876: + ldrh r0, [r4, #4] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #0 + beq _021DA898 + ldr r1, [r5, #0x74] + mov r0, #0x80 + orr r0, r1 + str r0, [r5, #0x74] + mov r0, #0x4b + lsl r0, r0, #4 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA898: + ldrh r0, [r4, #6] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #0 + beq _021DA8B8 + ldr r1, [r5, #0x74] + mov r0, #0x40 + orr r0, r1 + str r0, [r5, #0x74] + ldr r0, _021DA934 ; =0x000004AC + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA8B8: + ldrh r0, [r4, #8] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #0 + beq _021DA8D8 + ldr r1, [r5, #0x74] + mov r0, #0x20 + orr r0, r1 + str r0, [r5, #0x74] + ldr r0, _021DA938 ; =0x000004A8 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA8D8: + ldrh r0, [r4, #0xa] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #0 + beq _021DA8F8 + ldr r1, [r5, #0x74] + mov r0, #0x10 + orr r0, r1 + str r0, [r5, #0x74] + ldr r0, _021DA93C ; =0x000004A4 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA8F8: + ldrh r0, [r4, #0xc] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #0 + ldr r1, [r5, #0x74] + beq _021DA918 + mov r0, #2 + orr r0, r1 + str r0, [r5, #0x74] + ldr r0, _021DA940 ; =0x00000498 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA918: + mov r0, #1 + orr r1, r0 + str r1, [r5, #0x74] + ldr r1, _021DA944 ; =0x00000494 + ldr r2, [r5, r1] + add r2, r2, #1 + str r2, [r5, r1] + pop {r3, r4, r5, pc} +_021DA928: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA92C: .word 0x021DFD24 +_021DA930: .word 0x0000049C +_021DA934: .word 0x000004AC +_021DA938: .word 0x000004A8 +_021DA93C: .word 0x000004A4 +_021DA940: .word 0x00000498 +_021DA944: .word 0x00000494 + thumb_func_end MOD85_021DA804 + + thumb_func_start MOD85_021DA948 +MOD85_021DA948: ; 0x021DA948 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DA7B8 + add r4, #0x88 + ldr r1, [r4] + lsl r2, r1, #2 + ldr r1, _021DA968 ; =0x021DFC34 + ldr r1, [r1, r2] + cmp r0, r1 + bhs _021DA962 + mov r0, #1 + pop {r4, pc} +_021DA962: + mov r0, #0 + pop {r4, pc} + nop +_021DA968: .word 0x021DFC34 + thumb_func_end MOD85_021DA948 + + thumb_func_start MOD85_021DA96C +MOD85_021DA96C: ; 0x021DA96C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD85_021DA7B8 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x88 + ldr r1, [r0] + mov r0, #0x48 + ldr r2, _021DAA1C ; =0x021E0090 + mul r0, r1 + add r0, r2, r0 + str r0, [sp] + mov r6, #0 + add r4, r0, #0 + add r7, sp, #4 +_021DA98E: + ldr r0, [r4] + add r1, r7, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DA9EE + mov r0, #0xc + add r1, r6, #0 + mul r1, r0 + ldr r0, [sp] + add r1, r0, r1 + ldr r0, [r1, #4] + str r0, [r5, #0x50] + ldr r0, [r1, #8] + str r0, [r5, #0x4c] + ldr r0, [r5, #0x50] + lsl r1, r0, #2 + ldr r0, _021DAA20 ; =0x021DFCC4 + ldr r0, [r0, r1] + str r0, [r5, #0x18] + ldr r0, [r5, #0x4c] + cmp r0, #0 + beq _021DA9C8 + cmp r0, #1 + beq _021DA9D4 + cmp r0, #2 + beq _021DA9E0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DA9C8: + ldr r0, _021DAA24 ; =0x00000478 + add sp, #8 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DA9D4: + ldr r0, _021DAA28 ; =0x0000047C + add sp, #8 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DA9E0: + mov r0, #0x12 + lsl r0, r0, #6 + ldr r1, [r5, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DA9EE: + add r6, r6, #1 + add r4, #0xc + cmp r6, #6 + blt _021DA98E + sub r1, r6, #1 + mov r0, #0xc + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp] + add r1, r0, r2 + ldr r0, [r1, #4] + str r0, [r5, #0x50] + ldr r0, [r1, #8] + str r0, [r5, #0x4c] + ldr r0, [r5, #0x50] + lsl r1, r0, #2 + ldr r0, _021DAA20 ; =0x021DFCC4 + ldr r0, [r0, r1] + str r0, [r5, #0x18] + bl ErrorHandling + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAA1C: .word 0x021E0090 +_021DAA20: .word 0x021DFCC4 +_021DAA24: .word 0x00000478 +_021DAA28: .word 0x0000047C + thumb_func_end MOD85_021DA96C + + thumb_func_start MOD85_021DAA2C +MOD85_021DAA2C: ; 0x021DAA2C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + mov r4, #0 + bl MOD85_021DA7B8 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0x88 + ldr r1, [r0] + mov r0, #0x48 + mul r0, r1 + ldr r2, _021DAABC ; =0x021DFEE0 + ldr r1, [r6, #0x4c] + add r2, r2, r0 + mov r0, #0x18 + mul r0, r1 + add r5, r2, r0 + str r5, [sp] + add r7, sp, #4 +_021DAA54: + ldr r0, [r5] + add r1, r7, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DAAA4 + ldr r0, [sp] + lsl r1, r4, #3 + add r0, r0, r1 + ldr r1, [r0, #4] + mov r0, #0x56 + lsl r0, r0, #2 + str r1, [r6, r0] + ldr r0, [r6, r0] + cmp r0, #0 + beq _021DAA80 + cmp r0, #1 + beq _021DAA8C + cmp r0, #2 + beq _021DAA98 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DAA80: + ldr r0, _021DAAC0 ; =0x00000488 + add sp, #8 + ldr r1, [r6, r0] + add r1, r1, #1 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DAA8C: + ldr r0, _021DAAC4 ; =0x00000484 + add sp, #8 + ldr r1, [r6, r0] + add r1, r1, #1 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DAA98: + ldr r0, _021DAAC8 ; =0x0000048C + add sp, #8 + ldr r1, [r6, r0] + add r1, r1, #1 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DAAA4: + add r4, r4, #1 + add r5, #8 + cmp r4, #3 + blo _021DAA54 + mov r0, #0x56 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r6, r0] + bl ErrorHandling + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAABC: .word 0x021DFEE0 +_021DAAC0: .word 0x00000488 +_021DAAC4: .word 0x00000484 +_021DAAC8: .word 0x0000048C + thumb_func_end MOD85_021DAA2C + + thumb_func_start MOD85_021DAACC +MOD85_021DAACC: ; 0x021DAACC + push {r4, lr} + add r1, r0, #0 + add r1, #0x88 + ldr r1, [r1] + lsl r2, r1, #2 + ldr r1, _021DAAEC ; =0x021DFC94 + ldr r4, [r1, r2] + bl MOD85_021DA7B8 + cmp r0, r4 + bhs _021DAAE6 + mov r0, #1 + pop {r4, pc} +_021DAAE6: + mov r0, #0 + pop {r4, pc} + nop +_021DAAEC: .word 0x021DFC94 + thumb_func_end MOD85_021DAACC + + thumb_func_start MOD85_021DAAF0 +MOD85_021DAAF0: ; 0x021DAAF0 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0x88 + ldr r1, [r1] + ldr r2, _021DABE4 ; =0x021DFD84 + lsl r1, r1, #4 + add r5, r2, r1 + bl MOD85_021DA7B8 + str r0, [sp] + mov r0, #0 + str r0, [r4, #0x74] + add r0, r4, #0 + bl MOD85_021DAACC + cmp r0, #0 + bne _021DAB7A + ldr r0, _021DABE8 ; =0x00000474 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, #0x50] + cmp r1, #5 + bhi _021DAB6A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DAB2E: ; jump table + .short _021DAB3A - _021DAB2E - 2 ; case 0 + .short _021DAB3A - _021DAB2E - 2 ; case 1 + .short _021DAB3A - _021DAB2E - 2 ; case 2 + .short _021DAB52 - _021DAB2E - 2 ; case 3 + .short _021DAB52 - _021DAB2E - 2 ; case 4 + .short _021DAB52 - _021DAB2E - 2 ; case 5 +_021DAB3A: + mov r1, #2 + ldr r2, [r4, #0x74] + lsl r1, r1, #8 + orr r1, r2 + str r1, [r4, #0x74] + add r1, r0, #0 + add r1, #0x44 + ldr r1, [r4, r1] + add r0, #0x44 + add r1, r1, #1 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_021DAB52: + mov r1, #1 + ldr r2, [r4, #0x74] + lsl r1, r1, #8 + orr r1, r2 + str r1, [r4, #0x74] + add r1, r0, #0 + add r1, #0x40 + ldr r1, [r4, r1] + add r0, #0x40 + add r1, r1, #1 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_021DAB6A: + bl ErrorHandling + mov r0, #2 + ldr r1, [r4, #0x74] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r4, #0x74] + pop {r3, r4, r5, pc} +_021DAB7A: + ldr r0, [r5] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DAB98 + ldr r1, [r4, #0x74] + mov r0, #4 + orr r0, r1 + str r0, [r4, #0x74] + ldr r0, _021DABEC ; =0x0000049C + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_021DAB98: + ldr r0, [r5, #4] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DABB6 + ldr r1, [r4, #0x74] + mov r0, #0x40 + orr r0, r1 + str r0, [r4, #0x74] + ldr r0, _021DABF0 ; =0x000004AC + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_021DABB6: + ldr r0, [r5, #4] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DABD4 + ldr r1, [r4, #0x74] + mov r0, #0x10 + orr r0, r1 + str r0, [r4, #0x74] + ldr r0, _021DABF4 ; =0x000004A4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_021DABD4: + mov r0, #1 + str r0, [r4, #0x74] + ldr r0, _021DABF8 ; =0x00000494 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r3, r4, r5, pc} + nop +_021DABE4: .word 0x021DFD84 +_021DABE8: .word 0x00000474 +_021DABEC: .word 0x0000049C +_021DABF0: .word 0x000004AC +_021DABF4: .word 0x000004A4 +_021DABF8: .word 0x00000494 + thumb_func_end MOD85_021DAAF0 + + thumb_func_start MOD85_021DABFC +MOD85_021DABFC: ; 0x021DABFC + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DA7B8 + add r4, #0x88 + ldr r1, [r4] + lsl r2, r1, #2 + ldr r1, _021DAC1C ; =0x021DFCDC + ldr r1, [r1, r2] + cmp r0, r1 + bhs _021DAC16 + mov r0, #1 + pop {r4, pc} +_021DAC16: + mov r0, #0 + pop {r4, pc} + nop +_021DAC1C: .word 0x021DFCDC + thumb_func_end MOD85_021DABFC + + thumb_func_start MOD85_021DAC20 +MOD85_021DAC20: ; 0x021DAC20 + push {r4, lr} + add r4, r0, #0 + bl MOD85_021DA7B8 + add r4, #0x88 + ldr r1, [r4] + lsl r2, r1, #2 + ldr r1, _021DAC40 ; =0x021DFC64 + ldr r1, [r1, r2] + cmp r0, r1 + bhs _021DAC3A + mov r0, #1 + pop {r4, pc} +_021DAC3A: + mov r0, #0 + pop {r4, pc} + nop +_021DAC40: .word 0x021DFC64 + thumb_func_end MOD85_021DAC20 + + thumb_func_start MOD85_021DAC44 +MOD85_021DAC44: ; 0x021DAC44 + push {r4, lr} + ldr r4, [r0, #0x18] + bl MOD85_021DA7B8 + cmp r0, r4 + bhs _021DAC54 + mov r0, #1 + pop {r4, pc} +_021DAC54: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DAC44 + + thumb_func_start MOD85_021DAC58 +MOD85_021DAC58: ; 0x021DAC58 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r4, [r5, #0x18] + bl MOD85_021DA7B8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + ldr r1, _021DACA8 ; =0x021DFCF4 + lsl r0, r0, #3 + add r6, r1, r0 + ldr r0, [r5, #0x28] + cmp r0, #2 + bne _021DAC7C + sub r4, #0xa + b _021DAC9A +_021DAC7C: + ldr r0, [r6] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DAC8C + sub r4, #0xa + b _021DAC9A +_021DAC8C: + ldr r0, [r6, #4] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DAC9A + sub r4, r4, #5 +_021DAC9A: + cmp r4, #0 + bge _021DACA0 + mov r4, #0 +_021DACA0: + str r4, [r5, #0x18] + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021DACA8: .word 0x021DFCF4 + thumb_func_end MOD85_021DAC58 + + thumb_func_start MOD85_021DACAC +MOD85_021DACAC: ; 0x021DACAC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x18] + bl MOD85_021DA7B8 + str r0, [sp] + add r5, #0x88 + ldr r1, [r5] + mov r0, #0x90 + mul r0, r1 + ldr r2, _021DAD08 ; =0x021E0240 + mov r1, #0 + add r5, r2, r0 + add r2, r5, #0 +_021DACC8: + ldr r0, [r2] + cmp r4, r0 + blo _021DACF8 + lsl r4, r1, #4 + add r0, r5, r4 + ldr r0, [r0, #4] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DACE2 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DACE2: + add r0, r5, r4 + ldr r0, [r0, #8] + add r1, sp, #0 + bl MOD85_021DA7C8 + cmp r0, #1 + bne _021DACF4 + mov r0, #0 + pop {r3, r4, r5, pc} +_021DACF4: + mov r0, #2 + pop {r3, r4, r5, pc} +_021DACF8: + add r1, r1, #1 + add r2, #0x10 + cmp r1, #9 + blt _021DACC8 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DAD08: .word 0x021E0240 + thumb_func_end MOD85_021DACAC + + thumb_func_start MOD85_021DAD0C +MOD85_021DAD0C: ; 0x021DAD0C + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B9EC + mov r1, #6 + bl _s32_div_f + str r1, [r4, #0x34] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DAD0C + + thumb_func_start MOD85_021DAD20 +MOD85_021DAD20: ; 0x021DAD20 + push {r4, lr} + mov r1, #0x12 + lsl r1, r1, #4 + add r4, r0, r1 + mov r1, #0 + str r1, [r4] + str r1, [r4, #4] + str r0, [r4, #0xc] + ldr r0, _021DAD40 ; =MOD85_021DAD70 + add r1, r4, #0 + mov r2, #0x8a + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r4, pc} + nop +_021DAD40: .word MOD85_021DAD70 + thumb_func_end MOD85_021DAD20 + + thumb_func_start MOD85_021DAD44 +MOD85_021DAD44: ; 0x021DAD44 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r3, _021DAD50 ; =FUN_0200CAB4 + ldr r0, [r0, r1] + bx r3 + nop +_021DAD50: .word FUN_0200CAB4 + thumb_func_end MOD85_021DAD44 + + thumb_func_start MOD85_021DAD54 +MOD85_021DAD54: ; 0x021DAD54 + mov r1, #0x49 + lsl r1, r1, #2 + mov r3, #0 + str r3, [r0, r1] + add r2, r1, #4 + str r3, [r0, r2] + mov r2, #1 + sub r1, r1, #4 + str r2, [r0, r1] + bx lr + thumb_func_end MOD85_021DAD54 + + thumb_func_start MOD85_021DAD68 +MOD85_021DAD68: ; 0x021DAD68 + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD85_021DAD68 + + thumb_func_start MOD85_021DAD70 +MOD85_021DAD70: ; 0x021DAD70 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5] + ldr r4, [r5, #0xc] + cmp r0, #3 + bhi _021DAE5E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAD88: ; jump table + .short _021DAE5E - _021DAD88 - 2 ; case 0 + .short _021DAD90 - _021DAD88 - 2 ; case 1 + .short _021DAD9E - _021DAD88 - 2 ; case 2 + .short _021DADC0 - _021DAD88 - 2 ; case 3 +_021DAD90: + add r0, r5, #0 + bl MOD85_021DAE70 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DAD9E: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021DADAC + bl MOD85_021DB7B8 + cmp r0, #1 + bne _021DAE5E +_021DADAC: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021DADBA + bl MOD85_021DB7B8 + cmp r0, #1 + bne _021DAE5E +_021DADBA: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_021DADC0: + mov r0, #1 + lsl r0, r0, #0xa + bl MOD85_021DBD54 + cmp r0, #0 + bne _021DADD2 + ldr r0, [r4, #0x64] + cmp r0, #0 + bne _021DAE20 +_021DADD2: + ldr r0, _021DAE60 ; =0x0000062D + bl FUN_020054C8 + ldr r1, [r4, #0x60] + ldr r0, [r4, #0x64] + add r1, r1, r0 + ldr r0, _021DAE64 ; =0x0000C350 + str r1, [r4, #0x60] + cmp r1, r0 + blt _021DADE8 + str r0, [r4, #0x60] +_021DADE8: + ldr r0, [r4, #8] + cmp r0, #1 + bne _021DADF6 + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x64] + add r0, r1, r0 + str r0, [r4, #0x14] +_021DADF6: + mov r0, #0 + str r0, [r4, #0x64] + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021DAE08 + bl FUN_02064520 + mov r0, #0 + str r0, [r5, #0x14] +_021DAE08: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021DAE16 + bl FUN_02064520 + mov r0, #0 + str r0, [r5, #0x18] +_021DAE16: + mov r0, #1 + str r0, [r5, #4] + mov r0, #0 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DAE20: + ldr r1, _021DAE68 ; =0x021C48B8 + mov r0, #3 + ldr r2, [r1, #0x44] + ldr r1, _021DAE6C ; =0x00000C03 + tst r1, r2 + beq _021DAE2E + mov r0, #1 +_021DAE2E: + ldr r1, [r5, #8] + add r1, r1, #1 + str r1, [r5, #8] + tst r0, r1 + bne _021DAE5E + ldr r0, [r4, #0x64] + sub r0, r0, #1 + str r0, [r4, #0x64] + ldr r0, [r4, #0x60] + add r1, r0, #1 + ldr r0, _021DAE64 ; =0x0000C350 + str r1, [r4, #0x60] + cmp r1, r0 + blt _021DAE4C + str r0, [r4, #0x60] +_021DAE4C: + ldr r0, _021DAE60 ; =0x0000062D + bl FUN_020054C8 + ldr r0, [r4, #8] + cmp r0, #1 + bne _021DAE5E + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] +_021DAE5E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DAE60: .word 0x0000062D +_021DAE64: .word 0x0000C350 +_021DAE68: .word 0x021C48B8 +_021DAE6C: .word 0x00000C03 + thumb_func_end MOD85_021DAD70 + + thumb_func_start MOD85_021DAE70 +MOD85_021DAE70: ; 0x021DAE70 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r7, [r5, #0xc] + ldr r6, [r7, #0x48] + cmp r6, #0 + bne _021DAE80 + bl ErrorHandling +_021DAE80: + mov r4, #0 +_021DAE82: + mov r0, #1 + tst r0, r6 + beq _021DAEB4 + ldr r0, [r5, #0x14] + cmp r0, #0 + bne _021DAE9C + ldr r2, [r7, #0x64] + add r0, r7, #0 + add r1, r4, #0 + bl MOD85_021DB784 + str r0, [r5, #0x14] + b _021DAEB4 +_021DAE9C: + ldr r0, [r5, #0x18] + cmp r0, #0 + bne _021DAEB0 + ldr r2, [r7, #0x64] + add r0, r7, #0 + add r1, r4, #0 + bl MOD85_021DB784 + str r0, [r5, #0x18] + b _021DAEB4 +_021DAEB0: + bl ErrorHandling +_021DAEB4: + add r4, r4, #1 + lsr r6, r6, #1 + cmp r4, #5 + blt _021DAE82 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DAE70 + + thumb_func_start MOD85_021DAEC0 +MOD85_021DAEC0: ; 0x021DAEC0 + push {r4, lr} + mov r1, #0x4f + lsl r1, r1, #2 + add r4, r0, r1 + mov r1, #0 + str r1, [r4] + str r1, [r4, #4] + str r0, [r4, #0x20] + ldr r0, _021DAEE0 ; =MOD85_021DAF80 + add r1, r4, #0 + mov r2, #0x84 + bl FUN_0200CA44 + str r0, [r4, #0x24] + pop {r4, pc} + nop +_021DAEE0: .word MOD85_021DAF80 + thumb_func_end MOD85_021DAEC0 + + thumb_func_start MOD85_021DAEE4 +MOD85_021DAEE4: ; 0x021DAEE4 + mov r1, #0x16 + lsl r1, r1, #4 + ldr r3, _021DAEF0 ; =FUN_0200CAB4 + ldr r0, [r0, r1] + bx r3 + nop +_021DAEF0: .word FUN_0200CAB4 + thumb_func_end MOD85_021DAEE4 + + thumb_func_start MOD85_021DAEF4 +MOD85_021DAEF4: ; 0x021DAEF4 + mov r2, #0x4f + lsl r2, r2, #2 + add r2, r0, r2 + str r1, [r2] + mov r0, #0 + str r0, [r2, #4] + str r0, [r2, #8] + str r0, [r2, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD85_021DAEF4 + + thumb_func_start MOD85_021DAF08 +MOD85_021DAF08: ; 0x021DAF08 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD85_021DAF08 + + thumb_func_start MOD85_021DAF10 +MOD85_021DAF10: ; 0x021DAF10 + push {r4, lr} + mov r1, #0x52 + add r4, r0, #0 + mov r2, #0 + lsl r1, r1, #2 + str r2, [r4, r1] + bl MOD85_021DD984 + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD85_021DDB10 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD85_021DDCAC + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD85_021DDE10 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r4, r1] + pop {r4, pc} + thumb_func_end MOD85_021DAF10 + + thumb_func_start MOD85_021DAF4C +MOD85_021DAF4C: ; 0x021DAF4C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x52 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, #0x2c + ldr r0, [r4, r0] + bl FUN_02064520 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02064520 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02064520 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_02064520 + pop {r4, pc} + thumb_func_end MOD85_021DAF4C + + thumb_func_start MOD85_021DAF80 +MOD85_021DAF80: ; 0x021DAF80 + push {r3, r4, r5, lr} + ldr r4, _021DAF9C ; =0x021DEED0 + add r5, r1, #0 +_021DAF86: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + ldr r1, [r5, #4] + lsl r1, r1, #2 + ldr r1, [r2, r1] + blx r1 + cmp r0, #1 + beq _021DAF86 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DAF9C: .word 0x021DEED0 + thumb_func_end MOD85_021DAF80 + + thumb_func_start MOD85_021DAFA0 +MOD85_021DAFA0: ; 0x021DAFA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x18] + bl MOD85_021DC4B4 + str r0, [r4, #0x28] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DAFA0 + + thumb_func_start MOD85_021DAFB8 +MOD85_021DAFB8: ; 0x021DAFB8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #0 + bne _021DAFCA + mov r0, #0 + pop {r4, pc} +_021DAFCA: + ldr r0, [r4, #0x28] + mov r1, #1 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DAFB8 + + thumb_func_start MOD85_021DAFDC +MOD85_021DAFDC: ; 0x021DAFDC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #0 + bne _021DAFEE + mov r0, #0 + pop {r4, pc} +_021DAFEE: + ldr r0, [r4, #0x28] + mov r1, #5 + bl MOD85_021DC4EC + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DAFDC + + thumb_func_start MOD85_021DB004 +MOD85_021DB004: ; 0x021DB004 + mov r0, #0 + bx lr + thumb_func_end MOD85_021DB004 + + thumb_func_start MOD85_021DB008 +MOD85_021DB008: ; 0x021DB008 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + mov r1, #4 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB008 + + thumb_func_start MOD85_021DB020 +MOD85_021DB020: ; 0x021DB020 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #1 + bne _021DB03E + ldr r0, [r4, #0x28] + bl FUN_02064520 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB03E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB020 + + thumb_func_start MOD85_021DB044 +MOD85_021DB044: ; 0x021DB044 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + mov r1, #2 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB044 + + thumb_func_start MOD85_021DB05C +MOD85_021DB05C: ; 0x021DB05C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #1 + bne _021DB082 + ldr r0, [r4, #0x20] + bl MOD85_021DCBE0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x1c] + bl MOD85_021DCEC0 + str r0, [r4, #0x30] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB082: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB05C + + thumb_func_start MOD85_021DB088 +MOD85_021DB088: ; 0x021DB088 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl MOD85_021DCF0C + cmp r0, #1 + bne _021DB0AC + ldr r0, [r4, #0x30] + mov r1, #1 + bl MOD85_021DCEF8 + ldr r0, [r4, #0x28] + mov r1, #1 + bl MOD85_021DC500 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB0AC: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB088 + + thumb_func_start MOD85_021DB0B0 +MOD85_021DB0B0: ; 0x021DB0B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl MOD85_021DCF0C + cmp r0, #1 + bne _021DB0CE + ldr r0, [r4, #0x2c] + bl FUN_02064520 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB0CE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB0B0 + + thumb_func_start MOD85_021DB0D4 +MOD85_021DB0D4: ; 0x021DB0D4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + bl MOD85_021DCBE0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x30] + mov r1, #2 + bl MOD85_021DCEF8 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB0D4 + + thumb_func_start MOD85_021DB0F4 +MOD85_021DB0F4: ; 0x021DB0F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl MOD85_021DCF0C + cmp r0, #1 + bne _021DB124 + ldr r0, [r4, #0x30] + bl FUN_02064520 + ldr r0, [r4, #0x2c] + bl FUN_02064520 + ldr r0, [r4, #0x28] + mov r1, #0 + bl MOD85_021DC500 + ldr r0, [r4, #0x28] + mov r1, #3 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB124: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB0F4 + + thumb_func_start MOD85_021DB128 +MOD85_021DB128: ; 0x021DB128 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #1 + bne _021DB144 + ldr r0, [r4, #0x28] + mov r1, #4 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB144: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB128 + + thumb_func_start MOD85_021DB148 +MOD85_021DB148: ; 0x021DB148 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #1 + bne _021DB166 + ldr r0, [r4, #0x28] + bl FUN_02064520 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB166: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB148 + + thumb_func_start MOD85_021DB16C +MOD85_021DB16C: ; 0x021DB16C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl MOD85_021DCEF8 + ldr r0, [r4, #0x20] + bl MOD85_021DD54C + str r0, [r4, #0x34] + mov r0, #0 + str r0, [r4, #0x10] + ldr r1, [r4, #4] + add r1, r1, #1 + str r1, [r4, #4] + pop {r4, pc} + thumb_func_end MOD85_021DB16C + + thumb_func_start MOD85_021DB18C +MOD85_021DB18C: ; 0x021DB18C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0x30 + blt _021DB1B2 + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0x23 + bl FUN_02005578 + ldr r0, [r4, #0x30] + mov r1, #4 + bl MOD85_021DCEF8 +_021DB1B2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB18C + + thumb_func_start MOD85_021DB1B8 +MOD85_021DB1B8: ; 0x021DB1B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl MOD85_021DD578 + cmp r0, #1 + bne _021DB1E2 + ldr r0, [r4, #0x30] + mov r1, #3 + bl MOD85_021DCEF8 + ldr r0, [r4, #0x34] + bl FUN_02064520 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + str r0, [r4, #8] +_021DB1E2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB1B8 + + thumb_func_start MOD85_021DB1E8 +MOD85_021DB1E8: ; 0x021DB1E8 + push {r3, lr} + ldr r1, [r0, #0x20] + ldr r3, _021DB210 ; =0x021DEF04 + ldr r2, [r1, #0x34] + mov r1, #0x18 + mul r1, r2 + add r2, r3, r1 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + mov r1, #0 + str r1, [r0, #0x14] + lsl r1, r1, #2 + add r1, r2, r1 + ldr r0, [r0, #0x30] + ldr r1, [r1, #0xc] + bl MOD85_021DCEF8 + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021DB210: .word 0x021DEF04 + thumb_func_end MOD85_021DB1E8 + + thumb_func_start MOD85_021DB214 +MOD85_021DB214: ; 0x021DB214 + push {r3, r4, r5, lr} + ldr r2, [r0, #0x20] + mov r1, #0 + add r4, r1, #0 + add r5, r2, #0 +_021DB21E: + ldr r3, [r5, #0x7c] + cmp r3, #1 + beq _021DB226 + add r1, r1, #1 +_021DB226: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021DB21E + ldr r3, [r0, #0x14] + cmp r3, #2 + bge _021DB250 + cmp r3, r1 + beq _021DB250 + ldr r3, [r2, #0x34] + mov r2, #0x18 + ldr r4, _021DB254 ; =0x021DEF04 + str r1, [r0, #0x14] + mul r2, r3 + add r2, r4, r2 + lsl r1, r1, #2 + add r1, r2, r1 + ldr r0, [r0, #0x30] + ldr r1, [r1, #0xc] + bl MOD85_021DCEF8 +_021DB250: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DB254: .word 0x021DEF04 + thumb_func_end MOD85_021DB214 + + thumb_func_start MOD85_021DB258 +MOD85_021DB258: ; 0x021DB258 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl MOD85_021DCEF8 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB258 + + thumb_func_start MOD85_021DB270 +MOD85_021DB270: ; 0x021DB270 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + bl MOD85_021DAF4C + ldr r0, [r4, #0x20] + bl MOD85_021DCBE0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x30] + mov r1, #2 + bl MOD85_021DCEF8 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB270 + + thumb_func_start MOD85_021DB294 +MOD85_021DB294: ; 0x021DB294 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl MOD85_021DCF0C + cmp r0, #1 + bne _021DB2C4 + ldr r0, [r4, #0x30] + bl FUN_02064520 + ldr r0, [r4, #0x2c] + bl FUN_02064520 + ldr r0, [r4, #0x28] + mov r1, #0 + bl MOD85_021DC500 + ldr r0, [r4, #0x28] + mov r1, #3 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB2C4: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB294 + + thumb_func_start MOD85_021DB2C8 +MOD85_021DB2C8: ; 0x021DB2C8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #1 + bne _021DB2F8 + ldr r0, [r4, #0x20] + bl MOD85_021DDA30 + ldr r0, [r4, #0x20] + bl MOD85_021DDBBC + ldr r0, [r4, #0x20] + mov r1, #0 + bl MOD85_021DDF40 + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD85_021DDF40 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB2F8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB2C8 + + thumb_func_start MOD85_021DB2FC +MOD85_021DB2FC: ; 0x021DB2FC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0x2d + blt _021DB31C + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0x28] + mov r1, #4 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB31C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB2FC + + thumb_func_start MOD85_021DB320 +MOD85_021DB320: ; 0x021DB320 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #1 + bne _021DB33E + ldr r0, [r4, #0x28] + bl FUN_02064520 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB33E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB320 + + thumb_func_start MOD85_021DB344 +MOD85_021DB344: ; 0x021DB344 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + mov r1, #4 + bl MOD85_021DCEF8 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB344 + + thumb_func_start MOD85_021DB360 +MOD85_021DB360: ; 0x021DB360 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + mov r1, #8 + bl MOD85_021DCEF8 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB360 + + thumb_func_start MOD85_021DB37C +MOD85_021DB37C: ; 0x021DB37C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + mov r1, #6 + bl MOD85_021DC4EC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB37C + + thumb_func_start MOD85_021DB398 +MOD85_021DB398: ; 0x021DB398 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + bl MOD85_021DCBE0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x30] + mov r1, #2 + bl MOD85_021DCEF8 + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB398 + + thumb_func_start MOD85_021DB3BC +MOD85_021DB3BC: ; 0x021DB3BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl MOD85_021DCF0C + cmp r0, #1 + bne _021DB3F0 + ldr r0, [r4, #0x2c] + bl FUN_02064520 + ldr r0, [r4, #0x30] + bl FUN_02064520 + ldr r0, [r4, #0x28] + mov r1, #0 + bl MOD85_021DC500 + ldr r0, [r4, #0x28] + mov r1, #3 + bl MOD85_021DC4EC + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB3F0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB3BC + + thumb_func_start MOD85_021DB3F4 +MOD85_021DB3F4: ; 0x021DB3F4 + push {r3, lr} + ldr r1, [r0, #0x10] + add r1, r1, #1 + str r1, [r0, #0x10] + cmp r1, #0x1e + blt _021DB412 + mov r1, #0 + str r1, [r0, #0x10] + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + ldr r0, [r0, #0x28] + mov r1, #2 + bl MOD85_021DC4EC +_021DB412: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DB3F4 + + thumb_func_start MOD85_021DB418 +MOD85_021DB418: ; 0x021DB418 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD85_021DC520 + cmp r0, #1 + bne _021DB442 + ldr r0, [r4, #0x20] + bl MOD85_021DCBE0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x1c] + bl MOD85_021DCEC0 + str r0, [r4, #0x30] + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB442: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB418 + + thumb_func_start MOD85_021DB448 +MOD85_021DB448: ; 0x021DB448 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl MOD85_021DCF0C + cmp r0, #1 + bne _021DB46C + ldr r0, [r4, #0x30] + mov r1, #1 + bl MOD85_021DCEF8 + ldr r0, [r4, #0x28] + mov r1, #1 + bl MOD85_021DC500 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB46C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DB448 + + thumb_func_start MOD85_021DB470 +MOD85_021DB470: ; 0x021DB470 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl MOD85_021DCF0C + cmp r0, #1 + bne _021DB48E + ldr r0, [r4, #0x2c] + bl FUN_02064520 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DB48E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB470 + + thumb_func_start MOD85_021DB494 +MOD85_021DB494: ; 0x021DB494 + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r1, #0x61 + add r5, r0, #0 + lsl r1, r1, #2 + add r4, r5, r1 + mov r1, #3 + mov r2, #0 + str r5, [r4] + bl MOD85_021D8144 + add r1, sp, #0 + add r6, r0, #0 + bl FUN_020B0138 + ldr r0, [sp] + mov r1, #1 + add r2, r4, #4 + bl MOD85_021DB604 + add r2, r4, #0 + ldr r0, [sp] + mov r1, #2 + add r2, #0xa4 + bl MOD85_021DB604 + add r2, r4, #0 + ldr r0, [sp] + mov r1, #3 + add r2, #0xc4 + bl MOD85_021DB604 + add r2, r4, #0 + ldr r0, [sp] + mov r1, #3 + add r2, #0xe4 + bl MOD85_021DB604 + mov r2, #0x41 + lsl r2, r2, #2 + ldr r0, [sp] + mov r1, #4 + add r2, r4, r2 + bl MOD85_021DB604 + mov r2, #0x49 + lsl r2, r2, #2 + ldr r0, [sp] + mov r1, #4 + add r2, r4, r2 + bl MOD85_021DB604 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl MOD85_021D8144 + add r1, sp, #0 + add r6, r0, #0 + bl FUN_020B0138 + add r2, r4, #0 + ldr r0, [sp] + mov r1, #0 + add r2, #0x24 + bl MOD85_021DB604 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #6 + mov r2, #0 + bl MOD85_021D8144 + add r1, sp, #0 + add r6, r0, #0 + bl FUN_020B0138 + add r2, r4, #0 + ldr r0, [sp] + mov r1, #0 + add r2, #0x44 + bl MOD85_021DB604 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #7 + mov r2, #0 + bl MOD85_021D8144 + add r1, sp, #0 + add r6, r0, #0 + bl FUN_020B0138 + add r2, r4, #0 + ldr r0, [sp] + mov r1, #0 + add r2, #0x64 + bl MOD85_021DB604 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x4a + mov r2, #0 + bl MOD85_021D8144 + add r1, sp, #0 + add r6, r0, #0 + bl FUN_020B0138 + mov r2, #0x51 + lsl r2, r2, #2 + ldr r0, [sp] + mov r1, #0 + add r2, r4, r2 + bl MOD85_021DB604 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x4b + mov r2, #0 + bl MOD85_021D8144 + add r1, sp, #0 + add r6, r0, #0 + bl FUN_020B0138 + mov r2, #0x59 + lsl r2, r2, #2 + ldr r0, [sp] + mov r1, #0 + add r2, r4, r2 + bl MOD85_021DB604 + mov r2, #0x61 + lsl r2, r2, #2 + ldr r0, [sp] + mov r1, #0 + add r2, r4, r2 + bl MOD85_021DB604 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl MOD85_021D8144 + add r1, sp, #0 + add r5, r0, #0 + bl FUN_020B0138 + mov r2, #0x69 + lsl r2, r2, #2 + ldr r0, [sp] + mov r1, #0 + add r2, r4, r2 + bl MOD85_021DB604 + mov r2, #0x71 + lsl r2, r2, #2 + ldr r0, [sp] + mov r1, #0 + add r2, r4, r2 + bl MOD85_021DB604 + add r0, r5, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD85_021DB494 + + thumb_func_start MOD85_021DB600 +MOD85_021DB600: ; 0x021DB600 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DB600 + + thumb_func_start MOD85_021DB604 +MOD85_021DB604: ; 0x021DB604 + ldr r3, [r0, #0xc] + lsl r0, r1, #5 + add r3, r3, r0 + mov r1, #0 +_021DB60C: + ldrh r0, [r3] + add r1, r1, #1 + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + cmp r1, #0x10 + blt _021DB60C + bx lr + thumb_func_end MOD85_021DB604 + + thumb_func_start MOD85_021DB61C +MOD85_021DB61C: ; 0x021DB61C + push {r0, r1, r2, r3} + push {r3, r4, r5, r6} + add r1, r2, #0 + add r0, r3, #0 + add r2, sp, #0x10 + add r3, sp, #0x14 + cmp r1, #0x10 + bls _021DB62E + mov r1, #0x10 +_021DB62E: + ldrh r4, [r2] + ldrh r3, [r3] + lsl r2, r4, #0x16 + lsr r6, r2, #0x1b + lsl r2, r4, #0x1b + lsr r5, r2, #0x1b + lsl r2, r4, #0x11 + lsl r4, r3, #0x11 + lsr r2, r2, #0x1b + lsr r4, r4, #0x1b + sub r4, r4, r2 + mul r4, r1 + asr r4, r4, #4 + add r2, r2, r4 + lsl r4, r2, #0xa + lsl r2, r3, #0x1b + lsl r3, r3, #0x16 + lsr r3, r3, #0x1b + lsr r2, r2, #0x1b + sub r3, r3, r6 + sub r2, r2, r5 + mul r2, r1 + mul r3, r1 + asr r1, r3, #4 + asr r2, r2, #4 + add r1, r6, r1 + add r2, r5, r2 + lsl r1, r1, #5 + orr r1, r2 + orr r1, r4 + strh r1, [r0] + pop {r3, r4, r5, r6} + add sp, #0x10 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DB61C + + thumb_func_start MOD85_021DB674 +MOD85_021DB674: ; 0x021DB674 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp] + add r6, r3, #0 + mov r7, #0 +_021DB680: + ldrh r0, [r5] + ldrh r1, [r4] + ldr r2, [sp] + add r3, r6, #0 + bl MOD85_021DB61C + add r7, r7, #1 + add r6, r6, #2 + add r4, r4, #2 + add r5, r5, #2 + cmp r7, #0x10 + blt _021DB680 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DB674 + + thumb_func_start MOD85_021DB69C +MOD85_021DB69C: ; 0x021DB69C + push {r4, lr} + add r4, r2, #0 + lsl r0, r1, #0x18 + add r1, r3, #0 + lsl r3, r4, #0x15 + lsr r0, r0, #0x18 + mov r2, #0x20 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB69C + + thumb_func_start MOD85_021DB6B4 +MOD85_021DB6B4: ; 0x021DB6B4 + push {r4, lr} + add r3, r1, #0 + lsl r4, r3, #2 + ldr r2, _021DB6D0 ; =0x021E05C0 + lsl r3, r3, #5 + ldr r2, [r2, r4] + mov r4, #0x8a + lsl r4, r4, #2 + add r4, r0, r4 + mov r1, #1 + add r3, r4, r3 + bl MOD85_021DB69C + pop {r4, pc} + .align 2, 0 +_021DB6D0: .word 0x021E05C0 + thumb_func_end MOD85_021DB6B4 + + thumb_func_start MOD85_021DB6D4 +MOD85_021DB6D4: ; 0x021DB6D4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r2, #0x61 + lsl r2, r2, #2 + ldr r0, _021DB710 ; =0x021E05C0 + lsl r4, r1, #2 + ldr r6, [r0, r4] + add r0, r2, #0 + add r3, r7, r2 + add r0, #0x60 + add r4, r3, r0 + add r0, r3, #0 + sub r2, #0x40 + lsl r5, r1, #5 + add r1, r3, r2 + add r0, #0xa4 + add r0, r0, r5 + add r1, r1, r5 + mov r2, #0xa + add r3, r4, r5 + bl MOD85_021DB674 + add r0, r7, #0 + mov r1, #1 + add r2, r6, #0 + add r3, r4, r5 + bl MOD85_021DB69C + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB710: .word 0x021E05C0 + thumb_func_end MOD85_021DB6D4 + + thumb_func_start MOD85_021DB714 +MOD85_021DB714: ; 0x021DB714 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r2, #0x61 + lsl r2, r2, #2 + ldr r0, _021DB750 ; =0x021E05C0 + lsl r4, r1, #2 + ldr r6, [r0, r4] + add r0, r2, #0 + add r3, r7, r2 + add r0, #0x60 + add r4, r3, r0 + add r0, r3, #0 + sub r2, #0x40 + lsl r5, r1, #5 + add r1, r3, r2 + add r0, #0xa4 + add r0, r0, r5 + add r1, r1, r5 + mov r2, #0xc + add r3, r4, r5 + bl MOD85_021DB674 + add r0, r7, #0 + mov r1, #1 + add r2, r6, #0 + add r3, r4, r5 + bl MOD85_021DB69C + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB750: .word 0x021E05C0 + thumb_func_end MOD85_021DB714 + + thumb_func_start MOD85_021DB754 +MOD85_021DB754: ; 0x021DB754 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DB75A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021DB6B4 + add r4, r4, #1 + cmp r4, #5 + blt _021DB75A + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DB754 + + thumb_func_start MOD85_021DB76C +MOD85_021DB76C: ; 0x021DB76C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DB772: + add r0, r5, #0 + add r1, r4, #0 + bl MOD85_021DB6D4 + add r4, r4, #1 + cmp r4, #5 + blt _021DB772 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DB76C + + thumb_func_start MOD85_021DB784 +MOD85_021DB784: ; 0x021DB784 + push {r4, lr} + sub sp, #0x20 + add r4, sp, #0x14 + mov r3, #0 + str r3, [r4] + str r3, [r4, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + str r3, [r4, #8] + str r0, [sp, #0x10] + add r1, sp, #8 + str r1, [sp] + mov r1, #0x8f + str r1, [sp, #4] + ldr r1, _021DB7B0 ; =0x0000044C + add r2, r4, #0 + ldr r0, [r0, r1] + ldr r1, _021DB7B4 ; =0x021DEE0C + bl FUN_020644E4 + add sp, #0x20 + pop {r4, pc} + .align 2, 0 +_021DB7B0: .word 0x0000044C +_021DB7B4: .word 0x021DEE0C + thumb_func_end MOD85_021DB784 + + thumb_func_start MOD85_021DB7B8 +MOD85_021DB7B8: ; 0x021DB7B8 + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #0xc] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DB7B8 + + thumb_func_start MOD85_021DB7C4 +MOD85_021DB7C4: ; 0x021DB7C4 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + ldr r1, [r0, #8] + str r1, [r4, #0x1c] + ldr r1, [r0] + str r1, [r4, #0x10] + ldr r0, [r0, #4] + str r0, [r4, #0x14] + mov r0, #0x61 + ldr r1, [r4, #0x1c] + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [r4, #0x20] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB7C4 + + thumb_func_start MOD85_021DB7E8 +MOD85_021DB7E8: ; 0x021DB7E8 + ldr r3, _021DB7F0 ; =MOD85_021DB6B4 + ldr r0, [r1, #0x1c] + ldr r1, [r1, #0x10] + bx r3 + .align 2, 0 +_021DB7F0: .word MOD85_021DB6B4 + thumb_func_end MOD85_021DB7E8 + + thumb_func_start MOD85_021DB7F4 +MOD85_021DB7F4: ; 0x021DB7F4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r2, [r4, #0x10] + ldr r0, _021DB958 ; =0x021E05C0 + lsl r1, r2, #2 + ldr r0, [r0, r1] + lsl r5, r2, #5 + mov r1, #0x79 + ldr r2, [r4, #0x20] + lsl r1, r1, #2 + add r6, r2, r1 + sub r1, #0xa0 + str r0, [sp] + add r0, r2, #0 + add r1, r2, r1 + ldr r2, [r4] + add r0, #0xa4 + cmp r2, #4 + bls _021DB81C + b _021DB956 +_021DB81C: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021DB828: ; jump table + .short _021DB832 - _021DB828 - 2 ; case 0 + .short _021DB874 - _021DB828 - 2 ; case 1 + .short _021DB8D8 - _021DB828 - 2 ; case 2 + .short _021DB91A - _021DB828 - 2 ; case 3 + .short _021DB956 - _021DB828 - 2 ; case 4 +_021DB832: + mov r7, #1 + ldr r2, [r4, #0x18] + lsl r7, r7, #0xe + add r3, r2, r7 + lsl r2, r7, #2 + str r3, [r4, #0x18] + cmp r3, r2 + ble _021DB844 + str r2, [r4, #0x18] +_021DB844: + ldr r2, [r4, #0x18] + asr r3, r2, #0xb + lsr r3, r3, #0x14 + add r3, r2, r3 + asr r2, r3, #0xc + cmp r2, #0x10 + bne _021DB858 + ldr r3, [r4] + add r3, r3, #1 + str r3, [r4] +_021DB858: + lsl r2, r2, #0x10 + add r0, r0, r5 + add r1, r1, r5 + lsr r2, r2, #0x10 + add r3, r6, r5 + bl MOD85_021DB674 + ldr r0, [r4, #0x1c] + ldr r2, [sp] + mov r1, #1 + add r3, r6, r5 + bl MOD85_021DB69C + pop {r3, r4, r5, r6, r7, pc} +_021DB874: + mov r2, #1 + ldr r3, [r4, #0x18] + lsl r2, r2, #0xe + sub r2, r3, r2 + str r2, [r4, #0x18] + bpl _021DB884 + mov r2, #0 + str r2, [r4, #0x18] +_021DB884: + ldr r2, [r4, #0x18] + asr r3, r2, #0xb + lsr r3, r3, #0x14 + add r3, r2, r3 + asr r2, r3, #0xc + bne _021DB8BC + ldr r3, [r4, #4] + add r3, r3, #1 + str r3, [r4, #4] + cmp r3, #4 + blt _021DB8B6 + ldr r3, [r4, #0x14] + cmp r3, #0 + beq _021DB8AC + ldr r3, [r4] + add r3, r3, #1 + str r3, [r4] + mov r3, #1 + str r3, [r4, #0xc] + b _021DB8BC +_021DB8AC: + mov r3, #4 + str r3, [r4] + mov r3, #1 + str r3, [r4, #0xc] + b _021DB8BC +_021DB8B6: + ldr r3, [r4] + sub r3, r3, #1 + str r3, [r4] +_021DB8BC: + lsl r2, r2, #0x10 + add r0, r0, r5 + add r1, r1, r5 + lsr r2, r2, #0x10 + add r3, r6, r5 + bl MOD85_021DB674 + ldr r0, [r4, #0x1c] + ldr r2, [sp] + mov r1, #1 + add r3, r6, r5 + bl MOD85_021DB69C + pop {r3, r4, r5, r6, r7, pc} +_021DB8D8: + mov r7, #2 + ldr r2, [r4, #0x18] + lsl r7, r7, #0xe + add r3, r2, r7 + lsl r2, r7, #1 + str r3, [r4, #0x18] + cmp r3, r2 + ble _021DB8EA + str r2, [r4, #0x18] +_021DB8EA: + ldr r2, [r4, #0x18] + asr r3, r2, #0xb + lsr r3, r3, #0x14 + add r3, r2, r3 + asr r2, r3, #0xc + cmp r2, #0x10 + bne _021DB8FE + ldr r3, [r4] + add r3, r3, #1 + str r3, [r4] +_021DB8FE: + lsl r2, r2, #0x10 + add r0, r0, r5 + add r1, r1, r5 + lsr r2, r2, #0x10 + add r3, r6, r5 + bl MOD85_021DB674 + ldr r0, [r4, #0x1c] + ldr r2, [sp] + mov r1, #1 + add r3, r6, r5 + bl MOD85_021DB69C + pop {r3, r4, r5, r6, r7, pc} +_021DB91A: + mov r2, #2 + ldr r3, [r4, #0x18] + lsl r2, r2, #0xe + sub r2, r3, r2 + str r2, [r4, #0x18] + bpl _021DB92A + mov r2, #0 + str r2, [r4, #0x18] +_021DB92A: + ldr r2, [r4, #0x18] + asr r3, r2, #0xb + lsr r3, r3, #0x14 + add r3, r2, r3 + asr r2, r3, #0xc + bne _021DB93C + ldr r3, [r4] + sub r3, r3, #1 + str r3, [r4] +_021DB93C: + lsl r2, r2, #0x10 + add r0, r0, r5 + add r1, r1, r5 + lsr r2, r2, #0x10 + add r3, r6, r5 + bl MOD85_021DB674 + ldr r0, [r4, #0x1c] + ldr r2, [sp] + mov r1, #1 + add r3, r6, r5 + bl MOD85_021DB69C +_021DB956: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB958: .word 0x021E05C0 + thumb_func_end MOD85_021DB7F4 + + thumb_func_start MOD85_021DB95C +MOD85_021DB95C: ; 0x021DB95C + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DB97A + bl ErrorHandling +_021DB97A: + str r4, [sp] + mov r0, #0x8f + str r0, [sp, #4] + ldr r0, _021DB998 ; =0x0000044C + ldr r1, _021DB99C ; =0x021DEE5C + ldr r0, [r4, r0] + add r2, sp, #8 + mov r3, #0 + bl FUN_020644E4 + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_021DB998: .word 0x0000044C +_021DB99C: .word 0x021DEE5C + thumb_func_end MOD85_021DB95C + + thumb_func_start MOD85_021DB9A0 +MOD85_021DB9A0: ; 0x021DB9A0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DB9BA + bl FUN_02064520 + mov r0, #0x4d + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_021DB9BA: + add r0, r4, #0 + bl MOD85_021DB754 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DB9A0 + + thumb_func_start MOD85_021DB9C4 +MOD85_021DB9C4: ; 0x021DB9C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [r6, #4] + ldr r1, _021DBADC ; =0x021DF094 + lsl r0, r0, #4 + add r4, r1, r0 + mov r0, #1 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _021DBAE0 ; =0x021E05C0 + add r5, r6, #0 + str r0, [sp] + mov r7, #0 +_021DB9E0: + ldr r1, [r4] + ldr r0, [sp, #0xc] + tst r0, r1 + beq _021DBA6C + ldr r0, [r6, #8] + cmp r0, #0 + bne _021DB9F8 + ldr r0, [r4, #4] + str r0, [r5, #0x14] + mov r0, #0 + str r0, [sp, #8] + b _021DBA2C +_021DB9F8: + ldr r1, [r4, #4] + ldr r0, [r4, #8] + cmp r1, r0 + ldr r1, [r5, #0x14] + bge _021DBA18 + ldr r0, [r4, #0xc] + add r1, r1, r0 + str r1, [r5, #0x14] + ldr r0, [r4, #8] + cmp r1, r0 + blt _021DBA12 + str r0, [r5, #0x14] + b _021DBA2C +_021DBA12: + mov r0, #0 + str r0, [sp, #8] + b _021DBA2C +_021DBA18: + ldr r0, [r4, #0xc] + sub r1, r1, r0 + str r1, [r5, #0x14] + ldr r0, [r4, #8] + cmp r1, r0 + bgt _021DBA28 + str r0, [r5, #0x14] + b _021DBA2C +_021DBA28: + mov r0, #0 + str r0, [sp, #8] +_021DBA2C: + ldr r0, [sp] + mov r2, #0x51 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + str r0, [sp, #4] + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r1, #0 + lsl r2, r2, #2 + add r1, r1, r2 + ldr r3, [r5, #0x14] + add r0, #0xa4 + asr r2, r3, #0xb + lsr r2, r2, #0x14 + add r2, r3, r2 + ldr r3, [sp, #0x10] + lsl r2, r2, #4 + add r0, r0, r7 + add r1, r1, r7 + lsr r2, r2, #0x10 + add r3, r3, r7 + bl MOD85_021DB674 + ldr r3, [sp, #0x10] + ldr r0, [r6, #0x28] + ldr r2, [sp, #4] + mov r1, #1 + add r3, r3, r7 + bl MOD85_021DB69C +_021DBA6C: + ldr r0, [sp] + add r5, r5, #4 + add r0, r0, #4 + str r0, [sp] + ldr r0, [sp, #0xc] + add r7, #0x20 + lsl r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0x10 + bls _021DB9E0 + cmp r0, #0x20 + bhi _021DBAB6 + add r5, r6, #0 + mov r7, #1 + add r5, #0xc + mov r1, #0 + lsl r7, r7, #0xc + mov r0, #0x20 +_021DBA90: + ldr r2, [r4] + tst r2, r0 + beq _021DBAAC + ldr r2, [r5] + add r2, r2, r7 + str r2, [r5] + ldr r3, [r6, #0xc] + ldr r2, [r4, #4] + cmp r3, r2 + blt _021DBAA8 + str r1, [r6, #0xc] + b _021DBAAC +_021DBAA8: + mov r2, #0 + str r2, [sp, #8] +_021DBAAC: + ldr r2, [sp, #0xc] + lsl r2, r2, #1 + str r2, [sp, #0xc] + cmp r2, #0x20 + bls _021DBA90 +_021DBAB6: + mov r0, #1 + str r0, [r6, #8] + ldr r0, [sp, #8] + cmp r0, #1 + bne _021DBAD6 + mov r3, #0 + str r3, [r6, #8] + ldr r0, [r6, #4] + ldr r1, _021DBADC ; =0x021DF094 + add r0, r0, #1 + str r0, [r6, #4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0x40 + bne _021DBAD6 + str r3, [r6, #4] +_021DBAD6: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DBADC: .word 0x021DF094 +_021DBAE0: .word 0x021E05C0 + thumb_func_end MOD85_021DB9C4 + + thumb_func_start MOD85_021DBAE4 +MOD85_021DBAE4: ; 0x021DBAE4 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [r4, #0x28] + add r0, r0, r1 + str r0, [r4, #0x2c] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DBAE4 + + thumb_func_start MOD85_021DBAFC +MOD85_021DBAFC: ; 0x021DBAFC + bx lr + .align 2, 0 + thumb_func_end MOD85_021DBAFC + + thumb_func_start MOD85_021DBB00 +MOD85_021DBB00: ; 0x021DBB00 + ldr r3, _021DBB08 ; =MOD85_021DB9C4 + add r0, r1, #0 + bx r3 + nop +_021DBB08: .word MOD85_021DB9C4 + thumb_func_end MOD85_021DBB00 + + thumb_func_start MOD85_021DBB0C +MOD85_021DBB0C: ; 0x021DBB0C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4f + mov r1, #0x10 + bl FUN_020169D8 + add r1, r0, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r0, _021DBB2C ; =MOD85_021DBB88 + mov r2, #0x8f + str r4, [r1, #0xc] + bl FUN_0200CA44 + pop {r4, pc} + .align 2, 0 +_021DBB2C: .word MOD85_021DBB88 + thumb_func_end MOD85_021DBB0C + + thumb_func_start MOD85_021DBB30 +MOD85_021DBB30: ; 0x021DBB30 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4f + mov r1, #0x10 + bl FUN_020169D8 + add r1, r0, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r0, _021DBB50 ; =MOD85_021DBBE8 + mov r2, #0x8f + str r4, [r1, #0xc] + bl FUN_0200CA44 + pop {r4, pc} + .align 2, 0 +_021DBB50: .word MOD85_021DBBE8 + thumb_func_end MOD85_021DBB30 + + thumb_func_start MOD85_021DBB54 +MOD85_021DBB54: ; 0x021DBB54 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x4f + mov r1, #0x10 + bl FUN_020169D8 + add r1, r0, #0 + mov r0, #0 + str r0, [r1] + mov r0, #2 + str r4, [r1, #8] + lsl r0, r0, #0xe + str r0, [r1, #4] + ldr r0, _021DBB84 ; =MOD85_021DBC48 + mov r2, #0x8f + str r5, [r1, #0xc] + bl FUN_0200CA44 + mov r0, #0x5f + lsl r0, r0, #4 + bl FUN_020054C8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DBB84: .word MOD85_021DBC48 + thumb_func_end MOD85_021DBB54 + + thumb_func_start MOD85_021DBB88 +MOD85_021DBB88: ; 0x021DBB88 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + mov r0, #0x61 + ldr r1, [r5, #0xc] + lsl r0, r0, #2 + add r2, r1, r0 + mov r0, #2 + ldr r3, [r5, #4] + lsl r0, r0, #0xa + add r0, r3, r0 + asr r3, r0, #0xb + lsr r3, r3, #0x14 + add r1, r2, #0 + add r6, r2, #0 + add r3, r0, r3 + str r0, [r5, #4] + lsl r0, r3, #4 + lsr r4, r0, #0x10 + add r1, #0x24 + add r6, #0x84 + cmp r4, #0x10 + bls _021DBBB8 + mov r4, #0x10 +_021DBBB8: + add r0, r2, #4 + add r2, r4, #0 + add r3, r6, #0 + bl MOD85_021DB674 + ldr r0, [r5, #0xc] + mov r1, #7 + mov r2, #1 + add r3, r6, #0 + bl MOD85_021DB69C + cmp r4, #0x10 + beq _021DBBDA + ldr r0, [r5, #0xc] + ldr r0, [r0] + cmp r0, #0x3f + bne _021DBBE6 +_021DBBDA: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 +_021DBBE6: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DBB88 + + thumb_func_start MOD85_021DBBE8 +MOD85_021DBBE8: ; 0x021DBBE8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + mov r0, #0x61 + ldr r1, [r5, #0xc] + lsl r0, r0, #2 + add r2, r1, r0 + mov r1, #2 + ldr r3, [r5, #4] + lsl r1, r1, #0xa + add r1, r3, r1 + asr r3, r1, #0xb + lsr r3, r3, #0x14 + add r0, r2, #0 + add r6, r2, #0 + add r3, r1, r3 + str r1, [r5, #4] + lsl r1, r3, #4 + lsr r4, r1, #0x10 + add r0, #0x24 + add r6, #0x84 + cmp r4, #0x10 + bls _021DBC18 + mov r4, #0x10 +_021DBC18: + add r1, r2, #4 + add r2, r4, #0 + add r3, r6, #0 + bl MOD85_021DB674 + ldr r0, [r5, #0xc] + mov r1, #7 + mov r2, #1 + add r3, r6, #0 + bl MOD85_021DB69C + cmp r4, #0x10 + beq _021DBC3A + ldr r0, [r5, #0xc] + ldr r0, [r0] + cmp r0, #0x3f + bne _021DBC46 +_021DBC3A: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 +_021DBC46: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DBBE8 + + thumb_func_start MOD85_021DBC48 +MOD85_021DBC48: ; 0x021DBC48 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r1, [r5, #0xc] + mov r2, #0x61 + lsl r2, r2, #2 + add r7, r0, #0 + add r0, r1, r2 + add r6, r1, r2 + ldr r3, [r1] + add r0, #0x24 + add r6, #0x84 + cmp r3, #0x3f + bne _021DBC70 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} +_021DBC70: + ldr r3, [r5, #8] + cmp r3, #0 + bne _021DBC7C + add r1, r1, r2 + add r1, #0x44 + b _021DBC80 +_021DBC7C: + add r1, r1, r2 + add r1, #0x64 +_021DBC80: + ldr r2, [r5] + cmp r2, #0 + beq _021DBC8C + cmp r2, #1 + beq _021DBCC2 + pop {r3, r4, r5, r6, r7, pc} +_021DBC8C: + mov r2, #1 + ldr r3, [r5, #4] + lsl r2, r2, #0xc + add r3, r3, r2 + asr r2, r3, #0xb + lsr r2, r2, #0x14 + add r2, r3, r2 + asr r2, r2, #0xc + str r3, [r5, #4] + cmp r2, #0x10 + ble _021DBCAA + ldr r3, [r5] + mov r2, #0x10 + add r3, r3, #1 + str r3, [r5] +_021DBCAA: + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + add r3, r6, #0 + bl MOD85_021DB674 + ldr r0, [r5, #0xc] + mov r1, #7 + mov r2, #1 + add r3, r6, #0 + bl MOD85_021DB69C + pop {r3, r4, r5, r6, r7, pc} +_021DBCC2: + mov r2, #1 + ldr r3, [r5, #4] + lsl r2, r2, #0xa + sub r2, r3, r2 + asr r3, r2, #0xb + lsr r3, r3, #0x14 + add r3, r2, r3 + str r2, [r5, #4] + asr r4, r3, #0xc + bpl _021DBCD8 + mov r4, #0 +_021DBCD8: + lsl r2, r4, #0x10 + lsr r2, r2, #0x10 + add r3, r6, #0 + bl MOD85_021DB674 + ldr r0, [r5, #0xc] + mov r1, #7 + mov r2, #1 + add r3, r6, #0 + bl MOD85_021DB69C + cmp r4, #0 + bne _021DBCFE + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 +_021DBCFE: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DBC48 + + thumb_func_start MOD85_021DBD00 +MOD85_021DBD00: ; 0x021DBD00 + push {r4, lr} + add r4, r1, #0 + lsl r1, r4, #2 + add r0, r0, r1 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0x15 + add r0, r2, r0 + bl _s32_div_f + cmp r1, #0 + bge _021DBD1A + add r1, #0x15 +_021DBD1A: + mov r0, #0x54 + add r2, r4, #0 + mul r2, r0 + ldr r0, _021DBD2C ; =0x021DFDE4 + lsl r1, r1, #2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4, pc} + nop +_021DBD2C: .word 0x021DFDE4 + thumb_func_end MOD85_021DBD00 + + thumb_func_start MOD85_021DBD30 +MOD85_021DBD30: ; 0x021DBD30 + push {r4, r5, r6, lr} + lsl r4, r1, #2 + add r4, r0, r4 + add r4, #0x90 + ldr r4, [r4] + mov r3, #0 + lsr r6, r4, #0x1f + lsl r5, r4, #0xf + sub r5, r5, r6 + mov r4, #0xf + ror r5, r4 + add r4, r6, r5 + beq _021DBD4C + sub r3, r3, #1 +_021DBD4C: + add r2, r2, r3 + bl MOD85_021DBD00 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DBD30 + + thumb_func_start MOD85_021DBD54 +MOD85_021DBD54: ; 0x021DBD54 + ldr r1, _021DBD70 ; =0x021C48B8 + ldr r1, [r1, #0x48] + and r1, r0 + cmp r1, r0 + bne _021DBD62 + mov r0, #2 + bx lr +_021DBD62: + tst r0, r1 + beq _021DBD6A + mov r0, #1 + bx lr +_021DBD6A: + mov r0, #0 + bx lr + nop +_021DBD70: .word 0x021C48B8 + thumb_func_end MOD85_021DBD54 + + thumb_func_start MOD85_021DBD74 +MOD85_021DBD74: ; 0x021DBD74 + mov r2, #3 + add r1, r0, #0 + tst r1, r2 + beq _021DBD80 + mov r0, #2 + bx lr +_021DBD80: + mov r1, #0xc + tst r1, r0 + beq _021DBD8A + add r0, r2, #0 + bx lr +_021DBD8A: + mov r1, #0x30 + tst r1, r0 + beq _021DBD94 + mov r0, #4 + bx lr +_021DBD94: + mov r1, #0xc0 + add r2, r0, #0 + tst r2, r1 + beq _021DBDA0 + mov r0, #5 + bx lr +_021DBDA0: + add r1, #0x40 + tst r1, r0 + beq _021DBDAA + mov r0, #1 + bx lr +_021DBDAA: + mov r1, #2 + lsl r1, r1, #8 + tst r0, r1 + beq _021DBDB6 + mov r0, #0 + bx lr +_021DBDB6: + mov r0, #6 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DBD74 + + thumb_func_start MOD85_021DBDBC +MOD85_021DBDBC: ; 0x021DBDBC + push {r4, r5, r6, lr} + mov r1, #0 + mov r2, #1 + add r5, r0, #0 + bl MOD85_021DBD30 + mov r1, #1 + add r4, r0, #0 + add r0, r5, #0 + add r2, r1, #0 + bl MOD85_021DBD30 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + mov r2, #1 + bl MOD85_021DBD30 + cmp r4, #3 + beq _021DBDEC + cmp r4, r6 + bne _021DBDF0 + cmp r4, r0 + bne _021DBDF0 +_021DBDEC: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021DBDF0: + mov r0, #6 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DBDBC + + thumb_func_start MOD85_021DBDF4 +MOD85_021DBDF4: ; 0x021DBDF4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r1, #0 + mov r2, #2 + bl MOD85_021DBD30 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + mov r2, #2 + bl MOD85_021DBD30 + mov r1, #2 + add r6, r0, #0 + add r0, r5, #0 + add r2, r1, #0 + bl MOD85_021DBD30 + cmp r4, #3 + beq _021DBE24 + cmp r4, r6 + bne _021DBE28 + cmp r4, r0 + bne _021DBE28 +_021DBE24: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021DBE28: + mov r0, #6 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DBDF4 + + thumb_func_start MOD85_021DBE2C +MOD85_021DBE2C: ; 0x021DBE2C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r1, #0 + mov r2, #3 + bl MOD85_021DBD30 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + mov r2, #3 + bl MOD85_021DBD30 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + mov r2, #3 + bl MOD85_021DBD30 + cmp r4, #3 + beq _021DBE5C + cmp r4, r6 + bne _021DBE60 + cmp r4, r0 + bne _021DBE60 +_021DBE5C: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021DBE60: + mov r0, #6 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DBE2C + + thumb_func_start MOD85_021DBE64 +MOD85_021DBE64: ; 0x021DBE64 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r1, #0 + mov r2, #1 + bl MOD85_021DBD30 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + mov r2, #2 + bl MOD85_021DBD30 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + mov r2, #3 + bl MOD85_021DBD30 + cmp r4, #3 + beq _021DBE94 + cmp r4, r6 + bne _021DBE98 + cmp r4, r0 + bne _021DBE98 +_021DBE94: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021DBE98: + mov r0, #6 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DBE64 + + thumb_func_start MOD85_021DBE9C +MOD85_021DBE9C: ; 0x021DBE9C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r1, #0 + mov r2, #3 + bl MOD85_021DBD30 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + mov r2, #2 + bl MOD85_021DBD30 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + mov r2, #1 + bl MOD85_021DBD30 + cmp r4, #3 + beq _021DBECC + cmp r4, r6 + bne _021DBED0 + cmp r4, r0 + bne _021DBED0 +_021DBECC: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021DBED0: + mov r0, #6 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DBE9C + + thumb_func_start MOD85_021DBED4 +MOD85_021DBED4: ; 0x021DBED4 + push {r4, r5, r6, lr} + add r4, r2, #0 + mov r1, #0 + add r5, r0, #0 + str r1, [r4] + mov r6, #6 + bl MOD85_021DBDBC + cmp r0, #6 + beq _021DBEF2 + ldr r1, [r4] + add r6, r0, #0 + mov r0, #2 + orr r0, r1 + str r0, [r4] +_021DBEF2: + add r0, r5, #0 + bl MOD85_021DBDF4 + cmp r0, #6 + beq _021DBF06 + ldr r1, [r4] + add r6, r0, #0 + mov r0, #1 + orr r0, r1 + str r0, [r4] +_021DBF06: + add r0, r5, #0 + bl MOD85_021DBE2C + cmp r0, #6 + beq _021DBF1A + ldr r1, [r4] + add r6, r0, #0 + mov r0, #4 + orr r0, r1 + str r0, [r4] +_021DBF1A: + add r0, r5, #0 + bl MOD85_021DBE64 + cmp r0, #6 + beq _021DBF2E + ldr r1, [r4] + add r6, r0, #0 + mov r0, #8 + orr r0, r1 + str r0, [r4] +_021DBF2E: + add r0, r5, #0 + bl MOD85_021DBE9C + cmp r0, #6 + beq _021DBF42 + ldr r1, [r4] + add r6, r0, #0 + mov r0, #0x10 + orr r0, r1 + str r0, [r4] +_021DBF42: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021DBED4 + + thumb_func_start MOD85_021DBF48 +MOD85_021DBF48: ; 0x021DBF48 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r1, #0 + str r1, [r5] + bl MOD85_021DBDF4 + add r4, r0, #0 + cmp r4, #6 + beq _021DBF6A + cmp r4, #2 + beq _021DBF62 + bl ErrorHandling +_021DBF62: + ldr r1, [r5] + mov r0, #1 + orr r0, r1 + str r0, [r5] +_021DBF6A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DBF48 + + thumb_func_start MOD85_021DBF70 +MOD85_021DBF70: ; 0x021DBF70 + push {r3, lr} + mov r2, #3 + add r1, r0, #0 + tst r1, r2 + beq _021DBF7E + mov r0, #1 + pop {r3, pc} +_021DBF7E: + mov r1, #0xc + tst r1, r0 + beq _021DBF88 + mov r0, #0 + pop {r3, pc} +_021DBF88: + mov r1, #0x30 + tst r1, r0 + beq _021DBF92 + mov r0, #2 + pop {r3, pc} +_021DBF92: + mov r1, #0xc0 + tst r0, r1 + beq _021DBF9C + add r0, r2, #0 + pop {r3, pc} +_021DBF9C: + bl ErrorHandling + mov r0, #4 + pop {r3, pc} + thumb_func_end MOD85_021DBF70 + + thumb_func_start MOD85_021DBFA4 +MOD85_021DBFA4: ; 0x021DBFA4 + mov r2, #0 + add r1, r2, #0 +_021DBFA8: + add r2, r2, #1 + str r1, [r0, #0x54] + add r0, r0, #4 + cmp r2, #3 + blt _021DBFA8 + bx lr + thumb_func_end MOD85_021DBFA4 + + thumb_func_start MOD85_021DBFB4 +MOD85_021DBFB4: ; 0x021DBFB4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + add r1, r5, #0 +_021DBFBE: + ldr r0, [r1, #0x54] + cmp r0, #0 + beq _021DBFCC + add r4, r4, #1 + add r1, r1, #4 + cmp r4, #3 + blt _021DBFBE +_021DBFCC: + cmp r4, #3 + blt _021DBFD4 + bl ErrorHandling +_021DBFD4: + lsl r0, r4, #2 + add r0, r5, r0 + str r6, [r0, #0x54] + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DBFB4 + + thumb_func_start MOD85_021DBFDC +MOD85_021DBFDC: ; 0x021DBFDC + push {r4, r5, r6} + sub sp, #0xc + ldr r6, _021DC018 ; =0x021DEDC8 + add r4, r0, #0 + ldmia r6!, {r0, r1} + add r5, sp, #0 + add r3, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + mov r2, #0 + str r0, [r5] +_021DBFF2: + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _021DC006 + ldr r0, [r3] + cmp r1, r0 + beq _021DC006 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6} + bx lr +_021DC006: + add r2, r2, #1 + add r4, r4, #4 + add r3, r3, #4 + cmp r2, #3 + blt _021DBFF2 + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6} + bx lr + .align 2, 0 +_021DC018: .word 0x021DEDC8 + thumb_func_end MOD85_021DBFDC + + thumb_func_start MOD85_021DC01C +MOD85_021DC01C: ; 0x021DC01C + push {r3, r4} + ldr r2, [r0, #0x34] + mov r1, #0x18 + ldr r3, _021DC04C ; =0x021DEF04 + mul r1, r2 + mov r4, #0 + add r3, r3, r1 +_021DC02A: + ldr r2, [r0, #0x54] + cmp r2, #0 + beq _021DC03C + ldr r1, [r3] + cmp r2, r1 + beq _021DC03C + mov r0, #0 + pop {r3, r4} + bx lr +_021DC03C: + add r4, r4, #1 + add r0, r0, #4 + add r3, r3, #4 + cmp r4, #3 + blt _021DC02A + mov r0, #1 + pop {r3, r4} + bx lr + .align 2, 0 +_021DC04C: .word 0x021DEF04 + thumb_func_end MOD85_021DC01C + + thumb_func_start MOD85_021DC050 +MOD85_021DC050: ; 0x021DC050 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #3 + str r0, [sp] + mov r0, #2 + lsl r2, r1, #3 + ldr r3, _021DC08C ; =0x021DEE9C + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + add r5, r3, r2 + ldr r2, [r3, r2] + ldr r0, _021DC090 ; =0x0000043C + ldr r3, [r5, #4] + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r4, r0] + mov r1, #1 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020186B4 + ldr r0, _021DC090 ; =0x0000043C + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_0201AC68 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DC08C: .word 0x021DEE9C +_021DC090: .word 0x0000043C + thumb_func_end MOD85_021DC050 + + thumb_func_start MOD85_021DC094 +MOD85_021DC094: ; 0x021DC094 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #3 + str r0, [sp] + mov r0, #2 + lsl r2, r1, #3 + ldr r3, _021DC0D0 ; =0x021DEE9C + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + add r5, r3, r2 + ldr r2, [r3, r2] + ldr r0, _021DC0D4 ; =0x0000043C + ldr r3, [r5, #4] + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r4, r0] + mov r1, #1 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020186B4 + ldr r0, _021DC0D4 ; =0x0000043C + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_0201AC68 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DC0D0: .word 0x021DEE9C +_021DC0D4: .word 0x0000043C + thumb_func_end MOD85_021DC094 + + thumb_func_start MOD85_021DC0D8 +MOD85_021DC0D8: ; 0x021DC0D8 + push {r3, r4, r5, lr} + ldr r4, [r0, #0x44] + ldr r5, [r0, #0x48] + cmp r4, #6 + bne _021DC0E6 + bl ErrorHandling +_021DC0E6: + ldr r3, _021DC104 ; =0x021DFCAC + lsl r2, r4, #2 + mov r1, #0 + ldr r3, [r3, r2] + add r0, r1, #0 + mov r2, #1 +_021DC0F2: + add r4, r5, #0 + tst r4, r2 + beq _021DC0FA + add r0, r0, r3 +_021DC0FA: + add r1, r1, #1 + lsr r5, r5, #1 + cmp r1, #5 + blt _021DC0F2 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DC104: .word 0x021DFCAC + thumb_func_end MOD85_021DC0D8 + + thumb_func_start MOD85_021DC108 +MOD85_021DC108: ; 0x021DC108 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r0, #0 + mov r4, #0 + add r0, sp, #8 + str r4, [r0] + str r4, [r0, #4] + mov r6, #0x11 + lsl r6, r6, #0xe + str r4, [r0, #8] + str r7, [sp, #0x14] + cmp r4, #3 + bge _021DC15A +_021DC122: + mov r5, #0 +_021DC124: + str r6, [sp, #8] + str r4, [sp, #0x1c] + str r5, [sp, #0x18] + add r0, sp, #0x14 + str r0, [sp] + mov r0, #0x8b + str r0, [sp, #4] + ldr r0, _021DC160 ; =0x0000044C + ldr r1, _021DC164 ; =0x021DF938 + ldr r0, [r7, r0] + add r2, sp, #8 + mov r3, #0 + bl FUN_020644E4 + mov r0, #2 + lsl r0, r0, #0x10 + add r5, r5, r0 + mov r0, #0xa + lsl r0, r0, #0x10 + cmp r5, r0 + blt _021DC124 + mov r0, #0xf + lsl r0, r0, #0xe + add r4, r4, #1 + add r6, r6, r0 + cmp r4, #3 + blt _021DC122 +_021DC15A: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DC160: .word 0x0000044C +_021DC164: .word 0x021DF938 + thumb_func_end MOD85_021DC108 + + thumb_func_start MOD85_021DC168 +MOD85_021DC168: ; 0x021DC168 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x1c + str r0, [r2] + add r0, r5, #0 + bl FUN_0206477C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0xc + add r2, sp, #0x1c + mov r3, #1 + bl MOD85_021DEC00 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DC168 + + thumb_func_start MOD85_021DC1C0 +MOD85_021DC1C0: ; 0x021DC1C0 + ldr r3, _021DC1C8 ; =MOD85_021DECA0 + add r1, #0xc + add r0, r1, #0 + bx r3 + .align 2, 0 +_021DC1C8: .word MOD85_021DECA0 + thumb_func_end MOD85_021DC1C0 + + thumb_func_start MOD85_021DC1CC +MOD85_021DC1CC: ; 0x021DC1CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r7, [r5, #8] + str r0, [sp] + ldr r0, [r5] + lsl r6, r7, #2 + add r0, r0, r6 + add r0, #0x90 + ldr r1, [r5, #4] + ldr r0, [r0] + add r0, r1, r0 + mov r1, #0xa + lsl r1, r1, #0x10 + bl _s32_div_f + add r4, r1, #0 + ldr r0, [sp] + add r1, sp, #4 + bl FUN_0206477C + ldr r1, [r5] + mov r0, #1 + add r1, r1, r6 + add r1, #0x9c + lsl r0, r0, #0x10 + ldr r1, [r1] + add r0, r4, r0 + add r0, r0, r1 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + add r1, sp, #4 + bl FUN_02020044 + asr r2, r4, #0x10 + lsr r2, r2, #0xf + add r2, r4, r2 + ldr r0, [r5] + add r1, r7, #0 + asr r2, r2, #0x11 + bl MOD85_021DBD00 + lsl r1, r0, #2 + ldr r0, _021DC244 ; =0x021DF9D8 + ldr r4, [r0, r1] + ldr r0, [r5, #0x10] + bl FUN_020201DC + cmp r4, r0 + beq _021DC240 + ldr r0, [r5, #0x10] + add r1, r4, #0 + bl FUN_02020130 + ldr r0, [r5, #0x10] + mov r1, #0 + bl FUN_02020208 +_021DC240: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC244: .word 0x021DF9D8 + thumb_func_end MOD85_021DC1CC + + thumb_func_start MOD85_021DC248 +MOD85_021DC248: ; 0x021DC248 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DC248 + + thumb_func_start MOD85_021DC24C +MOD85_021DC24C: ; 0x021DC24C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r3, _021DC290 ; =0x021DF628 + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #8 + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r4, #1 + str r0, [r2] + mov r7, #0x8d +_021DC264: + str r5, [sp] + ldr r0, _021DC294 ; =0x0000044C + str r7, [sp, #4] + ldr r0, [r5, r0] + ldr r1, _021DC298 ; =0x021DF94C + add r2, r6, #0 + add r3, r4, #0 + bl FUN_020644E4 + mov r0, #0xa + mul r4, r0 + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #8] + ldr r0, _021DC29C ; =0x000186A0 + cmp r4, r0 + blo _021DC264 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DC290: .word 0x021DF628 +_021DC294: .word 0x0000044C +_021DC298: .word 0x021DF94C +_021DC29C: .word 0x000186A0 + thumb_func_end MOD85_021DC24C + + thumb_func_start MOD85_021DC2A0 +MOD85_021DC2A0: ; 0x021DC2A0 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02064754 + mov r1, #0xa + str r0, [r4, #4] + mul r1, r0 + str r1, [r4, #8] + add r0, r5, #0 + bl FUN_0206475C + str r0, [r4] + add r0, r5, #0 + add r1, sp, #0x1c + bl FUN_0206477C + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + str r3, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + str r3, [sp, #0x14] + str r3, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0xc + add r2, sp, #0x1c + bl MOD85_021DEC00 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DC2A0 + + thumb_func_start MOD85_021DC2F8 +MOD85_021DC2F8: ; 0x021DC2F8 + ldr r3, _021DC300 ; =MOD85_021DECA0 + add r1, #0xc + add r0, r1, #0 + bx r3 + .align 2, 0 +_021DC300: .word MOD85_021DECA0 + thumb_func_end MOD85_021DC2F8 + + thumb_func_start MOD85_021DC304 +MOD85_021DC304: ; 0x021DC304 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r4, [r0, #0x60] + ldr r0, [r5, #4] + cmp r0, #1 + bls _021DC326 + cmp r4, r0 + bhs _021DC326 + ldr r0, [r5, #0x10] + mov r1, #0 + bl FUN_020200A0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DC326: + ldr r0, [r5, #0x10] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [r5, #8] + add r0, r4, #0 + bl _u32_div_f + add r4, r1, #0 + ldr r1, [r5, #4] + add r0, r4, #0 + bl _u32_div_f + add r4, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_020201DC + cmp r4, r0 + beq _021DC35A + ldr r0, [r5, #0x10] + add r1, r4, #0 + bl FUN_02020130 + ldr r0, [r5, #0x10] + bl FUN_02020198 +_021DC35A: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, _021DC37C ; =0x021DFAD8 + lsl r1, r4, #2 + ldr r0, [r0, r1] + ldr r2, [sp] + add r1, sp, #0 + add r0, r2, r0 + str r0, [sp] + ldr r0, [r5, #0x10] + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021DC37C: .word 0x021DFAD8 + thumb_func_end MOD85_021DC304 + + thumb_func_start MOD85_021DC380 +MOD85_021DC380: ; 0x021DC380 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DC380 + + thumb_func_start MOD85_021DC384 +MOD85_021DC384: ; 0x021DC384 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r3, _021DC3C8 ; =0x021DF6F4 + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #8 + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r4, #1 + str r0, [r2] + mov r7, #0x8d +_021DC39C: + str r5, [sp] + ldr r0, _021DC3CC ; =0x0000044C + str r7, [sp, #4] + ldr r0, [r5, r0] + ldr r1, _021DC3D0 ; =0x021DF960 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_020644E4 + mov r0, #0xa + mul r4, r0 + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #8] + ldr r0, _021DC3D4 ; =0x000186A0 + cmp r4, r0 + blo _021DC39C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DC3C8: .word 0x021DF6F4 +_021DC3CC: .word 0x0000044C +_021DC3D0: .word 0x021DF960 +_021DC3D4: .word 0x000186A0 + thumb_func_end MOD85_021DC384 + + thumb_func_start MOD85_021DC3D8 +MOD85_021DC3D8: ; 0x021DC3D8 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02064754 + mov r1, #0xa + str r0, [r4, #4] + mul r1, r0 + str r1, [r4, #8] + add r0, r5, #0 + bl FUN_0206475C + str r0, [r4] + add r0, r5, #0 + add r1, sp, #0x1c + bl FUN_0206477C + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + str r3, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + str r3, [sp, #0x14] + str r3, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0xc + add r2, sp, #0x1c + bl MOD85_021DEC00 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DC3D8 + + thumb_func_start MOD85_021DC430 +MOD85_021DC430: ; 0x021DC430 + ldr r3, _021DC438 ; =MOD85_021DECA0 + add r1, #0xc + add r0, r1, #0 + bx r3 + .align 2, 0 +_021DC438: .word MOD85_021DECA0 + thumb_func_end MOD85_021DC430 + + thumb_func_start MOD85_021DC43C +MOD85_021DC43C: ; 0x021DC43C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r4, [r0, #0x64] + ldr r0, [r5, #4] + cmp r4, r0 + ldr r0, [r5, #0x10] + bhs _021DC45A + mov r1, #0 + bl FUN_020200A0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DC45A: + mov r1, #1 + bl FUN_020200A0 + ldr r1, [r5, #8] + add r0, r4, #0 + bl _u32_div_f + add r4, r1, #0 + ldr r1, [r5, #4] + add r0, r4, #0 + bl _u32_div_f + add r4, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_020201DC + cmp r4, r0 + beq _021DC48C + ldr r0, [r5, #0x10] + add r1, r4, #0 + bl FUN_02020130 + ldr r0, [r5, #0x10] + bl FUN_02020198 +_021DC48C: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, _021DC4AC ; =0x021DFAB0 + lsl r1, r4, #2 + ldr r0, [r0, r1] + ldr r2, [sp] + add r1, sp, #0 + add r0, r2, r0 + str r0, [sp] + ldr r0, [r5, #0x10] + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DC4AC: .word 0x021DFAB0 + thumb_func_end MOD85_021DC43C + + thumb_func_start MOD85_021DC4B0 +MOD85_021DC4B0: ; 0x021DC4B0 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DC4B0 + + thumb_func_start MOD85_021DC4B4 +MOD85_021DC4B4: ; 0x021DC4B4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + ldr r6, _021DC4E0 ; =0x021DF808 + add r5, sp, #8 + add r4, r0, #0 + add r3, r1, #0 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DC4E4 ; =0x021DF974 + str r0, [r5] + str r4, [sp] + mov r0, #0x86 + str r0, [sp, #4] + ldr r0, _021DC4E8 ; =0x0000044C + ldr r0, [r4, r0] + bl FUN_020644E4 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021DC4E0: .word 0x021DF808 +_021DC4E4: .word 0x021DF974 +_021DC4E8: .word 0x0000044C + thumb_func_end MOD85_021DC4B4 + + thumb_func_start MOD85_021DC4EC +MOD85_021DC4EC: ; 0x021DC4EC + push {r4, lr} + add r4, r1, #0 + bl FUN_02064738 + str r4, [r0] + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0x30] + pop {r4, pc} + thumb_func_end MOD85_021DC4EC + + thumb_func_start MOD85_021DC500 +MOD85_021DC500: ; 0x021DC500 + push {r4, lr} + add r4, r1, #0 + bl FUN_02064738 + cmp r4, #1 + ldr r0, [r0, #0x40] + bne _021DC516 + mov r1, #0 + bl FUN_020200A0 + pop {r4, pc} +_021DC516: + mov r1, #1 + bl FUN_020200A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DC500 + + thumb_func_start MOD85_021DC520 +MOD85_021DC520: ; 0x021DC520 + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #8] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DC520 + + thumb_func_start MOD85_021DC52C +MOD85_021DC52C: ; 0x021DC52C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + str r0, [r4, #0x38] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD85_021DC52C + + thumb_func_start MOD85_021DC544 +MOD85_021DC544: ; 0x021DC544 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x40] + cmp r0, #0 + beq _021DC55C + ldr r0, [r4, #0x38] + bl MOD85_021DCB00 + add r4, #0x3c + add r0, r4, #0 + bl MOD85_021DECA0 +_021DC55C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DC544 + + thumb_func_start MOD85_021DC560 +MOD85_021DC560: ; 0x021DC560 + push {r3, r4, r5, lr} + ldr r4, _021DC57C ; =0x021DF9F0 + add r5, r1, #0 +_021DC566: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + ldr r1, [r5, #4] + lsl r1, r1, #2 + ldr r1, [r2, r1] + blx r1 + cmp r0, #1 + beq _021DC566 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DC57C: .word 0x021DF9F0 + thumb_func_end MOD85_021DC560 + + thumb_func_start MOD85_021DC580 +MOD85_021DC580: ; 0x021DC580 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DC580 + + thumb_func_start MOD85_021DC584 +MOD85_021DC584: ; 0x021DC584 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x10] + bl MOD85_021DCA68 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DC584 + + thumb_func_start MOD85_021DC598 +MOD85_021DC598: ; 0x021DC598 + ldr r1, [r0, #0xc] + cmp r1, #2 + bne _021DC5A4 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] +_021DC5A4: + mov r0, #0 + bx lr + thumb_func_end MOD85_021DC598 + + thumb_func_start MOD85_021DC5A8 +MOD85_021DC5A8: ; 0x021DC5A8 + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _021DC5D8 ; =0x021DF820 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r4, #0 + str r0, [r3] + ldr r0, [r4, #0x38] + add r1, #0x3c + bl MOD85_021DCB6C + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021DC5D8: .word 0x021DF820 + thumb_func_end MOD85_021DC5A8 + + thumb_func_start MOD85_021DC5DC +MOD85_021DC5DC: ; 0x021DC5DC + mov r0, #0 + bx lr + thumb_func_end MOD85_021DC5DC + + thumb_func_start MOD85_021DC5E0 +MOD85_021DC5E0: ; 0x021DC5E0 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DC63C ; =0x021DF7E4 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DC640 ; =0x021DF70C + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x40] + bl FUN_02020064 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_02020088 + ldr r0, [r4, #0x40] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_02020208 + ldr r0, _021DC644 ; =0x00000624 + bl FUN_020054C8 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021DC63C: .word 0x021DF7E4 +_021DC640: .word 0x021DF70C +_021DC644: .word 0x00000624 + thumb_func_end MOD85_021DC5E0 + + thumb_func_start MOD85_021DC648 +MOD85_021DC648: ; 0x021DC648 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #0x40] + add r1, sp, #0xc + bl MOD85_021DECBC + ldr r0, [r4, #0x40] + add r1, sp, #0 + bl MOD85_021DECD0 + mov r0, #1 + ldr r1, [sp, #0x10] + lsl r0, r0, #0xe + sub r1, r1, r0 + str r1, [sp, #0x10] + ldr r2, [sp] + ldr r1, _021DC6AC ; =0x000001C7 + sub r2, r2, r1 + str r2, [sp] + ldr r2, [sp, #4] + sub r1, r2, r1 + str r1, [sp, #4] + ldr r1, [r4, #0x30] + add r1, r1, #1 + str r1, [r4, #0x30] + cmp r1, #9 + blo _021DC696 + mov r1, #0x16 + lsr r0, r0, #2 + lsl r1, r1, #0x10 + str r1, [sp, #0x10] + str r0, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [r4, #0x30] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DC696: + ldr r0, [r4, #0x40] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x40] + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_021DC6AC: .word 0x000001C7 + thumb_func_end MOD85_021DC648 + + thumb_func_start MOD85_021DC6B0 +MOD85_021DC6B0: ; 0x021DC6B0 + ldr r1, [r0, #0x30] + add r1, r1, #1 + str r1, [r0, #0x30] + cmp r1, #3 + blo _021DC6C8 + mov r1, #0 + str r1, [r0, #0x30] + mov r1, #1 + str r1, [r0, #8] + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] +_021DC6C8: + mov r0, #0 + bx lr + thumb_func_end MOD85_021DC6B0 + + thumb_func_start MOD85_021DC6CC +MOD85_021DC6CC: ; 0x021DC6CC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x40] + bl FUN_02020198 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x6d + lsl r0, r0, #4 + bl FUN_020054C8 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DC6CC + + thumb_func_start MOD85_021DC6F8 +MOD85_021DC6F8: ; 0x021DC6F8 + ldr r1, [r0, #0x30] + add r1, r1, #1 + str r1, [r0, #0x30] + cmp r1, #4 + blo _021DC710 + mov r1, #0 + str r1, [r0, #0x30] + mov r1, #1 + str r1, [r0, #8] + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] +_021DC710: + mov r0, #0 + bx lr + thumb_func_end MOD85_021DC6F8 + + thumb_func_start MOD85_021DC714 +MOD85_021DC714: ; 0x021DC714 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DC774 ; =0x021DF754 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DC778 ; =0x021DF670 + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r5, r2, #0 + str r0, [r3] + add r3, r4, #0 + ldmia r5!, {r0, r1} + add r3, #0x14 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x40] + bl FUN_02020044 + ldr r0, [r4, #0x40] + add r1, sp, #0xc + bl FUN_02020064 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_02020088 + ldr r0, [r4, #0x40] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r4, #0x40] + bl FUN_02020198 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DC774: .word 0x021DF754 +_021DC778: .word 0x021DF670 + thumb_func_end MOD85_021DC714 + + thumb_func_start MOD85_021DC77C +MOD85_021DC77C: ; 0x021DC77C + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + ldr r5, _021DC7DC ; =0x021DFA0C + add r4, r0, #0 + add r2, sp, #0 + ldmia r5!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + add r6, r4, #0 + add r6, #0x14 + stmia r2!, {r0, r1} + add r5, sp, #0x20 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + ldr r1, [r4, #0x30] + ldr r0, [sp, #0x24] + lsr r1, r1, #1 + lsl r1, r1, #2 + ldr r1, [r3, r1] + add r0, r0, r1 + str r0, [sp, #0x24] + ldr r0, [r4, #0x40] + add r1, r2, #0 + bl FUN_02020044 + ldr r0, [r4, #0x30] + add r0, r0, #1 + str r0, [r4, #0x30] + cmp r0, #0x10 + blo _021DC7D6 + mov r0, #0 + str r0, [r4, #0x30] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DC7D6: + mov r0, #0 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DC7DC: .word 0x021DFA0C + thumb_func_end MOD85_021DC77C + + thumb_func_start MOD85_021DC7E0 +MOD85_021DC7E0: ; 0x021DC7E0 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DC840 ; =0x021DF640 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DC844 ; =0x021DF730 + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r5, r2, #0 + str r0, [r3] + add r3, r4, #0 + ldmia r5!, {r0, r1} + add r3, #0x14 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x40] + bl FUN_02020044 + ldr r0, [r4, #0x40] + add r1, sp, #0xc + bl FUN_02020064 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_02020088 + ldr r0, [r4, #0x40] + mov r1, #4 + bl FUN_02020130 + ldr r0, [r4, #0x40] + bl FUN_02020198 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DC840: .word 0x021DF640 +_021DC844: .word 0x021DF730 + thumb_func_end MOD85_021DC7E0 + + thumb_func_start MOD85_021DC848 +MOD85_021DC848: ; 0x021DC848 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #0x40] + add r1, sp, #0xc + bl MOD85_021DECBC + ldr r0, [r4, #0x40] + add r1, sp, #0 + bl MOD85_021DECD0 + mov r0, #1 + ldr r1, [sp, #0x10] + lsl r0, r0, #0xe + add r1, r1, r0 + str r1, [sp, #0x10] + ldr r2, [sp] + ldr r1, _021DC8B0 ; =0x000001C7 + add r2, r2, r1 + str r2, [sp] + ldr r2, [sp, #4] + add r1, r2, r1 + str r1, [sp, #4] + ldr r1, [r4, #0x30] + add r1, r1, #1 + str r1, [r4, #0x30] + cmp r1, #0xa + blo _021DC89A + mov r1, #7 + lsr r0, r0, #2 + lsl r1, r1, #0x12 + str r1, [sp, #0x10] + str r0, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [r4, #0x30] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021DC89A: + ldr r0, [r4, #0x40] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x40] + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_021DC8B0: .word 0x000001C7 + thumb_func_end MOD85_021DC848 + + thumb_func_start MOD85_021DC8B4 +MOD85_021DC8B4: ; 0x021DC8B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + ldr r3, _021DC934 ; =0x021DF6AC + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x18 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _021DC938 ; =0x021DF61C + str r0, [r2] + add r2, sp, #0xc + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r5, sp, #0 + mov r7, #0 + str r7, [r5] + str r0, [r2] + add r3, r6, #0 + str r7, [r5, #4] + add r2, r4, #0 + ldmia r3!, {r0, r1} + str r7, [r5, #8] + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r2, r4, #0 + ldmia r5!, {r0, r1} + add r2, #0x20 + stmia r2!, {r0, r1} + ldr r0, [r5] + add r1, r6, #0 + str r0, [r2] + str r7, [r4, #0x30] + str r7, [r4, #0x34] + str r7, [r4, #0x2c] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #0x40] + bl FUN_02020044 + ldr r0, [r4, #0x40] + add r1, sp, #0x18 + bl FUN_02020064 + ldr r0, [r4, #0x40] + add r1, r7, #0 + bl FUN_02020088 + ldr r0, [r4, #0x40] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #0x40] + bl FUN_02020198 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DC934: .word 0x021DF6AC +_021DC938: .word 0x021DF61C + thumb_func_end MOD85_021DC8B4 + + thumb_func_start MOD85_021DC93C +MOD85_021DC93C: ; 0x021DC93C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + ldr r3, _021DC9D8 ; =0x021DFA2C + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x40 + add r6, r2, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _021DC9DC ; =0x021DFA4C + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + add r5, r2, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _021DC9E0 ; =0x021DFA6C + add r2, sp, #0 + add r7, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r1, [r4, #0x34] + ldr r0, [r4, #0x2c] + lsl r1, r1, #2 + ldr r1, [r6, r1] + add r0, r0, r1 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x30] + add r2, r0, #1 + str r2, [r4, #0x30] + ldr r1, [r4, #0x34] + lsl r0, r1, #2 + ldr r0, [r7, r0] + cmp r2, r0 + blo _021DC9BC + add r0, r1, #1 + str r0, [r4, #0x34] + cmp r0, #8 + blt _021DC9B8 + mov r0, #0 + str r0, [r4, #0x34] +_021DC9B8: + mov r0, #0 + str r0, [r4, #0x30] +_021DC9BC: + add r1, r4, #0 + ldr r0, [r4, #0x40] + add r1, #0x14 + bl FUN_02020044 + ldr r1, [r4, #0x2c] + ldr r0, [r4, #0x40] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020088 + mov r0, #0 + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC9D8: .word 0x021DFA2C +_021DC9DC: .word 0x021DFA4C +_021DC9E0: .word 0x021DFA6C + thumb_func_end MOD85_021DC93C + + thumb_func_start MOD85_021DC9E4 +MOD85_021DC9E4: ; 0x021DC9E4 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + ldr r3, _021DCA60 ; =0x021DF5F8 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x18 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DCA64 ; =0x021DF658 + str r0, [r2] + add r2, sp, #0xc + add r3, r2, #0 + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5] + add r5, r4, #0 + str r0, [r2] + add r2, sp, #0 + mov r0, #0 + str r0, [r2] + str r0, [r2, #4] + add r6, r3, #0 + str r0, [r2, #8] + ldmia r6!, {r0, r1} + add r5, #0x14 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + add r5, r4, #0 + ldmia r2!, {r0, r1} + add r5, #0x20 + stmia r5!, {r0, r1} + ldr r0, [r2] + add r1, r3, #0 + str r0, [r5] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #0x40] + bl FUN_02020044 + ldr r0, [r4, #0x40] + add r1, sp, #0x18 + bl FUN_02020064 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_02020088 + ldr r0, [r4, #0x40] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #0x40] + bl FUN_02020198 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + nop +_021DCA60: .word 0x021DF5F8 +_021DCA64: .word 0x021DF658 + thumb_func_end MOD85_021DC9E4 + + thumb_func_start MOD85_021DCA68 +MOD85_021DCA68: ; 0x021DCA68 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + ldr r4, [r6, #0x38] + cmp r5, #5 + blt _021DCA78 + bl ErrorHandling +_021DCA78: + mov r1, #2 + mov r2, #0x45 + ldr r7, _021DCAF0 ; =0x021DFB30 + lsl r3, r5, #4 + str r1, [sp] + lsl r2, r2, #4 + ldr r0, [r4, r2] + sub r2, #0x18 + add r5, r7, r3 + ldr r2, [r4, r2] + ldr r3, [r7, r3] + bl MOD85_021DE840 + mov r1, #2 + mov r2, #0x45 + str r1, [sp] + lsl r2, r2, #4 + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + ldr r3, [r5, #4] + bl MOD85_021DE910 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + ldr r2, [r5, #8] + mov r3, #2 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + ldr r2, [r5, #0xc] + mov r3, #2 + bl MOD85_021DEA4C + ldr r0, _021DCAF4 ; =MOD85_021DCB18 + ldr r2, _021DCAF8 ; =0x00000101 + add r1, r6, #0 + bl FUN_0200CA60 + cmp r0, #0 + bne _021DCADC + bl ErrorHandling +_021DCADC: + ldr r0, _021DCAFC ; =MOD85_021DCB44 + ldr r2, _021DCAF8 ; =0x00000101 + add r1, r6, #0 + bl FUN_0200CA98 + cmp r0, #0 + bne _021DCAEE + bl ErrorHandling +_021DCAEE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCAF0: .word 0x021DFB30 +_021DCAF4: .word MOD85_021DCB18 +_021DCAF8: .word 0x00000101 +_021DCAFC: .word MOD85_021DCB44 + thumb_func_end MOD85_021DCA68 + + thumb_func_start MOD85_021DCB00 +MOD85_021DCB00: ; 0x021DCB00 + push {r3, lr} + mov r1, #2 + mov r2, #0x45 + str r1, [sp] + lsl r2, r2, #4 + ldr r0, [r0, r2] + add r2, r1, #0 + add r3, r1, #0 + bl MOD85_021DEAB4 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DCB00 + + thumb_func_start MOD85_021DCB18 +MOD85_021DCB18: ; 0x021DCB18 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + mov r0, #0x45 + ldr r4, [r5, #0x38] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD85_021DE97C + mov r0, #1 + str r0, [r5, #0xc] + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DCB18 + + thumb_func_start MOD85_021DCB44 +MOD85_021DCB44: ; 0x021DCB44 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x38] + cmp r0, #1 + bne _021DCB68 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #2 + bl MOD85_021DE9B0 + mov r0, #2 + str r0, [r4, #0xc] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DCB68: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DCB44 + + thumb_func_start MOD85_021DCB6C +MOD85_021DCB6C: ; 0x021DCB6C + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + add r4, r1, #0 + add r1, sp, #0x28 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r6, _021DCBDC ; =0x021DF85C + str r0, [r1, #8] + ldmia r6!, {r0, r1} + add r3, sp, #0x1c + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r4, #0 + str r0, [r3] + mov r0, #1 + str r0, [sp] + mov r3, #2 + str r3, [sp, #4] + str r3, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + str r3, [sp, #0x14] + mov r0, #7 + str r0, [sp, #0x18] + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD85_021DEC00 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020200EC + ldr r0, [r4, #4] + add r1, sp, #0x28 + bl FUN_02020054 + ldr r0, [r4, #4] + add r1, sp, #0x1c + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #4] + bl FUN_02020088 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200BC + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DCBDC: .word 0x021DF85C + thumb_func_end MOD85_021DCB6C + + thumb_func_start MOD85_021DCBE0 +MOD85_021DCBE0: ; 0x021DCBE0 + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _021DCC0C ; =0x021DF6E8 + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #8 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DCC10 ; =0x021DF8AC + str r0, [r4] + str r3, [sp] + mov r0, #0x87 + str r0, [sp, #4] + ldr r0, _021DCC14 ; =0x0000044C + ldr r0, [r3, r0] + mov r3, #0 + bl FUN_020644E4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_021DCC0C: .word 0x021DF6E8 +_021DCC10: .word 0x021DF8AC +_021DCC14: .word 0x0000044C + thumb_func_end MOD85_021DCBE0 + + thumb_func_start MOD85_021DCC18 +MOD85_021DCC18: ; 0x021DCC18 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + str r0, [r4, #0x10] + add r0, r4, #0 + bl MOD85_021DCD50 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021DCC18 + + thumb_func_start MOD85_021DCC2C +MOD85_021DCC2C: ; 0x021DCC2C + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021DCC54 + mov r1, #3 + str r1, [sp] + mov r0, #0x45 + ldr r2, [r4, #0x10] + lsl r0, r0, #4 + ldr r0, [r2, r0] + add r2, r1, #0 + add r3, r1, #0 + bl MOD85_021DEAB4 + add r4, #0x14 + add r0, r4, #0 + bl MOD85_021DECA0 +_021DCC54: + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD85_021DCC2C + + thumb_func_start MOD85_021DCC58 +MOD85_021DCC58: ; 0x021DCC58 + push {r4, lr} + sub sp, #0x28 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021DCCF4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DCC70: ; jump table + .short _021DCC78 - _021DCC70 - 2 ; case 0 + .short _021DCCBA - _021DCC70 - 2 ; case 1 + .short _021DCCD2 - _021DCC70 - 2 ; case 2 + .short _021DCCF4 - _021DCC70 - 2 ; case 3 +_021DCC78: + ldr r1, [r4, #0xc] + cmp r1, #2 + bne _021DCCF4 + add r1, sp, #0x1c + bl FUN_0206477C + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #5 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4, #0x10] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0x14 + add r2, sp, #0x1c + bl MOD85_021DEC00 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021DCCBA: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0xf + blo _021DCCF4 + ldr r0, [r4] + add sp, #0x28 + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + str r0, [r4, #4] + pop {r4, pc} +_021DCCD2: + mov r1, #3 + str r1, [sp] + mov r0, #0x45 + ldr r2, [r4, #0x10] + lsl r0, r0, #4 + ldr r0, [r2, r0] + add r2, r1, #0 + add r3, r1, #0 + bl MOD85_021DEAB4 + add r0, r4, #0 + add r0, #0x14 + bl MOD85_021DECA0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021DCCF4: + add sp, #0x28 + pop {r4, pc} + thumb_func_end MOD85_021DCC58 + + thumb_func_start MOD85_021DCCF8 +MOD85_021DCCF8: ; 0x021DCCF8 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DCCF8 + + thumb_func_start MOD85_021DCCFC +MOD85_021DCCFC: ; 0x021DCCFC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + mov r0, #0x45 + ldr r4, [r5, #0x10] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD85_021DE97C + mov r0, #1 + str r0, [r5, #0xc] + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DCCFC + + thumb_func_start MOD85_021DCD28 +MOD85_021DCD28: ; 0x021DCD28 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + cmp r0, #1 + bne _021DCD4C + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #3 + bl MOD85_021DE9B0 + mov r0, #2 + str r0, [r4, #0xc] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DCD4C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DCD28 + + thumb_func_start MOD85_021DCD50 +MOD85_021DCD50: ; 0x021DCD50 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r2, #0x45 + ldr r4, [r5, #0x10] + mov r0, #3 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x2c + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #3 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x2f + bl MOD85_021DE910 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x2d + mov r3, #3 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x2e + mov r3, #3 + bl MOD85_021DEA4C + ldr r0, _021DCDCC ; =MOD85_021DCCFC + ldr r2, _021DCDD0 ; =0x00000101 + add r1, r5, #0 + bl FUN_0200CA60 + cmp r0, #0 + bne _021DCDB8 + bl ErrorHandling +_021DCDB8: + ldr r0, _021DCDD4 ; =MOD85_021DCD28 + ldr r2, _021DCDD0 ; =0x00000101 + add r1, r5, #0 + bl FUN_0200CA98 + cmp r0, #0 + bne _021DCDCA + bl ErrorHandling +_021DCDCA: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DCDCC: .word MOD85_021DCCFC +_021DCDD0: .word 0x00000101 +_021DCDD4: .word MOD85_021DCD28 + thumb_func_end MOD85_021DCD50 + + thumb_func_start MOD85_021DCDD8 +MOD85_021DCDD8: ; 0x021DCDD8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + mov r0, #0x45 + ldr r4, [r5, #0x20] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD85_021DE97C + mov r0, #1 + str r0, [r5, #0x10] + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DCDD8 + + thumb_func_start MOD85_021DCE04 +MOD85_021DCE04: ; 0x021DCE04 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x20] + cmp r0, #1 + bne _021DCE28 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #4 + bl MOD85_021DE9B0 + mov r0, #2 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DCE28: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DCE04 + + thumb_func_start MOD85_021DCE2C +MOD85_021DCE2C: ; 0x021DCE2C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x18] + mov r2, #0x45 + lsl r3, r0, #4 + ldr r7, _021DCEB0 ; =0x021DFB00 + ldr r4, [r6, #0x20] + mov r0, #4 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + add r5, r7, r3 + ldr r2, [r4, r2] + ldr r3, [r7, r3] + mov r1, #2 + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #4 + str r0, [sp] + lsl r2, r2, #4 + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + ldr r3, [r5, #4] + mov r1, #2 + bl MOD85_021DE910 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + ldr r2, [r5, #8] + mov r3, #4 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + ldr r2, [r5, #0xc] + mov r3, #4 + bl MOD85_021DEA4C + ldr r0, _021DCEB4 ; =MOD85_021DCDD8 + ldr r2, _021DCEB8 ; =0x00000101 + add r1, r6, #0 + bl FUN_0200CA60 + cmp r0, #0 + bne _021DCE9C + bl ErrorHandling +_021DCE9C: + ldr r0, _021DCEBC ; =MOD85_021DCE04 + ldr r2, _021DCEB8 ; =0x00000101 + add r1, r6, #0 + bl FUN_0200CA98 + cmp r0, #0 + bne _021DCEAE + bl ErrorHandling +_021DCEAE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCEB0: .word 0x021DFB00 +_021DCEB4: .word MOD85_021DCDD8 +_021DCEB8: .word 0x00000101 +_021DCEBC: .word MOD85_021DCE04 + thumb_func_end MOD85_021DCE2C + + thumb_func_start MOD85_021DCEC0 +MOD85_021DCEC0: ; 0x021DCEC0 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + ldr r6, _021DCEEC ; =0x021DF838 + add r5, sp, #8 + add r4, r0, #0 + add r3, r1, #0 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DCEF0 ; =0x021DF8C0 + str r0, [r5] + str r4, [sp] + mov r0, #0x89 + str r0, [sp, #4] + ldr r0, _021DCEF4 ; =0x0000044C + ldr r0, [r4, r0] + bl FUN_020644E4 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021DCEEC: .word 0x021DF838 +_021DCEF0: .word 0x021DF8C0 +_021DCEF4: .word 0x0000044C + thumb_func_end MOD85_021DCEC0 + + thumb_func_start MOD85_021DCEF8 +MOD85_021DCEF8: ; 0x021DCEF8 + push {r4, lr} + add r4, r1, #0 + bl FUN_02064738 + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x14] + pop {r4, pc} + thumb_func_end MOD85_021DCEF8 + + thumb_func_start MOD85_021DCF0C +MOD85_021DCF0C: ; 0x021DCF0C + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #0xc] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DCF0C + + thumb_func_start MOD85_021DCF18 +MOD85_021DCF18: ; 0x021DCF18 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + str r0, [r4, #0x20] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD85_021DCE2C + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DCF18 + + thumb_func_start MOD85_021DCF38 +MOD85_021DCF38: ; 0x021DCF38 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _021DCF60 + mov r1, #4 + str r1, [sp] + mov r0, #0x45 + ldr r2, [r4, #0x20] + lsl r0, r0, #4 + ldr r0, [r2, r0] + add r2, r1, #0 + add r3, r1, #0 + bl MOD85_021DEAB4 + add r4, #0x24 + add r0, r4, #0 + bl MOD85_021DECA0 +_021DCF60: + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD85_021DCF38 + + thumb_func_start MOD85_021DCF64 +MOD85_021DCF64: ; 0x021DCF64 + push {r3, r4, r5, lr} + ldr r4, _021DCF80 ; =0x021DFA8C + add r5, r1, #0 +_021DCF6A: + ldr r1, [r5, #4] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + ldr r1, [r5, #8] + lsl r1, r1, #2 + ldr r1, [r2, r1] + blx r1 + cmp r0, #1 + beq _021DCF6A + pop {r3, r4, r5, pc} + .align 2, 0 +_021DCF80: .word 0x021DFA8C + thumb_func_end MOD85_021DCF64 + + thumb_func_start MOD85_021DCF84 +MOD85_021DCF84: ; 0x021DCF84 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DCF84 + + thumb_func_start MOD85_021DCF88 +MOD85_021DCF88: ; 0x021DCF88 + push {r4, r5, lr} + sub sp, #0x34 + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #2 + bne _021DCFFA + ldr r5, _021DD000 ; =0x021DF6D0 + add r3, sp, #0x28 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, sp, #0x1c + str r0, [r3] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + mov r0, #1 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #6 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4, #0x20] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0x24 + bl MOD85_021DEC00 + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_020200EC + ldr r0, [r4, #0x28] + add r1, sp, #0x1c + bl FUN_02020054 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_02020088 + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] +_021DCFFA: + mov r0, #0 + add sp, #0x34 + pop {r4, r5, pc} + .align 2, 0 +_021DD000: .word 0x021DF6D0 + thumb_func_end MOD85_021DCF88 + + thumb_func_start MOD85_021DD004 +MOD85_021DD004: ; 0x021DD004 + mov r0, #0 + bx lr + thumb_func_end MOD85_021DD004 + + thumb_func_start MOD85_021DD008 +MOD85_021DD008: ; 0x021DD008 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD05C ; =0x021DF7FC + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD060 ; =0x021DF7F0 + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200D8 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD05C: .word 0x021DF7FC +_021DD060: .word 0x021DF7F0 + thumb_func_end MOD85_021DD008 + + thumb_func_start MOD85_021DD064 +MOD85_021DD064: ; 0x021DD064 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl MOD85_021DECBC + ldr r0, [r4, #0x28] + add r1, sp, #0 + bl MOD85_021DECD0 + ldr r0, [sp] + add r0, #0xc0 + str r0, [sp] + ldr r0, [sp, #4] + add r0, #0xc0 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #0x10 + blt _021DD0AE + mov r0, #5 + lsl r0, r0, #0x12 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0x23 + bl FUN_02005578 +_021DD0AE: + ldr r0, [r4, #0x28] + add r1, sp, #0 + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + mov r0, #0 + add sp, #0x18 + pop {r4, pc} + thumb_func_end MOD85_021DD064 + + thumb_func_start MOD85_021DD0C4 +MOD85_021DD0C4: ; 0x021DD0C4 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r0, [r4, #0x28] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #9 + blt _021DD0EA + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #1 + str r0, [r4, #0xc] +_021DD0EA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DD0C4 + + thumb_func_start MOD85_021DD0F0 +MOD85_021DD0F0: ; 0x021DD0F0 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD14C ; =0x021DF7D8 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD150 ; =0x021DF7CC + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200D8 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200BC + ldr r0, _021DD154 ; =0x000006D1 + bl FUN_020054C8 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021DD14C: .word 0x021DF7D8 +_021DD150: .word 0x021DF7CC +_021DD154: .word 0x000006D1 + thumb_func_end MOD85_021DD0F0 + + thumb_func_start MOD85_021DD158 +MOD85_021DD158: ; 0x021DD158 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl MOD85_021DECBC + ldr r0, [r4, #0x28] + add r1, sp, #0 + bl MOD85_021DECD0 + mov r0, #6 + ldr r1, [sp] + lsl r0, r0, #6 + sub r1, r1, r0 + str r1, [sp] + ldr r1, [sp, #4] + sub r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #8 + blt _021DD1A4 + mov r0, #0x1d + lsl r0, r0, #0x10 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #1 + str r0, [r4, #0xc] +_021DD1A4: + ldr r0, [r4, #0x28] + add r1, sp, #0 + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + mov r0, #0 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DD158 + + thumb_func_start MOD85_021DD1BC +MOD85_021DD1BC: ; 0x021DD1BC + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD21C ; =0x021DF7B4 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD220 ; =0x021DF7A8 + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200D8 + ldr r0, [r4, #0x28] + bl FUN_02020198 + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021DD21C: .word 0x021DF7B4 +_021DD220: .word 0x021DF7A8 + thumb_func_end MOD85_021DD1BC + + thumb_func_start MOD85_021DD224 +MOD85_021DD224: ; 0x021DD224 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD290 ; =0x021DF760 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD294 ; =0x021DF6DC + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_020200BC + mov r1, #2 + ldr r0, [r4, #0x28] + lsl r1, r1, #0xa + bl FUN_020200D8 + ldr r0, [r4, #0x28] + bl FUN_020201DC + cmp r0, #2 + beq _021DD27E + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #0x28] + bl FUN_02020198 +_021DD27E: + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021DD290: .word 0x021DF760 +_021DD294: .word 0x021DF6DC + thumb_func_end MOD85_021DD224 + + thumb_func_start MOD85_021DD298 +MOD85_021DD298: ; 0x021DD298 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD2F8 ; =0x021DF67C + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD2FC ; =0x021DF850 + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #5 + bl FUN_02020130 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + ldr r0, [r4, #0x28] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r4, #0x28] + bl FUN_02020198 + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD2F8: .word 0x021DF67C +_021DD2FC: .word 0x021DF850 + thumb_func_end MOD85_021DD298 + + thumb_func_start MOD85_021DD300 +MOD85_021DD300: ; 0x021DD300 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD360 ; =0x021DF688 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD364 ; =0x021DF73C + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #4 + bl FUN_02020130 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + ldr r0, [r4, #0x28] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r4, #0x28] + bl FUN_02020198 + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD360: .word 0x021DF688 +_021DD364: .word 0x021DF73C + thumb_func_end MOD85_021DD300 + + thumb_func_start MOD85_021DD368 +MOD85_021DD368: ; 0x021DD368 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD3C8 ; =0x021DF718 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD3CC ; =0x021DF724 + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + ldr r0, [r4, #0x28] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r4, #0x28] + bl FUN_02020198 + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD3C8: .word 0x021DF718 +_021DD3CC: .word 0x021DF724 + thumb_func_end MOD85_021DD368 + + thumb_func_start MOD85_021DD3D0 +MOD85_021DD3D0: ; 0x021DD3D0 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _021DD434 ; =0x021DF778 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021DD438 ; =0x021DF604 + str r0, [r2] + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x28] + bl FUN_02020064 + ldr r0, [r4, #0x28] + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020200BC + mov r1, #1 + ldr r0, [r4, #0x28] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r4, #0x28] + mov r1, #5 + bl FUN_02020130 + ldr r0, [r4, #0x28] + bl FUN_02020198 + mov r0, #0 + str r0, [r4, #0x14] + mov r1, #1 + str r1, [r4, #0xc] + ldr r1, [r4, #8] + add r1, r1, #1 + str r1, [r4, #8] + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021DD434: .word 0x021DF778 +_021DD438: .word 0x021DF604 + thumb_func_end MOD85_021DD3D0 + + thumb_func_start MOD85_021DD43C +MOD85_021DD43C: ; 0x021DD43C + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r0, [r4, #0x28] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, [r4, #0x28] + bl FUN_02020388 + cmp r0, #0 + bne _021DD468 + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #8 + blt _021DD468 + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x28] + bl FUN_02020198 +_021DD468: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD85_021DD43C + + thumb_func_start MOD85_021DD46C +MOD85_021DD46C: ; 0x021DD46C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + mov r0, #0x45 + ldr r4, [r5, #0x2c] + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD85_021DE8A8 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD85_021DE97C + mov r0, #1 + str r0, [r5, #0x10] + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + thumb_func_end MOD85_021DD46C + + thumb_func_start MOD85_021DD498 +MOD85_021DD498: ; 0x021DD498 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #0x2c] + add r5, r0, #0 + mov r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DD4C0 + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #5 + bl MOD85_021DE9B0 + mov r0, #2 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DD4C0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DD498 + + thumb_func_start MOD85_021DD4C4 +MOD85_021DD4C4: ; 0x021DD4C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r2, #0x45 + ldr r4, [r5, #0x2c] + mov r0, #5 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x38 + bl MOD85_021DE840 + mov r2, #0x45 + mov r0, #5 + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #2 + mov r3, #0x3b + bl MOD85_021DE910 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x39 + mov r3, #5 + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x3a + mov r3, #5 + bl MOD85_021DEA4C + ldr r0, _021DD540 ; =MOD85_021DD46C + ldr r2, _021DD544 ; =0x00000101 + add r1, r5, #0 + bl FUN_0200CA60 + cmp r0, #0 + bne _021DD52C + bl ErrorHandling +_021DD52C: + ldr r0, _021DD548 ; =MOD85_021DD498 + ldr r2, _021DD544 ; =0x00000101 + add r1, r5, #0 + bl FUN_0200CA98 + cmp r0, #0 + bne _021DD53E + bl ErrorHandling +_021DD53E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD540: .word MOD85_021DD46C +_021DD544: .word 0x00000101 +_021DD548: .word MOD85_021DD498 + thumb_func_end MOD85_021DD4C4 + + thumb_func_start MOD85_021DD54C +MOD85_021DD54C: ; 0x021DD54C + push {lr} + sub sp, #0x14 + add r2, sp, #8 + mov r3, #0 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + str r0, [sp] + mov r1, #0x88 + str r1, [sp, #4] + ldr r1, _021DD570 ; =0x0000044C + ldr r0, [r0, r1] + ldr r1, _021DD574 ; =0x021DF8D4 + bl FUN_020644E4 + add sp, #0x14 + pop {pc} + nop +_021DD570: .word 0x0000044C +_021DD574: .word 0x021DF8D4 + thumb_func_end MOD85_021DD54C + + thumb_func_start MOD85_021DD578 +MOD85_021DD578: ; 0x021DD578 + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DD578 + + thumb_func_start MOD85_021DD584 +MOD85_021DD584: ; 0x021DD584 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD85_021DD4C4 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021DD584 + + thumb_func_start MOD85_021DD598 +MOD85_021DD598: ; 0x021DD598 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _021DD5CE + mov r1, #5 + str r1, [sp] + mov r0, #0x45 + ldr r2, [r4, #0x2c] + lsl r0, r0, #4 + ldr r0, [r2, r0] + add r2, r1, #0 + add r3, r1, #0 + bl MOD85_021DEAB4 + add r0, r4, #0 + add r0, #0x30 + bl MOD85_021DECA0 + ldr r0, [r4, #0x40] + cmp r0, #0 + beq _021DD5CE + add r4, #0x3c + add r0, r4, #0 + bl MOD85_021DECA0 +_021DD5CE: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD85_021DD598 + + thumb_func_start MOD85_021DD5D4 +MOD85_021DD5D4: ; 0x021DD5D4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r1, sp, #0xc + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0206477C + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + add r0, r0, r6 + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, sp, #0xc + bl FUN_0206476C + ldr r0, [sp, #0x38] + cmp r0, #0 + bne _021DD60A + ldr r0, [sp, #0xc] + add r0, r5, r0 + str r0, [sp] + b _021DD610 +_021DD60A: + ldr r0, [sp, #0xc] + sub r0, r5, r0 + str r0, [sp] +_021DD610: + ldr r0, [sp, #0x10] + add r1, sp, #0 + sub r0, r4, r0 + str r0, [sp, #4] + ldr r0, [sp, #0x34] + bl FUN_02020044 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DD5D4 + + thumb_func_start MOD85_021DD624 +MOD85_021DD624: ; 0x021DD624 + push {r4, r5, r6, lr} + sub sp, #0x40 + add r4, r1, #0 + ldr r1, [r4] + add r6, r0, #0 + cmp r1, #0xa + bls _021DD634 + b _021DD96C +_021DD634: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DD640: ; jump table + .short _021DD656 - _021DD640 - 2 ; case 0 + .short _021DD6C8 - _021DD640 - 2 ; case 1 + .short _021DD750 - _021DD640 - 2 ; case 2 + .short _021DD764 - _021DD640 - 2 ; case 3 + .short _021DD796 - _021DD640 - 2 ; case 4 + .short _021DD7C8 - _021DD640 - 2 ; case 5 + .short _021DD7FA - _021DD640 - 2 ; case 6 + .short _021DD842 - _021DD640 - 2 ; case 7 + .short _021DD858 - _021DD640 - 2 ; case 8 + .short _021DD8A4 - _021DD640 - 2 ; case 9 + .short _021DD904 - _021DD640 - 2 ; case 10 +_021DD656: + ldr r0, [r4, #0x10] + cmp r0, #2 + beq _021DD65E + b _021DD96C +_021DD65E: + ldr r5, _021DD970 ; =0x021DF82C + add r3, sp, #0x34 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + mov r0, #1 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #4 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4, #0x2c] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0x30 + bl MOD85_021DEC00 + mov r0, #1 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #4 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4, #0x2c] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0x3c + add r2, sp, #0x34 + bl MOD85_021DEC00 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_02020100 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021DD6C8: + add r0, r6, #0 + add r1, sp, #0x28 + mov r5, #0 + bl FUN_0206477C + mov r1, #2 + ldr r2, [sp, #0x2c] + lsl r1, r1, #0xe + ldr r0, [sp, #0x28] + add r2, r2, r1 + add r0, r0, r1 + str r2, [sp, #0x2c] + lsl r2, r1, #3 + str r0, [sp, #0x28] + cmp r0, r2 + blt _021DD6EE + add r0, r2, #0 + str r0, [sp, #0x28] + add r5, r5, #1 +_021DD6EE: + mov r0, #0xe + ldr r1, [sp, #0x2c] + lsl r0, r0, #0xe + cmp r1, r0 + blt _021DD700 + mov r0, #1 + lsl r0, r0, #0x12 + str r0, [sp, #0x2c] + add r5, r5, #1 +_021DD700: + add r0, r6, #0 + add r1, sp, #0x28 + bl FUN_0206476C + mov r0, #2 + ldr r1, [sp, #0x28] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x1c] + mov r0, #0x69 + ldr r1, [sp, #0x2c] + lsl r0, r0, #0xe + sub r0, r0, r1 + str r0, [sp, #0x20] + ldr r0, [r4, #0x34] + add r1, sp, #0x1c + bl FUN_02020044 + mov r0, #0x12 + ldr r1, [sp, #0x28] + lsl r0, r0, #0x10 + sub r0, r0, r1 + str r0, [sp, #0x1c] + mov r0, #0x69 + ldr r1, [sp, #0x2c] + lsl r0, r0, #0xe + sub r0, r0, r1 + str r0, [sp, #0x20] + ldr r0, [r4, #0x40] + add r1, sp, #0x1c + bl FUN_02020044 + cmp r5, #2 + beq _021DD746 + b _021DD96C +_021DD746: + ldr r0, [r4] + add sp, #0x40 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD750: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #8 + blo _021DD84C + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021DD764: + ldr r3, _021DD974 ; =0xFFFFC000 + mov r2, #0x69 + str r3, [sp] + ldr r0, [r4, #0x34] + lsl r1, r3, #3 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r6, #0 + lsl r2, r2, #0xe + asr r3, r3, #1 + bl MOD85_021DD5D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #4 + blo _021DD84C + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add sp, #0x40 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD796: + mov r3, #1 + lsl r3, r3, #0xe + str r3, [sp] + ldr r1, [r4, #0x34] + mov r2, #0x69 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r1, _021DD978 ; =0xFFFE0000 + lsl r2, r2, #0xe + lsr r3, r3, #1 + bl MOD85_021DD5D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #4 + blo _021DD84C + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add sp, #0x40 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD7C8: + ldr r3, _021DD974 ; =0xFFFFC000 + mov r2, #0x69 + str r3, [sp] + ldr r1, [r4, #0x40] + lsl r2, r2, #0xe + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r1, #0x12 + lsl r1, r1, #0x10 + asr r3, r3, #1 + bl MOD85_021DD5D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #4 + blo _021DD84C + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add sp, #0x40 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD7FA: + mov r1, #1 + lsl r1, r1, #0xe + str r1, [sp] + ldr r1, [r4, #0x40] + mov r2, #0x69 + str r1, [sp, #4] + mov r3, #1 + mov r1, #0x12 + str r3, [sp, #8] + lsl r1, r1, #0x10 + lsl r2, r2, #0xe + lsl r3, r3, #0xd + bl MOD85_021DD5D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #4 + blo _021DD84C + mov r1, #0 + str r1, [r4, #8] + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #2 + bhs _021DD836 + mov r0, #3 + add sp, #0x40 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD836: + str r1, [r4, #0xc] + ldr r0, [r4] + add sp, #0x40 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD842: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #8 + bhs _021DD84E +_021DD84C: + b _021DD96C +_021DD84E: + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021DD858: + ldr r3, _021DD974 ; =0xFFFFC000 + mov r2, #0x69 + str r3, [sp] + ldr r0, [r4, #0x34] + lsl r1, r3, #3 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r6, #0 + lsl r2, r2, #0xe + asr r3, r3, #1 + bl MOD85_021DD5D4 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #0x40] + mov r1, #0x12 + str r0, [sp, #4] + mov r0, #1 + mov r2, #0x69 + str r0, [sp, #8] + add r0, r6, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0xe + bl MOD85_021DD5D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #4 + blo _021DD96C + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add sp, #0x40 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD8A4: + mov r3, #1 + lsl r3, r3, #0xe + str r3, [sp] + ldr r1, [r4, #0x34] + mov r2, #0x69 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r1, _021DD978 ; =0xFFFE0000 + lsl r2, r2, #0xe + lsr r3, r3, #1 + bl MOD85_021DD5D4 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #0x40] + mov r1, #0x12 + str r0, [sp, #4] + mov r0, #1 + mov r2, #0x69 + str r0, [sp, #8] + add r0, r6, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0xe + bl MOD85_021DD5D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #4 + blo _021DD96C + mov r1, #0 + str r1, [r4, #8] + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #2 + bhs _021DD8F8 + mov r0, #8 + add sp, #0x40 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD8F8: + str r1, [r4, #0xc] + ldr r0, [r4] + add sp, #0x40 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021DD904: + ldr r3, _021DD97C ; =0xFFFF8000 + mov r2, #0x69 + str r3, [sp] + ldr r1, [r4, #0x34] + lsl r2, r2, #0xe + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + lsl r1, r3, #2 + bl MOD85_021DD5D4 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #0x40] + mov r1, #0x12 + str r0, [sp, #4] + mov r0, #1 + mov r2, #0x69 + str r0, [sp, #8] + add r0, r6, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0xe + bl MOD85_021DD5D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #4 + blo _021DD962 + add r0, r4, #0 + add r0, #0x30 + bl MOD85_021DECA0 + add r0, r4, #0 + add r0, #0x3c + bl MOD85_021DECA0 + mov r1, #5 + str r1, [sp] + mov r0, #0x45 + ldr r2, [r4, #0x2c] + lsl r0, r0, #4 + ldr r0, [r2, r0] + add r2, r1, #0 + add r3, r1, #0 + bl MOD85_021DEAB4 +_021DD962: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + str r0, [r4, #4] +_021DD96C: + add sp, #0x40 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD970: .word 0x021DF82C +_021DD974: .word 0xFFFFC000 +_021DD978: .word 0xFFFE0000 +_021DD97C: .word 0xFFFF8000 + thumb_func_end MOD85_021DD624 + + thumb_func_start MOD85_021DD980 +MOD85_021DD980: ; 0x021DD980 + bx lr + .align 2, 0 + thumb_func_end MOD85_021DD980 + + thumb_func_start MOD85_021DD984 +MOD85_021DD984: ; 0x021DD984 + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _021DD9B0 ; =0x021DF6B8 + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #8 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DD9B4 ; =0x021DF8E8 + str r0, [r4] + str r3, [sp] + mov r0, #0x8e + str r0, [sp, #4] + ldr r0, _021DD9B8 ; =0x0000044C + ldr r0, [r3, r0] + mov r3, #0 + bl FUN_020644E4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_021DD9B0: .word 0x021DF6B8 +_021DD9B4: .word 0x021DF8E8 +_021DD9B8: .word 0x0000044C + thumb_func_end MOD85_021DD984 + + thumb_func_start MOD85_021DD9BC +MOD85_021DD9BC: ; 0x021DD9BC + push {r3, r4, r5, lr} + sub sp, #0x28 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + str r0, [r4] + add r0, r5, #0 + add r1, sp, #0x1c + bl FUN_0206477C + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #4 + add r2, sp, #0x1c + bl MOD85_021DEC00 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DD9BC + + thumb_func_start MOD85_021DDA08 +MOD85_021DDA08: ; 0x021DDA08 + ldr r3, _021DDA10 ; =MOD85_021DECA0 + add r0, r1, #4 + bx r3 + nop +_021DDA10: .word MOD85_021DECA0 + thumb_func_end MOD85_021DDA08 + + thumb_func_start MOD85_021DDA14 +MOD85_021DDA14: ; 0x021DDA14 + mov r0, #0x52 + ldr r2, [r1] + lsl r0, r0, #2 + ldr r0, [r2, r0] + mov r3, #1 + cmp r0, #1 + bne _021DDA24 + mov r3, #0 +_021DDA24: + ldr r0, [r1, #8] + add r1, r3, #0 + ldr r3, _021DDA2C ; =FUN_020200A0 + bx r3 + .align 2, 0 +_021DDA2C: .word FUN_020200A0 + thumb_func_end MOD85_021DDA14 + + thumb_func_start MOD85_021DDA30 +MOD85_021DDA30: ; 0x021DDA30 + push {lr} + sub sp, #0x14 + mov r1, #0x15 + lsl r1, r1, #0xe + str r1, [sp, #8] + mov r1, #0x13 + lsl r1, r1, #0x10 + str r1, [sp, #0xc] + str r0, [sp] + mov r1, #0x8e + str r1, [sp, #4] + ldr r1, _021DDA58 ; =0x0000044C + add r2, sp, #8 + ldr r0, [r0, r1] + ldr r1, _021DDA5C ; =0x021DF924 + mov r3, #0 + bl FUN_020644E4 + add sp, #0x14 + pop {pc} + .align 2, 0 +_021DDA58: .word 0x0000044C +_021DDA5C: .word 0x021DF924 + thumb_func_end MOD85_021DDA30 + + thumb_func_start MOD85_021DDA60 +MOD85_021DDA60: ; 0x021DDA60 + push {r3, r4, r5, lr} + sub sp, #0x40 + add r5, r0, #0 + add r4, r1, #0 + add r1, sp, #0x28 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _021DDAEC ; =0x021DF6A0 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0x1c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + bl FUN_0206475C + str r0, [r4, #4] + add r0, r5, #0 + add r1, sp, #0x34 + bl FUN_0206477C + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4, #4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #8 + add r2, sp, #0x34 + bl MOD85_021DEC00 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020200EC + ldr r0, [r4, #0xc] + add r1, sp, #0x28 + bl FUN_02020054 + ldr r0, [r4, #0xc] + add r1, sp, #0x1c + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02020088 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + add sp, #0x40 + pop {r3, r4, r5, pc} + nop +_021DDAEC: .word 0x021DF6A0 + thumb_func_end MOD85_021DDA60 + + thumb_func_start MOD85_021DDAF0 +MOD85_021DDAF0: ; 0x021DDAF0 + ldr r3, _021DDAF8 ; =MOD85_021DECA0 + add r1, #8 + add r0, r1, #0 + bx r3 + .align 2, 0 +_021DDAF8: .word MOD85_021DECA0 + thumb_func_end MOD85_021DDAF0 + + thumb_func_start MOD85_021DDAFC +MOD85_021DDAFC: ; 0x021DDAFC + push {r3, lr} + ldr r2, [r1] + add r2, r2, #1 + str r2, [r1] + cmp r2, #0x2d + blt _021DDB0C + bl FUN_02064520 +_021DDB0C: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DDAFC + + thumb_func_start MOD85_021DDB10 +MOD85_021DDB10: ; 0x021DDB10 + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _021DDB3C ; =0x021DF790 + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #8 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DDB40 ; =0x021DF988 + str r0, [r4] + str r3, [sp] + mov r0, #0x8e + str r0, [sp, #4] + ldr r0, _021DDB44 ; =0x0000044C + ldr r0, [r3, r0] + mov r3, #0 + bl FUN_020644E4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_021DDB3C: .word 0x021DF790 +_021DDB40: .word 0x021DF988 +_021DDB44: .word 0x0000044C + thumb_func_end MOD85_021DDB10 + + thumb_func_start MOD85_021DDB48 +MOD85_021DDB48: ; 0x021DDB48 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + str r0, [r4] + add r0, r5, #0 + add r1, sp, #0x1c + bl FUN_0206477C + mov r0, #0 + str r0, [sp] + mov r1, #7 + str r1, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #4 + add r2, sp, #0x1c + bl MOD85_021DEC00 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, pc} + thumb_func_end MOD85_021DDB48 + + thumb_func_start MOD85_021DDB94 +MOD85_021DDB94: ; 0x021DDB94 + ldr r3, _021DDB9C ; =MOD85_021DECA0 + add r0, r1, #4 + bx r3 + nop +_021DDB9C: .word MOD85_021DECA0 + thumb_func_end MOD85_021DDB94 + + thumb_func_start MOD85_021DDBA0 +MOD85_021DDBA0: ; 0x021DDBA0 + mov r0, #0x52 + ldr r2, [r1] + lsl r0, r0, #2 + ldr r0, [r2, r0] + mov r3, #1 + cmp r0, #1 + bne _021DDBB0 + mov r3, #0 +_021DDBB0: + ldr r0, [r1, #8] + add r1, r3, #0 + ldr r3, _021DDBB8 ; =FUN_020200A0 + bx r3 + .align 2, 0 +_021DDBB8: .word FUN_020200A0 + thumb_func_end MOD85_021DDBA0 + + thumb_func_start MOD85_021DDBBC +MOD85_021DDBBC: ; 0x021DDBBC + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _021DDBF0 ; =0x021DF64C + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #8 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DDBF4 ; =0x021DF9B0 + str r0, [r4] + mov r0, #0x11 + lsl r0, r0, #0xe + str r0, [sp, #8] + lsl r0, r0, #2 + str r0, [sp, #0xc] + str r3, [sp] + mov r0, #0x8e + str r0, [sp, #4] + ldr r0, _021DDBF8 ; =0x0000044C + ldr r0, [r3, r0] + mov r3, #0 + bl FUN_020644E4 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021DDBF0: .word 0x021DF64C +_021DDBF4: .word 0x021DF9B0 +_021DDBF8: .word 0x0000044C + thumb_func_end MOD85_021DDBBC + + thumb_func_start MOD85_021DDBFC +MOD85_021DDBFC: ; 0x021DDBFC + push {r3, r4, r5, lr} + sub sp, #0x40 + add r5, r0, #0 + add r4, r1, #0 + add r1, sp, #0x28 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _021DDC88 ; =0x021DF748 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0x1c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + bl FUN_0206475C + str r0, [r4, #4] + add r0, r5, #0 + add r1, sp, #0x34 + bl FUN_0206477C + mov r0, #0 + str r0, [sp] + mov r1, #7 + str r1, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + mov r3, #2 + str r3, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r4, #4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #8 + add r2, sp, #0x34 + bl MOD85_021DEC00 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020200EC + ldr r0, [r4, #0xc] + add r1, sp, #0x28 + bl FUN_02020054 + ldr r0, [r4, #0xc] + add r1, sp, #0x1c + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02020088 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + add sp, #0x40 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDC88: .word 0x021DF748 + thumb_func_end MOD85_021DDBFC + + thumb_func_start MOD85_021DDC8C +MOD85_021DDC8C: ; 0x021DDC8C + ldr r3, _021DDC94 ; =MOD85_021DECA0 + add r1, #8 + add r0, r1, #0 + bx r3 + .align 2, 0 +_021DDC94: .word MOD85_021DECA0 + thumb_func_end MOD85_021DDC8C + + thumb_func_start MOD85_021DDC98 +MOD85_021DDC98: ; 0x021DDC98 + push {r3, lr} + ldr r2, [r1] + add r2, r2, #1 + str r2, [r1] + cmp r2, #0x2d + blt _021DDCA8 + bl FUN_02064520 +_021DDCA8: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DDC98 + + thumb_func_start MOD85_021DDCAC +MOD85_021DDCAC: ; 0x021DDCAC + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _021DDCD8 ; =0x021DF610 + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #8 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DDCDC ; =0x021DF898 + str r0, [r4] + str r3, [sp] + mov r0, #0x8e + str r0, [sp, #4] + ldr r0, _021DDCE0 ; =0x0000044C + ldr r0, [r3, r0] + mov r3, #0 + bl FUN_020644E4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_021DDCD8: .word 0x021DF610 +_021DDCDC: .word 0x021DF898 +_021DDCE0: .word 0x0000044C + thumb_func_end MOD85_021DDCAC + + thumb_func_start MOD85_021DDCE4 +MOD85_021DDCE4: ; 0x021DDCE4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r4, r0, #0 + add r7, r1, #0 + bl FUN_0206475C + str r0, [r7] + add r0, r4, #0 + add r1, sp, #0x1c + bl FUN_0206477C + mov r6, #0 + add r4, r7, #4 + add r5, r7, #0 +_021DDD00: + mov r0, #0 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r7] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r2, sp, #0x1c + mov r3, #2 + bl MOD85_021DEC00 + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_020200BC + add r6, r6, #1 + add r4, #0xc + add r5, #0xc + cmp r6, #2 + blt _021DDD00 + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DDCE4 + + thumb_func_start MOD85_021DDD4C +MOD85_021DDD4C: ; 0x021DDD4C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #4 + bl MOD85_021DECA0 + add r4, #0x10 + add r0, r4, #0 + bl MOD85_021DECA0 + pop {r4, pc} + thumb_func_end MOD85_021DDD4C + + thumb_func_start MOD85_021DDD60 +MOD85_021DDD60: ; 0x021DDD60 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + mov r0, #0x4f + ldr r1, [r5] + lsl r0, r0, #2 + add r4, r1, r0 + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0xc] + cmp r0, #1 + beq _021DDE06 + ldr r3, _021DDE0C ; =0x021DF76C + add r2, sp, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r6, #0 + str r0, [r2] + ldr r0, [r5] + ldr r7, [r0, #0x10] + cmp r7, #0x63 + bls _021DDD9C + mov r7, #0x63 +_021DDD9C: + add r0, r7, #0 + mov r1, #0x64 + bl _u32_div_f + add r0, r1, #0 + mov r1, #0xa + bl _u32_div_f + add r4, r0, #0 + beq _021DDDDA + ldr r0, [r5, #8] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r5, #8] + add r1, r4, #0 + bl FUN_02020130 + ldr r0, [r5, #8] + bl FUN_02020198 + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_020200A0 + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp] + add r6, r6, #1 +_021DDDDA: + mov r0, #0xc + add r4, r6, #0 + add r5, #8 + mul r4, r0 + ldr r0, [r5, r4] + add r1, sp, #0 + bl FUN_02020044 + add r0, r7, #0 + mov r1, #0xa + bl _u32_div_f + ldr r0, [r5, r4] + bl FUN_02020130 + ldr r0, [r5, r4] + bl FUN_02020198 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021DDE06: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021DDE0C: .word 0x021DF76C + thumb_func_end MOD85_021DDD60 + + thumb_func_start MOD85_021DDE10 +MOD85_021DDE10: ; 0x021DDE10 + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _021DDE3C ; =0x021DF844 + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #8 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DDE40 ; =0x021DF8FC + str r0, [r4] + str r3, [sp] + mov r0, #0x8e + str r0, [sp, #4] + ldr r0, _021DDE44 ; =0x0000044C + ldr r0, [r3, r0] + mov r3, #0 + bl FUN_020644E4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_021DDE3C: .word 0x021DF844 +_021DDE40: .word 0x021DF8FC +_021DDE44: .word 0x0000044C + thumb_func_end MOD85_021DDE10 + + thumb_func_start MOD85_021DDE48 +MOD85_021DDE48: ; 0x021DDE48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r3, _021DDEAC ; =0x021DF6C4 + add r4, r0, #0 + add r6, r1, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x1c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r4, #0 + bl FUN_0206475C + str r0, [r6] + mov r4, #0 + add r5, r6, #4 + mov r7, #2 +_021DDE6A: + mov r0, #0 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r7, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r6] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r5, #0 + add r2, sp, #0x1c + add r3, r7, #0 + bl MOD85_021DEC00 + mov r0, #2 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xe + add r0, r1, r0 + add r4, r4, #1 + add r5, #0xc + str r0, [sp, #0x1c] + cmp r4, #5 + blt _021DDE6A + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DDEAC: .word 0x021DF6C4 + thumb_func_end MOD85_021DDE48 + + thumb_func_start MOD85_021DDEB0 +MOD85_021DDEB0: ; 0x021DDEB0 + push {r3, r4, r5, lr} + mov r4, #0 + add r5, r1, #4 +_021DDEB6: + add r0, r5, #0 + bl MOD85_021DECA0 + add r4, r4, #1 + add r5, #0xc + cmp r4, #5 + blt _021DDEB6 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DDEB0 + + thumb_func_start MOD85_021DDEC8 +MOD85_021DDEC8: ; 0x021DDEC8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r0, #0x52 + ldr r1, [r5] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r7, #1 + cmp r0, #1 + bne _021DDEDC + mov r7, #0 +_021DDEDC: + mov r6, #0 + add r4, r5, #0 +_021DDEE0: + ldr r0, [r4, #8] + add r1, r7, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r4, #0xc + cmp r6, #5 + blt _021DDEE0 + cmp r7, #0 + beq _021DDF34 + ldr r0, [r5] + ldr r6, [r0, #0x14] + ldr r0, _021DDF38 ; =0x0000C350 + cmp r6, r0 + ble _021DDF00 + add r6, r0, #0 +_021DDF00: + ldr r4, _021DDF3C ; =0x00002710 + mov r7, #0xa +_021DDF04: + add r1, r4, #0 + add r0, r6, #0 + mul r1, r7 + bl _s32_div_f + add r0, r1, #0 + add r1, r4, #0 + bl _s32_div_f + add r1, r0, #0 + ldr r0, [r5, #8] + bl FUN_02020130 + ldr r0, [r5, #8] + bl FUN_02020198 + add r0, r4, #0 + mov r1, #0xa + bl _s32_div_f + add r4, r0, #0 + add r5, #0xc + cmp r4, #1 + bge _021DDF04 +_021DDF34: + pop {r3, r4, r5, r6, r7, pc} + nop +_021DDF38: .word 0x0000C350 +_021DDF3C: .word 0x00002710 + thumb_func_end MOD85_021DDEC8 + + thumb_func_start MOD85_021DDF40 +MOD85_021DDF40: ; 0x021DDF40 + push {lr} + sub sp, #0x14 + add r3, r1, #0 + add r2, sp, #8 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + str r1, [r2, #8] + str r0, [sp] + mov r1, #0x8e + str r1, [sp, #4] + ldr r1, _021DDF64 ; =0x0000044C + ldr r0, [r0, r1] + ldr r1, _021DDF68 ; =0x021DF99C + bl FUN_020644E4 + add sp, #0x14 + pop {pc} + .align 2, 0 +_021DDF64: .word 0x0000044C +_021DDF68: .word 0x021DF99C + thumb_func_end MOD85_021DDF40 + + thumb_func_start MOD85_021DDF6C +MOD85_021DDF6C: ; 0x021DDF6C + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r0, #0 + add r5, r1, #0 + add r1, sp, #0x2c + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _021DE0D0 ; =0x021DF79C + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0x20 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r6, #0 + bl FUN_0206475C + add r4, r0, #0 + add r0, r6, #0 + bl FUN_02064754 + str r0, [r5] + str r4, [r5, #0x14] + ldr r0, [r5] + cmp r0, #0 + bne _021DDFD6 + ldr r1, [r4, #0x1c] + ldr r0, _021DE0D4 ; =0x000003E7 + str r1, [r5, #4] + cmp r1, r0 + bls _021DDFAE + str r0, [r5, #4] +_021DDFAE: + ldr r0, [r5, #4] + cmp r0, #0x64 + blo _021DDFBA + mov r0, #3 + str r0, [r5, #8] + b _021DDFC8 +_021DDFBA: + cmp r0, #0xa + blo _021DDFC4 + mov r0, #2 + str r0, [r5, #8] + b _021DDFC8 +_021DDFC4: + mov r0, #1 + str r0, [r5, #8] +_021DDFC8: + mov r0, #0x32 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + mov r0, #0x13 + lsl r0, r0, #0x10 + str r0, [sp, #0x3c] + b _021DE022 +_021DDFD6: + ldr r1, [r4, #0x14] + ldr r0, _021DE0D8 ; =0x0001869F + str r1, [r5, #4] + cmp r1, r0 + bls _021DDFE2 + str r0, [r5, #4] +_021DDFE2: + ldr r1, [r5, #4] + ldr r0, _021DE0DC ; =0x00002710 + cmp r1, r0 + blo _021DDFF0 + mov r0, #5 + str r0, [r5, #8] + b _021DE016 +_021DDFF0: + mov r0, #0xfa + lsl r0, r0, #2 + cmp r1, r0 + blo _021DDFFE + mov r0, #4 + str r0, [r5, #8] + b _021DE016 +_021DDFFE: + cmp r1, #0x64 + blo _021DE008 + mov r0, #3 + str r0, [r5, #8] + b _021DE016 +_021DE008: + cmp r1, #0xa + blo _021DE012 + mov r0, #2 + str r0, [r5, #8] + b _021DE016 +_021DE012: + mov r0, #1 + str r0, [r5, #8] +_021DE016: + mov r0, #0x32 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #0x3c] +_021DE022: + ldr r0, [r5, #8] + mov r7, #0 + mov r6, #1 + cmp r0, #0 + bls _021DE0C6 + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0x18 + str r0, [sp, #0x1c] + add r4, r5, #0 +_021DE036: + mov r0, #0 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r5, #0x14] + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, [sp, #0x1c] + add r2, sp, #0x38 + mov r3, #2 + bl MOD85_021DEC00 + ldr r0, [r4, #0x1c] + mov r1, #2 + bl FUN_020200EC + ldr r0, [r4, #0x1c] + add r1, sp, #0x2c + bl FUN_02020054 + ldr r0, [r4, #0x1c] + add r1, sp, #0x20 + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_02020088 + mov r1, #0xa + ldr r0, [r5, #4] + mul r1, r6 + bl _u32_div_f + add r0, r1, #0 + add r1, r6, #0 + bl _u32_div_f + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_02020130 + ldr r0, [r4, #0x1c] + bl FUN_02020198 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x38] + add r0, #0xc + str r0, [sp, #0x1c] + mov r0, #0xa + mul r6, r0 + mov r0, #1 + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r5, #8] + add r7, r7, #1 + add r4, #0xc + cmp r7, r0 + blo _021DE036 +_021DE0C6: + str r7, [r5, #0x10] + mov r0, #1 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021DE0D0: .word 0x021DF79C +_021DE0D4: .word 0x000003E7 +_021DE0D8: .word 0x0001869F +_021DE0DC: .word 0x00002710 + thumb_func_end MOD85_021DDF6C + + thumb_func_start MOD85_021DE0E0 +MOD85_021DE0E0: ; 0x021DE0E0 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r0, [r6, #0x10] + mov r4, #0 + cmp r0, #0 + ble _021DE100 + add r5, r6, #0 + add r5, #0x18 +_021DE0F0: + add r0, r5, #0 + bl MOD85_021DECA0 + ldr r0, [r6, #0x10] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021DE0F0 +_021DE100: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021DE0E0 + + thumb_func_start MOD85_021DE104 +MOD85_021DE104: ; 0x021DE104 + push {r3, lr} + ldr r2, [r1, #0xc] + add r2, r2, #1 + str r2, [r1, #0xc] + cmp r2, #0x2d + blt _021DE114 + bl FUN_02064520 +_021DE114: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DE104 + + thumb_func_start MOD85_021DE118 +MOD85_021DE118: ; 0x021DE118 + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _021DE14C ; =0x021DF664 + add r2, r0, #0 + add r3, r1, #0 + ldmia r5!, {r0, r1} + add r4, sp, #8 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + ldr r0, _021DE150 ; =0x000003E7 + cmp r3, r0 + bls _021DE134 + add r3, r0, #0 +_021DE134: + str r2, [sp] + mov r0, #0x8e + str r0, [sp, #4] + ldr r0, _021DE154 ; =0x0000044C + ldr r1, _021DE158 ; =0x021DF9C4 + ldr r0, [r2, r0] + add r2, sp, #8 + bl FUN_020644E4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_021DE14C: .word 0x021DF664 +_021DE150: .word 0x000003E7 +_021DE154: .word 0x0000044C +_021DE158: .word 0x021DF9C4 + thumb_func_end MOD85_021DE118 + + thumb_func_start MOD85_021DE15C +MOD85_021DE15C: ; 0x021DE15C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_02064754 + str r0, [sp, #0x20] + add r0, r4, #0 + add r1, sp, #0x24 + bl FUN_0206477C + ldr r0, [sp, #0x20] + cmp r0, #0x64 + blo _021DE192 + mov r0, #3 + str r0, [r5, #4] + mov r0, #1 + ldr r1, [sp, #0x24] + lsl r0, r0, #0x10 + sub r0, r1, r0 + mov r4, #0x64 + str r0, [sp, #0x24] + b _021DE1AA +_021DE192: + cmp r0, #0xa + blo _021DE1A6 + mov r0, #2 + str r0, [r5, #4] + ldr r1, [sp, #0x24] + lsl r0, r0, #0xe + sub r0, r1, r0 + mov r4, #0xa + str r0, [sp, #0x24] + b _021DE1AA +_021DE1A6: + mov r4, #1 + str r4, [r5, #4] +_021DE1AA: + ldr r0, [r5, #4] + mov r6, #0 + cmp r0, #0 + ble _021DE226 + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0xc + str r0, [sp, #0x1c] + add r7, r5, #0 +_021DE1BC: + mov r0, #0 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r5, #8] + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, [sp, #0x1c] + add r2, sp, #0x24 + mov r3, #2 + bl MOD85_021DEC00 + mov r1, #0xa + ldr r0, [sp, #0x20] + mul r1, r4 + bl _u32_div_f + add r0, r1, #0 + add r1, r4, #0 + bl _u32_div_f + add r1, r0, #0 + ldr r0, [r7, #0x10] + bl FUN_02020130 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x24] + add r0, #0xc + str r0, [sp, #0x1c] + mov r0, #1 + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x24] + add r0, r4, #0 + mov r1, #0xa + add r7, #0xc + add r6, r6, #1 + bl _u32_div_f + add r4, r0, #0 + ldr r0, [r5, #4] + cmp r6, r0 + blt _021DE1BC +_021DE226: + mov r0, #1 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DE15C + + thumb_func_start MOD85_021DE22C +MOD85_021DE22C: ; 0x021DE22C + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r0, [r6, #4] + mov r4, #0 + cmp r0, #0 + ble _021DE24C + add r5, r6, #0 + add r5, #0xc +_021DE23C: + add r0, r5, #0 + bl MOD85_021DECA0 + ldr r0, [r6, #4] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021DE23C +_021DE24C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD85_021DE22C + + thumb_func_start MOD85_021DE250 +MOD85_021DE250: ; 0x021DE250 + push {r3, lr} + ldr r2, [r1] + add r2, r2, #1 + str r2, [r1] + cmp r2, #0x3c + blt _021DE260 + bl FUN_02064520 +_021DE260: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DE250 + + thumb_func_start MOD85_021DE264 +MOD85_021DE264: ; 0x021DE264 + push {lr} + sub sp, #0x14 + add r2, sp, #8 + mov r3, #0 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + str r0, [sp] + mov r1, #0x8c + str r1, [sp, #4] + ldr r1, _021DE288 ; =0x0000044C + ldr r0, [r0, r1] + ldr r1, _021DE28C ; =0x021DF910 + bl FUN_020644E4 + add sp, #0x14 + pop {pc} + nop +_021DE288: .word 0x0000044C +_021DE28C: .word 0x021DF910 + thumb_func_end MOD85_021DE264 + + thumb_func_start MOD85_021DE290 +MOD85_021DE290: ; 0x021DE290 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + str r0, [r4, #0x44] + ldr r0, [r0, #0x44] + add r3, r4, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x44] + add r3, #0x1c + ldr r0, [r0, #0x48] + mov r1, #1 +_021DE2A8: + add r2, r0, #0 + tst r2, r1 + bne _021DE2BC + ldr r2, [r3] + lsr r0, r0, #1 + add r2, r2, #1 + str r2, [r3] + ldr r2, [r4, #0x1c] + cmp r2, #5 + blt _021DE2A8 +_021DE2BC: + ldr r0, [r4, #0x1c] + cmp r0, #5 + blt _021DE2C6 + bl ErrorHandling +_021DE2C6: + add r0, r4, #0 + bl MOD85_021DE4F0 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD85_021DE290 + + thumb_func_start MOD85_021DE2D0 +MOD85_021DE2D0: ; 0x021DE2D0 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldr r0, [r7, #0x14] + cmp r0, #0 + bne _021DE30C + add r5, r7, #0 + mov r6, #0 + add r4, r7, #0 + add r5, #0x20 +_021DE2E2: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021DE2EE + add r0, r5, #0 + bl MOD85_021DECA0 +_021DE2EE: + add r6, r6, #1 + add r4, #0xc + add r5, #0xc + cmp r6, #3 + blt _021DE2E2 + mov r1, #0xa + str r1, [sp] + mov r0, #0x45 + ldr r2, [r7, #0x44] + lsl r0, r0, #4 + ldr r0, [r2, r0] + mov r2, #8 + add r3, r1, #0 + bl MOD85_021DEAB4 +_021DE30C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DE2D0 + + thumb_func_start MOD85_021DE310 +MOD85_021DE310: ; 0x021DE310 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r1, #0 + ldr r0, [r5] + cmp r0, #5 + bhi _021DE33A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DE328: ; jump table + .short _021DE334 - _021DE328 - 2 ; case 0 + .short _021DE3AE - _021DE328 - 2 ; case 1 + .short _021DE3F8 - _021DE328 - 2 ; case 2 + .short _021DE410 - _021DE328 - 2 ; case 3 + .short _021DE454 - _021DE328 - 2 ; case 4 + .short _021DE46C - _021DE328 - 2 ; case 5 +_021DE334: + ldr r0, [r5, #8] + cmp r0, #2 + beq _021DE33C +_021DE33A: + b _021DE4A0 +_021DE33C: + mov r4, #0 + add r7, r5, #0 + str r4, [sp, #0x20] + add r7, #0x20 + add r6, r5, #0 +_021DE346: + ldr r1, [r5, #0x1c] + mov r0, #0x24 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021DE4A4 ; =0x021DFB80 + add r0, r0, r2 + add r3, r4, r0 + add r2, sp, #0x24 + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r3, #3 + str r0, [r2] + mov r0, #0 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + mov r0, #0x45 + ldr r1, [r5, #0x44] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r7, #0 + mov r2, ip + bl MOD85_021DEC00 + ldr r0, [r6, #0x24] + mov r1, #1 + bl FUN_020200BC + ldr r0, [sp, #0x20] + add r4, #0xc + add r0, r0, #1 + add r7, #0xc + add r6, #0xc + str r0, [sp, #0x20] + cmp r0, #3 + blt _021DE346 + ldr r0, [r5] + add sp, #0x30 + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE3AE: + mov r6, #0 + str r6, [sp, #0x1c] + add r4, r5, #0 + add r7, sp, #0x24 +_021DE3B6: + ldr r0, [r4, #0x24] + add r1, r7, #0 + bl MOD85_021DECBC + mov r0, #1 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xe + add r1, r1, r0 + mov r0, #0xf + lsl r0, r0, #0x10 + str r1, [sp, #0x28] + cmp r1, r0 + blt _021DE3D4 + str r0, [sp, #0x28] + b _021DE3D8 +_021DE3D4: + mov r0, #1 + str r0, [sp, #0x1c] +_021DE3D8: + ldr r0, [r4, #0x24] + add r1, r7, #0 + bl FUN_02020044 + add r6, r6, #1 + add r4, #0xc + cmp r6, #3 + blt _021DE3B6 + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _021DE4A0 + ldr r0, [r5] + add sp, #0x30 + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE3F8: + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0x1e + blt _021DE4A0 + mov r0, #0 + str r0, [r5, #0xc] + ldr r0, [r5] + add sp, #0x30 + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE410: + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0xc + blt _021DE41E + mov r7, #1 + b _021DE420 +_021DE41E: + mov r7, #0 +_021DE420: + mov r6, #0 + add r4, r5, #0 +_021DE424: + ldr r0, [r4, #0x24] + add r1, r7, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r4, #0xc + cmp r6, #3 + blt _021DE424 + ldr r0, [r5, #0xc] + cmp r0, #0x1e + blt _021DE4A0 + mov r1, #0 + str r1, [r5, #0xc] + ldr r0, [r5, #0x10] + add r0, r0, #1 + str r0, [r5, #0x10] + cmp r0, #3 + blt _021DE4A0 + str r1, [r5, #0x10] + ldr r0, [r5] + add sp, #0x30 + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE454: + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0x1e + blt _021DE4A0 + mov r0, #0 + str r0, [r5, #0xc] + ldr r0, [r5] + add sp, #0x30 + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE46C: + add r4, r5, #0 + mov r6, #0 + add r4, #0x20 +_021DE472: + add r0, r4, #0 + bl MOD85_021DECA0 + add r6, r6, #1 + add r4, #0xc + cmp r6, #3 + blt _021DE472 + mov r1, #0xa + str r1, [sp] + mov r0, #0x45 + ldr r2, [r5, #0x44] + lsl r0, r0, #4 + ldr r0, [r2, r0] + mov r2, #8 + add r3, r1, #0 + bl MOD85_021DEAB4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #1 + str r0, [r5, #4] + str r0, [r5, #0x14] +_021DE4A0: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE4A4: .word 0x021DFB80 + thumb_func_end MOD85_021DE310 + + thumb_func_start MOD85_021DE4A8 +MOD85_021DE4A8: ; 0x021DE4A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r0, #0x45 + ldr r1, [r4, #0x44] + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0xa + bl MOD85_021DE8A8 + mov r0, #1 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + thumb_func_end MOD85_021DE4A8 + + thumb_func_start MOD85_021DE4C8 +MOD85_021DE4C8: ; 0x021DE4C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + ldr r1, [r4, #0x44] + cmp r0, #1 + bne _021DE4EC + mov r0, #0x45 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0xa + bl MOD85_021DE8DC + mov r0, #2 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DE4EC: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DE4C8 + + thumb_func_start MOD85_021DE4F0 +MOD85_021DE4F0: ; 0x021DE4F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + ldr r4, [r5, #0x44] + cmp r0, #0 + bne _021DE538 + mov r2, #0x45 + mov r0, #0xa + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #3 + mov r3, #0xe + bl MOD85_021DE840 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0xf + mov r3, #0xa + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x10 + mov r3, #0xa + bl MOD85_021DEA4C + b _021DE572 +_021DE538: + mov r2, #0x45 + mov r0, #0xa + lsl r2, r2, #4 + str r0, [sp] + ldr r0, [r4, r2] + sub r2, #0x18 + ldr r2, [r4, r2] + mov r1, #3 + mov r3, #0x11 + bl MOD85_021DE840 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x12 + mov r3, #0xa + bl MOD85_021DE9E4 + mov r1, #0x45 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, #0x18 + ldr r1, [r4, r1] + mov r2, #0x13 + mov r3, #0xa + bl MOD85_021DEA4C +_021DE572: + ldr r0, _021DE598 ; =MOD85_021DE4A8 + ldr r2, _021DE59C ; =0x00000101 + add r1, r5, #0 + bl FUN_0200CA60 + cmp r0, #0 + bne _021DE584 + bl ErrorHandling +_021DE584: + ldr r0, _021DE5A0 ; =MOD85_021DE4C8 + ldr r2, _021DE59C ; =0x00000101 + add r1, r5, #0 + bl FUN_0200CA98 + cmp r0, #0 + bne _021DE596 + bl ErrorHandling +_021DE596: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DE598: .word MOD85_021DE4A8 +_021DE59C: .word 0x00000101 +_021DE5A0: .word MOD85_021DE4C8 + thumb_func_end MOD85_021DE4F0 + + thumb_func_start MOD85_021DE5A4 +MOD85_021DE5A4: ; 0x021DE5A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r1, [sp, #4] + ldr r1, [sp, #0x28] + str r0, [sp] + str r1, [sp, #0x28] + mov r1, #0x57 + lsl r1, r1, #2 + str r2, [sp, #8] + add r7, r3, #0 + ldr r5, [sp, #0x20] + ldr r6, [sp, #0x24] + bl FUN_02016998 + add r4, r0, #0 + bne _021DE5C8 + bl ErrorHandling +_021DE5C8: + ldr r0, [sp] + add r1, r4, #0 + str r0, [r4] + strb r7, [r4, #4] + strb r5, [r4, #5] + ldr r0, [sp, #0x28] + strb r6, [r4, #6] + strb r0, [r4, #7] + ldr r0, [sp, #0x2c] + ldr r2, [sp] + strb r0, [r4, #8] + ldr r0, [sp, #0x30] + add r1, #0x10 + strb r0, [r4, #9] + ldr r0, [sp, #0x34] + strb r0, [r4, #0xa] + ldr r0, [sp, #0x38] + strb r0, [r4, #0xb] + ldr r0, [sp, #4] + bl FUN_02008C9C + str r0, [r4, #0xc] + ldr r0, [sp, #8] + ldr r1, [sp] + bl FUN_0201C328 + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #8] + ldr r1, [sp] + bl FUN_0201C24C + ldr r2, [sp] + add r0, r7, #0 + mov r1, #0 + bl FUN_02008DEC + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, [sp] + add r0, r5, #0 + mov r1, #1 + bl FUN_02008DEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r2, [sp] + add r0, r6, #0 + mov r1, #2 + bl FUN_02008DEC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x28] + ldr r2, [sp] + mov r1, #3 + bl FUN_02008DEC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp] + lsl r1, r7, #3 + bl FUN_02016998 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp] + lsl r1, r5, #3 + bl FUN_02016998 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [sp] + lsl r1, r6, #3 + bl FUN_02016998 + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [sp, #0x28] + ldr r0, [sp] + lsl r1, r1, #3 + bl FUN_02016998 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r1, #0 + cmp r7, #0 + bls _021DE6A4 + bls _021DE6A4 + ldr r0, [sp, #0x2c] + add r2, r1, #0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 +_021DE694: + mov r3, #0x53 + lsl r3, r3, #2 + ldr r3, [r4, r3] + add r1, r1, #1 + strh r0, [r3, r2] + add r2, #8 + cmp r1, r7 + blo _021DE694 +_021DE6A4: + mov r3, #0 + cmp r5, #0 + bls _021DE6C4 + bls _021DE6C4 + ldr r0, [sp, #0x30] + mov r7, #0x15 + lsl r0, r0, #0x10 + add r2, r3, #0 + lsr r1, r0, #0x10 + lsl r7, r7, #4 +_021DE6B8: + ldr r0, [r4, r7] + add r3, r3, #1 + strh r1, [r0, r2] + add r2, #8 + cmp r3, r5 + blo _021DE6B8 +_021DE6C4: + mov r1, #0 + cmp r6, #0 + bls _021DE6E4 + bls _021DE6E4 + ldr r2, [sp, #0x34] + add r0, r1, #0 + lsl r2, r2, #0x10 + lsr r5, r2, #0x10 + mov r2, #0x55 + lsl r2, r2, #2 +_021DE6D8: + ldr r3, [r4, r2] + add r1, r1, #1 + strh r5, [r3, r0] + add r0, #8 + cmp r1, r6 + blo _021DE6D8 +_021DE6E4: + ldr r0, [sp, #0x28] + mov r1, #0 + cmp r0, #0 + bls _021DE708 + bls _021DE708 + ldr r2, [sp, #0x38] + mov r3, #0x56 + lsl r2, r2, #0x10 + add r0, r1, #0 + lsr r5, r2, #0x10 + lsl r3, r3, #2 +_021DE6FA: + ldr r2, [r4, r3] + add r1, r1, #1 + strh r5, [r2, r0] + ldr r2, [sp, #0x28] + add r0, #8 + cmp r1, r2 + blo _021DE6FA +_021DE708: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DE5A4 + + thumb_func_start MOD85_021DE710 +MOD85_021DE710: ; 0x021DE710 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r5, #4] + mov r6, #0 + cmp r0, #0 + bls _021DE73E + mov r7, #0x53 + add r4, r6, #0 + lsl r7, r7, #2 +_021DE722: + ldr r1, [r5, r7] + ldrb r2, [r5, #8] + add r0, r1, r4 + ldrh r1, [r1, r4] + cmp r2, r1 + beq _021DE734 + ldr r0, [r0, #4] + bl FUN_02009C0C +_021DE734: + ldrb r0, [r5, #4] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blo _021DE722 +_021DE73E: + ldrb r0, [r5, #5] + mov r6, #0 + cmp r0, #0 + bls _021DE768 + mov r7, #0x15 + add r4, r6, #0 + lsl r7, r7, #4 +_021DE74C: + ldr r1, [r5, r7] + ldrb r2, [r5, #9] + add r0, r1, r4 + ldrh r1, [r1, r4] + cmp r2, r1 + beq _021DE75E + ldr r0, [r0, #4] + bl FUN_02009E04 +_021DE75E: + ldrb r0, [r5, #5] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blo _021DE74C +_021DE768: + ldrb r0, [r5, #6] + mov r6, #0 + cmp r0, #0 + bls _021DE792 + mov r7, #0x55 + add r4, r6, #0 + lsl r7, r7, #2 +_021DE776: + ldr r1, [r5, r7] + ldrb r2, [r5, #0xa] + add r0, r1, r4 + ldrh r1, [r1, r4] + cmp r2, r1 + beq _021DE788 + ldr r0, [r0, #4] + bl FUN_02009474 +_021DE788: + ldrb r0, [r5, #6] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blo _021DE776 +_021DE792: + ldrb r0, [r5, #7] + mov r6, #0 + cmp r0, #0 + bls _021DE7BC + mov r7, #0x56 + add r4, r6, #0 + lsl r7, r7, #2 +_021DE7A0: + ldr r1, [r5, r7] + ldrb r2, [r5, #0xb] + add r0, r1, r4 + ldrh r1, [r1, r4] + cmp r2, r1 + beq _021DE7B2 + ldr r0, [r0, #4] + bl FUN_02009474 +_021DE7B2: + ldrb r0, [r5, #7] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blo _021DE7A0 +_021DE7BC: + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + bl FUN_0201C29C + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201C350 + ldr r0, [r5, #0xc] + bl FUN_0201FDB4 + ldr r0, [r5, #0xc] + bl FUN_0201FD58 + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DE710 + + thumb_func_start MOD85_021DE830 +MOD85_021DE830: ; 0x021DE830 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0201FDEC + bl FUN_0201C348 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD85_021DE830 + + thumb_func_start MOD85_021DE840 +MOD85_021DE840: ; 0x021DE840 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + ldrb r5, [r4, #4] + add r7, r1, #0 + mov r1, #0 + str r2, [sp, #0xc] + mov ip, r3 + cmp r5, #0 + bls _021DE8A0 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r6, [r4, r0] + ldrb r3, [r4, #8] + add r2, r6, #0 +_021DE85E: + ldrh r0, [r2] + cmp r3, r0 + bne _021DE898 + ldr r0, [sp, #0x28] + lsl r5, r1, #3 + mov r1, #0x53 + strh r0, [r6, r5] + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r3, #0 + add r2, r2, r5 + strh r3, [r2, #2] + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r4] + sub r1, #0x10 + str r0, [sp, #8] + ldr r0, [r4, r1] + ldr r1, [sp, #0xc] + mov r2, ip + bl FUN_020091E0 + mov r1, #0x53 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add sp, #0x10 + add r1, r1, r5 + str r0, [r1, #4] + pop {r3, r4, r5, r6, r7, pc} +_021DE898: + add r1, r1, #1 + add r2, #8 + cmp r1, r5 + blo _021DE85E +_021DE8A0: + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DE840 + + thumb_func_start MOD85_021DE8A8 +MOD85_021DE8A8: ; 0x021DE8A8 + push {r3, r4, r5, lr} + ldrb r2, [r0, #4] + mov r4, #0 + cmp r2, #0 + bls _021DE8D4 + mov r3, #0x53 + lsl r3, r3, #2 + ldr r5, [r0, r3] + add r3, r5, #0 +_021DE8BA: + ldrh r0, [r3] + cmp r1, r0 + bne _021DE8CC + lsl r0, r4, #3 + add r0, r5, r0 + ldr r0, [r0, #4] + bl FUN_02009B04 + pop {r3, r4, r5, pc} +_021DE8CC: + add r4, r4, #1 + add r3, #8 + cmp r4, r2 + blo _021DE8BA +_021DE8D4: + bl ErrorHandling + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DE8A8 + + thumb_func_start MOD85_021DE8DC +MOD85_021DE8DC: ; 0x021DE8DC + push {r3, r4, r5, lr} + ldrb r2, [r0, #4] + mov r4, #0 + cmp r2, #0 + bls _021DE908 + mov r3, #0x53 + lsl r3, r3, #2 + ldr r5, [r0, r3] + add r3, r5, #0 +_021DE8EE: + ldrh r0, [r3] + cmp r1, r0 + bne _021DE900 + lsl r0, r4, #3 + add r0, r5, r0 + ldr r0, [r0, #4] + bl FUN_02009474 + pop {r3, r4, r5, pc} +_021DE900: + add r4, r4, #1 + add r3, #8 + cmp r4, r2 + blo _021DE8EE +_021DE908: + bl ErrorHandling + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DE8DC + + thumb_func_start MOD85_021DE910 +MOD85_021DE910: ; 0x021DE910 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + ldrb r5, [r4, #4] + add r7, r1, #0 + mov r1, #0 + str r2, [sp, #0x10] + mov ip, r3 + cmp r5, #0 + bls _021DE974 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r6, [r4, r0] + ldrb r3, [r4, #9] + add r2, r6, #0 +_021DE92E: + ldrh r0, [r2] + cmp r3, r0 + bne _021DE96C + ldr r0, [sp, #0x28] + lsl r5, r1, #3 + mov r1, #0x15 + strh r0, [r6, r5] + lsl r1, r1, #4 + ldr r2, [r4, r1] + mov r3, #0 + add r2, r2, r5 + strh r3, [r2, #2] + str r0, [sp] + str r7, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r4] + sub r1, #0x10 + str r0, [sp, #0xc] + ldr r0, [r4, r1] + ldr r1, [sp, #0x10] + mov r2, ip + bl FUN_02009298 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add sp, #0x14 + add r1, r1, r5 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_021DE96C: + add r1, r1, #1 + add r2, #8 + cmp r1, r5 + blo _021DE92E +_021DE974: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DE910 + + thumb_func_start MOD85_021DE97C +MOD85_021DE97C: ; 0x021DE97C + push {r3, r4, r5, lr} + ldrb r2, [r0, #5] + mov r4, #0 + cmp r2, #0 + bls _021DE9A8 + mov r3, #0x15 + lsl r3, r3, #4 + ldr r5, [r0, r3] + add r3, r5, #0 +_021DE98E: + ldrh r0, [r3] + cmp r1, r0 + bne _021DE9A0 + lsl r0, r4, #3 + add r0, r5, r0 + ldr r0, [r0, #4] + bl FUN_02009D68 + pop {r3, r4, r5, pc} +_021DE9A0: + add r4, r4, #1 + add r3, #8 + cmp r4, r2 + blo _021DE98E +_021DE9A8: + bl ErrorHandling + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DE97C + + thumb_func_start MOD85_021DE9B0 +MOD85_021DE9B0: ; 0x021DE9B0 + push {r3, r4, r5, lr} + ldrb r2, [r0, #5] + mov r4, #0 + cmp r2, #0 + bls _021DE9DC + mov r3, #0x15 + lsl r3, r3, #4 + ldr r5, [r0, r3] + add r3, r5, #0 +_021DE9C2: + ldrh r0, [r3] + cmp r1, r0 + bne _021DE9D4 + lsl r0, r4, #3 + add r0, r5, r0 + ldr r0, [r0, #4] + bl FUN_02009474 + pop {r3, r4, r5, pc} +_021DE9D4: + add r4, r4, #1 + add r3, #8 + cmp r4, r2 + blo _021DE9C2 +_021DE9DC: + bl ErrorHandling + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD85_021DE9B0 + + thumb_func_start MOD85_021DE9E4 +MOD85_021DE9E4: ; 0x021DE9E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + ldrb r5, [r4, #4] + str r1, [sp, #0xc] + mov ip, r2 + add r6, r3, #0 + mov r1, #0 + cmp r5, #0 + bls _021DEA44 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r7, [r4, r0] + ldrb r3, [r4, #0xa] + add r2, r7, #0 +_021DEA02: + ldrh r0, [r2] + cmp r3, r0 + bne _021DEA3C + lsl r5, r1, #3 + mov r0, #0x55 + strh r6, [r7, r5] + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r3, #0 + add r1, r1, r5 + strh r3, [r1, #2] + str r6, [sp] + mov r1, #2 + str r1, [sp, #4] + ldr r1, [r4] + sub r0, #0x10 + str r1, [sp, #8] + ldr r0, [r4, r0] + ldr r1, [sp, #0xc] + mov r2, ip + bl FUN_02009358 + mov r1, #0x55 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add sp, #0x10 + add r1, r1, r5 + str r0, [r1, #4] + pop {r3, r4, r5, r6, r7, pc} +_021DEA3C: + add r1, r1, #1 + add r2, #8 + cmp r1, r5 + blo _021DEA02 +_021DEA44: + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DE9E4 + + thumb_func_start MOD85_021DEA4C +MOD85_021DEA4C: ; 0x021DEA4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + ldrb r5, [r4, #4] + str r1, [sp, #0xc] + mov ip, r2 + add r6, r3, #0 + mov r1, #0 + cmp r5, #0 + bls _021DEAAC + mov r0, #0x56 + lsl r0, r0, #2 + ldr r7, [r4, r0] + ldrb r3, [r4, #0xb] + add r2, r7, #0 +_021DEA6A: + ldrh r0, [r2] + cmp r3, r0 + bne _021DEAA4 + lsl r5, r1, #3 + mov r0, #0x56 + strh r6, [r7, r5] + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r3, #0 + add r1, r1, r5 + strh r3, [r1, #2] + str r6, [sp] + mov r1, #3 + str r1, [sp, #4] + ldr r1, [r4] + sub r0, #0x10 + str r1, [sp, #8] + ldr r0, [r4, r0] + ldr r1, [sp, #0xc] + mov r2, ip + bl FUN_02009358 + mov r1, #0x56 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add sp, #0x10 + add r1, r1, r5 + str r0, [r1, #4] + pop {r3, r4, r5, r6, r7, pc} +_021DEAA4: + add r1, r1, #1 + add r2, #8 + cmp r1, r5 + blo _021DEA6A +_021DEAAC: + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DEA4C + + thumb_func_start MOD85_021DEAB4 +MOD85_021DEAB4: ; 0x021DEAB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + add r0, r1, #0 + ldrb r1, [r4, #8] + add r7, r2, #0 + str r3, [sp] + ldr r6, [sp, #0x20] + cmp r0, r1 + beq _021DEB10 + ldrb r5, [r4, #4] + mov r2, #0 + cmp r5, #0 + bls _021DEB10 + mov r1, #0x53 + lsl r1, r1, #2 + ldr r3, [r4, r1] + mov ip, r3 +_021DEAD8: + ldrh r1, [r3] + cmp r0, r1 + bne _021DEB08 + lsl r5, r2, #3 + mov r0, ip + add r0, r0, r5 + ldr r0, [r0, #4] + bl FUN_02009C0C + mov r1, #0x4f + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x10 + ldr r1, [r4, r1] + add r1, r1, r5 + ldr r1, [r1, #4] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldrb r1, [r4, #8] + ldr r0, [r4, r0] + strh r1, [r0, r5] + b _021DEB10 +_021DEB08: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blo _021DEAD8 +_021DEB10: + ldrb r0, [r4, #9] + cmp r7, r0 + beq _021DEB5E + ldrb r0, [r4, #5] + mov r1, #0 + cmp r0, #0 + bls _021DEB5E + mov r2, #0x15 + lsl r2, r2, #4 + ldr r3, [r4, r2] + str r3, [sp, #4] +_021DEB26: + ldrh r2, [r3] + cmp r7, r2 + bne _021DEB56 + ldr r0, [sp, #4] + lsl r5, r1, #3 + add r0, r0, r5 + ldr r0, [r0, #4] + bl FUN_02009E04 + mov r1, #5 + lsl r1, r1, #6 + ldr r0, [r4, r1] + add r1, #0x10 + ldr r1, [r4, r1] + add r1, r1, r5 + ldr r1, [r1, #4] + bl FUN_02009490 + mov r0, #0x15 + lsl r0, r0, #4 + ldrb r1, [r4, #9] + ldr r0, [r4, r0] + strh r1, [r0, r5] + b _021DEB5E +_021DEB56: + add r1, r1, #1 + add r3, #8 + cmp r1, r0 + blo _021DEB26 +_021DEB5E: + ldrb r1, [r4, #0xa] + ldr r0, [sp] + cmp r0, r1 + beq _021DEBAE + ldrb r3, [r4, #6] + mov r5, #0 + cmp r3, #0 + bls _021DEBAE + mov r0, #0x55 + lsl r0, r0, #2 + ldr r7, [r4, r0] + add r2, r7, #0 +_021DEB76: + ldrh r1, [r2] + ldr r0, [sp] + cmp r0, r1 + bne _021DEBA6 + lsl r5, r5, #3 + add r0, r7, r5 + ldr r0, [r0, #4] + bl FUN_02009474 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x10 + ldr r1, [r4, r1] + add r1, r1, r5 + ldr r1, [r1, #4] + bl FUN_02009490 + mov r0, #0x55 + lsl r0, r0, #2 + ldrb r1, [r4, #0xa] + ldr r0, [r4, r0] + strh r1, [r0, r5] + b _021DEBAE +_021DEBA6: + add r5, r5, #1 + add r2, #8 + cmp r5, r3 + blo _021DEB76 +_021DEBAE: + ldrb r0, [r4, #0xb] + cmp r6, r0 + beq _021DEBFC + ldrb r1, [r4, #7] + mov r2, #0 + cmp r1, #0 + bls _021DEBFC + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r5, r0, #0 +_021DEBC4: + ldrh r3, [r5] + cmp r6, r3 + bne _021DEBF4 + lsl r5, r2, #3 + add r0, r0, r5 + ldr r0, [r0, #4] + bl FUN_02009474 + mov r1, #0x52 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x10 + ldr r1, [r4, r1] + add r1, r1, r5 + ldr r1, [r1, #4] + bl FUN_02009490 + mov r0, #0x56 + lsl r0, r0, #2 + ldrb r1, [r4, #0xb] + ldr r0, [r4, r0] + add sp, #8 + strh r1, [r0, r5] + pop {r3, r4, r5, r6, r7, pc} +_021DEBF4: + add r2, r2, #1 + add r5, #8 + cmp r2, r1 + blo _021DEBC4 +_021DEBFC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD85_021DEAB4 + + thumb_func_start MOD85_021DEC00 +MOD85_021DEC00: ; 0x021DEC00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + add r5, r0, #0 + ldrb r0, [r5, #0xb] + add r4, r1, #0 + ldr r1, [sp, #0x98] + add r6, r2, #0 + add r7, r3, #0 + cmp r1, r0 + bne _021DEC1A + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x98] +_021DEC1A: + ldr r0, [sp, #0x98] + mov r1, #0x4f + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x88] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r0, [sp, #0x9c] + ldr r2, [sp, #0x90] + str r0, [sp, #0x10] + ldr r0, [r5, r1] + ldr r3, [sp, #0x94] + str r0, [sp, #0x14] + add r0, r1, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + add r0, r1, #0 + add r0, #8 + ldr r0, [r5, r0] + add r1, #0xc + str r0, [sp, #0x1c] + ldr r0, [r5, r1] + ldr r1, [sp, #0x8c] + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + bl FUN_02008AA4 + ldr r0, [sp, #0x88] + cmp r0, #1 + bne _021DEC6A + ldr r0, [sp, #0x4c] + str r0, [r4, #8] + mov r0, #1 + b _021DEC6C +_021DEC6A: + mov r0, #0 +_021DEC6C: + str r0, [r4] + ldr r0, [r5, #0xc] + add r2, sp, #0x34 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + ldmia r6!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + ldr r0, [sp, #0xa0] + str r7, [sp, #0x44] + str r0, [sp, #0x40] + ldr r0, [r5] + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r4, #4] + cmp r0, #0 + bne _021DEC9A + bl ErrorHandling +_021DEC9A: + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD85_021DEC00 + + thumb_func_start MOD85_021DECA0 +MOD85_021DECA0: ; 0x021DECA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #1 + bne _021DECB0 + ldr r0, [r4, #8] + bl FUN_02009CDC +_021DECB0: + ldr r0, [r4, #4] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + thumb_func_end MOD85_021DECA0 + + thumb_func_start MOD85_021DECBC +MOD85_021DECBC: ; 0x021DECBC + push {r4, lr} + add r4, r1, #0 + bl FUN_0202011C + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + pop {r4, pc} + thumb_func_end MOD85_021DECBC + + thumb_func_start MOD85_021DECD0 +MOD85_021DECD0: ; 0x021DECD0 + push {r4, lr} + add r4, r1, #0 + bl FUN_02020120 + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + pop {r4, pc} + thumb_func_end MOD85_021DECD0 + + .section .rodata + ; 0x021DECE4 + .incbin "baserom.nds", 0x30AC04, 0x18BC + + .section .data + ; 0x021E05C0 + .incbin "baserom.nds", 0x30C4E0, 0x20 diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s new file mode 100644 index 00000000..922a98f3 --- /dev/null +++ b/arm9/modules/86/asm/module_86.s @@ -0,0 +1,917 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD86_021D74E0 +MOD86_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #2 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x54 + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0x44 + mov r2, #0x54 + bl FUN_02006268 + mov r1, #0 + mov r2, #0x44 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x54 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200628C + ldr r1, [r0] + str r1, [r4, #8] + ldr r0, [r0, #4] + str r0, [r4, #4] + ldr r0, [r4, #8] + bl FUN_020238F4 + str r0, [r4, #0xc] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7580 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7584 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD86_021D76EC + add r0, r4, #0 + bl MOD86_021D78D4 + ldr r0, _021D7588 ; =MOD86_021D76E0 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D7580: .word 0xFFFFE0FF +_021D7584: .word 0x04001000 +_021D7588: .word MOD86_021D76E0 + thumb_func_end MOD86_021D74E0 + + thumb_func_start MOD86_021D758C +MOD86_021D758C: ; 0x021D758C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bhi _021D76A0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D75AC: ; jump table + .short _021D75B8 - _021D75AC - 2 ; case 0 + .short _021D7614 - _021D75AC - 2 ; case 1 + .short _021D7626 - _021D75AC - 2 ; case 2 + .short _021D7638 - _021D75AC - 2 ; case 3 + .short _021D765C - _021D75AC - 2 ; case 4 + .short _021D7696 - _021D75AC - 2 ; case 5 +_021D75B8: + bl MOD86_021D7984 + add r0, r4, #0 + bl MOD86_021D79D4 + add r0, r4, #0 + bl MOD86_021D7B80 + add r0, r6, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #4 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r5] + b _021D76A0 +_021D7614: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76A0 + add r0, r6, #0 + str r0, [r4, #0x40] + mov r0, #2 + str r0, [r5] + b _021D76A0 +_021D7626: + ldr r0, [r4, #0x40] + cmp r0, #0x3c + bge _021D7632 + add r0, r0, #1 + str r0, [r4, #0x40] + b _021D76A0 +_021D7632: + mov r0, #3 + str r0, [r5] + b _021D76A0 +_021D7638: + mov r2, #0x3c + ldrsh r3, [r4, r2] + add r1, r2, #0 + sub r1, #0xfc + cmp r3, r1 + ble _021D764E + sub r1, r3, #4 + strh r1, [r4, #0x3c] + bl MOD86_021D7990 + b _021D76A0 +_021D764E: + sub r2, #0xfc + strh r2, [r4, #0x3c] + bl MOD86_021D7990 + mov r0, #4 + str r0, [r5] + b _021D76A0 +_021D765C: + ldr r0, _021D76A8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D7678 + mov r0, #2 + and r0, r1 + cmp r0, #2 + beq _021D7678 + ldr r0, _021D76AC ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _021D76A0 +_021D7678: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r5] + b _021D76A0 +_021D7696: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76A0 + mov r6, #1 +_021D76A0: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D76A8: .word 0x021C48B8 +_021D76AC: .word 0x021C48F8 + thumb_func_end MOD86_021D758C + + thumb_func_start MOD86_021D76B0 +MOD86_021D76B0: ; 0x021D76B0 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02006278 + add r6, r0, #0 + ldr r4, [r6] + bl MOD86_021D7964 + add r0, r6, #0 + bl MOD86_021D7858 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r5, #0 + bl FUN_0200627C + add r0, r4, #0 + bl FUN_020168D0 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD86_021D76B0 + + thumb_func_start MOD86_021D76E0 +MOD86_021D76E0: ; 0x021D76E0 + ldr r3, _021D76E8 ; =FUN_0201AB60 + ldr r0, [r0, #0x10] + bx r3 + nop +_021D76E8: .word FUN_0201AB60 + thumb_func_end MOD86_021D76E0 + + thumb_func_start MOD86_021D76EC +MOD86_021D76EC: ; 0x021D76EC + push {r4, r5, lr} + sub sp, #0x54 + ldr r5, _021D784C ; =0x021D7CBC + add r4, r0, #0 + add r3, sp, #0x2c + mov r2, #5 +_021D76F8: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D76F8 + add r0, sp, #0x2c + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x1c + ldr r5, _021D7850 ; =0x021D7C90 + str r0, [r4, #0x10] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D7854 ; =0x021D7CA0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, sp, #0 + strb r1, [r0, #0x12] + mov r3, #4 + strb r3, [r0, #0x13] + lsl r3, r3, #0xa + str r3, [sp, #8] + mov r3, #2 + strb r3, [r0, #0x10] + ldr r0, [r4, #0x10] + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_02018744 + mov r2, #2 + add r0, sp, #0 + strb r2, [r0, #0x12] + strb r2, [r0, #0x13] + lsl r1, r2, #0xb + str r1, [sp, #8] + strb r2, [r0, #0x10] + ldr r0, [r4, #0x10] + mov r1, #1 + add r2, sp, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02018744 + mov r1, #4 + add r0, sp, #0 + strb r1, [r0, #0x12] + mov r2, #1 + strb r2, [r0, #0x13] + lsl r1, r2, #0xb + str r1, [sp, #8] + strb r2, [r0, #0x10] + ldr r0, [r4, #0x10] + mov r1, #3 + add r2, sp, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x10] + mov r1, #3 + bl FUN_02018744 + mov r1, #4 + mov r3, #0 + add r0, sp, #0 + strb r3, [r0, #0x12] + strb r1, [r0, #0x13] + lsl r2, r1, #0xa + str r2, [sp, #8] + mov r2, #2 + strb r2, [r0, #0x10] + ldr r0, [r4, #0x10] + add r2, sp, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x10] + mov r1, #4 + bl FUN_02018744 + mov r2, #2 + add r0, sp, #0 + strb r2, [r0, #0x12] + strb r2, [r0, #0x13] + lsl r1, r2, #0xb + str r1, [sp, #8] + strb r2, [r0, #0x10] + ldr r0, [r4, #0x10] + mov r1, #5 + add r2, sp, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x10] + mov r1, #5 + bl FUN_02018744 + mov r1, #4 + add r0, sp, #0 + strb r1, [r0, #0x12] + mov r2, #1 + strb r2, [r0, #0x13] + lsl r1, r2, #0xb + str r1, [sp, #8] + strb r2, [r0, #0x10] + ldr r0, [r4, #0x10] + mov r1, #7 + add r2, sp, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_02018744 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + add sp, #0x54 + pop {r4, r5, pc} + .align 2, 0 +_021D784C: .word 0x021D7CBC +_021D7850: .word 0x021D7C90 +_021D7854: .word 0x021D7CA0 + thumb_func_end MOD86_021D76EC + + thumb_func_start MOD86_021D7858 +MOD86_021D7858: ; 0x021D7858 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD86_021D7858 + + thumb_func_start MOD86_021D78D4 +MOD86_021D78D4: ; 0x021D78D4 + push {r4, lr} + sub sp, #0x10 + ldr r1, _021D7960 ; =0x021D7C88 + add r4, r0, #0 + ldrh r2, [r1] + add r0, sp, #8 + strh r2, [r0] + ldrh r2, [r1, #2] + strh r2, [r0, #2] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + strh r2, [r0, #4] + strh r1, [r0, #6] + bl FUN_0201BD5C + mov r0, #1 + ldr r3, [r4] + mov r1, #0x1a + add r2, r0, #0 + bl FUN_0200A86C + str r0, [r4, #0x34] + ldr r0, [r4] + bl FUN_0200AA80 + str r0, [r4, #0x38] + mov r1, #0 + add r0, sp, #8 + strb r1, [r0] + add r1, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x14 + add r2, sp, #8 + bl FUN_02019150 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x14 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #4 + add r0, sp, #8 + strb r1, [r0] + add r1, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x24 + add r2, sp, #8 + bl FUN_02019150 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + add r4, #0x24 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D7960: .word 0x021D7C88 + thumb_func_end MOD86_021D78D4 + + thumb_func_start MOD86_021D7964 +MOD86_021D7964: ; 0x021D7964 + push {r4, lr} + add r4, r0, #0 + add r0, #0x24 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02019178 + ldr r0, [r4, #0x38] + bl FUN_0200AB18 + ldr r0, [r4, #0x34] + bl FUN_0200A8B8 + pop {r4, pc} + thumb_func_end MOD86_021D7964 + + thumb_func_start MOD86_021D7984 +MOD86_021D7984: ; 0x021D7984 + ldr r3, _021D798C ; =MOD86_021D7990 + mov r1, #0 + strh r1, [r0, #0x3c] + bx r3 + .align 2, 0 +_021D798C: .word MOD86_021D7990 + thumb_func_end MOD86_021D7984 + + thumb_func_start MOD86_021D7990 +MOD86_021D7990: ; 0x021D7990 + push {r4, lr} + add r4, r0, #0 + mov r3, #0x3c + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #3 + bl FUN_020179E0 + mov r3, #0x3c + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x10] + mov r1, #5 + mov r2, #3 + add r3, #0xc0 + bl FUN_020179E0 + mov r3, #0x3c + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x10] + mov r1, #0 + mov r2, #3 + bl FUN_020179E0 + mov r3, #0x3c + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x10] + mov r1, #4 + mov r2, #3 + add r3, #0xc0 + bl FUN_020179E0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD86_021D7990 + + thumb_func_start MOD86_021D79D4 +MOD86_021D79D4: ; 0x021D79D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + cmp r0, #0 + bne _021D79F4 + mov r0, #2 + str r0, [sp, #0x18] + mov r0, #6 + str r0, [sp, #0x14] + mov r0, #8 + mov r7, #0xa + str r0, [sp, #0x10] + mov r6, #0 + mov r4, #4 + b _021D7A06 +_021D79F4: + mov r0, #3 + str r0, [sp, #0x18] + mov r0, #7 + str r0, [sp, #0x14] + mov r0, #9 + mov r7, #0xb + str r0, [sp, #0x10] + mov r6, #1 + mov r4, #5 +_021D7A06: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + add r1, r7, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r1, [sp, #0x18] + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #3 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r5] + mov r2, #0 + str r0, [sp, #4] + ldr r1, [sp, #0x14] + mov r0, #0x84 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + add r1, r7, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r1, [sp, #0x18] + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #7 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r5] + ldr r1, [sp, #0x14] + str r0, [sp, #4] + mov r0, #0x84 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r1, [sp, #0x10] + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #1 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r2, #0 + ldr r0, [r5, #0x10] + add r3, r2, #0 + bl FUN_020186B4 + ldr r0, [r5, #0x10] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + add r1, r6, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #1 + bl FUN_0200687C + mov r3, #0x20 + str r3, [sp] + ldr r0, [r5] + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x84 + mov r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r1, [sp, #0x10] + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r5, #0x10] + mov r1, #5 + add r3, r2, #0 + bl FUN_020186B4 + ldr r0, [r5, #0x10] + mov r1, #5 + bl FUN_02017CD0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + add r1, r6, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x84 + mov r3, #5 + bl FUN_0200687C + mov r3, #0x20 + str r3, [sp] + ldr r0, [r5] + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x84 + mov r2, #4 + bl FUN_02006930 + mov r0, #0 + ldr r3, [r5] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldr r3, [r5] + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r2, [r5] + mov r0, #0 + mov r1, #0x40 + bl FUN_02002ED0 + ldr r2, [r5] + mov r0, #4 + mov r1, #0x40 + bl FUN_02002ED0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD86_021D79D4 + + thumb_func_start MOD86_021D7B80 +MOD86_021D7B80: ; 0x021D7B80 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #2 + ldr r1, [r5] + lsl r0, r0, #8 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #2 + ldr r1, [r5] + lsl r0, r0, #8 + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, [r5, #0x34] + mov r1, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x38] + ldr r2, [r5, #0xc] + mov r1, #0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x38] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + mov r0, #0x20 + str r0, [sp] + mov r1, #0 + ldr r0, _021D7C84 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x14 + add r2, r4, #0 + mov r3, #0x30 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #0x20 + str r0, [sp] + mov r1, #0 + ldr r0, _021D7C84 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x24 + add r2, r4, #0 + mov r3, #0x30 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [r5, #4] + cmp r0, #0 + bne _021D7C00 + mov r1, #1 + b _021D7C02 +_021D7C00: + mov r1, #2 +_021D7C02: + ldr r0, [r5, #0x34] + add r2, r4, #0 + bl FUN_0200A8E0 + mov r3, #0x40 + str r3, [sp] + mov r1, #0 + ldr r0, _021D7C84 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x14 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r3, #0x40 + str r3, [sp] + mov r1, #0 + ldr r0, _021D7C84 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + str r1, [sp, #0xc] + add r0, #0x24 + add r2, r4, #0 + bl FUN_0201BDE0 + ldr r0, [r5, #0x34] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x90 + str r0, [sp] + mov r1, #0 + ldr r0, _021D7C84 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x14 + add r2, r4, #0 + mov r3, #0x8a + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #0x90 + str r0, [sp] + mov r1, #0 + ldr r0, _021D7C84 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r5, #0x24 + add r0, r5, #0 + add r2, r4, #0 + mov r3, #0x8a + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021D7C84: .word 0x00010200 + thumb_func_end MOD86_021D7B80 + + .section .rodata + ; 0x021D7C88 + .incbin "baserom.nds", 0x30CDA8, 0x5C diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt deleted file mode 100644 index 4cca1421..00000000 --- a/arm9/undefined_syms.txt +++ /dev/null @@ -1,549 +0,0 @@ - -// Overlay -FUN_0222DAEC = 0x0222DAEC; -FUN_0222DD1C = 0x0222DD1C; -FUN_0222DD38 = 0x0222DD38; -FUN_0222E2BC = 0x0222E2BC; -FUN_0222E360 = 0x0222E360; -FUN_0222E3A0 = 0x0222E3A0; -FUN_0222E7E8 = 0x0222E7E8; -FUN_0222E874 = 0x0222E874; -FUN_0222EC60 = 0x0222EC60; -FUN_0222ED34 = 0x0222ED34; -FUN_0222EDBC = 0x0222EDBC; -FUN_0222F440 = 0x0222F440; -FUN_0222F480 = 0x0222F480; -FUN_0222F7E0 = 0x0222F7E0; -FUN_022300E4 = 0x022300E4; -FUN_02230F3C = 0x02230F3C; -FUN_02230F70 = 0x02230F70; -FUN_02230F80 = 0x02230F80; -FUN_02213B08 = 0x02213B08; -FUN_02213D80 = 0x02213D80; -FUN_02213DBC = 0x02213DBC; -FUN_02213E24 = 0x02213E24; - -// Overlay - -SDK_OVERLAY_MODULE_00_ID = 0; -SDK_OVERLAY_MODULE_00_START = 0x021D74E0; -SDK_OVERLAY_MODULE_00_SIZE = 0x00000020; -SDK_OVERLAY_MODULE_00_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_00_STATIC_INIT_START = 0x021D74E0; -SDK_OVERLAY_MODULE_00_STATIC_INIT_END = 0x021D74E4; -SDK_OVERLAY_MODULE_01_ID = 1; -SDK_OVERLAY_MODULE_01_START = 0x021D74E0; -SDK_OVERLAY_MODULE_01_SIZE = 0x00000020; -SDK_OVERLAY_MODULE_01_BSSSIZE = 0x00000020; -SDK_OVERLAY_MODULE_01_STATIC_INIT_START = 0x021D74F0; -SDK_OVERLAY_MODULE_01_STATIC_INIT_END = 0x021D74F8; -SDK_OVERLAY_MODULE_02_ID = 2; -SDK_OVERLAY_MODULE_02_START = 0x021D7520; -SDK_OVERLAY_MODULE_02_SIZE = 0x00000020; -SDK_OVERLAY_MODULE_02_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_02_STATIC_INIT_START = 0x021D7520; -SDK_OVERLAY_MODULE_02_STATIC_INIT_END = 0x021D7524; -SDK_OVERLAY_MODULE_03_ID = 3; -SDK_OVERLAY_MODULE_03_START = 0x01FF8700; -SDK_OVERLAY_MODULE_03_SIZE = 0x00000020; -SDK_OVERLAY_MODULE_03_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_03_STATIC_INIT_START = 0x01FF8700; -SDK_OVERLAY_MODULE_03_STATIC_INIT_END = 0x01FF8704; -SDK_OVERLAY_MODULE_04_ID = 4; -SDK_OVERLAY_MODULE_04_START = 0x021D74E0; -SDK_OVERLAY_MODULE_04_SIZE = 0x000386E0; -SDK_OVERLAY_MODULE_04_BSSSIZE = 0x000022A0; -SDK_OVERLAY_MODULE_04_STATIC_INIT_START = 0x0220BE94; -SDK_OVERLAY_MODULE_04_STATIC_INIT_END = 0x0220BE98; -SDK_OVERLAY_MODULE_05_ID = 5; -SDK_OVERLAY_MODULE_05_START = 0x021D74E0; -SDK_OVERLAY_MODULE_05_SIZE = 0x000261A0; -SDK_OVERLAY_MODULE_05_BSSSIZE = 0x0003C020; -SDK_OVERLAY_MODULE_05_STATIC_INIT_START = 0x021FD1C8; -SDK_OVERLAY_MODULE_05_STATIC_INIT_END = 0x021FD1CC; -SDK_OVERLAY_MODULE_06_ID = 6; -SDK_OVERLAY_MODULE_06_START = 0x022396A0; -SDK_OVERLAY_MODULE_06_SIZE = 0x00018D80; -SDK_OVERLAY_MODULE_06_BSSSIZE = 0x00000020; -SDK_OVERLAY_MODULE_06_STATIC_INIT_START = 0x02252228; -SDK_OVERLAY_MODULE_06_STATIC_INIT_END = 0x0225222C; -SDK_OVERLAY_MODULE_07_ID = 7; -SDK_OVERLAY_MODULE_07_START = 0x02211E60; -SDK_OVERLAY_MODULE_07_SIZE = 0x000032E0; -SDK_OVERLAY_MODULE_07_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_07_STATIC_INIT_START = 0x02215134; -SDK_OVERLAY_MODULE_07_STATIC_INIT_END = 0x02215138; -SDK_OVERLAY_MODULE_08_ID = 8; -SDK_OVERLAY_MODULE_08_START = 0x02211E60; -SDK_OVERLAY_MODULE_08_SIZE = 0x0001B760; -SDK_OVERLAY_MODULE_08_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_08_STATIC_INIT_START = 0x0222D598; -SDK_OVERLAY_MODULE_08_STATIC_INIT_END = 0x0222D59C; -SDK_OVERLAY_MODULE_09_ID = 9; -SDK_OVERLAY_MODULE_09_START = 0x02211E60; -SDK_OVERLAY_MODULE_09_SIZE = 0x0000A1A0; -SDK_OVERLAY_MODULE_09_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_09_STATIC_INIT_START = 0x0221BFE8; -SDK_OVERLAY_MODULE_09_STATIC_INIT_END = 0x0221BFEC; -SDK_OVERLAY_MODULE_10_ID = 10; -SDK_OVERLAY_MODULE_10_START = 0x021D74E0; -SDK_OVERLAY_MODULE_10_SIZE = 0x00000020; -SDK_OVERLAY_MODULE_10_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_10_STATIC_INIT_START = 0x021D74E0; -SDK_OVERLAY_MODULE_10_STATIC_INIT_END = 0x021D74E4; -SDK_OVERLAY_MODULE_11_ID = 11; -SDK_OVERLAY_MODULE_11_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_11_SIZE = 0x000329E0; -SDK_OVERLAY_MODULE_11_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_11_STATIC_INIT_START = 0x0225FF18; -SDK_OVERLAY_MODULE_11_STATIC_INIT_END = 0x0225FF20; -SDK_OVERLAY_MODULE_12_ID = 12; -SDK_OVERLAY_MODULE_12_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_12_SIZE = 0x00019260; -SDK_OVERLAY_MODULE_12_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_12_STATIC_INIT_START = 0x02246810; -SDK_OVERLAY_MODULE_12_STATIC_INIT_END = 0x02246818; -SDK_OVERLAY_MODULE_13_ID = 13; -SDK_OVERLAY_MODULE_13_START = 0x02211E60; -SDK_OVERLAY_MODULE_13_SIZE = 0x0002EBE0; -SDK_OVERLAY_MODULE_13_BSSSIZE = 0x000027E0; -SDK_OVERLAY_MODULE_13_STATIC_INIT_START = 0x0223F768; -SDK_OVERLAY_MODULE_13_STATIC_INIT_END = 0x0223F76C; -SDK_OVERLAY_MODULE_14_ID = 14; -SDK_OVERLAY_MODULE_14_START = 0x021D74E0; -SDK_OVERLAY_MODULE_14_SIZE = 0x0000F520; -SDK_OVERLAY_MODULE_14_BSSSIZE = 0x000001A0; -SDK_OVERLAY_MODULE_14_STATIC_INIT_START = 0x021E69C8; -SDK_OVERLAY_MODULE_14_STATIC_INIT_END = 0x021E69CC; -SDK_OVERLAY_MODULE_15_ID = 15; -SDK_OVERLAY_MODULE_15_START = 0x021D74E0; -SDK_OVERLAY_MODULE_15_SIZE = 0x00004680; -SDK_OVERLAY_MODULE_15_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_15_STATIC_INIT_START = 0x021DBB5C; -SDK_OVERLAY_MODULE_15_STATIC_INIT_END = 0x021DBB60; -SDK_OVERLAY_MODULE_16_ID = 16; -SDK_OVERLAY_MODULE_16_START = 0x021D74E0; -SDK_OVERLAY_MODULE_16_SIZE = 0x00028500; -SDK_OVERLAY_MODULE_16_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_16_STATIC_INIT_START = 0x021FF9C4; -SDK_OVERLAY_MODULE_16_STATIC_INIT_END = 0x021FF9C8; -SDK_OVERLAY_MODULE_17_ID = 17; -SDK_OVERLAY_MODULE_17_START = 0x021D74E0; -SDK_OVERLAY_MODULE_17_SIZE = 0x00006E80; -SDK_OVERLAY_MODULE_17_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_17_STATIC_INIT_START = 0x021DE354; -SDK_OVERLAY_MODULE_17_STATIC_INIT_END = 0x021DE358; -SDK_OVERLAY_MODULE_18_ID = 18; -SDK_OVERLAY_MODULE_18_START = 0x022396A0; -SDK_OVERLAY_MODULE_18_SIZE = 0x00017CE0; -SDK_OVERLAY_MODULE_18_BSSSIZE = 0x00000080; -SDK_OVERLAY_MODULE_18_STATIC_INIT_START = 0x02250858; -SDK_OVERLAY_MODULE_18_STATIC_INIT_END = 0x0225085C; -SDK_OVERLAY_MODULE_19_ID = 19; -SDK_OVERLAY_MODULE_19_START = 0x02252440; -SDK_OVERLAY_MODULE_19_SIZE = 0x00000100; -SDK_OVERLAY_MODULE_19_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_19_STATIC_INIT_START = 0x02252524; -SDK_OVERLAY_MODULE_19_STATIC_INIT_END = 0x02252528; -SDK_OVERLAY_MODULE_20_ID = 20; -SDK_OVERLAY_MODULE_20_START = 0x02252440; -SDK_OVERLAY_MODULE_20_SIZE = 0x00002400; -SDK_OVERLAY_MODULE_20_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_20_STATIC_INIT_START = 0x02254838; -SDK_OVERLAY_MODULE_20_STATIC_INIT_END = 0x0225483C; -SDK_OVERLAY_MODULE_21_ID = 21; -SDK_OVERLAY_MODULE_21_START = 0x02254840; -SDK_OVERLAY_MODULE_21_SIZE = 0x000005C0; -SDK_OVERLAY_MODULE_21_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_21_STATIC_INIT_START = 0x02254DE8; -SDK_OVERLAY_MODULE_21_STATIC_INIT_END = 0x02254DF0; -SDK_OVERLAY_MODULE_22_ID = 22; -SDK_OVERLAY_MODULE_22_START = 0x02254840; -SDK_OVERLAY_MODULE_22_SIZE = 0x00000F00; -SDK_OVERLAY_MODULE_22_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_22_STATIC_INIT_START = 0x02255730; -SDK_OVERLAY_MODULE_22_STATIC_INIT_END = 0x02255738; -SDK_OVERLAY_MODULE_23_ID = 23; -SDK_OVERLAY_MODULE_23_START = 0x02254840; -SDK_OVERLAY_MODULE_23_SIZE = 0x00001900; -SDK_OVERLAY_MODULE_23_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_23_STATIC_INIT_START = 0x02256128; -SDK_OVERLAY_MODULE_23_STATIC_INIT_END = 0x02256130; -SDK_OVERLAY_MODULE_24_ID = 24; -SDK_OVERLAY_MODULE_24_START = 0x02254840; -SDK_OVERLAY_MODULE_24_SIZE = 0x000009A0; -SDK_OVERLAY_MODULE_24_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_24_STATIC_INIT_START = 0x022551C0; -SDK_OVERLAY_MODULE_24_STATIC_INIT_END = 0x022551C8; -SDK_OVERLAY_MODULE_25_ID = 25; -SDK_OVERLAY_MODULE_25_START = 0x02254840; -SDK_OVERLAY_MODULE_25_SIZE = 0x00000560; -SDK_OVERLAY_MODULE_25_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_25_STATIC_INIT_START = 0x02254D80; -SDK_OVERLAY_MODULE_25_STATIC_INIT_END = 0x02254D88; -SDK_OVERLAY_MODULE_26_ID = 26; -SDK_OVERLAY_MODULE_26_START = 0x02254840; -SDK_OVERLAY_MODULE_26_SIZE = 0x00000800; -SDK_OVERLAY_MODULE_26_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_26_STATIC_INIT_START = 0x02255020; -SDK_OVERLAY_MODULE_26_STATIC_INIT_END = 0x02255028; -SDK_OVERLAY_MODULE_27_ID = 27; -SDK_OVERLAY_MODULE_27_START = 0x02254840; -SDK_OVERLAY_MODULE_27_SIZE = 0x00000BA0; -SDK_OVERLAY_MODULE_27_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_27_STATIC_INIT_START = 0x022553C4; -SDK_OVERLAY_MODULE_27_STATIC_INIT_END = 0x022553CC; -SDK_OVERLAY_MODULE_28_ID = 28; -SDK_OVERLAY_MODULE_28_START = 0x02254840; -SDK_OVERLAY_MODULE_28_SIZE = 0x00001780; -SDK_OVERLAY_MODULE_28_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_28_STATIC_INIT_START = 0x02255F18; -SDK_OVERLAY_MODULE_28_STATIC_INIT_END = 0x02255F20; -SDK_OVERLAY_MODULE_29_ID = 29; -SDK_OVERLAY_MODULE_29_START = 0x02254840; -SDK_OVERLAY_MODULE_29_SIZE = 0x00000900; -SDK_OVERLAY_MODULE_29_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_29_STATIC_INIT_START = 0x0225512C; -SDK_OVERLAY_MODULE_29_STATIC_INIT_END = 0x02255134; -SDK_OVERLAY_MODULE_30_ID = 30; -SDK_OVERLAY_MODULE_30_START = 0x02254840; -SDK_OVERLAY_MODULE_30_SIZE = 0x00000600; -SDK_OVERLAY_MODULE_30_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_30_STATIC_INIT_START = 0x02254E28; -SDK_OVERLAY_MODULE_30_STATIC_INIT_END = 0x02254E30; -SDK_OVERLAY_MODULE_31_ID = 31; -SDK_OVERLAY_MODULE_31_START = 0x02254840; -SDK_OVERLAY_MODULE_31_SIZE = 0x00000600; -SDK_OVERLAY_MODULE_31_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_31_STATIC_INIT_START = 0x02254E20; -SDK_OVERLAY_MODULE_31_STATIC_INIT_END = 0x02254E28; -SDK_OVERLAY_MODULE_32_ID = 32; -SDK_OVERLAY_MODULE_32_START = 0x02254840; -SDK_OVERLAY_MODULE_32_SIZE = 0x000004A0; -SDK_OVERLAY_MODULE_32_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_32_STATIC_INIT_START = 0x02254CC4; -SDK_OVERLAY_MODULE_32_STATIC_INIT_END = 0x02254CCC; -SDK_OVERLAY_MODULE_33_ID = 33; -SDK_OVERLAY_MODULE_33_START = 0x02254840; -SDK_OVERLAY_MODULE_33_SIZE = 0x00000320; -SDK_OVERLAY_MODULE_33_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_33_STATIC_INIT_START = 0x02254B40; -SDK_OVERLAY_MODULE_33_STATIC_INIT_END = 0x02254B48; -SDK_OVERLAY_MODULE_34_ID = 34; -SDK_OVERLAY_MODULE_34_START = 0x02254840; -SDK_OVERLAY_MODULE_34_SIZE = 0x000004C0; -SDK_OVERLAY_MODULE_34_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_34_STATIC_INIT_START = 0x02254CF8; -SDK_OVERLAY_MODULE_34_STATIC_INIT_END = 0x02254D00; -SDK_OVERLAY_MODULE_35_ID = 35; -SDK_OVERLAY_MODULE_35_START = 0x02254840; -SDK_OVERLAY_MODULE_35_SIZE = 0x000009A0; -SDK_OVERLAY_MODULE_35_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_35_STATIC_INIT_START = 0x022551C0; -SDK_OVERLAY_MODULE_35_STATIC_INIT_END = 0x022551C8; -SDK_OVERLAY_MODULE_36_ID = 36; -SDK_OVERLAY_MODULE_36_START = 0x02254840; -SDK_OVERLAY_MODULE_36_SIZE = 0x00000CC0; -SDK_OVERLAY_MODULE_36_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_36_STATIC_INIT_START = 0x022554F8; -SDK_OVERLAY_MODULE_36_STATIC_INIT_END = 0x02255500; -SDK_OVERLAY_MODULE_37_ID = 37; -SDK_OVERLAY_MODULE_37_START = 0x02254840; -SDK_OVERLAY_MODULE_37_SIZE = 0x00000560; -SDK_OVERLAY_MODULE_37_BSSSIZE = 0x00000020; -SDK_OVERLAY_MODULE_37_STATIC_INIT_START = 0x02254D90; -SDK_OVERLAY_MODULE_37_STATIC_INIT_END = 0x02254D98; -SDK_OVERLAY_MODULE_38_ID = 38; -SDK_OVERLAY_MODULE_38_START = 0x02254840; -SDK_OVERLAY_MODULE_38_SIZE = 0x00000B40; -SDK_OVERLAY_MODULE_38_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_38_STATIC_INIT_START = 0x02255360; -SDK_OVERLAY_MODULE_38_STATIC_INIT_END = 0x02255368; -SDK_OVERLAY_MODULE_39_ID = 39; -SDK_OVERLAY_MODULE_39_START = 0x02254840; -SDK_OVERLAY_MODULE_39_SIZE = 0x00000CC0; -SDK_OVERLAY_MODULE_39_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_39_STATIC_INIT_START = 0x022554E4; -SDK_OVERLAY_MODULE_39_STATIC_INIT_END = 0x022554EC; -SDK_OVERLAY_MODULE_40_ID = 40; -SDK_OVERLAY_MODULE_40_START = 0x02254840; -SDK_OVERLAY_MODULE_40_SIZE = 0x00000C60; -SDK_OVERLAY_MODULE_40_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_40_STATIC_INIT_START = 0x02255480; -SDK_OVERLAY_MODULE_40_STATIC_INIT_END = 0x02255488; -SDK_OVERLAY_MODULE_41_ID = 41; -SDK_OVERLAY_MODULE_41_START = 0x02254840; -SDK_OVERLAY_MODULE_41_SIZE = 0x00001140; -SDK_OVERLAY_MODULE_41_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_41_STATIC_INIT_START = 0x02255974; -SDK_OVERLAY_MODULE_41_STATIC_INIT_END = 0x0225597C; -SDK_OVERLAY_MODULE_42_ID = 42; -SDK_OVERLAY_MODULE_42_START = 0x02254840; -SDK_OVERLAY_MODULE_42_SIZE = 0x00000900; -SDK_OVERLAY_MODULE_42_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_42_STATIC_INIT_START = 0x0225511C; -SDK_OVERLAY_MODULE_42_STATIC_INIT_END = 0x02255124; -SDK_OVERLAY_MODULE_43_ID = 43; -SDK_OVERLAY_MODULE_43_START = 0x02254840; -SDK_OVERLAY_MODULE_43_SIZE = 0x000009C0; -SDK_OVERLAY_MODULE_43_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_43_STATIC_INIT_START = 0x022551EC; -SDK_OVERLAY_MODULE_43_STATIC_INIT_END = 0x022551F4; -SDK_OVERLAY_MODULE_44_ID = 44; -SDK_OVERLAY_MODULE_44_START = 0x02254840; -SDK_OVERLAY_MODULE_44_SIZE = 0x000004A0; -SDK_OVERLAY_MODULE_44_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_44_STATIC_INIT_START = 0x02254CBC; -SDK_OVERLAY_MODULE_44_STATIC_INIT_END = 0x02254CC4; -SDK_OVERLAY_MODULE_45_ID = 45; -SDK_OVERLAY_MODULE_45_START = 0x02254840; -SDK_OVERLAY_MODULE_45_SIZE = 0x00000940; -SDK_OVERLAY_MODULE_45_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_45_STATIC_INIT_START = 0x02255170; -SDK_OVERLAY_MODULE_45_STATIC_INIT_END = 0x02255178; -SDK_OVERLAY_MODULE_46_ID = 46; -SDK_OVERLAY_MODULE_46_START = 0x02254840; -SDK_OVERLAY_MODULE_46_SIZE = 0x00000320; -SDK_OVERLAY_MODULE_46_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_46_STATIC_INIT_START = 0x02254B40; -SDK_OVERLAY_MODULE_46_STATIC_INIT_END = 0x02254B48; -SDK_OVERLAY_MODULE_47_ID = 47; -SDK_OVERLAY_MODULE_47_START = 0x02254840; -SDK_OVERLAY_MODULE_47_SIZE = 0x00000CA0; -SDK_OVERLAY_MODULE_47_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_47_STATIC_INIT_START = 0x022554BC; -SDK_OVERLAY_MODULE_47_STATIC_INIT_END = 0x022554C4; -SDK_OVERLAY_MODULE_48_ID = 48; -SDK_OVERLAY_MODULE_48_START = 0x02254840; -SDK_OVERLAY_MODULE_48_SIZE = 0x000008A0; -SDK_OVERLAY_MODULE_48_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_48_STATIC_INIT_START = 0x022550D0; -SDK_OVERLAY_MODULE_48_STATIC_INIT_END = 0x022550D8; -SDK_OVERLAY_MODULE_49_ID = 49; -SDK_OVERLAY_MODULE_49_START = 0x02254840; -SDK_OVERLAY_MODULE_49_SIZE = 0x00000600; -SDK_OVERLAY_MODULE_49_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_49_STATIC_INIT_START = 0x02254E20; -SDK_OVERLAY_MODULE_49_STATIC_INIT_END = 0x02254E28; -SDK_OVERLAY_MODULE_50_ID = 50; -SDK_OVERLAY_MODULE_50_START = 0x02254840; -SDK_OVERLAY_MODULE_50_SIZE = 0x00000320; -SDK_OVERLAY_MODULE_50_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_50_STATIC_INIT_START = 0x02254B50; -SDK_OVERLAY_MODULE_50_STATIC_INIT_END = 0x02254B58; -SDK_OVERLAY_MODULE_51_ID = 51; -SDK_OVERLAY_MODULE_51_START = 0x02254840; -SDK_OVERLAY_MODULE_51_SIZE = 0x00000FC0; -SDK_OVERLAY_MODULE_51_BSSSIZE = 0x00000020; -SDK_OVERLAY_MODULE_51_STATIC_INIT_START = 0x022557E0; -SDK_OVERLAY_MODULE_51_STATIC_INIT_END = 0x022557E4; -SDK_OVERLAY_MODULE_52_ID = 52; -SDK_OVERLAY_MODULE_52_START = 0x021D74E0; -SDK_OVERLAY_MODULE_52_SIZE = 0x00000400; -SDK_OVERLAY_MODULE_52_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_52_STATIC_INIT_START = 0x021D78D0; -SDK_OVERLAY_MODULE_52_STATIC_INIT_END = 0x021D78D4; -SDK_OVERLAY_MODULE_53_ID = 53; -SDK_OVERLAY_MODULE_53_START = 0x021D74E0; -SDK_OVERLAY_MODULE_53_SIZE = 0x00002480; -SDK_OVERLAY_MODULE_53_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_53_STATIC_INIT_START = 0x021D9888; -SDK_OVERLAY_MODULE_53_STATIC_INIT_END = 0x021D988C; -SDK_OVERLAY_MODULE_54_ID = 54; -SDK_OVERLAY_MODULE_54_START = 0x021D74E0; -SDK_OVERLAY_MODULE_54_SIZE = 0x00002380; -SDK_OVERLAY_MODULE_54_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_54_STATIC_INIT_START = 0x021D97D4; -SDK_OVERLAY_MODULE_54_STATIC_INIT_END = 0x021D97D8; -SDK_OVERLAY_MODULE_55_ID = 55; -SDK_OVERLAY_MODULE_55_START = 0x021D74E0; -SDK_OVERLAY_MODULE_55_SIZE = 0x00003040; -SDK_OVERLAY_MODULE_55_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_55_STATIC_INIT_START = 0x021DA480; -SDK_OVERLAY_MODULE_55_STATIC_INIT_END = 0x021DA484; -SDK_OVERLAY_MODULE_56_ID = 56; -SDK_OVERLAY_MODULE_56_START = 0x02211E60; -SDK_OVERLAY_MODULE_56_SIZE = 0x000047A0; -SDK_OVERLAY_MODULE_56_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_56_STATIC_INIT_START = 0x0221647C; -SDK_OVERLAY_MODULE_56_STATIC_INIT_END = 0x02216480; -SDK_OVERLAY_MODULE_57_ID = 57; -SDK_OVERLAY_MODULE_57_START = 0x021D74E0; -SDK_OVERLAY_MODULE_57_SIZE = 0x00002540; -SDK_OVERLAY_MODULE_57_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_57_STATIC_INIT_START = 0x021D9A10; -SDK_OVERLAY_MODULE_57_STATIC_INIT_END = 0x021D9A14; -SDK_OVERLAY_MODULE_58_ID = 58; -SDK_OVERLAY_MODULE_58_START = 0x021D9A20; -SDK_OVERLAY_MODULE_58_SIZE = 0x000015A0; -SDK_OVERLAY_MODULE_58_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_58_STATIC_INIT_START = 0x021DAF94; -SDK_OVERLAY_MODULE_58_STATIC_INIT_END = 0x021DAF98; -SDK_OVERLAY_MODULE_59_ID = 59; -SDK_OVERLAY_MODULE_59_START = 0x021D74E0; -SDK_OVERLAY_MODULE_59_SIZE = 0x00002C20; -SDK_OVERLAY_MODULE_59_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_59_STATIC_INIT_START = 0x021DA0FC; -SDK_OVERLAY_MODULE_59_STATIC_INIT_END = 0x021DA100; -SDK_OVERLAY_MODULE_60_ID = 60; -SDK_OVERLAY_MODULE_60_START = 0x021D74E0; -SDK_OVERLAY_MODULE_60_SIZE = 0x00000D00; -SDK_OVERLAY_MODULE_60_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_60_STATIC_INIT_START = 0x021D81D8; -SDK_OVERLAY_MODULE_60_STATIC_INIT_END = 0x021D81DC; -SDK_OVERLAY_MODULE_61_ID = 61; -SDK_OVERLAY_MODULE_61_START = 0x021D74E0; -SDK_OVERLAY_MODULE_61_SIZE = 0x00001080; -SDK_OVERLAY_MODULE_61_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_61_STATIC_INIT_START = 0x021D8554; -SDK_OVERLAY_MODULE_61_STATIC_INIT_END = 0x021D8558; -SDK_OVERLAY_MODULE_62_ID = 62; -SDK_OVERLAY_MODULE_62_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_62_SIZE = 0x00003DE0; -SDK_OVERLAY_MODULE_62_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_62_STATIC_INIT_START = 0x02231380; -SDK_OVERLAY_MODULE_62_STATIC_INIT_END = 0x02231388; -SDK_OVERLAY_MODULE_63_ID = 63; -SDK_OVERLAY_MODULE_63_START = 0x021D74E0; -SDK_OVERLAY_MODULE_63_SIZE = 0x00004AC0; -SDK_OVERLAY_MODULE_63_BSSSIZE = 0x00000020; -SDK_OVERLAY_MODULE_63_STATIC_INIT_START = 0x021DBF20; -SDK_OVERLAY_MODULE_63_STATIC_INIT_END = 0x021DBF24; -SDK_OVERLAY_MODULE_64_ID = 64; -SDK_OVERLAY_MODULE_64_START = 0x021D74E0; -SDK_OVERLAY_MODULE_64_SIZE = 0x00001C40; -SDK_OVERLAY_MODULE_64_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_64_STATIC_INIT_START = 0x021D9110; -SDK_OVERLAY_MODULE_64_STATIC_INIT_END = 0x021D9114; -SDK_OVERLAY_MODULE_65_ID = 65; -SDK_OVERLAY_MODULE_65_START = 0x021D74E0; -SDK_OVERLAY_MODULE_65_SIZE = 0x00003000; -SDK_OVERLAY_MODULE_65_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_65_STATIC_INIT_START = 0x021DA428; -SDK_OVERLAY_MODULE_65_STATIC_INIT_END = 0x021DA42C; -SDK_OVERLAY_MODULE_66_ID = 66; -SDK_OVERLAY_MODULE_66_START = 0x021D74E0; -SDK_OVERLAY_MODULE_66_SIZE = 0x00002660; -SDK_OVERLAY_MODULE_66_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_66_STATIC_INIT_START = 0x021D9A9C; -SDK_OVERLAY_MODULE_66_STATIC_INIT_END = 0x021D9AA0; -SDK_OVERLAY_MODULE_67_ID = 67; -SDK_OVERLAY_MODULE_67_START = 0x021D74E0; -SDK_OVERLAY_MODULE_67_SIZE = 0x00002440; -SDK_OVERLAY_MODULE_67_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_67_STATIC_INIT_START = 0x021D9918; -SDK_OVERLAY_MODULE_67_STATIC_INIT_END = 0x021D991C; -SDK_OVERLAY_MODULE_68_ID = 68; -SDK_OVERLAY_MODULE_68_START = 0x021D74E0; -SDK_OVERLAY_MODULE_68_SIZE = 0x00001600; -SDK_OVERLAY_MODULE_68_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_68_STATIC_INIT_START = 0x021D8AD4; -SDK_OVERLAY_MODULE_68_STATIC_INIT_END = 0x021D8AD8; -SDK_OVERLAY_MODULE_69_ID = 69; -SDK_OVERLAY_MODULE_69_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_69_SIZE = 0x000023A0; -SDK_OVERLAY_MODULE_69_BSSSIZE = 0x00000020; -SDK_OVERLAY_MODULE_69_STATIC_INIT_START = 0x0222F93C; -SDK_OVERLAY_MODULE_69_STATIC_INIT_END = 0x0222F940; -SDK_OVERLAY_MODULE_70_ID = 70; -SDK_OVERLAY_MODULE_70_START = 0x021D74E0; -SDK_OVERLAY_MODULE_70_SIZE = 0x00000E20; -SDK_OVERLAY_MODULE_70_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_70_STATIC_INIT_START = 0x021D82DC; -SDK_OVERLAY_MODULE_70_STATIC_INIT_END = 0x021D82E0; -SDK_OVERLAY_MODULE_71_ID = 71; -SDK_OVERLAY_MODULE_71_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_71_SIZE = 0x00003EC0; -SDK_OVERLAY_MODULE_71_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_71_STATIC_INIT_START = 0x0223147C; -SDK_OVERLAY_MODULE_71_STATIC_INIT_END = 0x02231480; -SDK_OVERLAY_MODULE_72_ID = 72; -SDK_OVERLAY_MODULE_72_START = 0x021D74E0; -SDK_OVERLAY_MODULE_72_SIZE = 0x00000020; -SDK_OVERLAY_MODULE_72_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_72_STATIC_INIT_START = 0x021D74E0; -SDK_OVERLAY_MODULE_72_STATIC_INIT_END = 0x021D74E4; -SDK_OVERLAY_MODULE_73_ID = 73; -SDK_OVERLAY_MODULE_73_START = 0x021D74E0; -SDK_OVERLAY_MODULE_73_SIZE = 0x00004AE0; -SDK_OVERLAY_MODULE_73_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_73_STATIC_INIT_START = 0x021DBF70; -SDK_OVERLAY_MODULE_73_STATIC_INIT_END = 0x021DBF74; -SDK_OVERLAY_MODULE_74_ID = 74; -SDK_OVERLAY_MODULE_74_START = 0x021D74E0; -SDK_OVERLAY_MODULE_74_SIZE = 0x00001220; -SDK_OVERLAY_MODULE_74_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_74_STATIC_INIT_START = 0x021D8664; -SDK_OVERLAY_MODULE_74_STATIC_INIT_END = 0x021D8668; -SDK_OVERLAY_MODULE_75_ID = 75; -SDK_OVERLAY_MODULE_75_START = 0x021E6BA0; -SDK_OVERLAY_MODULE_75_SIZE = 0x00005DE0; -SDK_OVERLAY_MODULE_75_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_75_STATIC_INIT_START = 0x021EC97C; -SDK_OVERLAY_MODULE_75_STATIC_INIT_END = 0x021EC980; -SDK_OVERLAY_MODULE_76_ID = 76; -SDK_OVERLAY_MODULE_76_START = 0x021D74E0; -SDK_OVERLAY_MODULE_76_SIZE = 0x00001E20; -SDK_OVERLAY_MODULE_76_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_76_STATIC_INIT_START = 0x021D92E0; -SDK_OVERLAY_MODULE_76_STATIC_INIT_END = 0x021D92E4; -SDK_OVERLAY_MODULE_77_ID = 77; -SDK_OVERLAY_MODULE_77_START = 0x021D74E0; -SDK_OVERLAY_MODULE_77_SIZE = 0x00001BE0; -SDK_OVERLAY_MODULE_77_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_77_STATIC_INIT_START = 0x021D90AC; -SDK_OVERLAY_MODULE_77_STATIC_INIT_END = 0x021D90B0; -SDK_OVERLAY_MODULE_78_ID = 78; -SDK_OVERLAY_MODULE_78_START = 0x021D74E0; -SDK_OVERLAY_MODULE_78_SIZE = 0x00000460; -SDK_OVERLAY_MODULE_78_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_78_STATIC_INIT_START = 0x021D78F8; -SDK_OVERLAY_MODULE_78_STATIC_INIT_END = 0x021D78FC; -SDK_OVERLAY_MODULE_79_ID = 79; -SDK_OVERLAY_MODULE_79_START = 0x02211E60; -SDK_OVERLAY_MODULE_79_SIZE = 0x000052C0; -SDK_OVERLAY_MODULE_79_BSSSIZE = 0x00000040; -SDK_OVERLAY_MODULE_79_STATIC_INIT_START = 0x02216748; -SDK_OVERLAY_MODULE_79_STATIC_INIT_END = 0x0221674C; -SDK_OVERLAY_MODULE_80_ID = 80; -SDK_OVERLAY_MODULE_80_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_80_SIZE = 0x0000A720; -SDK_OVERLAY_MODULE_80_BSSSIZE = 0x00000160; -SDK_OVERLAY_MODULE_80_STATIC_INIT_START = 0x02237670; -SDK_OVERLAY_MODULE_80_STATIC_INIT_END = 0x02237674; -SDK_OVERLAY_MODULE_81_ID = 81; -SDK_OVERLAY_MODULE_81_START = 0x02237E40; -SDK_OVERLAY_MODULE_81_SIZE = 0x00005580; -SDK_OVERLAY_MODULE_81_BSSSIZE = 0x000000A0; -SDK_OVERLAY_MODULE_81_STATIC_INIT_START = 0x0223D39C; -SDK_OVERLAY_MODULE_81_STATIC_INIT_END = 0x0223D3A0; -SDK_OVERLAY_MODULE_82_ID = 82; -SDK_OVERLAY_MODULE_82_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_82_SIZE = 0x00002540; -SDK_OVERLAY_MODULE_82_BSSSIZE = 0x00000120; -SDK_OVERLAY_MODULE_82_STATIC_INIT_START = 0x0222F8CC; -SDK_OVERLAY_MODULE_82_STATIC_INIT_END = 0x0222F8D0; -SDK_OVERLAY_MODULE_83_ID = 83; -SDK_OVERLAY_MODULE_83_START = 0x0222D5C0; -SDK_OVERLAY_MODULE_83_SIZE = 0x0000E2A0; -SDK_OVERLAY_MODULE_83_BSSSIZE = 0x00001980; -SDK_OVERLAY_MODULE_83_STATIC_INIT_START = 0x0223A77C; -SDK_OVERLAY_MODULE_83_STATIC_INIT_END = 0x0223A780; -SDK_OVERLAY_MODULE_84_ID = 84; -SDK_OVERLAY_MODULE_84_START = 0x021D74E0; -SDK_OVERLAY_MODULE_84_SIZE = 0x00003920; -SDK_OVERLAY_MODULE_84_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_84_STATIC_INIT_START = 0x021DADE4; -SDK_OVERLAY_MODULE_84_STATIC_INIT_END = 0x021DADE8; -SDK_OVERLAY_MODULE_85_ID = 85; -SDK_OVERLAY_MODULE_85_START = 0x021D74E0; -SDK_OVERLAY_MODULE_85_SIZE = 0x00009100; -SDK_OVERLAY_MODULE_85_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_85_STATIC_INIT_START = 0x021E05A0; -SDK_OVERLAY_MODULE_85_STATIC_INIT_END = 0x021E05A4; -SDK_OVERLAY_MODULE_86_ID = 86; -SDK_OVERLAY_MODULE_86_START = 0x021D74E0; -SDK_OVERLAY_MODULE_86_SIZE = 0x00000820; -SDK_OVERLAY_MODULE_86_BSSSIZE = 0x00000000; -SDK_OVERLAY_MODULE_86_STATIC_INIT_START = 0x021D7CE4; -SDK_OVERLAY_MODULE_86_STATIC_INIT_END = 0x021D7CE8; |